I'd like to start learning a new programming language. I have a bit of a crutch when it comes to the JVM. So I'd prefer some suggestions to languages that aren't direct JVM languages (Lift, Closure, etc). Any advice and it would be nice if you would include the why.
Ignoring your non-JVM clause, I'd suggest Scala. Seems to have much more of a buzz than any other new language to come along recently.
And of course, I always recommend learning JavaScript really well -- and I mean really well; not just JavaScript for the browser. I think it's going to be a big player on the server as well.
Before I read Bear's answer, my answer was also JavaScript - and like Bear said - the real, gnarly, object prototype, functional programming, closures-rich, swpa, 10,000 lines of JavaScript kind of JavaScript.
Scala... meh.
How about other technologies? Neo4j and Akka seem pretty interesting and potentially very useful.
Eliminate fossil fuel subsidies. (If you're not on the edge, you're taking up too much room.)
I say that because I got a book about Erlang (won it on the Ranch) and it looked like an interesting language. However I haven't got around to learning it yet (I did read the book, twice) because I don't have a project I want to do which could make good use of it. Which brings me to my point: do you have a project in mind to implement in this new language? I've found that learning a new language is useless unless I do something of a fairly decent size in it.
Javascript? meh. I know, I know, its used everywhere. Its good for your professional career. But it is, IMHO, a really crappy language that was hacked out in a weekend and 15 years later we are stuck with it.
How about Google's GO? That looks cool for its problem space.
For a complete change of pace, I suggest spending $25 and buying an Arduino board, then learn how to program it. It uses an open source, c-like language to do embedded programming. A completely different kind of thinking than writing large Java systems.
Pat Farrell wrote:Javascript? meh. I know, I know, its used everywhere. Its good for your professional career. But it is, IMHO, a really crappy language that was hacked out in a weekend and 15 years later we are stuck with it.
Which means you don't know much about the language. Maybe it should be your next language.
Saurabh Pillai
Ranch Hand
Joined: Sep 12, 2008
Posts: 449
posted
0
I think handheld devices are becoming more popular for day to day activities. Doesn't that mean, we should learn iOS, Android type of languages?
Bear Bibeault wrote:
Which means you don't know much about the language. Maybe it should be your next language.
Not willingly. I've even bought a really good book by a great writer named @bear and I can't stand even reading about it.
Reminds me too much of Perl. Obscure syntactical shortcuts that make the code too concise. One doesn't have to be as verbose as Cobol, but
the style of Iverson's APL or Perl leave me cold.
Pat Farrell wrote:
I've even bought a really good book by a great writer named @bear
Reminds me too much of Perl. Obscure syntactical shortcuts that make the code too concise.
I detest Perl for that very reason; I call it the "write-only" language. I don't see that in JavaScript, however. What makes JavaScript more concise than something like Java isn't obscure syntax, but rather its use as a functional language. For someone coming from OO, that can be a bit of a bump at first -- it was for me -- but you can write JavaScript in the imperative style as well.
I've decided to go the JavaScript route. I agree that it is only going to get bigger and I'm in it daily anyway. So it works out great. I've ordered "Javascript The Good Parts" and I also have "Secrets of the JavaScript Ninja" and "HF JavaScript". So I should be set.
I'd also recommend some books on server-side JavaScript -- I'm not sure what the good ones are yet; that's an area I need to spend some time investigating. So much to learn!
Bear Bibeault wrote:I'd also recommend some books on server-side JavaScript -- I'm not sure what the good ones are yet; that's an area I need to spend some time investigating. So much to learn!
I agree. I have HTML5 in Action and it has a chapter that uses Node.js which is basically the real option for server side JavaScript right now. I'll just start there.
Saurabh Pillai wrote:I think handheld devices are becoming more popular for day to day activities. Doesn't that mean, we should learn iOS, Android type of languages?
Generally, I agree. But there are a couple of reasons I don't care to dwell on those right now:
I have already written iPhone apps.
Android is Java
Learning iOS is learning a platform, not a language. Learning Objective-C would be better for me considering what I'm looking to do.
Bear Bibeault wrote:Manning has Node.js In action available via MEAP, but I'm not sure if it's any good or not yet. I have the MEAP, now I just need the time to read it!
I'll probably hold off on Node.js in that depth for the time being. More interested in digging deep into the language right now.
Your feedback on the the Ninja book in that regard would be great. Chapters 3 through 7 are intended to give just that "next level" view of understanding the language.
Also, I'm probably cheating a bit by picking JavaScript because I do use it daily. However, over the past year it has been in the form of jQuery primarily. I also don't feel that I ever moved much past the DOM API with JavaScript's usage. So I'm excited to get into the heart of it all and really get it.
Bear Bibeault wrote:Your feedback on the the Ninja book in that regard would be great. Chapters 3 through 7 are intended to give just that "next level" view of understanding the language.
Sure. I got to Chapter 5 last night. Closure's have always dumbfounded me a bit so excited to get into that. 3-4 were great and I learned a lot. So I'm enjoying it thus far.
Cool. I'm currently making a lot of improvements to chapter 5 (more diagrams, for one thing!), which won't appear until the next MEAP update. So if you have feedback on it, get it to me and it could help make the chapter even better.
I got a good book on Scala too. Got it because Java can't scale to multiple processors in a world of 8 core desktops and quad core cell phones.
I've only gotten a few chapters into it.
Bear Bibeault wrote:Yeah, I'm exaggerating a bit, but Scala definitely seems like the sort of language you need to use daily to even begin to grok.
I think so too from my reading. Part of it has to be that its functional, and my brain doesn't think about programming functionally. But we have reached the limits of traditional programming, they just don't support modern massively parallel processing. We need to be able to have normal engineers develop this stuff, without needing the Ranch's expert Henry Wong.
Paul Anilprem
Enthuware Software Support
Ranch Hand
Joined: Sep 23, 2000
Posts: 2912
posted
2
Wonderng why no one mentioned Python. It seems to be in good demand in the job market these days (if that is your criteria to pick a language to learn).
Paul Anilprem wrote:Wonderng why no one mentioned Python. It seems to be in good demand in the job market these days (if that is your criteria to pick a language to learn).
Python is a great tool language. By that I mean it is good at doing grunt work elegantly. Beyond that, I'm not so sure it offers anything unique. It also would be quite difficult for me to find a good project to base my learning on.
Gregg Bolinger wrote: It also would be quite difficult for me to find a good project to base my learning on.
There are tons of open source projects in python. The popular third party libraries also get updated. It is quite similar to Ruby, but the community is not as extroverted as the ruby crowd.
Also, the functional constructs are way easier to grasp than in scala.
Once you are done with JavaScript Ninja and Good Parts, you might want to look at Single Page Webapps book by Manning. Frameworks (do we call them frameworks?) like Knockout, Backbone and others like them are kind of getting popular.
Paul Anilprem wrote:Wonderng why no one mentioned Python. It seems to be in good demand in the job market these days (if that is your criteria to pick a language to learn).
Python is a great tool language. By that I mean it is good at doing grunt work elegantly. Beyond that, I'm not so sure it offers anything unique. It also would be quite difficult for me to find a good project to base my learning on.
I spent a year working in Python, and I loathed every moment of it. If you want to experience every kind of misery a programming language can inflict on you, Python's your boy.
Well, the options seem to be narrowing down a bit: Gregg's ruled out JVM, which also rules out Bear's suggestion of Scala (definitely one to watch IMO) or Clojure. And the hostility to Python and its refreshingly simple whitespace instead of endless nested parentheses rules that out (disclaimer: I'm learning Python and I like it so far), although if you were looking for things to do with Python you could try Machine Learning In Action, which combines Python with egghead ML techniques and would keep you busy for a while. As for JavaScript, I know Bear's right, but it still stinks.
But if you guys like parentheses so much, why not Learn You A Haskell For Great Good - pure functional programming with lots of lovely brackets and no JVM. What's not to like?
I'll again assert that anyone who think JavaScript "stinks" hasn't really learned/studied the language. I used to think so too. That changed when I let go of three myths that seem to surround JavaScript:
Sure, its a myth, and a very damning one at that. Just the brilliant folks at Netscape decided that LiveScript was not sexy enough, and changed Live to Java since at the time Java was hot, trendy, cool, whatever.....
Bear Bibeault wrote:I'll again assert that anyone who think JavaScript "stinks" hasn't really learned/studied the language. I used to think so too. That changed when I let go of three myths that seem to surround JavaScript:
Few people I know that have given JavaScript a fair shot think that it "stinks".
OK, I give up - it's just blind prejudice on my part (although I have been using Google Apps Script for a while). So I guess I should order your book, now, huh?