Donate to us via Paypal!
One mans freedom fighter, another's terrorist.
Sunday, April 18, 2021
 Need Help?
Members Online
Total Online: 108
Guests Online: 108
Members Online: 0

Registered Members: 135474
Newest Member: trucmuche
Latest Articles

Selecting Your First Programming Language

Arrow Image If you are stuck wondering were to start in your programming adventure this is the article for you.

Deciding what your needs are

Many times on forums and in chat rooms I hear the same question over and over. “What programming language should I learn?” but the answer is different for every person. However there are some common questions you can ask yourself to figure out a good starting point.

“What do I want to accomplish?”

First you should start to think about what you want to create when coding. Do you want to make cool websites, and web applications, or maybe a quick windows application to calculate the amount of paint needed for a room? What about creating video, flash, and 3D graphics. There are languages designed to do all this and more! You just need to figure out what your needs and wants are. Do some research on popular languages and find out what types of programs other people have written with them.

! Keep in mind !

When you first start coding it is more important to learn how to program then it is to learn the library's or modules of the language. Focus on the basics and make sure you understand them before moving on.

“Should I worry about compatibility & portability?”

The short answer is: no that is not likely at this stage. Since you are just starting out you will most likely just pick a language that will run on your current operating system.
However in the future you may need or want your application to work on multiple platforms such as Windows, Linux, and Mac.

“Is the language well documented?”

Are you going to be able to find a lot of information about your language? What types of books, internet tutorials, and official documentation are there available for your language? It is always nice to have a good community around the language as well. Most on-line communities are based on forums, IRC, and mailing lists. Remember that Google is your friend. Just look up your language on Google to find tutorials, and on-line community's, check out Borders or Amazon dot com for books.

“What level of architecture do I want to code in?”

Computer do not understand the source code we write. They only understand machine code. Machine code can be thought of as binary, just two states 0 or 1 or switches that are either on or off. We could say there are about 4 different levels of programming languages. Low, middle, high, and very high level. When a language is said to be a low level language it means that the source code is more closely related to the machine code. This means the source is a bit more cryptic an complex, but you have very fine control and a lot of power over your program. If a language is high level it means it is closer to human readable language and it is much easier to get common (and some uncommon) things done. Though some of the finer details are hidden from the programmer. The benefits of a lower level language is speed and power. The problem is you wouldn't want to write an entire game in a low level language because it would be large, complex, and hard to understand.

“Compiled or interpreted?”

When a program is said to be “compiled” it means that the source code is passed threw a special program called a compiler before it can be ran. The compiler turns the human readable source code directly into machine language also known as a “binary file” or “.exe”.

When a program is said to be “interpreted” it means the source code is passed to a special program appropriately called an interpreter during run time. This means you just have to save a script with an appropriate file extension and run it. The source code is compiled dynamically on the fly during run-time. So compile time is run time. The pro is you can create programs very quickly and save a lot of time. The con is you lose some speed and power in your programs. Compiled programs are naturally faster the interpreted ones. Don't let that put you off though, many interpreted languages are more then powerful enough for your everyday needs.

Some languages are / or can be “byte compiled”. This means that when the source is compiled it is not turned directly into machine language. Instead it is turned into an “intermediate language” called byte code. Byte code is on a lower level then the source but is not ready to be ran by the computer. Byte code is then ran on some form of virtual machine were the byte code is compiled, garbage collected, and more. Some popular virtual machines are: the java virtual machine, .NET platform (pronounced “Dot Net”), and mono platform.

Side notes

Do not stress to much over what language to pick. Pick a language that will help you learn to program, and accomplish your tasks. Don't worry about what’s cool or the newest thing go with what works for you. Odds are you are going to be learning new languages later on anyways. So as long as you have the basic programming concepts, and techniques down you will be able to learn a new language more easily. The most important part is to have fun! Enjoy what you are doing or why do it at all?

Language Reviews

I am going to give a short list of programming languages that I think beginners will find useful and will learn the most from.

This is not a full list of languages!

This is just a few languages that allow different areas of software to be explored, in different ways. For a larger list of languages check out wikipedia's alphabetical list of programming languages

= Web Sites =
Basic static text websites can be created with a combo of these two languages and some graphics.

Type: Markup Language
Geared for: Websites
Difficulty: Very Easy
Compatibility: Works with modern browsers (Firefox, Chrome, Safari, Explorer)
Documentation: No lack of documentation. I find that the w3school tutorials cover just about everything, so it is unlikely you will need a book.
Notes: All you need is a good text editor. However there are also more complex programs like Dreamweaver to help simplify the creation of XHTML pages.

Type: Style Sheets
Geared for: Websites
Difficulty: Easy
Compatibility: Works with modern browsers (Firefox, Chrome, Safari, Explorer)
Documentation: Lots of great on-line tutorials. You might find buying a book helpful as it will explain more about design.
Notes: All you need is a good text editor. However there are also more complex programs like Dreamweaver to help simplify the creation of CSS files.

= Web Applications =
Web applications add interactivity to a website such as pop up boxes, log-in forms, shout boxes, games, and more.

Type: Interpreted / scripting
Geared for: Web Applications
Difficulty: Easy - Mild
Compatibility: Works with modern browsers (Firefox, Chrome, Safari, Explorer)
Documentation: Great on-line tutorials, but you may find a book helpful.
Notes: This gives web designers a scripting language to embed in there web pages. Can create pop up boxes, validate XHTML forms, and more. Code is executed by the browser.

Type: Interpreted / scripting
Geared for: Web Applications
Difficulty: Mild
Compatibility: Code is ran on server
Documentation: Good on-line tutorials, may want a book for more complete learning process.
Notes: Because code is executed on the server the user can not view the source code, this adds a level of protection and security for things like login forms and online transactions.

= Databases =
Databases allow you to store tons of information in a logical way. In software development you can use them to keep track of websites members, scores in a game, employes on a pay roll, and more.

Type: Structured Query Language
Level: Very High
Geared for: Databases
Difficulty: Mild - Hard
Compatibility: Used with many major database management systems (MySQL, PostgreSQL, Access, Oracle, SQLite, and more )
Documentation: Great documentation, many books, and on-line tutorials.
Notes: SQL is a standard language for accessing databases. There are many different versions of the SQL language. However, to be compliant, they all support at least the major commands (such as SELECT, UPDATE, DELETE, INSERT, WHERE) in a similar manner.

= Desktop Applications =
Type: Byte Compiled
Level: High
Geared for: .NET or Mono platforms
Difficulty: Mild
Compatibility: .NET on Windows, or Mono on Windows, Linux, & Mac
Documentation: .NET is well supported by Microsoft and there are many books available. Mono conforms to most of .NET standards.
Notes: VisualBasic.NET is a different language in the sense of syntax and code blocks. Reserved words such as Dim ... As, or Begin ... End are used instead of symbols like in C style languages. For this is the reason this language ended up on the list.

Type: Byte Compiled
Level: High
Geared for: .NET or Mono platforms
Difficulty: Mild
Compatibility: .NET on Windows, or Mono on Windows, Linux, & Mac
Documentation: No lack of documentation to speak of.
Notes: Great new language developed by Microsoft. Often compared with Java, though it is my opinion that C# is superior for windows development. Also works well with the Mono platform for linux.

C / C++
Type: Compiled
Level: Middle
Geared for: Desktop applications.
Difficulty: Hard
Compatibility: There are compilers for all platforms.
Documentation: Tons!! Books, on-line, people, just tons!
Notes: It is now an older language, but still very useful when you need to squeeze a lot of power into a program.

= Mixed (Desktop, Web Applications, Mobile Phones) =

Type: Byte Compiled
Level: High
Geared for: Portability
Difficulty: Mild - Hard
Compatibility: Cross platform
Documentation: Well documented
Notes: Good for teaching object oriented programming. Many library's, making development of complex programs more easy.

Python / Jython / IronPython
Type: Interpreted / Byte Compiled
Level: Very High
Geared for: Everything, and RAD (Rapid, Application, Development)
Difficulty: Easy
Compatibility: Cross platform
Documentation: Very well documented
Notes: Fantastic language for beginners! The Python interpreter is written in C. The byte code is specific to the python platform. Jython compiles to Java byte code and runs on the Java Virtual Machine. IronPython compiles to CIL (common intermediate language) for .NET or Mono platforms.

= 3D Graphics or flash games =

Type: Byte Compiled
Level: Very High
Geared for: 3D images, animation, and interactions.
Difficulty: Mild
Compatibility: Java platform
Documentation: Well documented
Notes: A fun and interesting language to do 3D work.

Type: interpreted
Level: Very High
Geared for: 2d Flash animations and Flex 3D
Difficulty: Mild
Compatibility: Works were ever flash or flex is compatible.
Documentation: Normal
Side notes: This is a popular language for this specific task.

= Embedded Systems =
Washing machines, tv's, watches, toasters, you name it!

Type: Assembled
Level: Low
Geared for: Special niches when needed
Difficulty: Very Hard
Compatibility: Each processor architecture has Its own version.
Documentation: Normal
Side notes: If you learn assembly for one architecture, than it isn't too difficult to code on different ones. You just have to learn a new instruction set.

Remember to have fun and learn all you can!

last edited: Dec 28, 09


ynori7on April 04 2009 - 21:48:23
There should be a link to this article in the FAQ or something. This article does a good job showing what types of questions you need to ask yourself, and it has a convenient assembly of links to help people get started. VG rating from me.
Rapt0ron April 04 2009 - 23:15:18
Great article, goes over all the most commonly used languages and gives a good, brief overview. Should help out a lot of beginners.
spywareon April 05 2009 - 00:57:21
You might want to take the time to explain C doesn't -really- has native OOP support and C++ does. The difficulty levels are useless, just state if it's noob-friendly or not. As general overview this guide does it's job, but it's not something you should solely use to make a decision.
spywareon April 05 2009 - 00:58:09
Oh, C# isn't usable cross platform, you can scrap that. No native support = not cross platform.
ShadyTyranton April 05 2009 - 02:40:03
Im not sure if I agree that just because there is no native support for C# that it is not cross-platform. Though it is noted that it is native to Windows.
harry_potter28on April 05 2009 - 07:12:55
Nice article, it helps a lot.
c4p_sl0ckon April 05 2009 - 18:28:58
Very nice article. Describes the various languages pretty well. Of course one would have to read up on them further because it would never fit in an article. Got awesome from me.
clone4on April 06 2009 - 15:30:35
don't really like it. There are some omissions and I think it is way to brief to be used as credible guide. Yet it is well written and structured with some good info in it...
Uber0non April 07 2009 - 19:21:10
"computer readable code of ones and zeros" should rather be referred to as machine code. Also, you should probably mention something about coding for mobile platforms and give some examples of functional programming languages like Haskell or Lisp Wink good start though. Rated "Very Good".
ShadyTyranton April 07 2009 - 20:58:08
I didn't think about moble platforms, thanks for the idea.
ShadyTyranton April 07 2009 - 20:58:48
blackmindon April 09 2009 - 03:11:48
also consider that HTML and CSS are not programming languages. and also that c and c++ and not the same language so they should not be in the same field for one it was stated above one is OOP and one is not also C is much more low level than C++ and also that you can compile a C program as C++ could also be useful to know
blackmindon April 09 2009 - 03:13:20
Also want to point out about java being hard....most entry level college courses start out teaching java first so its a great into to OOP
ShadyTyranton April 09 2009 - 16:33:10
I did note that the web languages are not programming languages.
korgon April 10 2009 - 11:23:35
I think it's pretty good gives a solid bases on where new people can start.
starofaleon April 14 2009 - 18:44:11
I like this article
Arto_8000on May 08 2009 - 19:19:26
Your confusing programming language and markup language and there is a couple of thing you need to clear up in your article. For Java description, it's an interpreted language even tough the code is "compiled". Assembly is compiled, not "Assembled". WTF are those "category" of code, your mixing up the use of the language and the way it runs. There is just 2 categories, interpreted or compiled. The description about interpreted language is wrong, the computer doesn't read anything, it's a program that read the code and execute what the code is suppose to do.
thetrojan01on June 27 2009 - 18:55:15
You say nothing about pascal?!?!??!?!
ranmaon June 29 2009 - 01:53:28
Lol. Way back when it was between pascal and C++. C++ won Pfft So my uncle claims. He went with pascal xD
pt00on December 10 2009 - 18:45:31
I really liked it. It's neat and tidy, and I'm sure it has helped and will help a lot of people. Hopefully it will prevent the forum from filling up with monotonous posts.
The Ripperon December 30 2010 - 07:37:42
A decent article, however there is much room for improvement. Should help beginners out a bit. Over all: good.
stranacon February 15 2011 - 23:41:55
Sorry, I'm just trying something out.
stranacon February 15 2011 - 23:54:49
Sorry, I'm just trying something out.
stranacon February 16 2011 - 09:15:46
still testing, sorry
stranacon February 16 2011 - 09:17:36
May be the last time - I just wanted to check some things
cyber-guardon April 03 2011 - 15:07:49
not bad...
DonMilanoon April 10 2012 - 21:22:23
Amazing... I already know Java, Python, Javascript etc. very well, but this is a great guide! Thx very much.Wink
ellipsison April 11 2012 - 11:26:56
Taught myself C++ in the school library, took a Java course at the local votech as an elective, learned C# after Java. I'd say C# is perfect for desktop applications. I think aspx & t-sql & C# is perfect for web. But I have a bias because my dad always talks down on php. He is a dickhead though. Organized article.
Post Comment


You must have completed the challenge Basic 1 and have 100 points or more, to be able to post.