6 ms·
Which programming language do you want to learn next?
- aboodman 16y agoGo - It's a little thing, but I'm enchanted by its implicit interfaces. Seems like it'd be very nice for testing and for decoupling components.
- ftrain 16y agoAgreed, although I recently realized I likely need a better understanding of C to fully understand where Go is going. (I'd also like to spend time with Lua--it keeps showing up in interesting places.)
- deleted 16y ago[deleted]
- vedang 16y ago+1 for Lua. It seems to be the most "different" language I keep coming across.
- slashcom 16y agoPlease post results.
- edd_dumbill 16y agoYes, planning to.
- harryh 16y agovery much look forward to your results. good survey!
- trezor 16y agoF#. It should let me get my mind around a somewhat different approach to programming compared my main languages (C#, Javascript) while letting me still work with a know platform.
- vog 16y agoFor exactly the same reason I learned OCaml some time ago.
- HamletDRC 16y ago+1 for F#. it is a really great language and I learned a ton by spending about 250 hours with it. The book Expert F# is a really good resource. the first 200 pages are about the language (a complete guide) and the rest is just case studies of .NET junk. I wish they had made 2 books not one... 1st 1/2 is excellent though and worth buying.
- joshes 16y agoHaskell. I feel as though it is a language that I would really enjoy, regardless of whether or not it fits a niche with my research interests. Some languages just have that feel about them, I suppose.
- codefisher 16y agoHaskell was my answer too, mainly because it is rather different from other languages I know, so it forces you to think out side the box, and try new things. Which you then bring back to other languages.
- gsivil 16y agoCommon Lisp. I have just started scratching the surface of the language(one-two weeks so far). The high opinion that many HNers have for the language played definitely a role in my choice.
- arethuza 16y agoI have been contemplating re-learning Common Lisp - I wrote Lisp (along with some C and PostScript) at work from about '89 to '95. Although I also did web development from about '93 the two areas never overlapped and when I co-founded a startup in '95 we were a Java shop - which was my language of choice for the next 6 years or so. Inevitably I've spent a significant amount of time over the last 15 years telling people how wonderful Lisp is without actually using it for anything - so I'm pretty keen to jump back into using Lisp for Web projects.
- baguasquirrel 16y agoAgda. Just for shits and giggles.
- gtani 16y agoagda, coq, epigram, ATS (dependently typed languages)are mentioned regularly by haskellers.
- lawn 16y agoErlang, just for fun. I really want to learn Haskell even better but for a new language I'd pick Erlang for the moment.
- ryanfitz 16y agoErlang is definitely the most fun language I've learned in many years. It will make you think very differently then most other languages and at least slightly change the way you think about everyday programming.
- chops 16y agoI'd second Erlang. It's a lot of fun first learning. I know when I went through Armstrong's book on it, the first 5-6 chapters were mostly just "okay, so an intro to the syntax and functional programming", then when the meat of the language hit, it was a big fat "whoa...this is crazy." I'm glad HN had that crazy "Erlang Day" a few years ago, as that was Erlang's first blip on my radar. Thanks HN :)
- Figs 16y agoAt this point, I'm tired of learning programming languages, and would rather learn how to be more effective with the dozen or so that I've already learned.
- konad 16y agoForth, still. Written a few bits but want to get serious.
- pdelgallego 16y agoYou can go ahead and write your own forth interpreter (or maybe Cat http://cat-language.com http://cat-language.com). Writing your own stack-based programming lang is a lot of fun! (That is my toy project for december)
- konad 16y agoI've done that bit :) I bought Loeliger and wrote the TIL from that in AVR assembler.
- cageface 16y agoNo more new languages for a little while. New algorithms and problem domains instead.
- nostrademons 16y agoYeah, I went through the learn-every-programming-language-possible stage in late college and the couple years afterwards. I eventually decided that no language is going to boost your effectiveness as much as knowing your problem domain very, very thoroughly. There's a lot of depth in specialized algorithms that isn't visible to someone in college or a web shop, yet many of the most lucrative startups come from specialized algorithmic knowledge.
- strlen 16y agoIn violent agreement with you. Specialized knowledge is how you make your way out of the enterprise/web ghetto and onto much more fascinating problems, including in the greater enterprise/web industry: you can think of most of what Amazon does as enterprise software, yet they've used e.g., distributed systems expertise to their advantage; where most saw "class ShoppingCart extends StatefulSessionBean" (and a big fat check for WebLogic and Coherence) they saw http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html http://www.allthingsdistributed.com/2007/10/amazons_dynamo.h... However, I remember a comment you've posted once on this site (don't have the URL) saying there are no shortcuts to being a programmer: i.e., you should learn several programming languages and you should be a competent algorist. Some languages also force you to think differently about algorithm design (e.g., purely functional data structures), which is always a good thing.
- nostrademons 16y agoAnother interesting thing: virtually all the really high-level programmers I know have either a PL or OS background. Jeff Dean worked on Cecil. Urs Hoezle worked on Self. Lars Bak worked on Beta, Self, and HotSpot. Peter Norvig worked on Lisp. Many of the other senior guys at Google - the ones who actually understand how all the search engine works, that people go to when there's a tough problem - worked on languages like Dylan, Python, and HotSpot. Most of them aren't working on languages now, but there's this blip in the past of a surprisingly large number of them. I wonder if it's causation or correlation.
- neilk 16y agoScala. I want the power of types and functional programming and Actor concurrency, but am leery of doing anything practical with languages like Erlang or Haskell. Plus, Scala runs on the JVM and is thus compatible with all of Java's libraries. The day I have to read a UTF8 string backwards I want to use some standard library, not get creative with a linked list of ints. Plus plus, the Lift framework looks pretty great.
- merijnv 16y agoWhy are you leery of doing anything practical with Erlang and Haskell? #haskell on freenode is filled with people doing practical things in Haskell and Ericsson has bet most of its infrastructure on Erlang...
- neilk 16y agoScala may be a way to get many of the benefits of Erlang and Haskell while also using a platform that is very successful and well-understood. And if I need to calculate what day of the week it is in 10 days in German, I know some library will exist for this. Scala could be snake oil, but it looks interesting. I have to come to terms with my own ignorance. I'm not saying there isn't a good date library in Haskell. I'm saying I don't know if there is one, and as long as I'm learning a new language, I might as well choose something where I know at least some of those issues are definitely solved. This may cause some partisans to rage, but when choosing a language for a project, personal comfort is really the #1 issue.
- strlen 16y ago> doing anything practical with languages like Erlang or Haskell Why do learn it for a specific reason? Why not learn a language to expand your mind? Scala is awesome, but Haskell will help you make use of some of its more powerful features. By all means, learn both. Erlang is interesting and is quite practical too (albeit Scala tends to be practical in more kinds of problems: there many times where you want an easier way to deal state shared between processes than ETS/Amnesia). Knowing Erlang you can make a better decision when to use Scala's own actor facilities and when not to.
- bugsy 16y agoNone. The language situation is absurd as it is. The only languages I learn nowadays are ones I have invented.
- thevivekpandey 16y agoI plan to stick to python, but learn its functional programming features.
- dmoney 16y agoThere's a difference between "next" and "most". Next: PHP because 94% of all CMSs, particularly WordPress, are written in it.* I kinda know it but want to learn to do things the right way. Most: Clojure because of its lispness and concurrency/mutability model. * made up statistic
- neilk 16y agoI'm boggling at the concept of doing PHP "the wrong way". Only small, single-paradigm languages can ever do things "right". With PHP you can do almost anything, in ways that are almost not wrong. ;)
- roel_v 16y agoI guess the author means 'using php to for writing web apps that are not a index.php file, a file called 'includes.php' and a couple of files called 'header.php', 'content.php' and 'footer.php' which then have functions called 'printHeader() { echo "<table>...</table>" etc. }'. Basically, the way php application were written 10 years ago. I consider that the 'wrong' way to use php, but it's how it's (necessarily) taught so many people write their first couple of apps this way (and others never rise above this stage).
- dmoney 16y agoExactly. What you describe sounds like the one PHP application I wrote, before I had done much real programming. By "the right way" I mean idiomatic, maintainable, and taking advantage of its strengths.
- hanula 16y agoIt's strange but after Python I don't feel like I need/want to learn sth new.
- rbanffy 16y agoSame here. It's a local maximum. However, I am forcing myself to learn Clojure. There must be other maxima in this space.
- spacemanaki 16y agoCareful... http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- dkersten 16y agoIn my experience a lot of Python programmers move on to learning the functional Python features and libraries and then after they get that down, the eventually jump ship to a mainly-functional language (a lot of people seem to move to Haskell, I personally moved to Clojure). This is based on my own personal experience, that of Python Ireland members and from things I've read or seen (here on HN and elsewhere).
- jlv 16y agoDo you mind elaborating on what 'functional' libraries exist in python? I've practiced a bit using the whole map-reduce paradigm in different ways in python, but I'm not really sure what you mean beyond that.
- stephen_mcd 16y agoitertools, functools. I once read a quote that when you're using itertools frequently enough in your Python code you're one step away from jumping to a language like Haskell.
- dkersten 16y agoI've heard that the OReilly Haskell book was one of the most bought books at PyCon. My progression went similarly - I started using map, reduce, filter and list comprehension a lot, then moved on to itertools and functools and then decided what I really wanted was a functional by default language. That, the great concurrency support and the desire to learn a lisp-based language properly[1] made me choose Clojure. It seems that this progression is actually fairly common. I still use Python for quick'n'dirty scripts (especially as a shell scripting alternative) and for web development (for other people; I use Clojure for my own code). [1] I already knew some Scheme, but never used it for any real projects.
- strlen 16y agoHaskell. I know Scala and occasionally use it work (although my main project is still in Java: it's often difficult to mix languages at the same level in a project and for many reasons, I'd like to keep as few external dependencies for my project as possible) and great enjoy it. I also know OCaml and am doing some hobby projects in it. I've been a Lisp weenie for a long time now (Scheme, Common Lisp, recently Clojure both at work and in hobby projects). So, why Haskell if I already know lots of other functional languages (both statically and dynamically typed ones)? Due to type classes and lazyness/purity by default. I still find myself thinking imperatively, or thinking at a lower functional level (e.g., just tail recursion and folds/map). I'd like to learn to think in a a lazy and purely functional way and Haskell seems to be a way to get there. Additionally, both Scala (with implicits and higher kindred types) and OCaml (since 3.12 with first class modules) do support type classes, but Haskell seems to be a good way to learn to use them. I've been thinking a great deal about type systems and type safe DSLs, presently working my way through TAPL. One particular field that interests me is the intersection of programming languages and systems: can we do user level systems programing in languages other than C; how can we safely "hint" a garbage collector to avoid memory pressure issues that happen frequently in memory intensive applications written in high level languages; can we use the type systems to ensure application-level code can sustain loss of consistency or availability (Google for CALM Conjecture for a dynamically typed Ruby DSL approach to this)? Finally, Haskell is a great language in terms of forcing myself to think before I code (Yes, I should already be doing that): you may have a solution that may be short in terms of lines of code but takes hours to come up with. Why is this important? That's a great way of improving myself in other areas of programming: seeing which classes of algorithms solve a particular program, finding the simplest solution vs. one that comes to mind first. [EDIT: Forgot to say that fun also plays a huge part of it. It's the reason I chose on the site (was the best one of those listed there: Haskell won't get you a job nor is there always a guarantee you'll be more productive with it, especially right away) and a perfectly legitimate one].
- djhworld 16y agoI'm trying to toss up between learning Python or going completely functional with something like Haskell or Clojure. the thing is I've spent most of my time reading up on the languages rather than doing it, I' think I'm suffering from language-analysis paralysis My current language skillset is Java, Objective-C and a bit of Ruby although I wouldn't call myself an expert in any of them
- barnaby 16y agoI've been using Python for the last two years and I totally love it. While it does support functional paradigms, it's not actually a functional programming language. Having said that, I would love to pick up Clojure next. Realistically though, I'm going to dive deeper into Python.
- JeremyBanks 16y agoClojure. I've found my code in other languages looking more and more like Lispy as time goes on, and my shame at not actually having learnt to use one well has grown too strong.
- robin_reala 16y agoRuby, from a pragmatic point of view. As a front-end developer in a Rails agency I want to be able to debug the interface of my Javascript and my colleagues’ Ruby better.
- aerique 16y agoQi / Shen. Having settled on Common Lisp a good few years ago I haven't explored a new programming language for a looong time (having gone through the phase of trying out a lot of them before that). However, recently I've felt the need to broaden my horizons again and did dabble a little in Haskell.
- thibaut_barrere 16y agoNo new programming language for me (at least this won't be my main learning point in the coming year). Instead I'll focus on: market/product (customer dev, shippping, charging) + data techniques (nlp).
- StudyAnimal 16y agoJavascript
- fharper1961 16y agoMe too. Because now it's possible to use Javascript on the server as well as the client. I think that for small teams doing Webapp development, being able to use the same language on the client and the server is a big win.
- mishkovski 16y agoF# - I want to develop my skills toward declarative style of programming.
- abp 16y agoSeven Languages in Seven Weeks :) http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks http://pragprog.com/titles/btlang/seven-languages-in-seven-w... Also a little lisp: http://nostarch.com/lisp.htm http://nostarch.com/lisp.htm
- vinc 16y agoRuby. My favorite language is Python and I really like Django but I think I'm missing something by not learning Ruby and Rails. Haskell is the other language I want to learn, and probably more than Ruby but I'm currently looking for a job and RoR is the better choice...
- djhworld 16y agoRuby and Rails are largely independent entities (in my opinion) Learn Ruby first, Rails is a huge framework to start out ruby programming with.
- petercooper 16y agoJavaScript. But properly. Yegge was right, I believe. It's going to be the language that defines thks decade, for sure.
- gmac 16y agoDitto, but via CoffeeScript, and with node.js/socket.io.
- petercooper 16y agoYeah, JavaScript is running the risk of turning into the new C++ with all of these dialects and subsets ;-)
- anarchitect 16y agoDitto. I've fallen in love with JavaScript again since I've started using it to write applications rather than scripts.
- larrywright 16y agoI absolutely agree - do you know of any good resources for learning JavaScript as a language? Most books are targeted at using it to add whiz-bang stuff to web sites.
- voodootikigod 16y agoAs a start: http://eloquentjavascript.net/ http://eloquentjavascript.net/ Listen to: http://www.aminutewithbrendan.com/ http://www.aminutewithbrendan.com/ Also track: http://www.nakedjavascript.com/ http://www.nakedjavascript.com/ And http://howtonode.org/ http://howtonode.org/
- petercooper 16y agoI've found that http://www.reddit.com/r/javascript/comments/e54i9/what_is_currently_the_best_book_for_learning/ http://www.reddit.com/r/javascript/comments/e54i9/what_is_cu... is worth a read for book recommendations. Most of them are on Safari too :-) Rebecca Murphey's jQuery Fundamentals is awesome (and free!) too once you get onto jQuery: http://jqfundamentals.com/book/book.html http://jqfundamentals.com/book/book.html And I know you already know about this, but posting for the benefit of others, but.. http://javascriptweekly.com/ http://javascriptweekly.com/ ;-)
- kunjaan 16y agoRacket. I have used Clojure for large projects and PLTScheme for a lot of academic projects. But I have not tried to write a large application in Scheme. In addition, I want to use all those libraries, typed/racket and mainly the syntax/parse macro dsl.
- hyperluz 16y agoSpark & Ada just to see if the language and associated tools and processes are really practical (read fast development with low bug rates and easy to mantain code) and secure. Scheme to learn functional programming and see if this paradigm really implies in good reuse of code. Agda to learn about intuitionistic type theory.
- joubert 16y agoOCaml
- john2x 16y agoC or C++. Has been for a long time. Never got around to it. Maybe OpenFrameworks will make things more interesting.
- balakk 16y agoI'm learning making my own. This is the first time I'm seriously muddling through parsing and lexing. I want to make at-least a toy-language interpreter.
- gtani 16y agoall the ones mentioned by the panel(io, rebol, factor, forth, ... http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2010-10.html#e2010-10-16T09_09_15.htm http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2010-1... I'm not actually going to learn any of them, i'm going to find some URLs that say why they're different from the ruby/python/java/c* maelstrom
- jcromartie 16y agoSmalltalk. Yes, really. I think the potential for a really sexy open source Smalltalk is there with Pharo; it just needs a lot of work. But building web apps in Seaside has really convinced me of the productivity you can gain by tossing out certain ideas and embracing a very focused and principled environment like Smalltalk (focused in the sense that it's the only place I've seen OOP taken seriously; i.e. it's not "OOP, but..."). I'm a big big fan of functional languages, especially Clojure, but the fact is that UIs are stateful and OO design really works there, and users need UIs.
- jhancock 16y agoI've just been writing a small app in pharo the last few days. I haven't used Smalltalk in 15 years and its coming back very quickly. Pharo is nice but it still needs polish to get to the Smalltalk I had in 1994. For this new app, I am using Iliad framework http://www.iliadproject.org/ http://www.iliadproject.org/ instead of Seaside. I started out playing with Seaside but the code base is so large I felt I couldn't understand the internals of the framework without a lot of time invested. The trade off is that iliad has almost no docs and you have to read the source.
- jcromartie 16y agoNeat. So, Iliad is like "Seaside Lite" or something?
- 3pt14159 16y agoAnic. So boss, I can't wait till this paradigm is more widespread.
- silverlake 16y agoI wish people would focus more on PROGRAMMING rather than LANGUAGES. A better question might be, what area of computer science do you want to learn next?
- torial 16y agoLanguages affect how you can express certain concepts. More expressive languages can be useful in new programming concepts. A personal example: Many years ago I had to program in VB.Net, and never understood polymorphism until I dabbled in Python and played around with some projects in that language. VB.Net lets you do Polymorphism, but it doesn't assist you in learning it (at least for the way my brain is wired).
- luisns 16y agoLisp, it looks really interesting
- didip 16y agoIt's strange. The more I'm using Ruby and Python, in different projects, everyday... The more I'm attracted to Lua. I'm not sure why.
- torial 16y agoCobra - I've dabbled with it to see that it works nicely with my brain, but not enough to really know and grok all it has to offer. The initial draw is that it is a python-like language for .Net (important since my day job is in .Net). And while I've dabbled with Boo and IronPython, Cobra seems to have removed most of the syntactic worts that I found w/ Python, as well as a few other features. In particular, as someone who hasn't really done automated unit testing or contractual programming, I'm drawn to the fact that support for unit testing and contracts is built in. I like the python-like syntax as I find it easiest to learn new programming concepts in (which I can then generalize to my day-to-day work).
- misterm 16y agoI'm going back to C. I've always wanted to learn it so I could contribute to the FOSS that I use everyday. It's a great language.