• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Which New Programming Language To Learn

 
Gregg Bolinger
Ranch Hand
Posts: 15304
6
Chrome IntelliJ IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65124
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bert Bates
author
Sheriff
Posts: 8900
5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Paul Clapham
Sheriff
Posts: 21322
32
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
How about Erlang?

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.
 
Pat Farrell
Rancher
Posts: 4678
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65124
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Likes 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 524
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Pat Farrell
Rancher
Posts: 4678
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65124
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 think you'd despise Scala.
 
William P O'Sullivan
Ranch Hand
Posts: 859
Chrome IBM DB2 Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
COBOL.

Not taught anymore. Current programmer base is dwindling due to natural causes, retirement etc.

Banks, Utility companies will be paying top, top $$$ very soon for even general maintenance.

WP
 
Gregg Bolinger
Ranch Hand
Posts: 15304
6
Chrome IntelliJ IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65124
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!
 
Gregg Bolinger
Ranch Hand
Posts: 15304
6
Chrome IntelliJ IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Gregg Bolinger
Ranch Hand
Posts: 15304
6
Chrome IntelliJ IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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!
     
    Gregg Bolinger
    Ranch Hand
    Posts: 15304
    6
    Chrome IntelliJ IDE Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Gregg Bolinger
    Ranch Hand
    Posts: 15304
    6
    Chrome IntelliJ IDE Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Understanding JavaScript well, especially its use as a functional language, will actually help you write much more effective jQuery code as well.
     
    Gregg Bolinger
    Ranch Hand
    Posts: 15304
    6
    Chrome IntelliJ IDE Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    William P O'Sullivan wrote:COBOL.
    Not taught anymore. Current programmer base is dwindling due to natural causes, retirement etc.


    As an undergraduate 40 years ago, the CS majors could not take COBOL for credit.

    Being the last blacksmith in town is very profitable.
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Bear Bibeault wrote:I think you'd despise Scala.


    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
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Likes 3
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    I've about halfway through Programming in Scala, and it's a really good book.

    But the language itself can be confounding. A lot of the book goes like this:
  • Here's the very readable version of doing something-fratz.
  • After applying a few shortcuts, here's the somewhat readable but compact way of doing something-fratz.
  • After applying a few more, here's the totally unreadable way of doing something-fratz in 3 characters.

  • 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.
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Likes 3
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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
    Posts: 3764
    10
    • Likes 2
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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).
     
    Gregg Bolinger
    Ranch Hand
    Posts: 15304
    6
    Chrome IntelliJ IDE Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Sumit Bisht
    Ranch Hand
    Posts: 331
    Python Ruby Ubuntu
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    Mohamed Sanaulla
    Saloon Keeper
    Posts: 3159
    33
    Google App Engine Java Ruby
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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.
     
    dennis deems
    Ranch Hand
    Posts: 808
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Gregg Bolinger wrote:
    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.
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Dennis Deems wrote:I spent a year working in Python, and I loathed every moment of it.


    I'd love to hear more.
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Likes 2
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    There's just something about languages where whitespace is significant that makes a steel door in my mind clang shut.
     
    chris webster
    Bartender
    Posts: 2407
    33
    Linux Oracle Postgres Database Python Scala
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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?
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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:
  • Myth #1: JavaScript is related to Java
  • Myth #2: JavaScript is an OO language
  • Myth #3: The DOM API is part of JavaScript

  • Few people I know that have given JavaScript a fair shot think that it "stinks".
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    chris webster wrote: why not Haskell - pure functional programming with lots of lovely brackets and no JVM. What's not to like?


    Eh, real men use LISP
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Pat Farrell wrote:
    Eh, real men use LISP


    FYP: (Eh ((real) men) (use (LISP)))
     
    Pat Farrell
    Rancher
    Posts: 4678
    7
    Linux Mac OS X VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Bear Bibeault wrote:
  • Myth #1: JavaScript is related to Java


  • 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.....

    From that day forth, we have confusion.
     
    chris webster
    Bartender
    Posts: 2407
    33
    Linux Oracle Postgres Database Python Scala
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Pat Farrell wrote:
    chris webster wrote: why not Haskell - pure functional programming with lots of lovely brackets and no JVM. What's not to like?


    Eh, real men use LISP

    LISP is jutht thilly...
     
    Bear Bibeault
    Author and ninkuma
    Marshal
    Pie
    Posts: 65124
    91
    IntelliJ IDE Java jQuery Mac Mac OS X
    • Likes 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Pat Farrell wrote:Just the brilliant folks at Netscape decided that LiveScript was not sexy enough...

    That was truly a lamentable decision.

    Although it could be worse: ECMAScript, anyone?
     
    chris webster
    Bartender
    Posts: 2407
    33
    Linux Oracle Postgres Database Python Scala
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    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:
  • Myth #1: JavaScript is related to Java
  • Myth #2: JavaScript is an OO language
  • Myth #3: The DOM API is part of 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?
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic