Software Development

Best programming languages to learn on your own time

With thousands of programming languages out there, it can be daunting to find a language to start with and a good course that assumes no prior knowledge. This post highlights programming languages that are good for beginning programmers and some resources to get started.

Programming-816.jpg

With thousands of programming languages out there, it can be daunting to find a language to start with and a good course that assumes no prior knowledge. Especially if you are someone who is busy and wants to learn on their own time and don’t have the flexibility to take an in-person class, getting started with programming can be difficult. This post highlights programming languages that are good for beginning programmers and some resources to get started.

For those with no experience

These courses have been designed for people who have little or no programming experience.

C

C is one of the most widely used programming languages and often used as an introduction to programming. It has influenced many languages that came after it, and knowledge of C will make learning later languages, such as Objective-C (used by Apple), easier. It influences many later languages you could want to learn, so starting with C will give you a deeper understanding of how computers work.

Java

Java is a higher level language which is designed to be compatible with any operating system. It has similar syntax to C and C++. It’s a great programming language to start with because it is widely used and practical, however it won’t give you as deep of an understanding of computer operation as a lower level language like C will.

C++

C++ bridges the gap between a language like C and Java as it has features of both low-level and high-level languages. It’s another commonly used language that has a wide range of uses and compatibility. It’s based off of C and adds object-oriented features. It has also influenced many other languages such as C# and Java.

Python

Python is a language that was designed with human readability in mind. Because of this, it doesn’t take as much code to execute programs as other languages. It’s a great, easy way to learn recurring concepts in computer science and has real world use in the creation of scripts.

Ruby

Ruby has similar function to Python but is less readable. It’s more object-oriented than Python and is similarly designed with simplicity in mind. It has many applications, but is most often used for web applications.

HTML and CSS

HTML and CSS are used for webpage design. While these languages won’t really help pave the way for learning more traditional programming languages, they are essential for webpage design. HTML (HyperText Markup Language) is a “markup language” which allows you to put content into a webpage whereas CSS (Cascading Style Sheets), is used to format and define the layout of a page.

MIT App Inventor for Android

If you aren’t interested in programming as a profession (at least at the moment) it may be worth looking at using the MIT App Inventor for Android. It requires no coding, but will teach you how programmers think and provide knowledge on some concepts in computing. Plus, you’ll end up being able to make Android apps once you’ve mastered it!

What’s next?

If you already have knowledge of another programming language then these are great follow-up languages.

C#

C# is primarily used for Windows applications in the .NET Framework. Learning C# is easy if you have experience in C, C++, or Java. The syntax is similar. It’s popularity has been increasing as C# is used for third-party apps on Windows 8 or Windows Phone.

Objective-C

Objective-C is primarily used for Apple’s operating systems, OSX (for Macs) and iOS (for iPhone and iPad). If you are looking to develop for Mac, Objective-C is the way to go. Apple provides lots of support for learning Objective-C through their developer program.

Javascript

Javascript (little relation to Java) is a common language used to make webpages more dynamic. With a syntax similar to C, it doesn’t require a lot of effort to set up as it’s built into web browsers. It’s also used in other applications such as PDFs.

PHP

PHP is another language often used for web development, although it works well as a general-purpose language as well. PHP can be implemented directly into HTML. Those looking to learn PHP should already know HTML, CSS, and Javascript.

Where to learn online?

If you are just beginning to learn, we recommend that you stick to one language until you are extremely comfortable with it. Once you’ve picked a language, check out these resources to find courses:

OpenSesame

OpenSesame is a corporate elearning course seller that hosts content from a variety of sellers. It’s the best option if you would like to have your employees learn and track them through your own learning management system. If you are an individual however, they allow for the purchase of single licenses and a learning management system is not required. They offer courses in all the languages listed on this page and more from InfiniteSkills, Learntoprogram.tv, Webucator, Stone River, Compuworks, Pearson and more.

CodeAcademy

CodeAcademy offers free in-browser courses that require little set-up and is very user-friendly. The courses are very interactive and offer courses in Javascript, jQuery, PHP, Python and Ruby.

TreeHouse

TreeHouse is a paid service ($25-$49/month) that allows you to take courses in HTML, CSS, jQuery, JavaScript, Ruby, Ruby on Rails, WordPress, PHP, iOS and Android. Similar to CodeAcademy, it focuses on interactivity and allows you to learn in the browser.

Online college courses

Many free online college courses are also available. Some of them are only available for a certain amount of time or require you to stay at the pace of the course, among other things, so they may not be for everyone. To see if the language you want to learn is offered, check out Udacity or Coursera.

Daniel Chen is a marketing intern at OpenSesame, the world’s largest marketplace for buying and selling corporate elearning courses. He is currently a sophomore at Dartmouth College.



71 comments
Bob's Bob
Bob's Bob

C# is no more difficult to learn than Java (and is a hell of a lot better) so there's no reason to place it under "What's next?", PHP is not "implemented into HTML", it's implemented in the php module (or equivalent, there may be other ways), and C & C++ have many pitfalls for beginners.

Also, there's no reason why someone shouldn't jump straight into Javascript, it makes a hell of a lot more sense than starting out with C.

ayuen dengtiel
ayuen dengtiel

hi guys,

well i must say am glad to have reached this site though am astonished since all i can see here is mere greek. am optimistic that in due time i'l get on well with the online tutorials. thanks for the sites i have been referred to.

looking forward to more updates in advance.

happy coding guys. i truly appreciate.

v008370
v008370

Visual Basic was what I learned to program in, and 20 years later I still think its an ideal language for the newbie.  It's simple but extremely powerful.

Take a look at http://www.visualbasictutorial.net for a great site to learn the VB ropes

phpdevelopment
phpdevelopment

I like PHP because PHP is probably the most popular web development language right now. It is cheap, easy to learn and has a larg community

vicastudillo
vicastudillo

1. Get a good grasp of programming, by understanding how a computer works through assembly language (Intel). From what happens to electricity when it enters your computer power supply, to how each key on your key board produces electric signals, to how a pixel is placed on your screen, or how a data is stored on your computer memory and drive. All these will also enable you to understand virus and hacking security. What is fiction and not (i.e. the fun in watching movies like Matrix, Virtousity, etc.).

2. Learn Pascal language. This will remind you what an ideal programming language is. A very organized and user-friendly language for a programmer. Pascal also serves as a good example for a programming language designer or compiler designer who wants to create a better programming language. The efficiency on how a language compiler compiles programmers code to machine code, and how efficient that compiled machine code is a matter of compiler design.

3. Learn the basics in all aspects of medium-high level programming through C (most popular general purpose language), SQL (most popular data management language), and HTML & Java (most popular for web programming).

4. Now, after a good grasp of the basics, give time to learn other languages, and determine which is fit for your specific environment.

5. While mastering your specific language, it is best to explore and understand atleast one other new programming language a year. With the growing number of new programming languages being invented every year, these will help keep motivating your passion for computer programming.)

bill
bill

 started coding 50 years ago starting in Assembler moving on to COBOL and then many of the languages mentioned. Without doubt Assembler is the most satisfying language (I have written in five different flavours) as you have to learn and understand the hardware architecture - what makes it tick and how to make it peform! I once took a (key) module written in a high level language and rewrote it in Assembler (manually optimising all registers) and performance improved over 1000 times.

I was always taught that you have to code for the support person who comes after you - maintenance is key. Having tried to support "C" applications, I'll quote a friend who said that "C" was a write only language.

At one time I ran a large support team and in the end I wrote my own language - QUICKODE - the name of  which explains what its target use was - fast to write, fast to compile and fast to execute. It was a "one pass" compiler and the real challenge was how to handle "forward references". Indirect addressing came in handy for this.

bill
bill

started coding 50 years ago starting in Assembler moving on to COBOL and then many of the languages mentioned. Without doubt Assembler is the most satisfying language (I have written in five different flavours) as you have to learn and understand the hardware architecture - what makes it tick and how to make it peform! I once took a (key) module written in a high level language and rewrote it in Assembler (manually optimising all registers) and performance improved over 1000 times.

I was always taught that you have to code for the support person who comes after you - maintainability is key. Having tried to support "C" applications, I'll quote a friend who said that "C" was a write only language.

At one time I ran a large support team and in the end I wrote my own language - QUICKODE - the name of which explains what its target use was - fast to write, fast to compile and fast to execute. It was a "one pass" compiler and the real challenge was how to handle "forward references". Indirect addressing came in handy for this.

AbidSyedK
AbidSyedK

You forgot to mention udemy.com (a great online training resource as well which is growing exponentially and to my knowledge much faster than the others you have stated) ;)

hermsen
hermsen

Might also want to look at LiveCode.com for an easy to use, cross platform development environment.

Brian.Buydens
Brian.Buydens

For a beginning user (like the article states is the intended user) I would not recommend any of the languages suggested.  Just to teach the concepts I would use a language like "Scratch."

I imagine this will bring immediate objections for people who say "nobody in the real world uses Scratch.  It's a kids program."  True, but it is a good teaching platform.

Which brings me to my main point.  Teaching a language is not about the language per se but the user environment.  I have seen people flounder learning Java, C, Javascript etc. because they got error messages and didn't know how to fix them.

ThePickle
ThePickle

Yeah...that's exactly what you want - programming advice from a MARKETING INTERN who is currently a sophomore in college.

What's next?  Are we going to get advice on interstellar engine design from someone who doesn't know how to change the oil in his 1972 Pinto?

M Wagner
M Wagner

Ironically, none of the languages I was taught in graduate school are even mentioned.  I knew of C but in those days, Fortran and COBOL (though OLD even back then) were the bread & butter languages being taught to undergraduates.  Fortran (running on supercomputers running Linux) is STILL the language of choice for academic research! 

Graduate Schools were teaching their students Pascal, PL/I, Modula, SNOBOL, LISP (and its variants).  Assembler was the language of choice for weeding out those who couldn't make it in programming.  Hollerith card-decks were the media of choice in those days.

monicabower
monicabower

Great, practical, informative article. Happy to see useful content without a whitepaper/sales opt-in registration required.

RTWatkins
RTWatkins

With respect, recommending half a dozen mutations of C is kind of like recommending only spoken languages that use English subject-verb-object sentence construction. Once you know C++, you can pick up the other C-syntax languages fairly easily. Don't spend time learning them all until you have a direct need to.

If you want to be hire-able across many industries should you get hit in a downsize, the languages I would recommend are:

1) JavaScript/HTML/CSS -- they all go hand in hand, and the web-deployment model is here to stay for awhile.

2) SQL -- In my 20 years in the business, this is the only language I've had to use at every single job. While there are some companies that need people to roll up device drivers in C, every single business has some sort of data storage and reporting requirement. SQL is easy to learn.

3) C#. While there is a big love-hate relationship with Microsoft, many companies go with their products across the board. Learning C# gives you your C-syntax language, and gives you about 75% of Visual Basic as well, since .NET commands are nearly identical. You just have to use semicolons and braces instead of English. (Mostly.)

mansor
mansor

For anyone wishing to learn C or C++ on you own I've found 

http://www.cprogramming.com/tutorial.html

to be useful.

Maybe not related to recommended first languages, but does anyone remember FOCAL?  Played with it on a PDP8 before the arrival of the PC and Quick Basic.

Before that it was Fortran on punch cards.

Quark66
Quark66

My experience: I learned only C language 20years ago. Nothing more. But on the other side I can read PHP, Java, JS, JSON,.. much more now. I can program microprosessors and so on.

I had very funny situatuions here between programmers - someone asked me: what do you thing about Cobol? I can get a job with 3times bigger salary.. 

kjohnson
kjohnson

Let's add a couple of languages that are mainly of historic and cultural interest, none of which are really suitable for ordinary industrial or business applications.

 I recommend studying Lisp, even if only so that you can work through the examples in the stunning book "Structure and interpretation of computer programs" by Andrea di Sessa. Its relative Logo influenced the use of computers in mathematics education throughout the 1980s and 1990s but, I think, it is now only of historic interest.

While most programming languages represent the actions of processes, Lisp and Logo represent the world around us in a powerful enough way for representations of objects to interact realistically. Lisp gave its users almost a religious experience in the 1970s, as is reflected in several books written at the time, "Mindstorms" by Seymour Papert for example, "Turtle geometry," a heavyweight volume by Abelsson and Di Sessa,  and "The Hacker's Dictionary."

A later successor to the crown was Prolog, which is still in use as a data representation language for artificial intelligence applications. Prolog uses an inference paradigm to solve problems and is still a valuable tool for performing symbolic reasoning.

oldfield
oldfield

I am a little surprised there has been no comment on "what do you want to do".  One of the questions I ask people in interview is why this language rather than that language.  Each computer language has its pro/cons, and it very much depends on the skill set you want to learn and what field you want to work in.  Yes C is close to assembly and it allows you to do low level stuff very fast, particularly mathematical algorithms, sorting etc.  (it is my favorite language too).  Java - for web graphics, javascript for web pages, python for quick scripting (but don't go into big projects with this !), C++ for C with OO, Fortran (yes fortran) for complex numbers in science and so on.

More important for me is the requirement programmer that understands logic, you cannot believe the number of people I meet that don't see the point of the "else" statement.  For python etc. you needs set theory, and finally good design.  For me, pick any high level main stream language and any main stream low level language, I don't care which  (as an employer) as they are just languages; what is important is learning concept - so your boss does not bang his head against the wall in despair ! 

jcqs.bchrd
jcqs.bchrd

After learning main frame assembler 360, (in the 60's), PL/1 Fortran, COBOL I discovered REXX.

Portable language between platformes from my PC to mainframe.

Ecellent to learn LOGIC and developpe prototype of code for later implementation in other laguage, more apropriate to the operating system. Can be very close to the operating system.

barryw
barryw

If the purpose is for the majority of the programming work in the future, Javascript/Html5/CSS is the correct one to choose at this point.  JS.Everywhere makes it one single language that operates EVERYWHERE.  That will leave C to only LOW LEVEL code that is time sensitive or device interfaced - all of which will be accessed by JS.

normanrigby
normanrigby

Do folk want to learn programming or just coding?

Before you choose a language you need to know about programming and designing your system.  Getting the design right at the start is so important.  the implementation language can be anything you like; whatever you feel comfortable with or is handiest.


333239
333239

The world of computers is still built on top of C and C++, all other languages will call a C function at some point. Get good at C++ and all other languages can be picked up easily, if and when required. Object Pascal is more readable than C++ and just as powerful and there isn't anything you can do in C that you can't also do in Pascal. Pascal's main downside is just that C++ is more prevalent. I started with BASIC on home computers 30 odd years ago and wouldn't recommend it for someone who wants to get into serious programming. If on the other hand you just want to run a few scripts then there are plenty of scripting languages around now.

gep2
gep2

Hands down... SPITBOL (a super-fast implementation of the SNOBOL4 programming language).  One of my secret weapons as a programmer, for more than 40 years.  SNOBOL4 was developed at Bell Labs, about the same time as C and Unix.  Highly orthogonal, so it's easy to learn.  Data structures, pattern matching, scripting, format conversions... much of the same things that people who don't know better would otherwise try to do in Perl.  SPITBOL patterns are far more powerful and useful than most any of the other languages (most all of which are based on braindead regular expressions, instead).  Few other languages SO richly repay the time it takes to learn them... and are so useful for such a wide array of ad hoc daily processing problems.

Wave_Sailor
Wave_Sailor

I would definitely NOT put the C language on the top of the list. I would say Python or Ruby or maybe even Javascript.

C is too low level.

rmerchberger
rmerchberger

Firstly, I don't understand some of the other comments that say "There's only one programming language good for learning..." That's utter BS.  There are many good programming languages for beginners, and IMHO, the author mentioned very few. Especially since people learn differently, they may need a beginning language that works best for their method of learning (visually, physically, etc.) Personally, I can learn the hard stuff OK and easy stuff comes easy, but many people are not like that. I would think that C would not be a beginner's first choice for those individuals.

I think it also depends on _why_ you want to learn programming. Do you want to just get your feet wet, or just for fun? Or is this for starting a new career in IT? If you're a visual learner and want to just get your feet wet, I would think one of the best languages to start learning with is Scratch. The website below:

http://www.learningtech.org/examples/summit/intersession2012/jarod.t/games.html

has a decent example (even with a java-based executable) and displays enough of the interface to show what it's like to program in. 

Even back in the early days of BASIC there were other (for some people possibly better) learning languages - Logo comes to mind.

When it comes to beginning to learn to program, one size definitely does _not_ fit all.

harinda05
harinda05

Thank you admin for sharing this valuable post.

ahanse
ahanse

@ThePickle 

What next. You can put your old cars on the scrap heap for recycling as this is 2013 and we do things differently now. These sorts of topics are never any advantage as they seem to end up as a pissing contest as can be seen. The writer being a new kid on the block was just putting his view forward for some who may need a starter but it seems all the combative types always descend on the scene to muddy the waters some. Especially them old geezers that may have early dementia (you should know better). Those of you who know, it is not necessary the language but the concepts that are important. 


sasadler
sasadler

@RTWatkins

Heh, as an embedded program (since the late 70s) I've never programmed in SQL.  My programming life consists of C/C++, RTOSes and DSP algorithms.  With what I do, there's really no good alternative to C/C++.

M Wagner
M Wagner

@RTWatkins The premise of the article assumes you have no programming experience at all.  Any of these languages (including your own suggestions) make the first time programmer instantly employable. 

For instance, if you thoroughly understand assembler, you can learn to program in anything - provided you also understand data structures.  The same is true for Fortran (and perhaps C) because Fortran can implement any data structure you want with a small instruction set and high efficiency. 

The reverse is not true.  There is nothing better to build a career than "on the job training" but the most versatile programmers are the ones who started with the basics.  Higher-level languages are easier to learn but they leave the student less versatile in the long run. 

mark
mark

@oldfield in regards to Python, Eve Online says hello. I know one of the developers for that and he was telling me that a lot of it was written in Python.

joel.blazquez
joel.blazquez

@barryw JS, really?! It may work but besides web crp cannot do much with it. It is not bad, but it has only one real application area.

Yes, most thing are web-based now. But let's not forget that behind those web applications run the real systems that are NOT written in JS, definitely (from business systems to OSs)

DanCh
DanCh

@normanrigby

That's a good point.  Are there any online resources you'd recommend for good design practice?  I'm just dabbling with Python - just for fun...

PhilippeV
PhilippeV

@333239 True, Pascal or C are fundamentally equivalent, with just Pascal being a bit more verbose, but better constrained with type safety (which REALLY helps on any complex projects or in maintenance of applications). C++ is a nightmare of incompatibility on all platforms, including across versions of the same platform. When you have to build applications that must be deployed in versatile ways, C++ gets no point at all (and when platforms are changing every 2-3 years, this is really a serious matter of cost and application lifetime)

We coul recommand Javascript/ECMAScript if ONLY it had the way to be much more type safe and if it allowed introspection/reflection for self-adaptative deployments and efficient automatic tuning across platforms.

For this reason there's still a life for Fortran (on computing intensive applications), but I'm sure that thngs are better now with Java and Python. Java is still a very strong language but should evolve more rapidly to integrate a more versatile VM allowing efficient running of applications written in other languages : hor now you can't compile a C/C++ application targetting a Java VM. What really limits Java is that its only extension is JNI or the NaCL extension in Dalvik VM for Android (for native low-level programming), because the Java VM still supports an outdated and too limited instruction set in its bytecode, fully oriented for Java but not as a general purpose Turin machine with enough OO features.

Java is not dead, but Google has created an alternative that should be followed on Dalvik VM. But let's not forget the enormous interest of VM's and JIT compilation : JIT should be able to make automatically local optimization for the platform (including for the support of massive parallelism or SIMD extensions of processors, or for full independance between the appliation os its supporting background host(s) which should be invisible and more easily scalable to various devices or on multiple devices including applidation servers or P2P hosts over a personal network).

Let's forget the host and ntaive programming ! IT's the job of the VM to do that and adapt to the underlying platforms. But a good programming language should be OO, should allow separating clearly the interfaces from the code, should offer contracts (with preconditions and postconditions), should offer reflection in all objets, should not segregate native datatypes from other types, should natively support threads and synchronization mechanisms, should offer native support for basic data structures which will be internally tuned automatically according to data volumes or frequency and types of accesses, should offfer "meta" datatypes and allow meta programming (forget horribly complicate the C++ templates !) without having to rewrite the code.

I liked all aspects of the Eiffel programming language, but there's no real market for this and its support on various systems is very low because it is demanding too much on the native platform.

What we want now is the develoment of an universal VM that will support natively C, C++, Java, .Net, Python, Fortran, Javascript, SQL, by presenting them various aspects/views matching their requirements (or liberal non-requirement). This would allow fast prototyping in one language, while supporting natively interoperable interfaces and replacements of code using a different language.

The only language that describes quite well the data structures and their operation is not C++, but SQL, but SQL is still not enough, we need also a datamodel and operating model. And for now, the only thing you have is... UML.

UML is not directly a programming language, but a set of conventions use in various design tools implementing part of it to generate code. But we still need an universal language in which you'll design and implement everything from UML concepts. It should also allow universal design of user interfaces, with layout description (with automatic presentation flowing), in 2D as well as 3D (it should represent scenes as data structures, and their projections as dependant views, using aggregate functions similar to SQL). Also the datatypes should no longer be constrained to specific bytewidth, except when building a data interface layer with serialization adapters. All datastructures should allow managing the lifetime of objects, and their required storage sizes (let's forget "sizeof" from C/C++, and bounded arrays, let's just speak as vectors or matrixes and unify them with algebric concepts, lazy evaluation at runtime)

There should freedom for the VM suppprting the compiled code to locate objects where it wants or where it will be the best efficient, with or without parallelism ; also the datypes should no longer be restricted in range or precision, and we should forget "character" objets to use only texts used with text breakers natively compatible with Unicode; text parsers should implement natively regular expressions, like Javascript or Python, but should also natively support normalizations, with search and transforms interfaces). Finally the VM should allow formal proof of implemented concepts, and shoudl automatically infer the limited interfaces that respect some design contracts, for easy extensions later in the implementations or designs.


For this reason these modern programming should not be focused on the implementation of algorithms, but on the formal description of problems to solve, with the formal description of data or event input and data or even outputs, and their relative order (in time or space) when (one only when) they are needed.

For all these aspects, C++ is extremely poor, we pass too much time reinventing the wheel, or having to rewrite the same code for a new host platform that is not fundamentally different from the previous one, or only to support new similar datatypes (e.g. changing ints from 32 bit to 64-bit, or to floating point datatypes : what a waste of time !).Once again UML is much better to describe the dataflows and processes by design instead of by their implementation.


M Wagner
M Wagner

@Wave_Sailor   If you just want a job, see what most people want and learn it.  If you want a career, learning a low-level language like assembler, C, or Fortran will prepare you to move to just about any other programming language there is.  The principles in low-level programming are universal.  Once you learn them, translating them to a higher-level language is exceedingly straightforward.

ArtyChoked
ArtyChoked

@Wave_Sailor Too low level for what? Depending on what you want to do and which tools/libraries you have at your disposal, you can address pretty much any problem in C. And if you really want to learn about machine architectures (valuable, indeed), you can really get low-level and learn an assembly language or two. At first glance, learning multiple assemblers may not seem germane, but once you've learned them, you've got a foundation for any later language (compiled, interpreted, or hybrid; low-level, high-level, OOP, functional, procedural, etc) you run into later. If you take your journey through programming & design to this level (most don't), you'll be better able to select the best language(s) in which to implement a solution to a potential application. One size, after all, does not fit all.

OpenSesame_Daniel
OpenSesame_Daniel

@rmerchberger Absolutely! The programming language you choose should depend entirely on what you want to do, how difficult you want it, and how you learn best. 

Scratch is a great choice for the people who just want to get their feet wet. Same is true with the MIT App Inventor. Even games like Cato's Hike (https://itunes.apple.com/us/app/catos-hike-programming-logic/id574335479?mt=8) are a great way to learn some of the concepts of programming. For this post, I tried to focus more on languages that could get you started with a more practical language.

Bob's Bob
Bob's Bob

He has no right to put any view forward until he has an idea what he's talking about, and I'm not even a "geezer", just someone fairly young who is dissapointed to see TR publish a programming related article by someone obviously ignorant of the subject matter. If I wanted this kind of "quality" writing, I'd go on reddit.  @ahanse 

joel.blazquez
joel.blazquez

@ahanse@ThePickleI see your point but I somewhet share The Pickle's point of view, too.

We are constatnly bombarded by "opinion" articles in blogs and forums. Authors that post information for other people should be very knowledgeable of the subject. Else it is a waste of time, may confuse people that are looking researching a topic or send them in the wring direction. I see in the comments many professionals that do not share the writer's opinion on the languages. That has to mean something.

Now everybody is forcing themselves to publish articles and maintain a blog. The contents is however also important, not just say whatever you think with no basis for that opinion.


C/C++ great for starting and undertanding how things work. However, they can get very complex. Use in industry is limited, very limited.

Java, a sure shot, great. The only downside I see, for learners: you stay in he upper levels of abstracion.

HTML is NOT a programming language. Does anyone still code HTML manually, or has ever coded manually?

Python, Ruby. Great, cutting edge. New stuff, innovative projects,... unfortunately mostly toy projects.

Javascript and PHP next?!?! They are basic, simple languages. I cannot see why you put them as next step. Versatile, yeah, maybe. If you don't want to program web or e-commerce stay away from those.


I see some talking about, SNOBOL, LISP, Pascal. Are you in academia, research or something extremely specific? No? You want to learn something useful? Then forget about those. Maybe Pascal for learing, but that is it. You will not use it in real life.

RMSx32767
RMSx32767

@M Wagner @RTWatkins You are "instantly employable" only if you are 20 years old, have a degree and 10 years of experience with the language being used by the employer.

joel.blazquez
joel.blazquez

@DanCh and you will keep doing it just for fun, not for work, most likely...

barryw
barryw

@DanCh Yes go check out wakanda.org  - they look to have a really nice dev environment coupled to an amazing nosql data store.  And all the code on both sides is JS.

normanrigby
normanrigby

@DanCh Sorry Dan, I am bit out of the loop these days.  I made the comment, as in my (too many!) years in IT, I saw such a lot of gobble-de-gook code.  Totally unmaintainable and some in  quite business critical settings.  Clearly written by self taught enthusiasts with out a systems background.

I am not putting you off, I hope.  learn Python by all means.  You have had the wit to spot a potential problem for the future...

joel.blazquez
joel.blazquez

@M Wagner @Wave_Sailor Well, if you want a job forget then about Ruby and Python. Those are extremely underused compared to the Java and .NET stacks!

CFWhitman
CFWhitman

@chris.smith 

What you say here is Microsoft centric to the point of wearing blinders.  Even from a purely Microsoft perspective, it's much too extreme.

 C++ is very, very far from outdated.  It's widely used for programming for Windows and Unix based operating systems.  It depends on how low-level you want to go and how important performance is for the application involved.  You can't use C# and Java to replace C++.  For one thing, Java and C# virtual machines have to be written in something, and that can't be Java or C#.  At least Objective C is a lower level (third generation) language, like C++.

C is not outdated either.  It's still the language of choice for writing operating system kernels.  It also is a third generation language and cannot be replaced by a fourth generation language like C# or Java.

A lot of the other third generation languages are special purpose at this point.  That doesn't make them outdated, though I wouldn't recommend them as a first language choice.

I certainly have seen full blown e-commerce sites written in PHP, although I'm not saying it's the course I would recommend.  Ruby is still fairly new, but I've certainly seen Python programs used in business environments.

Most Web servers don't run .NET, so you will much more commonly see PHP, Perl, or Python (take your pick) used for website programming than any .NET language.

chris.smith
chris.smith

I agree with @joel.blazque. The only languages I can see worth investing time in are C#, Java and possibly Objective C plus the web languages/markups (Javascript, HTML5 and CSS3). Outside of those, I don't see any reason to invest time in the other ones. All the other ones seem out dated (C/C++, Pascal etc), not viable in real world enterprise environments (writing a full blown e-commerce site in PHP, would just be a nightmare in my mind) or just plain not used in the business world (never seen a Ruby or Python website written by any business or anyone request me to do it). I have however seen PHP websites that are pretty impressive but its my understanding they took way longer to develop vs doing it in something like .NET C#.

Editor's Picks