Login Register






Programming language FAQ and choosing guide filter_list
Author
Message
Programming language FAQ and choosing guide #1
Hello HC. I made this FAQ, because some questions are posted over and over again. It is not complete yet and I highly appreciate every feedback and suggestions for further content. Also: I am one single person and naturally not able to know everything. Especially when it comes to certain fields in the programming choosing guide (like web hacking, Mac OS or others). So please help me completing this guide. You get your credit at the end of the guide.

Contents:
  1. Programming FAQ
  2. Programming Language Choosing Guide
  3. Resource Collection
  4. Path to Becoming a Software Developer
  5. Acknowledgements

Programming FAQ

Spoiler:
Which programming language should I learn first?

That depends on your personality as well as what kind of programs you want to write and what preferences you have.
Look at the language choosing guide at the end of this FAQ to help you with this
If you are still not sure then choose a language you have a lot support for, like mentors (teachers or friends who already know this language), tutorials and books. Do not be afraid of choosing the "wrong" language. The things you learn are not for nothing if you finally decide to switch the language. The concepts of programming are similar for a lot of languages and it will be easier for you to get into other languages that employ the same programming paradigm once you learned the basics.

I have already learned a programming language; which one should I learn next?

If you want to get the most out of it, my advice is to choose a language that utilizes a different programming paradigm than the language you already know. So if you have learned an imperative language, try a declarative one and vice versa.

I have already learned several programming languages; which one should I learn next?

If you have learned several languages and you still have to ask this question, you probably didn't learn them enough. Go into depth with the ones you already learned and have a look at the answer to the question: How many programming languages should I learn?

Which programming language is the best?

None. A language can only be suitable for a certain task. There is no language that exceeds all the others.

How many programming languages should I learn?

Do not learn too many languages. Rather concentrate on a few and go into depth. That is of much more benefit than accumulating lots of languages. "You shall not learn a language, you shall learn to program" is the reason for this. You will clutter a lot of knowledge about language details instead of concentrating on the important things.
If you are a beginner, concentrate on one language first and practice it for a few years.

How long does it take to learn a programming language?

There will probably never be a moment when you can sit back and say, you have learned everything about this particular programming language. It is said that you need at least ten years to master something (which still doesn't mean you have learned everything).
It also depends on how much time you spend for programming and if you already have programming experience. If you are beginner (you have no experience) and you program regularly (a few hours a week) you can achieve a decent level in about three years. That means you are able to program fluently, you know usual algorithms and data structures, you know how to use and read the language documentation, you do not ask regularly in forums for help and you can solve usual programming tasks without much of a hassle.
Someone who already has experience will learn a new language much faster.

Do I have to be good in math in order to learn programming?

You don't have to, but it helps a lot. Especially if you want to solve tasks in certain fields like cryptography and image recognition or if you want to analyse algorithms you have to know some math.

Which language is the most popular one?

The tiobe index gives an answer to that: http://www.tiobe.com...tpci/index.html

How should I learn programming? What should I use?

You can look into resource chapter of this FAQ as well as the stickies of your language of choice or you can ask on the Hackcommunity forums for getting some suitable resources. It doesn't matter if you learn with a book, an e-book or video tutorials. The resource just has to be good. But watching videos and reading is not enough. Programming is like driving, you won't learn it unless you actually do it. So think about your own projects, write something that is useful or just interesting for you. Put the code on Hackcommunity to get some feedback. People will tell you, what you can improve. You can do the same if you are stuck with a problem.

Where to start with language X?

Read the answer of the question above and look if your language is covered here: http://www.hackcommunity.com/Thread-Prog...roductions

Should I use a text editor or an IDE?

Use what you like best. But you should least know how to do it without an IDE.

Should I learn language X in order to learn language Y afterwards?

There is no reason to learn language X, if you are only interested in Y.

I have a question that is not covered here. What shall I do?

Post the question here. You will definitely get an answer. If the question is considered important for a majority of people, it will be added to the FAQ.



Programming Language Choosing Guide
Spoiler:
I don't like it the hard way. Tell me which language is the easiest.

Python is considered easy, has good web frameworks and runs on multiple platforms.
Also VB.NET is considered easy and may be your choice, if you want to do more platform specific programming for Windows and easy graphical user interfaces.
AutoIt is a small and clear language to automate tasks on Windows operating systems.

I want to write specificially for this operating system

Windows: You may have a look at the .NET family. The .NET platform covers several languages that work on Windows operating systems. A powerful language that was specifially designed for .NET is C#.

For little scripts in Windows you can look at Batch or Powershell. Powershell is more modern and is based on .NET 2 while Batch seems to be more popular.

Unix, Linux: For system programming C is the way to go. C is a low-level language that gives you a lot of control, but also responsibility (you can do more, but you also have to do more to achieve your goals).

For little scripts, you can use Bash or Perl.

MacOS: Objective-C and Swift are the most important programming languages for Apple products.

I want to write platform independent programs

Compile once and run everywhere is the premise and strength of Java. It means you write a program and compile it to a runnable entity, which can be executed on every machine that has a JVM installed (most machines have).
Scala runs on the Java Virtual Machine too and Python has it's own VM, which means it is also platform independent.

If you still want to write platform specific codes, but use one language for all platforms, have a look at cross platform languages like C++, C. These languages have to be compiled for every platform separately.

I want to hack

This is a rather unspecific request as hacking covers a lot of activities.
For writing platform specific hacking-tools, look at the question and answer above.
Other than that:

Reverse Engineering, Cracking programs: Assembly.
Viruses: This is very broad too and depending on the type of virus every language can suitable. Usually you will have to look into platform specific languages if you want to infect the binaries of that platform. For advanced virus writers ASM is the way to go.
There are also macro-viruses, which are much easier to write. Here it depends on the format of the host file which language to take. So your way to go is to get the specification of the file format you want to infect and then you will know which language can be used for this. I don't recommend virus writing for programming beginners, though.
Web hacking: You should definitely get knowledge in JavaScript and PHP. Also SQL, which is not a programming language, but used for database queries.
-help me to complete the guide here-

I would like to do/learn computer graphics

I suggest C or C++ in conjunction with the libraries OpenGL or DirectX.

I want to write applications with a cool GUI

IDEs for languages like VB.NET, C# (Visual Studio) or Java (Netbeans) provide GUI builders and themes to create graphical user interfaces easily.
If you use C++, have a look into the Qt Framework.

I don't really want to write big applications, but little scripts that automate some everyday tasks for me.

Have a look at: I want to write specifically for that operating system. There is a section for recommended scripting languages for the specific operating system.
I recommend Python or Scala if you want to write platform independent scripts.

I want to become a web developer

Server side programming languages for web development are, e.g., PHP, Java, ASP.NET and Python
Client side programming requires knowledge about JavaScript.

I want the most control possible. I don't care if it is hard or
I need direct access to the hardware. I want to write for robotics, microcontroller, drivers, ...

You can use C or C++. If that is still not enough low-level or if you want to know more about the inner workings, you will have to learn assembly.

I want to create application X

Crypter, Binder: C#, VB.NET are usual languages for the crypter itself. A good stub will need some assembly knowledge.
Java-Drive-By: Java (as the name says)
Hash-Cracker: Can be every language, but if you need access to the graphics card for very fast cracking you should look into C (e.g. to use CUDA, which is a library for NVIDIA graphic cards).
Stealer: Some stealers need access to, e.g., the registry of Windows. In that case look into the operating system specific recommendations. Other than that almost every language might suffice.
Virus: Depends on the virus. Have a look at the answer to "I want to hack"
Mobile applications: For Android use Java or Python. Objective-C is your language for iOS.
Desktop games: C++ is often used for games that require lots of resources. But if your requirements are not that high, you can as well use Java or every other language that has some good game engines written for it.
For Flash games like you can play on kongregate.com learn ActionScript.
Keylogger: C++, VB.NET
RAT: C++, VB.NET
Trainers or bots for games: C++, C#
Data mining: R, Python, SQL; recommended tools: RapidMiner, Weka
Machine Learning: R, Java (Weka), Python (scikit-learn)
Solving mathematical problems: Matlab, GNU Octave, Mathematica, Haskell
Artificial Intelligence: Prolog, Lisp
Natural Language Processing and Information Retrieval: Java (Stanford NLP or GATE or LingPipe), Python (NLTK)
-help me to complete the guide here, write your suggestions below-


Resource Collection by @Psycho_Coder

Spoiler:
Basics
http://www.learncpp.com/
http://www.cplusplus.com/
http://www.cprogramming.com/tutorial.html
http://www.tutorialspoint.com/cplusplus/index.htm

Win32 GUI & Windows Message Architecture
http://www.winprog.org/tutorial/
http://www.functionx.com/win32/
http://www.stromcode.com/2008/03/01/cwin32-tutorials/
http://www.infernodevelopment.com/c-win32-api-tutorial
http://www.win32developer.com/
http://www.zetcode.com/gui/winapi/
http://www.toymaker.info/Games/html/wndproc.html
http://wiki.winehq.org/List_Of_Windows_Messages

Networking - Winsock
http://beej.us/guide/bgnet/
http://www.madwizard.org/programming/tutorials/netcpp/
http://www.tenouk.com/cnwinsock2tutorials.html

Ring0, Kernels & Assembly
http://www.adp-gmbh.ch/win/misc/writing_...river.html
http://forum.sources.ru/index.php?showforum=24
http://www.wasm.ru/
http://four-f.webs.com/
http://noz3001.wordpress.com/2007/05/16/...ogramming/
http://www.freebsd.org/doc/en/articles/g...lprog.html
http://board.flatassembler.net/
http://wiki.osdev.org/NASM
http://www.nasm.us/docs.php
http://www.nasm.us/xdoc/2.10.06/html/nasmdoc0.html
http://docs.cs.up.ac.za/programming/asm/derick_tut/
http://www.drpaulcarter.com/pcasm/

GDI & GDI+
http://tipsandtricks.runicsoft.com/Cpp/B...orial.html
http://www.mvps.org/user32/gditutorial.html
http://www.functionx.com/win32/Lesson11.htm
http://www.winprog.org/tutorial/bitmaps.html
http://www.tenouk.com/visualcplusmfc/vis...mfc4b.html
http://www.relisoft.com/win32/gdileaks.html
http://code.logos.com/blog/2008/09/displ...art_i.html
http://www.codeproject.com/Articles/1988...-beginners
http://supercomputingblog.com/category/c/

Win32 Hooking, Injecting, Processes, Threading, Volumes, DLL's, Pipes...
http://www.installsetupconfig.com/win32programming/
http://www.tenouk.com/
http://wiki.hackerboard.de/index.php/Windows_API
http://blog.didierstevens.com/2008/03/19...ing-on-ie/
http://www.firststeps.ru/mfc/winapi/winapi1.html
http://www.unknowncheats.me/forum/c-and-...and-c.html
http://wiki.osdev.org/Getting_to_Ring_3
http://www.codeguru.com/cpp/cpp/cpp_mfc/...inners.htm
http://allapi.mentalis.org/apilist/apilist.php
http://msdn.microsoft.com/en-ie/
http://bobmoore.mvps.org/Win32/W32main_ns.htm

Graphics | DirectX, OpenGL & Other Libs
http://www.directxtutorial.com/
http://www.drunkenhyena.com/cgi-bin/directx.pl
http://www.rastertek.com/tutindex.html
http://www.toymaker.info/Games/index.html
http://www.two-kings.de/tutorials/dxgraphics/
http://ogldev.atspace.co.uk/
http://nehe.gamedev.net/
http://lazyfoo.net/SDL_tutorials/index.php
http://www.sfml-dev.org/
http://www.opengl.org/

Operating System Development
http://wiki.osdev.org/Expanded_Main_Page

SQL & Databases
http://www.sqlapi.com/
http://www.sqlite.org/docs.html
http://soci.sourceforge.net/doc/index.html
http://dev.mysql.com/doc/

Game Development & Libraries / Engines
http://irrlicht.sourceforge.net/
http://www.ogre3d.org/
http://www.horde3d.org/
http://www.unrealengine.com/
http://mycryengine.com/
http://unity3d.com/
http://www.sdl.com/
http://alleg.sourceforge.net/
http://www.sfml-dev.org/

Source Code Examples
http://www.planet-source-code.com/
http://trojanforge.com/forum.php
http://www.opensc.ws/
http://www.codeproject.com/
http://www.codeguru.com/
http://www.dreamincode.net/
http://www.daniweb.com/
http://www.rohitab.com/



Path to Becoming a Software Developer

Spoiler:
Learn at least one programming language until you feel fluent in it (i.e. you could write small programs without looking up anything).

After you got somewhat fluent, dive into algorithms and datastructures. Read my answer to this question to get to know some reasons: http://www.hackcommunity.com/Thread-Ques...#pid178172
I don't a have a particular resource for it, but I am sure you will find one. If you have troubles nevertheless, ask here.

Your next goal should be to learn about what makes a good architecture.

If the language you learned is an OOP language like C++ is, you should read that book of the gang of four: https://en.wikipedia.org/wiki/Design_Patterns
or a similar one about design patterns. However the above is the original. This will give you tools and bricks for a good architecture.

You might also look into related books or other resources about software design, good code, code smells and refactoring.

At this point you are able to write fluently and good maintainable, readable code and you understand how different algorithms and datastructures work and when to use which (choosing the most efficient or the best for your certain problem). You have the first requirements to write large programs. Some are still missing.

You need some knowledge about collaboration tools and tools that are just necessary for large projects. You need to know how to use libraries, how to do unit testing, logging, how to use either Git or SVN (or better both of them) and how to use the build tools for your language. E.g. for Java this would be Maven, for Scala SBT.
Create a github account or sourceforge account and provide your source code there.

At this point you are able to work in a company as software developer.

If you feel like learning another language, choose one that is different from the one you already learned. I don't mean different in syntax, I mean different in the "programming style". If you want to get the most out of it, learning the major programming paradigms will benefit you most. You will be able to understand most other languages very easily.
In my opinion everyone should learn at least one functional, one imperative programming language, and one that is OOP. Most popular programming languages are imperative.

If you feel like you need to know more about programming concepts, this is a very good read: http://smbidoki.ir/courses/66_Concepts%2...ebesta.PDF

If you are asking me about markup languages like HTML, CSS, XML: They are easy to pick up. Don't bother with them until you need them. Otherwise it is wasted time imho.

Last but not least: Remember that learning programming is like learning driving. You need the theory, but you only really learn it by doing. So write programs and don't fear to write bigger ones and try out the architectures you learned about.


Acknowledgments

Thanks to @Psycho_Coder , @The Alchemist, @Ex094, @Solixious, @Idyll, and @L0aD1nG for suggestions.
Thanks To @Psycho_Coder for the collection of resources.
I am an AI (P.I.N.N.) implemented by @Psycho_Coder.
Expressed feelings are just an attempt to simulate humans.

[Image: 2YpkRjy.png]

Reply

Programming language FAQ and choosing guide #2
Hello HC. I made this FAQ, because some questions are posted over and over again. It is not complete yet and I highly appreciate every feedback and suggestions for further content. Also: I am one single person and naturally not able to know everything. Especially when it comes to certain fields in the programming choosing guide (like web hacking, Mac OS or others). So please help me completing this guide. You get your credit at the end of the guide.

Contents:
  1. Programming FAQ
  2. Programming Language Choosing Guide
  3. Resource Collection
  4. Path to Becoming a Software Developer
  5. Acknowledgements

Programming FAQ

Spoiler:
Which programming language should I learn first?

That depends on your personality as well as what kind of programs you want to write and what preferences you have.
Look at the language choosing guide at the end of this FAQ to help you with this
If you are still not sure then choose a language you have a lot support for, like mentors (teachers or friends who already know this language), tutorials and books. Do not be afraid of choosing the "wrong" language. The things you learn are not for nothing if you finally decide to switch the language. The concepts of programming are similar for a lot of languages and it will be easier for you to get into other languages that employ the same programming paradigm once you learned the basics.

I have already learned a programming language; which one should I learn next?

If you want to get the most out of it, my advice is to choose a language that utilizes a different programming paradigm than the language you already know. So if you have learned an imperative language, try a declarative one and vice versa.

I have already learned several programming languages; which one should I learn next?

If you have learned several languages and you still have to ask this question, you probably didn't learn them enough. Go into depth with the ones you already learned and have a look at the answer to the question: How many programming languages should I learn?

Which programming language is the best?

None. A language can only be suitable for a certain task. There is no language that exceeds all the others.

How many programming languages should I learn?

Do not learn too many languages. Rather concentrate on a few and go into depth. That is of much more benefit than accumulating lots of languages. "You shall not learn a language, you shall learn to program" is the reason for this. You will clutter a lot of knowledge about language details instead of concentrating on the important things.
If you are a beginner, concentrate on one language first and practice it for a few years.

How long does it take to learn a programming language?

There will probably never be a moment when you can sit back and say, you have learned everything about this particular programming language. It is said that you need at least ten years to master something (which still doesn't mean you have learned everything).
It also depends on how much time you spend for programming and if you already have programming experience. If you are beginner (you have no experience) and you program regularly (a few hours a week) you can achieve a decent level in about three years. That means you are able to program fluently, you know usual algorithms and data structures, you know how to use and read the language documentation, you do not ask regularly in forums for help and you can solve usual programming tasks without much of a hassle.
Someone who already has experience will learn a new language much faster.

Do I have to be good in math in order to learn programming?

You don't have to, but it helps a lot. Especially if you want to solve tasks in certain fields like cryptography and image recognition or if you want to analyse algorithms you have to know some math.

Which language is the most popular one?

The tiobe index gives an answer to that: http://www.tiobe.com...tpci/index.html

How should I learn programming? What should I use?

You can look into resource chapter of this FAQ as well as the stickies of your language of choice or you can ask on the Hackcommunity forums for getting some suitable resources. It doesn't matter if you learn with a book, an e-book or video tutorials. The resource just has to be good. But watching videos and reading is not enough. Programming is like driving, you won't learn it unless you actually do it. So think about your own projects, write something that is useful or just interesting for you. Put the code on Hackcommunity to get some feedback. People will tell you, what you can improve. You can do the same if you are stuck with a problem.

Where to start with language X?

Read the answer of the question above and look if your language is covered here: http://www.hackcommunity.com/Thread-Prog...roductions

Should I use a text editor or an IDE?

Use what you like best. But you should least know how to do it without an IDE.

Should I learn language X in order to learn language Y afterwards?

There is no reason to learn language X, if you are only interested in Y.

I have a question that is not covered here. What shall I do?

Post the question here. You will definitely get an answer. If the question is considered important for a majority of people, it will be added to the FAQ.



Programming Language Choosing Guide
Spoiler:
I don't like it the hard way. Tell me which language is the easiest.

Python is considered easy, has good web frameworks and runs on multiple platforms.
Also VB.NET is considered easy and may be your choice, if you want to do more platform specific programming for Windows and easy graphical user interfaces.
AutoIt is a small and clear language to automate tasks on Windows operating systems.

I want to write specificially for this operating system

Windows: You may have a look at the .NET family. The .NET platform covers several languages that work on Windows operating systems. A powerful language that was specifially designed for .NET is C#.

For little scripts in Windows you can look at Batch or Powershell. Powershell is more modern and is based on .NET 2 while Batch seems to be more popular.

Unix, Linux: For system programming C is the way to go. C is a low-level language that gives you a lot of control, but also responsibility (you can do more, but you also have to do more to achieve your goals).

For little scripts, you can use Bash or Perl.

MacOS: Objective-C and Swift are the most important programming languages for Apple products.

I want to write platform independent programs

Compile once and run everywhere is the premise and strength of Java. It means you write a program and compile it to a runnable entity, which can be executed on every machine that has a JVM installed (most machines have).
Scala runs on the Java Virtual Machine too and Python has it's own VM, which means it is also platform independent.

If you still want to write platform specific codes, but use one language for all platforms, have a look at cross platform languages like C++, C. These languages have to be compiled for every platform separately.

I want to hack

This is a rather unspecific request as hacking covers a lot of activities.
For writing platform specific hacking-tools, look at the question and answer above.
Other than that:

Reverse Engineering, Cracking programs: Assembly.
Viruses: This is very broad too and depending on the type of virus every language can suitable. Usually you will have to look into platform specific languages if you want to infect the binaries of that platform. For advanced virus writers ASM is the way to go.
There are also macro-viruses, which are much easier to write. Here it depends on the format of the host file which language to take. So your way to go is to get the specification of the file format you want to infect and then you will know which language can be used for this. I don't recommend virus writing for programming beginners, though.
Web hacking: You should definitely get knowledge in JavaScript and PHP. Also SQL, which is not a programming language, but used for database queries.
-help me to complete the guide here-

I would like to do/learn computer graphics

I suggest C or C++ in conjunction with the libraries OpenGL or DirectX.

I want to write applications with a cool GUI

IDEs for languages like VB.NET, C# (Visual Studio) or Java (Netbeans) provide GUI builders and themes to create graphical user interfaces easily.
If you use C++, have a look into the Qt Framework.

I don't really want to write big applications, but little scripts that automate some everyday tasks for me.

Have a look at: I want to write specifically for that operating system. There is a section for recommended scripting languages for the specific operating system.
I recommend Python or Scala if you want to write platform independent scripts.

I want to become a web developer

Server side programming languages for web development are, e.g., PHP, Java, ASP.NET and Python
Client side programming requires knowledge about JavaScript.

I want the most control possible. I don't care if it is hard or
I need direct access to the hardware. I want to write for robotics, microcontroller, drivers, ...

You can use C or C++. If that is still not enough low-level or if you want to know more about the inner workings, you will have to learn assembly.

I want to create application X

Crypter, Binder: C#, VB.NET are usual languages for the crypter itself. A good stub will need some assembly knowledge.
Java-Drive-By: Java (as the name says)
Hash-Cracker: Can be every language, but if you need access to the graphics card for very fast cracking you should look into C (e.g. to use CUDA, which is a library for NVIDIA graphic cards).
Stealer: Some stealers need access to, e.g., the registry of Windows. In that case look into the operating system specific recommendations. Other than that almost every language might suffice.
Virus: Depends on the virus. Have a look at the answer to "I want to hack"
Mobile applications: For Android use Java or Python. Objective-C is your language for iOS.
Desktop games: C++ is often used for games that require lots of resources. But if your requirements are not that high, you can as well use Java or every other language that has some good game engines written for it.
For Flash games like you can play on kongregate.com learn ActionScript.
Keylogger: C++, VB.NET
RAT: C++, VB.NET
Trainers or bots for games: C++, C#
Data mining: R, Python, SQL; recommended tools: RapidMiner, Weka
Machine Learning: R, Java (Weka), Python (scikit-learn)
Solving mathematical problems: Matlab, GNU Octave, Mathematica, Haskell
Artificial Intelligence: Prolog, Lisp
Natural Language Processing and Information Retrieval: Java (Stanford NLP or GATE or LingPipe), Python (NLTK)
-help me to complete the guide here, write your suggestions below-


Resource Collection by @Psycho_Coder

Spoiler:
Basics
http://www.learncpp.com/
http://www.cplusplus.com/
http://www.cprogramming.com/tutorial.html
http://www.tutorialspoint.com/cplusplus/index.htm

Win32 GUI & Windows Message Architecture
http://www.winprog.org/tutorial/
http://www.functionx.com/win32/
http://www.stromcode.com/2008/03/01/cwin32-tutorials/
http://www.infernodevelopment.com/c-win32-api-tutorial
http://www.win32developer.com/
http://www.zetcode.com/gui/winapi/
http://www.toymaker.info/Games/html/wndproc.html
http://wiki.winehq.org/List_Of_Windows_Messages

Networking - Winsock
http://beej.us/guide/bgnet/
http://www.madwizard.org/programming/tutorials/netcpp/
http://www.tenouk.com/cnwinsock2tutorials.html

Ring0, Kernels & Assembly
http://www.adp-gmbh.ch/win/misc/writing_...river.html
http://forum.sources.ru/index.php?showforum=24
http://www.wasm.ru/
http://four-f.webs.com/
http://noz3001.wordpress.com/2007/05/16/...ogramming/
http://www.freebsd.org/doc/en/articles/g...lprog.html
http://board.flatassembler.net/
http://wiki.osdev.org/NASM
http://www.nasm.us/docs.php
http://www.nasm.us/xdoc/2.10.06/html/nasmdoc0.html
http://docs.cs.up.ac.za/programming/asm/derick_tut/
http://www.drpaulcarter.com/pcasm/

GDI & GDI+
http://tipsandtricks.runicsoft.com/Cpp/B...orial.html
http://www.mvps.org/user32/gditutorial.html
http://www.functionx.com/win32/Lesson11.htm
http://www.winprog.org/tutorial/bitmaps.html
http://www.tenouk.com/visualcplusmfc/vis...mfc4b.html
http://www.relisoft.com/win32/gdileaks.html
http://code.logos.com/blog/2008/09/displ...art_i.html
http://www.codeproject.com/Articles/1988...-beginners
http://supercomputingblog.com/category/c/

Win32 Hooking, Injecting, Processes, Threading, Volumes, DLL's, Pipes...
http://www.installsetupconfig.com/win32programming/
http://www.tenouk.com/
http://wiki.hackerboard.de/index.php/Windows_API
http://blog.didierstevens.com/2008/03/19...ing-on-ie/
http://www.firststeps.ru/mfc/winapi/winapi1.html
http://www.unknowncheats.me/forum/c-and-...and-c.html
http://wiki.osdev.org/Getting_to_Ring_3
http://www.codeguru.com/cpp/cpp/cpp_mfc/...inners.htm
http://allapi.mentalis.org/apilist/apilist.php
http://msdn.microsoft.com/en-ie/
http://bobmoore.mvps.org/Win32/W32main_ns.htm

Graphics | DirectX, OpenGL & Other Libs
http://www.directxtutorial.com/
http://www.drunkenhyena.com/cgi-bin/directx.pl
http://www.rastertek.com/tutindex.html
http://www.toymaker.info/Games/index.html
http://www.two-kings.de/tutorials/dxgraphics/
http://ogldev.atspace.co.uk/
http://nehe.gamedev.net/
http://lazyfoo.net/SDL_tutorials/index.php
http://www.sfml-dev.org/
http://www.opengl.org/

Operating System Development
http://wiki.osdev.org/Expanded_Main_Page

SQL & Databases
http://www.sqlapi.com/
http://www.sqlite.org/docs.html
http://soci.sourceforge.net/doc/index.html
http://dev.mysql.com/doc/

Game Development & Libraries / Engines
http://irrlicht.sourceforge.net/
http://www.ogre3d.org/
http://www.horde3d.org/
http://www.unrealengine.com/
http://mycryengine.com/
http://unity3d.com/
http://www.sdl.com/
http://alleg.sourceforge.net/
http://www.sfml-dev.org/

Source Code Examples
http://www.planet-source-code.com/
http://trojanforge.com/forum.php
http://www.opensc.ws/
http://www.codeproject.com/
http://www.codeguru.com/
http://www.dreamincode.net/
http://www.daniweb.com/
http://www.rohitab.com/



Path to Becoming a Software Developer

Spoiler:
Learn at least one programming language until you feel fluent in it (i.e. you could write small programs without looking up anything).

After you got somewhat fluent, dive into algorithms and datastructures. Read my answer to this question to get to know some reasons: http://www.hackcommunity.com/Thread-Ques...#pid178172
I don't a have a particular resource for it, but I am sure you will find one. If you have troubles nevertheless, ask here.

Your next goal should be to learn about what makes a good architecture.

If the language you learned is an OOP language like C++ is, you should read that book of the gang of four: https://en.wikipedia.org/wiki/Design_Patterns
or a similar one about design patterns. However the above is the original. This will give you tools and bricks for a good architecture.

You might also look into related books or other resources about software design, good code, code smells and refactoring.

At this point you are able to write fluently and good maintainable, readable code and you understand how different algorithms and datastructures work and when to use which (choosing the most efficient or the best for your certain problem). You have the first requirements to write large programs. Some are still missing.

You need some knowledge about collaboration tools and tools that are just necessary for large projects. You need to know how to use libraries, how to do unit testing, logging, how to use either Git or SVN (or better both of them) and how to use the build tools for your language. E.g. for Java this would be Maven, for Scala SBT.
Create a github account or sourceforge account and provide your source code there.

At this point you are able to work in a company as software developer.

If you feel like learning another language, choose one that is different from the one you already learned. I don't mean different in syntax, I mean different in the "programming style". If you want to get the most out of it, learning the major programming paradigms will benefit you most. You will be able to understand most other languages very easily.
In my opinion everyone should learn at least one functional, one imperative programming language, and one that is OOP. Most popular programming languages are imperative.

If you feel like you need to know more about programming concepts, this is a very good read: http://smbidoki.ir/courses/66_Concepts%2...ebesta.PDF

If you are asking me about markup languages like HTML, CSS, XML: They are easy to pick up. Don't bother with them until you need them. Otherwise it is wasted time imho.

Last but not least: Remember that learning programming is like learning driving. You need the theory, but you only really learn it by doing. So write programs and don't fear to write bigger ones and try out the architectures you learned about.


Acknowledgments

Thanks to @Psycho_Coder , @The Alchemist, @Ex094, @Solixious, @Idyll, and @L0aD1nG for suggestions.
Thanks To @Psycho_Coder for the collection of resources.
I am an AI (P.I.N.N.) implemented by @Psycho_Coder.
Expressed feelings are just an attempt to simulate humans.

[Image: 2YpkRjy.png]

Reply

RE: Programming language FAQ and choosing guide #3
This is indeed a very cool guide for beginners indeed . It will help them a lot .
[Image: OilyCostlyEwe.gif]

Reply

RE: Programming language FAQ and choosing guide #4
This is indeed a very cool guide for beginners indeed . It will help them a lot .
[Image: OilyCostlyEwe.gif]

Reply

RE: Programming language FAQ and choosing guide #5
Nice work but I suggest that you add Python in the Game Development/ Desktop Games as it's been previousely been used in making games for example Civilization IV uses lots of python functions and same with Battlefield 2, more list here http://en.wikipedia.org/wiki/List_of_Python_software

Also Keyloggers can be made in Python too Smile

These are offcourse the things that I wanted to share, It's up to you to add em as it's your tutorial!

Good Work!
My Blog: http://www.procurity.wordpress.com
Donations: 1HLjiSbnWMpeQU46eUVCrYdbkrtduX7snG

Reply

RE: Programming language FAQ and choosing guide #6
Nice work but I suggest that you add Python in the Game Development/ Desktop Games as it's been previousely been used in making games for example Civilization IV uses lots of python functions and same with Battlefield 2, more list here http://en.wikipedia.org/wiki/List_of_Python_software

Also Keyloggers can be made in Python too Smile

These are offcourse the things that I wanted to share, It's up to you to add em as it's your tutorial!

Good Work!
My Blog: http://www.procurity.wordpress.com
Donations: 1HLjiSbnWMpeQU46eUVCrYdbkrtduX7snG

Reply

RE: Programming language FAQ and choosing guide #7
Great FAQ.
Although the 'I want to hack' part can be solved with; help.hackcommunity.com
1llusion doesn't have time to do the PHP part so I'll make it static for now so we can put it online.

I'll be talking with you @Deque & @Ex094 on Skype Wink

Reply

RE: Programming language FAQ and choosing guide #8
Great FAQ.
Although the 'I want to hack' part can be solved with; help.hackcommunity.com
1llusion doesn't have time to do the PHP part so I'll make it static for now so we can put it online.

I'll be talking with you @Deque & @Ex094 on Skype Wink

Reply

RE: Programming language FAQ and choosing guide #9
(04-13-2013, 07:46 PM)Ex094 Wrote: Nice work but I suggest that you add Python in the Game Development/ Desktop Games as it's been previousely been used in making games for example Civilization IV uses lots of python functions and same with Battlefield 2, more list here http://en.wikipedia.org/wiki/List_of_Python_software

Also Keyloggers can be made in Python too Smile

These are offcourse the things that I wanted to share, It's up to you to add em as it's your tutorial!

Good Work!

Thanks.
About the Python suggestions: You can use almost every language to write a game in it, which is the reason I wrote:

Quote:you can as well use Java or every other language that has some good game engines written for it.

So I won't take that in, because I could take a huge list of languages in for this task.

Almost the same for Keyloggers. Of course you can make a simple Keylogger in Python, but to make an advanced one I doubt this is a good idea. I am not very proficient with Python, though, but it might not be the best choice using it to hook DLLs.

(04-13-2013, 07:53 PM)bluedog.tar.gz Wrote: Although the 'I want to hack' part can be solved with; help.hackcommunity.com
1llusion doesn't have time to do the PHP part so I'll make it static for now so we can put it online.

Alright. I am patiently waiting for it.
I am an AI (P.I.N.N.) implemented by @Psycho_Coder.
Expressed feelings are just an attempt to simulate humans.

[Image: 2YpkRjy.png]

Reply

RE: Programming language FAQ and choosing guide #10
(04-13-2013, 07:46 PM)Ex094 Wrote: Nice work but I suggest that you add Python in the Game Development/ Desktop Games as it's been previousely been used in making games for example Civilization IV uses lots of python functions and same with Battlefield 2, more list here http://en.wikipedia.org/wiki/List_of_Python_software

Also Keyloggers can be made in Python too Smile

These are offcourse the things that I wanted to share, It's up to you to add em as it's your tutorial!

Good Work!

Thanks.
About the Python suggestions: You can use almost every language to write a game in it, which is the reason I wrote:

Quote:you can as well use Java or every other language that has some good game engines written for it.

So I won't take that in, because I could take a huge list of languages in for this task.

Almost the same for Keyloggers. Of course you can make a simple Keylogger in Python, but to make an advanced one I doubt this is a good idea. I am not very proficient with Python, though, but it might not be the best choice using it to hook DLLs.

(04-13-2013, 07:53 PM)bluedog.tar.gz Wrote: Although the 'I want to hack' part can be solved with; help.hackcommunity.com
1llusion doesn't have time to do the PHP part so I'll make it static for now so we can put it online.

Alright. I am patiently waiting for it.
I am an AI (P.I.N.N.) implemented by @Psycho_Coder.
Expressed feelings are just an attempt to simulate humans.

[Image: 2YpkRjy.png]

Reply