1. 22

In the spirit of programming language diversity, what is the last language you learned? What are you currently learning? And what do you aspire to learn?

The last language I learned is F#. I am not currently learning a language. I aspire to learn many languages, but I will probably tackle Common Lisp next.

Learning resource recommendations are very welcome!


  2. 10

    Last language I really learned was either C or Python, though the timelines are sort of interleaved, so it’s a bit tricky to give a definitive answer on which is the “last” language I learned.

    Currently I’m not really learning any language, but I want to learn Haskell, though most resources are sort of… bad. I want to get the prerelease of @bitemyapp’s Haskell Programming book, but sadly I’m currently unemployed and can’t afford it.

    1. 10

      but sadly I’m currently unemployed and can’t afford it.

      Send me an email to the one on my Github profile.

      1. 4

        Thanks a bunch! I’m definitely going to buy the book when it’s released.

      2. 1

        It’s true, resources are wanting. Have you looked at this page?

      3. 7

        I’ve been learning a few different languages in the last year due to school: Namely java, c++ and c#.

        I’m currently learning Haskell, from bytemyapps haskell book.

        I would like to spend some time learning c and then rust

        1. 6
          • Last: Rust
          • Now: Lean
          • Future: One of Agda, Idris, Coq?

          Tip for Prolog fans: Check out mercury.

          1. 5

            Last I learned: either Forth or Erlang, depending on how you count it. Oddly similar in that they both far outstrip any other languages for the very narrow segment of use cases they’re designed for but are fairly awkward for general-purpose programming.

            Currently learning: Lua. I was expecting to hate it since Racket, Erlang, and OCaml all made me appreciate how great it is to work in a language without nil, and Lua’s semantics are ridiculously sloppy when it comes to returning nils in unexpected places without warning. And I would be really hesitant to use it for large-scale applications programming, but for the current game I’m writing on the Love2D engine, it’s really a treat. It’s also refreshing in that while the semantics are sloppy and often error-prone, they are at least extremely simple; comparable more to Scheme and Forth rather than Python or JS. This fact (coupled with the excellent Love2D game engine) makes it exceptional for use as a teaching language.

            1. 5

              The last language I learned was Elm (http://elm-lang.org/) and I’m thoroughly enjoying using it to build some simple front-ends. I’m currently trying to level up my Haskell skills to “intermediate”, and I aspire to pick up an ML language (probably OCaml) in the near future.

              It might sound strange, but I recommend learning Elm as a way of learning Haskell. The Elm documentation (http://elm-lang.org/docs) really helped me to understand pure functional principles, and the syntax is similar enough to Haskell that you can immediately transfer knowledge between the two languages.

              1. 4

                Learned: Python
                Learning: Racket
                Re-learning: C++ (with the fancy new stuff, yowza)
                Want to learn: Haskell

                1. [Comment removed by author]

                  1. 2

                    What specifically do you find as the ugly parts?

                    I recently discovered the power of the conditional restarts system. Sometimes it seems that the oddities of CL turn out to be really awesome after I realize the full reason and power of some feature, but I don’t want to be deluded about CL with my rose-colored lenses.

                    1. 2

                      I can think of a few that I run into somewhat often, but there’s really not as many as I’d expect given given how old the language is.

                      The built-in path name handling is a big one. The :version, :host, and :device fields really just don’t make sense any more.

                      There are also some function names that are unusual. For example, the function to flush a stream is (finish-output my-stream). Not a bad name necessarily, but inconsistent with everything else nowadays that would call it (flush my-stream). Likewise, “map” in most languages becomes “mapcar” or one of the other map* functions. “filter” goes to “remove-if” or “remove-if-not”, etc.

                      Then there are other quirky things that aren’t necessarily bad, but that would probably be done differently if the language were being designed today. IMO, (equal a b) doing case insensitive comparison of strings falls into this category.

                      1. 3

                        The sheer breadth of the language is a bit… intimidating. All the different map* methods and weird names for things seem strange. I can see why advocates of Scheme consider Scheme a bit more elegant. Though I’d say CL feels more robust and well-rounded in spite of its size.

                        That said, it has a thriving ecosystem, and the tooling is really there and works.

                  2. 4

                    Last language I really learned (i.e. that stuck around at all) was probably C.

                    Not presently learning any languages. I could probably stand to refresh my bash.

                    Aspire to learn? J has always been my white whale. I’ve ‘learned’ it 3-4 times, but of course have never used it enough after the fact to make it stick. I could also stand to ‘really learn’ at least one of Coq/Agda/Idris.

                    1. 4

                      The last language I learned to use in anger was Scala; I’m currently engaged in learning OCaml. I intend to learn Haskell as something of a dual of OCaml. I would like to learn something very different, like K or Prolog.

                      1. 3

                        My definition of “learned a language” is that I read a few books (paper or electronic) about it, and do some paid work or not-too-trivial side project in said language. That said…

                        Last: Clojure, which I’m currently fortunate enough to be paid to work in. In the past I’ve studied and worked in PHP, Perl, Ruby, and Python in that order.

                        Currently: Not really studying a language, but I bounce between high level and low level languages about every 3-4 weeks. C/C++ and Rust intrigue me for hardware projects. OCaml, Haskell, Shen, and Common Lisp keep me interested when Clojure frustrates me. I should probably just stick with one language and focus for a while, but jumping around has always worked for me in the past and it keeps me interested, so ¯_(ツ)_/¯

                        Future: C seems to be the most practical language to focus on, so I think I’ll work through Learn C The Hard Way or some other book. After that, I’d have to decide between Common Lisp and Haskell.

                        FWIW, I have a Trello board where I keep all my CS learnings. Perhaps you’ll find something of interest.

                        1. 3

                          Coq and ssreflect. Agda and Idris came fairly easy to me but while Coq is similar in capabilities, I have a hard time understanding it.

                          Last language I learned was probably Nix, which was a pretty big investment but I think has really paid off.

                          1. 3

                            The last language I really learned was C. I learned it since I only had experience in higher level languages and wanted to break into something a bit lower level.

                            Currently, I’ve been putting some time in towards learning scheme. So far it’s been an awesome language and I’m really liking it.

                            I hope to eventually learn ASM better. I know enough to get by with C debugging and basic OS development (a recent toy project), but I still heavily rely on other resources and code examples.

                            1. 3

                              Last: Rust
                              Now: More Rust (writing the FAQ has helped me to clarify my understanding of the language quite a bit)
                              Future: Probably something from Agda, Idris, or Coq (although obviously Idris is a full programming language while Agda and Coq are more focused on being theorem-provers)

                              1. 2
                                • Last: Rust
                                • Now: Rust
                                • Future: None, as I find the focus on programming languages overrated.

                                Reasons outlined here: http://skade.me/blog/2015/extending-my-new-years-resolution.html

                                1. 2

                                  Thinking about it, almost all the languages that I’ve used regularly in my career - C, C++, Java, Python, JavaScript & Objective-C I learned in the 90s while I was at university. Those languages have changed and I’ve (hopefully) improved, but that set has remained fairly consistent.

                                  These days, for somewhat esoteric reasons I’ve learned and am using Dart. I’ve learned Go but in spite of my best efforts haven’t shipped code in it.

                                  I’d like to find an excuse to learn a Lisp/Scheme variant, but I’ve been trying to find that excuse for a decade and a half now. In theory I’d like to re-learn Haskell - I took a class in it at University but I think I’ve forgotten it all.

                                  1. 2
                                    • Last learned: Go
                                    • Learning: Second look at Go & C++ (in particular C++14)
                                    • Aspire to learn: Haskell, or at least make a third go at it.

                                    I tend to rotate through three categories repeatedly - Forth/Factor/concatenative languages, Functional languages, and OO/Imperative languages.

                                    I find practically speaking, I get the most out of OO/Imperative languages. I learn the most to newly apply from playing with concatenative languages. I struggle the most and think the most with functional languages.

                                    1. 2

                                      I’m currently learning C++, which is nice. Having done C in the past, forcing myself to use the full set of C++ features isn’t always easy.

                                      I think I should look at Objective C soon, since I’ll likely be doing work in that area in the reasonably near future.

                                      1. 2

                                        Last language I learned (in the sense that I can still write it) is Erlang. I had brief encounters with others since then, but they didn’t stick for one reason or the other. In the not so distant future, I’m looking at Prolog.

                                        1. 1

                                          What about Hy? I recognize your name from your GitHub repos. :)

                                          1. 1

                                            I learned Hy before Erlang, and it is one of the languages that stuck, still using it!

                                        2. 2

                                          If having used a language in anger means you have learned it, then I have learned Haskell. But when I look at blogs like ezyang’s and dons' I get the impression I haven’t learned much. Learning Haskell is like removing a veil just to find another veil. I’ve got some C projects lined up at work and look forward to re-learning. I was once the guy who was asked by his C instructor to give a lecture on a particular assignment, but that was a long time ago and I’ve never used it in anger. I aspire to learn idris and rust. They’re like Reese’s Peanut Butter Cups. Two great tastes that taste great together (probably).

                                          1. 1

                                            I’m not actively learning any languages right now.

                                            I’ve been using Common Lisp for my personal projects lately, and I’m always finding new features or new ways of doing things with it. Ditto with C++, which I use at work. They’re huge languages, so there’s always something new to learn, but for the most part I’m just coding.

                                            And I like to occasionally do a small project in a language I haven’t used in a while, or go back and add features to something I haven’t touched recently, to freshen my memory and keep up to date.

                                            But other than that, I don’t have plans to learn any new languages. I haven’t seen anything come out lately that’s particularly interesting to me, or that offers anything above and beyond the languages I already know.

                                            1. 1

                                              Last language I learned? As in, learned well enough to be really productive? Groovy.

                                              Learning? A few… I just finished an R course on Coursera and had been working through a couple of R books before that. So definitely working on R. I’ve also been spending some time with Common Lisp and with Prolog lately.

                                              Aspire to learn? I have a laundry list, including Go, Rust, Erlang, Clojure, Scala and Haskell among others.

                                              I also want to “level up” my Python knowledge a bit (especially with Python 3) and re-learn C++ using all the new, modern stuff they’ve added in the past few years.

                                              For anybody who’s really interested in what I’m doing, feel free to follow along at http://mindcrime.github.io/ I keep “LearningXXXX” type repos for all the different things I’m dabbling with / learning / experimenting with.

                                              1. 1

                                                Last: Racket Current: Haskell Aspire: Rust, Idris

                                                But I am quite unhappy with Haskell’s module system and import rules. Or perhaps with the fact that someone allowed so many name clashes in the base library.

                                                1. 1

                                                  Last Language: clojure or Go

                                                  Currently: relearning C++(11/14)

                                                  Aspire to learn: Haskell, once i find a good place to use it

                                                  1. 1

                                                    Last language I learned was Rust. I learned enough to implement a simple host-only blockchain, then promptly moved on because there wasn’t anything I particularly wanted to do with it.

                                                    I’m currently planning on learning Scala and Elixir. My motivation is an upcoming distributed project on which Scala is the current plan, but I think Elixir might be a better option.

                                                    1. 1

                                                      The last language I learned was Elixir. I say that like it’s past tense even though I still consider myself to be learning it.

                                                      I just started looking at Elm a few days ago and really enjoy it so far. Then a friend of mine today suggested I look at Purescript as well.

                                                      1. 1

                                                        I’ve been doing Scala for five years but I’d say there are still things I’m learning (more in the libraries than in the language). Next will be Idris if I have a free choice, though it’s more likely I’ll learn something I need professionally before that.

                                                        1. 1

                                                          Last: Rust and Clojure. Now, Scheme. Aspiring, Common Lisp. Perhaps Elixir later on.

                                                          I should really learn (read: master) Ruby though since I’ll be working with Rails in the coming future. It’s been 2007 since the last time!