[Solved] What programming languages should I learn?
mahdiyusuf.com
mahdiyusuf.com
I can't say I agree here. I suspect you knew this would trigger some debate.
First of all, the definition of OO is not well established. What defines OO? Is it encapsulation? Inheritance? Message passing? Jonathan Rees discusses the issue in more depth here: http://paulgraham.com/reesoo.html . Whether OO, by any accepted definition is a Good Thing is also debatable, and beyond the scope of this comment.
More importantly, I think imposing that "good OO practice" on a brand new programmer is a distraction from learning the basics of programming. None of the boilerplate Java requires for a "hello world" program actually has anything to do with printing "hello world" to stdout. The beginner has a great deal of information to absorb, and the meaning of "public static void main()" is an extraneous distraction from what's fundamentally required to make a program work, and arguably not helpful for making programs that are well-structured and easy to understand. If "hello world" requires much more than "print('hello world')", it's not a good language for learning the basics.
Passing around objects without having to understand their innards is part of what's generally thought to be good about most definitions of OOP. Being able to understand them is part of learning the language, of course.
Take a look at the github and stackoverflow communities. If you think they're doing cool stuff, then you can probably feel safe tackling any language in the upper right corner of that graph. It's a safe bet.
And look what's up there!
javascript, python, php, ruby, c/c++, perl
scala, actionscript, haskell
The angle above the regression line suggests whether the language is more talk (so) or walk (github), the clusters are sensible based on my domain knowledge of the languages: useful workhorses, weird and developed.I love the informative display of quantitative information. This is especially true when everything rhetorically boils down to opinions.
The standouts on above the line, things like Delphi, F#, C#, are all primarily Windows oriented. The things that are to the south-east of the broad thrust are things like CoffeeScript, Ruby, Lua, D, Go, etc. - a lot of stuff that's either fairly cutting edge, or played with by people who like to think they're on the cutting edge.
I think the big secret about these recommendations is that it doesn't really matter _that_ much. Lots of people use different development environments, languages, and they get stuff done. I can scoff/smirk at Java ("Java. Heh.") but then my favorite web application is written in Java. My favorite text editor is written in a disgusting, horrible language. As for the PHP/Ruby/Python/Perl decision, it turns out that all of them work. Even PHP works. It turns out that the vast majority of time is _not_ saved by being able to write anonymous functions.
I was so pleased with myself I didn't even bother reading the article...
Since then, i've had a little dabble with html and css and thats about it. On one or two occassion, i had a colleague try to shove Delphi down my throat, and i didnt take to it too well.
Up until a month ago, i never wanted to touch or look at code, but i had to get involved with a little bit of VBA for an important project at work, and then i also had a little dabble with javascript. I actually enjoyed working with them both, and im finally able to start reading code, and oddly am getting very interested in coding now.
I turned 30 about 6 months ago, so its strange to be learning at an age where most are usually seasoned veterans, but still i'm having fun.
But as an entrant into this area, i've been most intrigued by Javascript, both for client-side AND server-side (Node.js), and that graph makes me feel much better for opting for javascript as my language of choice for the short-to-medium term.
Sorry for the mini auto-biography, but i felt i had to share.
I view all active, open-source projects as equal when it comes to language popularity. Github is great, but it's hardly the only place to host a repo.
You're particular complaint about .NET projects is more than compensated for by the Stack Overflow cross-listing.
In Git, there's a good chance it would be three repositories. One for the server, one for the client, and one for the library.
Wow, that's a bold statement.