• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Which New Programming Language To Learn

 
Ranch Hand
Posts: 15304
6
Mac OS X IntelliJ IDE Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
author
Posts: 9050
21
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Likes 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.

 
Ranch Hand
Posts: 541
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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.
 
Ranch Hand
Posts: 859
IBM DB2 Chrome Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Mac OS X IntelliJ IDE Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Mac OS X IntelliJ IDE Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
Mac OS X IntelliJ IDE Chrome
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Mac OS X IntelliJ IDE Chrome
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Mac OS X IntelliJ IDE Chrome
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Mac OS X IntelliJ IDE Chrome
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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: 4803
    7
    Mac OS X VI Editor Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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: 4803
    7
    Mac OS X VI Editor Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Likes 3
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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: 4803
    7
    Mac OS X VI Editor Linux
    • Likes 3
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Enthuware Software Support
    Posts: 4810
    52
    • Likes 2
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Mac OS X IntelliJ IDE Chrome
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Ranch Hand
    Posts: 331
    Python Ruby Ubuntu
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Bartender
    Posts: 3225
    34
    IntelliJ IDE Oracle Spring Chrome Java
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Ranch Hand
    Posts: 808
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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: 4803
    7
    Mac OS X VI Editor Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Likes 2
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Bartender
    Posts: 2407
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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: 4803
    7
    Mac OS X VI Editor Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Pat Farrell wrote:
    Eh, real men use LISP



    FYP: (Eh ((real) men) (use (LISP)))
     
    Pat Farrell
    Rancher
    Posts: 4803
    7
    Mac OS X VI Editor Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    Sheriff
    Posts: 67746
    173
    Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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
    36
    Scala Python Oracle Postgres Database Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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?
     
    reply
      Bookmark Topic Watch Topic
    • New Topic