IWTL How do I learn "practical" coding skills? Not CS101 loops/arrays/functions/objects, but how to actually make a real application, run source code, debug, etc...

The other answers are dealing with your overall question, but the part about not knowing how code gets run in the real world is something that bugged me for a looooooong time. Here's a list of some of the common ways you go from "text file with code in it" to "program that a user can run".

When I talk about commands, I'm talking about programs you run on a command prompt. Also note that IDEs (Eclipse, Visual Studio, etc) often have menu items that will let you make a program from a project created in them, and I leave it to you to look up tutorials on how to use those programs.

  • Java? The javac command will "compile" your .java code files into .class files. The java command will run the main method of the class you specify. The jar command lets you create jar files, which are basically zip files with code and other resources (images, sound, etc) in them, and some metadata. You can make executable jar files which can be run either with a command or often as if they were EXEs just by double clicking on them, and you can even create an EXE from a jar file.

  • C/C++ code? On Windows you usually use Visual Studio (which has helpful menus that end up spitting out exes and the like), but on other platforms you'll often use gcc and g++ to "compile" C/C++ code into executable commands. Because most projects end up having a ton of files that need to be combined in special ways, there are tools like make that essentially automate calling gcc and g++ along with other commands to produce the final executable command.

  • PHP code? You can run a PHP file on a command line using the php command, but most often PHP is used for websites, and this gets a bit tricky. What you end up doing is running a program called a web server; it is a program that stays running on a computer and listens for people who want to view web pages on the server. Apache and nginx are two popular ones. In the end, they get set up such that a certain URL (like foo/bar.php) points to a certain PHP file on the server (like /var/www/foo/bar.php) and they execute the PHP file; whatever it prints as output is sent to the user as the webpage's code.

  • Python code? Similar to PHP, there's a python command, but it's often used for webpages. In that case, there's a specification called WSGI that basically says "define a function named application that takes these arguments and outputs this data, and any WSGI-compliant server will know how to execute that function for each user that requests a webpage from you". There's also tools like py2exe that can turn Python code into an exe that someone can run.

I could go on but, just as Python and PHP are similar, most other languages are also similar. As for how you go about gaining this knowledge, you'll probably get more success picking a project (Like maybe making a calculator) and doing some more specific searches (Like "How do I make a GUI in C++?" or "How do I display an image in Java?").

Essentially, you can't just go out and read some thing to learn the entirety of this. You have to try to create something, and by doing that you will run into the smaller issues one at a time, which you can solve individually. Do that a few times, and the shape of this thing you don't quite understand will be more apparent.

If you pick a language and a small project feel free to ask for more specific tips, I'd be happy to help!

/r/IWantToLearn Thread