What is the next language you want to learn, and why?

ben profile image Ben Halpern Jan 09, 2017

markdown cheatsheet

PHP because it seems to have grown mature – and has Laravel with its fine ecosystem for business apps.

Wasn't expecting to see PHP, but I feel like maturity does get so overlooked as a quality of a language. Lack of maturity in so many ways is my absolute biggest frustration whenever I work with JavaScript.

Personally I'd rather use a stack that's tried and tested, and that I know will still be around in a few years time. I've had heaps of issues getting Node.js sites working after server upgrades, whereas PHP sites I created 10+ years ago are still happily running on PHP 7 with no issues and only minor updates required. For new sites I'd stick to PHP or ASP.NET, the server-side JavaScript ecosystem is just too volatile for me to even consider using it for any serious development.

Also see: Happiness is a Boring Stack: expatsoftware.com/articles/happine...

I wasnt't expecting to learn PHP, actually. Python has been a dear friend for quite a few years, but for my projects often Django and even Flask felt like an overkill. And I often struggled with packages for functionality that seemed very important to me, especially user management. I had a very bad opinion about PHP, mainly because of Wordpress' wild source code, some very strange plugins from its ecosystem and documentation that is so scattered around the web and often not reliable. But Composer, Packagist, Symfony and also the great learning resources (Laracasts, Laravel-News.com) really are my go-to learning places right now.

After 15 years of PHP, Python/Django was a breath of fresh air... sandwiched in there was Ruby. I could never see Flask as overkill for anything, it is pretty much a framework with nothing - how did that become overkill?

Django with Rest Framework allows me to create backends in an instance with full admin CRUD for whatever front-end of the week (been through Angular, React and now Ember) I would do a bakeoff any day of the week against PHP and Laravel (I could even bake-off against myself, hehe...)

PHP has it's merits, but I am so glad to be rid of a the toolbox with too many dysfunctional hammers and screwdrivers.

Same. I often find myself getting frustrated with JavaScript's volatile ecosystem.

Jesus! If Javascript is not mature, what is?

C, because the Linux kernel is written in it, and i want to understand how it is build. Also it´s a clean and powerful language in my opinion. Later on maybe c++, because of game development.

I often say that: as long as kernels and their primary interfaces are written in C, there's good reason to learn it. It's not going away, and it's the most fundamental way to interact with your operating system.

You don't have to switch off pure C to write games. I'm writing a fully featured game in C. There's just a minor overhead wrapping C++ object methods so you can call them as C functions. That should only be required in the platform code anyway.

Elixir and Phoenix. I'm a huge Ruby/Rails fan and seeing Elixir/Phoenix resemble those makes me happy.

Yeah. Elixir doesn't really resemble Ruby as a language fundamentally, but the whole ecosystem was clearly designed to be friendly to the Ruby community's expectations.

Can you learn Elixir without knowing Erlang?

Well, you cannot use Elixir outside of the Erlang VM because it is required as part of the language. But you don't have to dive into Erlang and write it as part of your day to day. One thing you will find after writing a bit of Elixir is that Erlang becomes more approachable and understandable. Elixir just expands out to Erlang using macros, and then compiles to Erlang VM byte code to be executed by the VM.

Absolutely, it's definitely a boon but far from a requirement

I want to learn a functional language that I can use for backend development. At one point I thought that would be Elixir/Phoenix but now that I've written a lot of Elm code I've become very partial to strongly type languages. But then I look at Haskell and it doesn't seem nearly as practical is Elixir/OTP so it's likely I'll be learning Elixir this year.

OCaml is very similar yes and you can also have a look at F#

Also: Why does Haskell seem impractical? IMO it has quite strong support for Webbackends - have a look at Servant / Servant-Elm for example

From my point of view, Haskell seems less practical because there is very little writing on Haskell web frameworks written for regular folks like me. Phoenix and Elixir seem much more approachable for a relative newcomer to FP.

From my limited poking around, F# looks really cool.

Have you had a look at OCaml? It is very similar to Elm and in use at Facebook as part of the toolchain for Flow/Reason/Infer.

Erlang (and Elixir). Despite being 20 years old, Erlang seem strikingly suited to many modern challenges (high availability, distributed processing, fundamentally concurrent, network transparent, live upgrades, etc).

Jon Blow's JAI is aimed at programmers who care about low-level, performant code, and want to escape the friction of working with languages whose standards have spiralled out of control. If he ever releases it. ;)

This isn't what I am waiting for too!

Reason - Functional programming with an approachable syntax. 💖

Reason is fascinating. Do you have any plans to release anything with it, or is it purely for learning at this point?

Ruby/Rails. I'm starting to get into Shopify app development and while I could use a language I'm already familiar with to build the apps, I'd rather use the Shopify API gem to help with building out the apps. And it's a good excuse to learn a new language!

I want to dive deeper into Elm. I did some tutorials a year ago, but much has changed in Elm-world so I need to revisit. There was much to be excited about with Elm, and it was refreshing compared to the JS ecosystem.

I'm kind of python-curious, too. ;-)

I spent the past year learning Elixir/Phoenix/VueJS, and I've learned so much. It was my first experience with functional programming.

What resources did you use for elixir/phoenix/vue? I'm planning to learn these now after dipping my toes in web dev (built an app for a client with nodejs/express, MySQL, bootstrap/jQuery). Thanks!

I kind of went deep....I read Programming Erlang (Joe Armstrong) -> Programming Elixir (Dave Thomas) -> Programming Phoenix (Chris McCord), because it was really my first experience with functional programming and I wanted to really grasp the the underlying language/concepts before tackling the web framework.

I was also curious and wanting to understand OTP further, so I read these two awesome books, too: Designing for Scalability with Erlang/OTP (Cesarini/Vinoski) and The Little Elixir & OTP Guidebook (Benjamin Tan Wei Hao).

It's possible you could be OK and up and running with just Programming Phoenix, though.

As for Vue, there were really just a few blog articles and the Vue guide when I was starting with it, so there are probably better resources now. Here's some dialogue on various ways to work with Vue/Phoenix...there are a few approaches whether you want to use Brunch or Webpack, or just have the Vue client completely separate and communication to Phoenix backend via API only. My app is using Brunch+Vue within the Phoenix framework.

elixirforum.com/t/how-to-get-phoen...

Have fun learning that stack...I know I did! :-)

Thank you so much for the detailed reply! I have been thinking of buying Dave's book for a while. It's time I pulled the trigger ;)

Will also check Programming Phoenix.

I'm looking at some video tutorials for vue by Traversy Media, Eric Hanchett and others. It's good to know what build tools and setup others are using.

One more thing: while the Programming Phoenix book will be great for getting to know the framework, Phoenix 1.3 will be introducing some changes that you may want to just keep an eye on. Here's a write-up (and the video is the best overview): swanros.com/phoenix-1-3-is-pure-lo...

:-)

Thanks once again! You should write a post about your experience learning Elixir/Phoenix and Vue. It will definitely help a lot of people :)

I'd love to pick up Elixir, but I think realistically speaking it is going to be C# for me this year. My employer has a large percentage of back-end code in C#.

I've resisted getting into .NET because I didn't want to be a "windows developer" but with .NET Core maturing it looks like there is finally a reasonable cross-platform development story emerging.

What's wrong with being a windows developer? The majority of enterprise systems are .NET. I know it's not the coolest thing, but I've been thinking of learning C# this year because there always seems to be very good paying jobs for it.

Nothing wrong with it at all. Many of my co-workers are .NET devs.

For me:

  • I've always preferred working with Linux/OS X. Just personal preference.
  • .NET jobs seem to trend toward large companies. "Enterprise systems" as you noted. I've tended to enjoy working for smaller companies which (generally, not always) don't do as much .NET. The place I'm at now is more mid-size (about 600 total employees).

I actually think C# is a pretty nice language from what little I've done so far.

Idk why but I prefer c# over Java

I work as a Java dev for a mid sized company which uses all the oracle stuff.

My recommendation is stay away from oracle and have a good time :>

I like C#. I worked as a C++ developer for a long time and there is so much ceremony associated with C++ just to avoid wandering into the wrong bit of memory. Moving to C# was a relief. I followed that with a stint as a Java developer and found it a bit of a leap backwards although I did like Java enums. Now I can develop .NET Core on my MBP without having to boot a VM and deploy to docker. I'm currently looking at Elm for some frontend dev.

Clojure, because Lisp is the only true programming language :P

I've just picked up "Clojure for the Brave and True" and its a wonderful introduction to the language.

l̶i̶s̶p̶ Java.

I am a growth marketing manager. I have set a goal to learn Python this year as I am starting a project for Python programmers/developers. So, to understand them as potential customers I decided to learn it from scratch as I have no programming background (I am a geologist by education).

I am taking help of friend who is a pro python programmer. I will also be using the book "Automate the Boring Stuff with Python: Practical Programming for Total Beginners" by Al Sweigart.

I am looking to connect with Python programmers too so I have subscribed to /r/learnpython/ and /r/Python/ on Reddit.

I am listening to TalkPython podcast to understand what's going on in the Python world and selected some newsletters as well to follow the news like Pycoder's Weekly, Python Weekly.

Check out the Coursera.org courses they are free and very good for beginners

Thanks Sebastian. Looking at it right now.

Python, because it's an interesting language that is not limited to a specific platform.

Heya, this might be of interest to you leanpub.com/pythonforprogrammers

Right now diving deep into Haskell, but I would like to learn Rust, it seems to be promising! I'm curious about Elm as well.

What resource are you using for learning Haskell? I started out with LYAH but now I'm considering buying Haskell from First Principles.

I'm following LYAH so far. After that I'm thinking about working on some real-world project.

Good choice! This might be useful to you integralist.co.uk/posts/go.html it's just code examples, but sometimes this is just what you need

I program in C++ and PHP, and know other languages, but this year I am going to learn Python, JavaScript, C (C11), ObjectPascal (because I started my serious programming with Delphi), Rust and Racket.

I want to create larger projects in each of those languages and progress beyond the 'hello world' stage.

I think the six languages above are a good mix of different paradigms, so hopefully that should make me a well rounded programmer. :)

Delphi still lives :D

Haskell.

Not because I see myself writing practical software with it (I'm a Node/React/Ruby dev by day right now), but because I'd like to go beyond the dipping-my-toes in phase of thinking functionally.

JS is a perfectly usable functional language, but only if you treat it that way. Being able to drop into OO and write procedural code easily has been holding my self-education back. For example, monads are a simple enough concept that I have been using for years but only actually understood this week due to stubborn subconscious refusal to read about them.

It might be just because learnyouahaskell.com is such a great resource, though.

I've learned many programming languages, though I'm mostly a Pascal programmer, and a Pascal fan too. I used to be a Borland Delphi user but then I switched to Free Pascal and Lazarus IDE.

I'm starting to learn Apple's Swift programming language because…

  • it's a new language with rich dev tools around it (especially in Apple's platforms),
  • it's native and compiled language but with modern programming features,
  • it's general purpose and cross platform with multi-paradigm programming,
  • it's open source, backed and supported by big companies (Apple and IBM),
  • it has solid, helpful, and mannered community,
  • it's fun to look and observe a growing language,
  • it looks interesting (and promising) to join into Apple's app store. :)

Been playing with swift a bit and I think I'm starting to "get it." I'm still very new to programming, but have largely focused on Node and have enjoyed it, but I am really attracted to the tools that swift offers around building interfaces. Front end frameworks have really bummed me out this year and CSS feels like a major chore, so swift and iOS/tvOS/macOS it is!

I'm finally getting really deep into C/C++, which is honestly really fun and informative. Memory management, functional programming, and low-level engineering is fun, educational, and really quite empowering. DGMW, though, I love C# and python.

I'd I had to pick another language it would probably be Go or JAI - but more importantly, I want to be a better master of the universal skills: algorithms, software architecture, software and code interoperability, etc. I think we too often get hung up on specific languages and leave these skills unappreciated

Oh yeah, also Scala, because $$$

JavaScript and GO.

The reason why i want JS is that will help me and improve my writing of automated end-2-end tests in NightwatchJS and will provide me some benefits for the actual market, since i am automation QA engineer.

And the reason why i'll focus on GO is that i want to gather as much as possible knowledge from backend based language such as GOlang is.

Rust. System language seems to be a bit more approachable than C or C++ when it comes to making a useful project. Dependency management, documentation system, etc. I've actually already done a small project using the language but I'm still very much new to it. Will be gradually working my way to lower level programming.

Node JS. Because it sounds awesome

So... you want to learn javascript?

Elixir. Because I want to learn a functional language.

Java

Because I know it a bit from my MSc and want to work with it more. Also having worked with PHP for last few years it seems not do different.

C++
Because it is powerful, base of most powerful things out there. Also because I never advanced in it more than hello world intro. 🙃

Swift
Because I want to learn to build native mobile apps.

I'd like to learn Swift to be honest. While I'm not necessarily interested in iOS app development, I discovered it has major audience here in Saudi Arabia due to how profitable, and popular apps are in terms of software development in general. However personally I'd like to get more familiarized with scripting languages such as PHP and JavaScript. I just feel like it's a pretty important skill to have as a Software Developer.

I would like to learn Python as my next programming language. I am currently a Java programmer. I have two reasons for the same:

  1. Most of the MIT Open Courseware lectures use Python as the language of demonstration and being a Computer Science graduate, it makes it easier to me to keep myself updated / refreshed with the courses / basics.
  2. I am planning to understand and learn Machine Learning as a off-time project. Many samples and code snippets that I see are implemented in Python.

Italian or Chinese :o) sorry couldn't resist.

I don't think I will be learning a new programming language this year, That doesn't mean I'm done learning.

I feel like I'm currently much more into getting design patterns, security and code structure right, and I think more people should do the same.

Besides my own code (which mainly is php, c#, javascript), I like to review other code from mobile & web applications and review API Security.

Clojure, to get more familiar with FP and lisp-like languages.

Kotlin. It sounds interesting and it's from jetbrains. 😃

I started with Kotlin this year (backend, not Android) and I'm really happy with it!

Javascript. I'm a Python developer and my thinking is that cross learning another dynamic language could be a good way to understand the good and the bad parts in both languages. Also, Javascript is one of the most widely used language. Lots of great libraries or frameworks are built on it. It's good to have them in my toolkits.

Lisp in general, Clojure specifically. I've started doing a little reading and I can already see that this is changing how I think about code. I'm interested in Clojure in particular because it is old enough to be robust, but new enough to be modern; and it runs on one of the most stable, efficient VMs out there.

I guess in a practical sense, Elm and Rust. I know a little of each of them already, but not well enough to reliably use. I think all the work done to make JavaScript better is basically just trying to make it like Elm, and I think Elm does Elm better than JavaScript does Elm. For Rust, it's in the neighbourhood of C speeds, but C has some serious flaws (IMO) around its memory management, so I think that something like Rust's type system is very important. Plus, that type system is powerful and once I understood the type system better, I wouldn't be surprised if I could approach being as productive in it as in Ruby. Thus, anything that isn't in a browser (and isn't a web service) feels like Rust is the way to go, and anything in a browser feels like Elm is the way to go. I suppose the third question is "what about services?" to which everyone who does services, when they talk about what they want, it sounds like Erlang to me, so I assume Erlang / Elixir are the way to go there. But I don't see myself putting myself in a situation to need that unless hired to do so, so that's lower on the totem pole.

For fun: Crystal seems totally awesome (though it'd be nice if it would start faster), mruby should be a small and useful jump, there's apparently some streaming language that Matz is looking at, I'd be willing to play with it. SpaceX is using some visual programming language, that sounds like a fun paradigm. Python would let me play with Tensor Flow. Idk, maybe Idris or Prolog just to get an extreme exposure to their respective paradigms. OCaml could be fun for a certain subset of playing around (namely parsing). Common Lisp, Chicken Scheme, and Racket all have interesting aspects that make them seem like potential choices within the Lisp world, and I find that world to be fun.

I started to learn Python (3) to develop an application on Linux that includes a web api as well as stuff about the OS. I used Flask as the web framework which satisfied all my needs.
There are lots of free open source packages, tutorials, and videos about Python. Also, it has a strong community. Tools like pylint and pytest make development really fun and also you learn a lot while developing.

Maybe this year, I think of learning Go for another project to develop a system which needs to be scalable and perform good under lots of concurrent connections.

Either Rebol, APL/J, Erlang or IO. Because "a language that doesn't affect the way you think about programming is not worth knowing"

I want to learn Go. Currently working on my graduation. After that I finally got time to learn with some small hobby projects which are laying on the shelf now.

I think it is a language you can learn for all CLI based application on the server side. The ease of cross platform building is so nice.

PHP and/or Python.

PHP because my potential next job uses it and although I am not a fan of it I'll have to learn it by default. I just wish it was more relevant in this modern day.

Python because it is just an interesting language and it seems fun. You can get a lot done in few lines of code so that intrigues me.

I really want to learn Rust. I've never done anything that low level, it's mostly just been Ruby and Javascript

I'm in the middle of learning it. Once you get the 'scoping' rules it starts becoming quite fun. You might want to have a quick read up on C first as it'll help with the system level concepts such as pointers and memory allocation (this might help: integralist.co.uk/posts/c.html)

I guess learning rust would be a good choise for me.

Rust, for sure. Everything I've seen so far looks really great. I always had Go in my mind for a modern, safe, concurrent language. They both seems great but for some unknown reason Rust has got my attention.

Both have great learning resources, but Rust's online book is amazingly good doc.rust-lang.org/book/README.html

"The most important language a software developer can learn is the one the customer speaks" by Jason Gorman

twitter.com/jasongorman/status/865...

Elm because it makes programming for the front-end fun and safe in a way I've never experienced. Plus the compiler error messages are actually helpful.

Elixir to take the next step in learning functional programming. I'd also like to dabble in assembly because I want to have a better/deep understanding of how computers work. I'll probably head to C again after that for the same reason. It's been a few decades wince I've used C.

Elixir and erlang. Using both in work and for side projects. Havn't worked in a functional language before these two and It's nice to stretch the mind in different ways

I really wanna learn Swift and finally get into iOS development.

Clojure, Elixir and Scala. Because they all seem to be competing for my brain right now.

Rust because of safety and speed.

I'd like to get serious with Rust sometime. I'm still trying to get it compiling to WebAssembly properly.

Clojure or Scala because I really want to get a deep understanding of functional programming and I work with the JVM.

Elixir and Rust for a project I'm starting. Feels like the right combination and it's going to be lots of fun.

C , it's a low level language , and by learning it i expect to also learn about low level stuff like memory allocation and how operating systems are built.

You'll get that in a more enjoyable sense from Rust doc.rust-lang.org/book/README.html but check out integralist.co.uk/posts/c.html and integralist.co.uk/posts/syscalls.html which might be of interest to you

Haskell for me. I heard a lot about it and would love to get into functional programming

Rust, hands down. Go would also be a nice candidate (and a bit more mature), but I feel that some of the design choices in Go (like no generics or exporting names via casing) are weird and limiting. Rust on the other hand is shaping up to be really, really great.

Python, cause I've learnt to much C languages (C, C++, C#...)

Any functional language to try something very different from JavaScript I use almost exclusively in the past few years.

I want to get back to learning Python. I keep starting to learn it and then get side tracked by work and life. I think this year I'm going to spend more time on it.. or at least try to.

Give this a go leanpub.com/pythonforprogrammers it's designed for quick learning

Python - for building small scripts to help with local development, or for server-side rendering of HTML

Heya, this might be of interest to you leanpub.com/pythonforprogrammers

I want to get a solid stack with go, python and typescript

Why typescript and not pure javascript?

Haskell, because I've become proficient enough with Elm that the transition wouldn't be as jarring as coming into it with little to no experience with pure FP.

Elm, because it makes functional programming understandable

Haskell (and Elm), because I want to learn the (purely) functional paradigm.

Haskell or Elixir. Have dabbled in both, but I'd like to go deeper. Functional is my jam lately, though I've found it changes how I have to think about the problem (which can be a challenge in of itself).

Ruby because I want to have a better foundation with Ruby on Rails.

I enjoy Ruby Tapas as a source for continuously learning new things about Ruby. It's a funky language with lots of neat features hidden away.

I'm hoping to learn F# next. I'm primarily a C# dev, but I'd really like to get my hands dirty w/ functional programming. F# seems the most accessible to me since it would allow me to transfer my knowledge of the .NET framework from one language to the other.

PHP in first place, then more Javascript.

Just curious. Why PHP?

Python. Mainly because I want to mess around with my Raspberry Pi.

C++, I'm interested in applying my AI concepts into c++.
While most might suggest to go with Python, I don't wish to focus just on the AI.

Not to forget how much I've learned about code syntax and computer due to it, and still learning.

Golang because its fast, concurrent, cross-platform, and many open source projects are developing in Go these days.

Rust because it deals with important problems.

Haskell. Because I want to see what I can learn about language design from it.

c++ because all the cool kids know it and like that's programing street cred

Angular/React - Javascript client side libraries because they seem to be the rage for development and do not want to be left behind

Rust. The low level language that's really elegant and cozy