11 ms·
Ask HN: What programming language are you currently learning?
I would like to know what languages my fellow HN readers are currently learning/investigating, in their free time, and the criteria for choosing which language to learn next.
- ianbishop 17y agoI am (very slowly) diving deeper and deeper into Ruby.
- ambulatorybird 17y ago(1) Haskell, because I like functional programming, and this language seems very promising (I first looked at it 10 years ago, but I gave up because the implementations seemed immature. I took another look recently, and I'm amazed by how much it's progressed since then). I especially like the way that laziness and purity enable a concise, stream-processing paradigm through the use of maps, folds, and various combinators. (2) Lua, because it seems like the Scheme of imperative scripting languages, while still being very practical and hackerish. It also has a neat game engine (Love2d) which I'm eager to try out.
- zetaloid 17y agoC++, after learning Python as a firstl anguage, going through accelerated C++ then thinking in C++
- sidjoshi 17y agoPHP
- Scriptor 17y agoRather surprising to see PHP so high here since I rarely see PHP-related submissions on HN. How do people learn it? I've found that the best thing for me was finding StumbleUpon and reading up as much as I could about best practices in PHP and programming in general. Now I force myself to try a different language for my own projects to get away from PHP as a "comfort zone".
- Zak 17y agoI'm a bit shocked to see any significant popularity here, as it seems to be a language most hackers avoid. I'd like to know why people are interested in the languages they're learning - not just PHP.
- granular 17y agoThe OP asked about what you are currently learning. Many folks may actually be required to learn it for their job, rather than for professional enrichment.
- mattyb 17y agoI'm a bookworm, so I sought out well-regarded books on Amazon. I started with 'PHP and MySQL Web Development' by Welling & Thomson, and could not have been happier. It's hefty (nearly 1,000 pages for the latest edition), but was well worth the time. Next up was 'PHP in Action', which is similar to the later chapters in Mark Pilgrim's Dive Into Python (one hell of a book, btw) and was coauthored by Chris Shiflett. I've since read two of Ullman's books (PHP for the WWW and PHP 5 Advanced), the Powers books (PHP Solutions and PHP Object-Oriented Solutions), and Shiflett's 'Essential PHP Security' (the PHPSec guide is required reading also). The two Apress Pro books ('PHP Objects, Patterns and Practice' and 'Pro PHP'), 'Essential PHP Tools', 'PHP5 Power Programming' (Andi Gutmans is a coauthor) and 'Advanced PHP Programming' by Schlossnagle are up next, although I'm currently working through SICP. (Note: I switched to Postgres since reading Welling & Thomson; there are basically 10x as many MySQL books as PostgreSQL ones, unfortunately)
- arghnoname 17y agoDid you know OmniTI (employers of Shiflett and Welling, former employer of Thomson, and sister company to MessageSystems (Wez Furlong & George Schlossnagle) have an office in Brooklyn? I believe the main contributor to CakePHP works there too. If you're that interested in PHP, it might be something to consider being relatively close by. I'm bookish in how I approach programming too, and among your list have read "PHP & MySQL Web Development," Shiflett's "Essential PHP Security," and "Advanced PHP Programming" when I was first starting out (I started out as a PHP programmer). If you're anything like me, the books get less exciting as the knowledge they contain gets more familiar, which is inevitable among a certain class of books. I now read more language agnostic books on algorithms, math, and some broader concepts. We'll see how that goes. Sara Goleman has a book on writing extensions for PHP that you might like if you want to 'cross the threshold.' These sorts of things can be useful to know how it all works internally, even if you aren't writing a ton of extensions yourself. The Schlossnagle book has a chapter on that. I'm not sure how much movement PHP internals have (I'm out of that world now).
- dsingleton 17y agoPython
- granular 17y agoOk. That covers the rest of this weekend anyway. :)
- dkarl 17y agoScala
- Salvatore 17y agoPHP and Action Script through Adobe Flex
- Zak 17y agoHaskell. I've already written non-trivial applications in it, but there's still so much to understand.
- gaius 17y agoHaskell for me too. It's slow going, but it's already making me a better Python programmer in my real work. OCaml/F# are on the back burner too.
- paulgb 17y ago> making me a better Python programmer in my real work. I found this too. Once I started reasoning with lazyness, Python's generators felt a lot more natural. The itertools module is very useful.
- gaius 17y agoHaskell's let... in... construct I use heavily now, I don't miss multi-line lambdas now.
- arghnoname 17y agoI'm not learning any language right now, but have learned a fair share over the course of the past few years. My general criteria is not to learn a language that is conceptually similar to something you already know unless there are professional advances to be had there. If all you know is Python, C might be good because it's lower level. Lisp or Haskell or O'Caml might be good because you'll have to program with different paradigms, etc. If I were coming from Python, Ruby wouldn't be my next choice unless I needed it for a job.
- anigbrowl 17y agoAfter Effects Expressions, a js-like scripting language for video graphics. I'm not sure if this qualifies though...
- coconutrandom 17y agoArc (lisp in general)
- DanielBMarkham 17y agoF# -- OCAML has got it all: imperative, functional. Plus with F# you've got a huge collection of ready-to-use libraries
- cema 17y agoClojure.
- charrington 17y agoI am learning Clojure because I know lots of "traditional" languages and want to stretch my brain in new ways. I am also interested in new ways to write parallel programs, which is becoming a bigger and bigger issue. Clojure scores well on these two criteria. I chose Clojure over Scala and Haskell, because I believe in dynamic typing over static typing. This is probably more an issue of tase than anything and I also have a high opinion of those static languages. I am very impressed with Rich Hickey's design sensibility and his goals for Clojure align well with my own.
- cema 17y agoAgree on all points.
- radu_floricica 17y agoJust wanted to say it's hard. I'm definitely not the best programmer, truth be told I haven't even programmed full time for a while, but switching from java to clojure took me at least half a year. I'm in the middle of my first (small) full app though, and I can tell it will be worth it. With java there was a wall in productivity I simply could not brake. I wrote pieces of code sometimes as fast as I could type (similar alterations to existing software), but still I felt I did the same thing over and over again. Now I'm at the first iteration of my framework and I can already tell a lot of the code I write won't be written again. Just an example: one of the first things I did was to brake the old web convention of separating the app into writing html and processing requests. Most of the links I write now, including forms, have the action code right there. Something like (pseudocode): html_button("Delete item", { delete_item(value); return list_items();}); I'm not saying it's the way to go with a webapp, only how easy it is to experiment with different paradigms.
- swolchok 17y agoI would not advise this style of programming, because it creates a very tight binding between the application logic and the interface. In fact, it's exactly the problematic style caused by GUI builders that generate event handlers and ask you to fill them in.
- jacquesm 17y agoafter being a coder for 3 decades I finally got around to lisp, two things prompted me to do it, first the source code to HN, secondly a discussion with 'dtor' of the glusterfs project, a young indian coder that seems to be pretty gifted. I audited some code there and came upon a macro that took me a long long time to comprehend, he explained it was to give C continuations. One thing let to another and I ended up buying a bunch of books and downloading the mit video lectures.
- saurabh 17y agoFactor
- locopati 17y agoErlang - why? after diving into threading in Java for a recent project, I wanted to see other ways of approaching the same problem - recommendations for other languages with powerful threading solutions?
- jcapote 17y agoHave you looked into scala?
- whughes 17y agoStackless Python is neat, but it's not really threading.
- inaka 17y agoErlang uber alles. i love it. it just works. when i'm done and my project works, i keep wondering where all the code went.
- jrockway 17y agoHaskell. Don't waste your time with Erlang.
- Scriptor 17y agoCan you elaborate?
- johngunderman 17y agoHaskell. I'm working through http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_H... which is quite a good tutorial.
- brl 17y agoEven though I complained about not being able to learn Haskell in another comment, this is the tutorial that got me the furthest. I found RWH pretty much worthless by comparison.
- avner 17y agoProcessing
- Shamiq 17y agoRuby
- joeycfan 17y agoMe too - oop I understand - gotta get a grip on procs and lmbadas..... Best language I ever used and I was programming in Fortran iv on 80 column punch cards in 1972...
- jamesbritt 17y agoCool. Be sure to ask lots of questions on the ruby-talk mailing list, and hopefully there's useful stuff on ruby-doc.org. (If not, let me know. :) )
- jcapote 17y agoErlang - nitrogenproject.com got the best of me one evening...
- jacktasia 17y agoJython
- bazookaaa 17y agoObjective-C. Quite a big jump from Ruby. :)
- MTayor 17y agoBouncing around between PHP, AS3 and Python/Django. Really need to settle on one for a bit.
- aristus 17y agoJavascript. I've "known" it for 10+ years, but now I think is the time to take it seriously. The web stack is getting dumber as a lot of UI and logic moves to JS inside the browser. Databases got dumber in exactly the same way -- do you know or care if your database has good stored procedure support? Eventually it won't matter much what the server is running.
- mhansen 17y ago+1. It's just getting faster and faster as it becomes the focus of the browser wars, and it's not a bad language, really.
- OtherMichael 17y agoI'm fresh to JavaScript this year, but am keeping at it, and adding JQuery to the mix, this summer.
- Darmani 17y agoI'm rewriting a card-game-playing environment written in Java. I originally wanted to use one of the Java implementations of Arc, but the low activity level of the forum (and my difficulty installing Rainbow a while back) makes me uneasy, so I'm learning Clojure. Sorry PG.
- mooism2 17y agoI continue to learn Haskell. A possible future side project would be a good fit for trying out functional reactive programming. If I ever find myself wanting to program at a low level again, I can see myself learning D.
- MaysonL 17y agoNewspeak, Lisp, Python, Smalltalk, Objective-C.
- giardini 17y agoProlog
- dkarl 17y agoI'm learning Scala for the following three reasons (in increasing order of importance.) These just reflect my current needs, not a prescription for other people, and all three revolve around my need to add a practical language to my repertoire to reduce my usage of C++ and Java. 3. I decided to learn a language I could use on the Java platform using Java APIs, rather than on the _nix C platform using C APIs. Partly this is a matter of wanting to escape C's shortcomings; partly it's because I have my eye on a couple of upcoming projects at my company for which the Java libraries will be extremely helpful. 2. I want to learn a language that will allow me to use functional idioms and help me learn a more functional style, yet allow me to get the job done even when my functional-fu falls short. I don't want to learn a language that expands my mind but then becomes a fond memory. I hope that for many years to come Scala will be the first language I reach for when I need to get something done on the Java platform. 1. I want to master a modern yet practical language with a strong static type system. I don't do much programming that calls for a dynamic language, and I'm pretty satisfied with Python. I write a lot of code in C++; C++ and Java are the only statically typed languages that I have really mastered, and I'm dissatisfied with both of them. Runners-up: Clojure: not statically typed. Maybe my next language after Scala -- I really enjoyed using Common Lisp but hated the library situation. O'Caml: great for the _nix C platform, but not for Java. Also possibly too pure to be a "go-to" language (heh.)
- jongraehl 17y agoOcaml isn't too pure. It's just weaker in libraries (and has no threading). It's faster than Scala in my experience, but not by more than 50%. I like Scala quite a lot so far. The main pleasure of Haskell or Ocaml over Scala is that they can deduce all your types (even function arguments), whereas Scala supports overloading and can't.
- vikas5678 17y agoI'm learning Scala for the same reasons. I'm also working with my professor on building a scala web framework to do stuff for which Jave EE is usually used. Whatever little I know about Scala, I love.
- dexen 17y agoLisp, in Pico Lisp flavor.
- lamnk 17y agoStop replying in this thread and make a poll !
- jamesbritt 17y agoWouldn't that require knowing in advanace the answers people would give? Or is a "close enough" guess at the usual suspects (with an option for 'Other') good enough?
- csomar 17y ago- Visual C# (Microsoft Dot Net) - Some CSS, HTML and Jquery - English :)
- unignorant 17y agoCommon Lisp -- because it has begun to change the way I think.
- deleted 17y ago[deleted]
- dogan 17y agoobj-c
- b0k0n0n 17y agoPython, Processing & Java. And HTML, CSS etc..... All of them, really, for pleasure. Python because I want to learn to program, Processing for image processing, Java to bypass CS 101 requirements, and HTML & CSS for web design.
- DomesticMouse 17y agoScala. Because it's the right combination of fun and pain. =)
- mmphosis 17y agoScheme
- nickgibbon 17y agoI'm learning Scheme with SICP after a failed attempt at picking up OCaml. I didn't make significant progress beyond writing toy OCaml and was experiencing some serious culture-shock in my first foray into the functional programming world. After some floundering it became clear that I needed a better introduction to the functional programming mind-set. Purchasing SICP turned out to be an excellent decision.
- jimm 17y agoI'm learning Scheme so I can program Impromptu (http://impromptu.moso.com.au/ http://impromptu.moso.com.au/) to control my MIDI setup live. I'm having a hell of a time with macros and define-syntax; I have not yet found docs that explain those so I can understand them. I have played around with SBCL and Clojure, and can write macros in those languages. Don't know why I'm having problem with Scheme.
- noblethrasher 17y agoHaxe - compiles to ActionScript, JavaScript, PHP et al. Strongly typed (with type inference) and creates faster code than Adobe's AS3 compiler. F#
- tptacek 17y agoNone. I've got enough of them. What I need to get better at is maths, signal processing, and graphics. Chiming in to reject the idea that we should spend our careers churning through languages.
- Locke1689 17y agoAgreed, although I am still learning new things about Haskell (but that's because it's still under heavy development in certain areas).
- buugs 17y agoNot to say you are wrong, but if one has an interest in a new or different language they should not think they shouldn't because they already know enough. Learning a new language can also be a supplement, say learning haskell in such a way that you improve your math ability and critical thinking at the same time. Or attempting to write a project in a new language would be far more interesting say if you are burned out from a job in a certain programming language. New and different things can be very refreshing!
- silentbicycle 17y agoLearning another language can mean learning yet another slightly different syntax and API, but sometimes it means learning a fundamentally different model. Learning Erlang's concurrency model, logic programming, or something completely different like K can be a real eye opener, even if you don't use them directly. I've been learning Prolog over the summer* , and while I'm not convinced I will make much use of the language directly, it has some really interesting ideas, which are largely usable in Scheme and Lua. For example, I also have a much better understanding of how unification, type inference, etc. work now -- Prolog is a DSL for that sort of thing, and having a good notation helps, much like knowing regular expressions changes the way you think about patterns. * Via Sterling and Shapiro's _The Art of Prolog_ (which is an excellent text, IMHO) and the relevant chapters of CTM (all the more so).
- jamongkad 17y agoA few months ago Python, decided to jump the gun to learn Common Lisp and Scheme.
- mannicken 17y agoRuby, Scheme, C++. C++ I am learning for about six years already, what a fucking complex language :)
- tybris 17y agoI haven't learned a new language for a while now. Perl/Java/C never fails me and I'd rather learn a new trick than another way of doing an old trick. I am learning about modern large-scale Internet service design, running hadoop clusters, distributed logging solutions, virtualization, ad-hoc radio networks, radio propagation, sensor fusion, intelligent transportation systems, etc. (for startup and PhD)
- ozsynergy 17y agoBaby Language
- pearle 17y agoDabbling with Clojure and Haskell at the moment. Also reading some material relating to clisp and Scheme. I can never stick to one thing.
- maxwin 17y agoAdobe flex. I am doing some data visualization stuff. I thought about using HTML5 drawing syntax first. But because stupid IE still doesn't support it. I give it up. Adobe flex is perfect for the job for the time being.
- mudge 17y agoRuby
- phugoid 17y agoARM Assembly. I want to commune directly with the bare metal. I want to lose my fear of those hex dumps machines spit out just before they die.
- brl 17y agoAfter trying to learn Haskell on and off for a couple of years and miserably failing to be able to write a useful program with it, I'm moving on to Scala which pretty much rules.
- mxyzptlk 17y agoForth, because I'm to impose some creativity enhancing constraints on what I develop my free time.
- jamesbritt 17y agoHaskell.
- zaph0d 17y agoClojure. It's fantastic. http://clojure.org/ http://clojure.org/
- ilkhd2 17y agoC++ = you can never stop learning darn thing, it is still growing.
- antirez 17y agoObjective-C and the iPhone API. This is probably the first language I learn just in the process of doing something specific (writing apps for iPhone), and not because I really need to learn it for enhance my programming skills. Still it is an interesting language even if designing it today from scratch could lead to something pretty different...
- bantic 17y agoerlang. because somehow my install of ejabberd failed and I don't know the first thing about how to troubleshoot it. plus I want to learn more about languages that are good with parallelization.
- jlangenauer 17y agoPotion, _why's experimental language. It's cool to play with something bleeding edge, though something about the language itself makes it feel like Python. Maybe the use of colons to define functions/blocks.
- cynicalman 17y agoPlaying with Erlang - I like its approach to errors and parallelization. Plus the idea of a functional language with Prolog-like pattern matching seemed like a cool idea.
- Ashishlin 17y agoRuby at the moment