The Programming Super Thread

So, you might be wanting to start in Programming. But sometimes its hard to find a good place to start now-a-days with all of these languages and not really a clear line between them.

From experience, starting can be the hardest part to anything. So its good to step back and really think about what you want to do in programming.

Languages to choose from and why to choose them:

  • C++: C++ is the second iteration (or version) of C. C++ is often referred to for standards and some-what higher level programming. C++ is good for just about anything you could want to do in Programming. The down side is, C++ is a large language, with multiple tangents you can get stuck on. One of the largest pros of C++ is the language itself is Cross-Platform almost natively. 
  • Java: Based on C Syntax Java is very similar to C++ in many ways. Java isn't always native on everything especially Windows. Java, like C++ is also very large. Possibly one of the largest languages out there. Java entails just about everything you'd need for writing a program in its default packages tho. Java is a common starting point for people entering Android App Development as well.
  • Ruby: Influenced by older languages like Eiffel, Lisp, and Perl Ruby is a smaller (comparatively  to C++ and Java) and easier language to learn than some of programming's larger languages.
  • Perl: Based out of Scripting, Perl was originally made to be a general-purpose scripting language in Unix.
  • HTML: HTML is a markup language essentially just laying out a web page and its contents. Not actually creating many visual colors or effects on its own, HTML is a simple and small language that is required to start in Web Development. The latest version of HTML is currently HTML5.
  • CSS: Being another required language for web development, CSS is a bit larger than HTML but goes hand in hand with HTML to stylize HTML Layouts and create the effects/coloring of the web page itself. The current version of CSS is currently CSS3. 
  • JavaScript: Mistakenly, JavaScript is often thought to be based on Java, which is false. JavaScript is a lightweight scripting language that can be inserted into HTML pages. 
  • PHP: PHP is a server scripting language which is a very powerful tool for Server Side development. Its often recommended that you know HTML and JavaScript along side PHP, PHP's current version is PHP5.5
  • SQL: SQL stands for Structured Query Language. Meaning it is a databasing language focused on the storing and organization of data in a database. SQL goes along side PHP.                                                    
Programming tools:
  • Eclipse: Eclipse is a lightweight yet widely used IDE. Eclipse is one of the primary IDEs for Java. Eclipse does support other languages as well tho.
  • Netbeans: NetBeans is also used for Java on a somewhat and comparable scale to Eclipse. 
  • IntelliJ: IntelliJ is an IDE for Java which is the 3rd of the major IDEs. IntelliJ however, unlike Eclipse and Netbeans, has a paid version. 
  • RubyMine: Made by the same people as IntelliJ (JetBrains), RubyMine is a Ruby IDE.
  • Code::Blocks: Code Blocks is a C++ IDE commonly used as an alternative to Microsoft Visual Studios
  • Visual Studio: Visual Studio is Microsoft's .NET IDE, Supporting all of the .NET languages.
  • Notepad++: Notepad++ is used for any language and is able to compile a large variety of languages. Tho Notepad++ is not a complete IDE in the sense that it does not include some of the same efficient workflow methods as full IDEs. 
  • Sublime Text: Sublime Text has become popular lately due to its sleek look and efficient usage. Sublime Text is one of few popular general editors that is also completely cross platform.

Learning links:

PHP

SQL

JavaScript

HTML -> HTML5

CSS -> CSS3

Perl

Ruby

Java

C++

 Python / Alt Python

Fortran 77

Haskell

If there is a language that is not listed and you would like to see it up here, you can request it below or post a good tutorial yourself!

 

1 Like

Really good how-to guide Devon.

You may also want to add some good free compilers that are easy to use in that list. I would also group the languages by classification and what the different classes are used for (scripting, function driven, ect... ) this would help people choose a type of language that to better help them get into the style of developing they want todo, I would hate to see someone who wants to create rich GUI interface start at C++...

I gave this a read and I think it's about right, although can get confusing for a beginner. (I am confused, but learning)

http://www.gamedev.net/page/resources/_/technical/general-programming/the-programming-primer-r3090

 

Great source of information, thanks.

A really good resource for starting out in Programming is at Code Academy: http://www.codecademy.com/learn

They have some great in-browser environments to learn and get your hands dirty.

Also, don't underestimate the power of Sublime Text 2 when it comes to coding, it's probably one of the most powerful coding apps out there: http://www.sublimetext.com/

Great post by the way OP!

That codeacadamy site is cool. Cheers homeless.  :-)

Harvard has a good introduction to programming lecture series taught mostly in C and some Java. But instead of a web API they offer a modified version of fedora that you install on a VM to follow along. It definitely requires deeper time investment than other web offerings, but it's definitely a well rounded approach.

https://www.cs50.net/

 

Awesome post.  A thread or post describing what software you need to program would be a great addtion.

On time sacles how long does it take the average user to learn a lunguge such as C++ or Java to the point where it is useable at there command... not all the knowledge but enough to start creating small games, interactive applications ect. 

 

Please let me know as I have experiance in HTML and CSS and I am looking into the world of indie games and what comes with them. I am looking for a time scale just to see how long it might take me to learn and start. 

If you are doing C++, I highly recommend you develop on Linux.

I'll start to write that later today. It'll be done later tonight.

Why no C# 

linqpad is good program for starting with C# or for testing SQL



SQLFiddle is a good site for testing SQL
 
 

Some advice for those interested in web...



I recommend avoiding http://www.w3schools.com. Take a minute and read up on why you should avoid it - http://www.w3fools.com/. There are lots of errors and they are slow (if ever) to update and/or correct them.

One of my favorite sites for learning/referencing CSS - http://learnlayout.com/

I also feel the best way to learn HTML/CSS is to dive right in. Learn some basics and then just go nuts. Sketch out a site on some paper and attempt to create it, learn as you go. Copy things from other sites to learn, download Firebug and dig around. Look into Flat Design for simple design ideas, you'll be surprised at how fast you'll be able to put together a decent looking site.

Some of my favorite resources: http://www.sitepoint.com | http://css-tricks.com/ | http://www.unheap.com/ | http://pea.rs/

The recommended course is learning the basic from w3schools, then reading or atleast spending some time practicing with examples from across the web. 

Why no love for Python?

I would still advise people to avoid w3schools, it's best to learn from a more accurate, error free source.

This count?

http://www.learnpython.org/

AVOID  w3cschools, especially if you're new and trying to learn the BASICS. It's much more harder to forget something you learnt wrong from beginning.

Mozilla Developer Network is official resource for javascript.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/JavaScript_technologies_overview?redirectlocale=en-US&redirectslug=JavaScript%2FJavaScript_technologies_overview

 

if you want to start from real basics with interactive sessions, try code http://www.codecademy.com/

Just dont do what i do and jump from languages like HTML, CSS etc. to full on java. My brain literally exploded. Luckly though im used to it now and am into Andorid Development.