The tough cookies

POLL RESULTS: Assembly is officially crowned the language with the steepest learning curve

Eirini-Eleni Papadopoulou
© Shutterstock / BsWei

There are hundreds of programming languages out there. Some new, some well-established, some built for reliability others for fun. But which are the hardest to learn and why? In this article, we take a look at the poll results for some of the, arguably, most difficult programming languages, as our readers ranked them.

The JAXenter community has spoken! 

At the beginning of the month, we asked you to give us your opinion on which programming language has the steepest learning curve, among a number of choices and the results are in.

Unsurprisingly, Assembly is crowned the most difficult language to learn on a beginner level followed by Haskell. To be honest, I would have expected Haskell to rank first, given its very unique nature, but apparently, I underestimated the difficulty of Assembly!

Here are the full results:

The ‘other’ languages option also rank relatively high and made it into the top 5. We’d like to know what are there ‘other’ languages you feel have a steep learning curve for beginners so feel free to comment your answers below or let us know on Twitter.

The discussion so far

The Language List, which was created back in 1991,  contains collected information on about 2500 computer languages to date! The TIOBE index, on the other hand, keeps track of the top 250. The list is enormous and the options endless. But as a beginner developer, where should you start? Which languages are hard to learn and which ones should you avoid altogether?

The debate on the different learning curves among languages is well-known and ongoing, so I do not aspire to have reached an enlightened conclusion to the discussion. However, I would like to present some arguments on which are perceived to be the most difficult languages and why.

If we simply speak about the difficulty and level of confusion of a language, then esoteric languages like COW, Brainf*k, or Whitespace definitely make a strong case as the hardest and most confusing programming languages to learn. But the issue here is that languages like these are designed to be difficult, if not impossible, to use and they are indeed barely used.

When trying to become a developer, I hardly doubt the fact that you will be expected to learn Brainf*k in order to get a job! While looking at the most well-established languages out there that are used in largescale applications, like C/C++, Java, JavaScript, PHP etc, a beginner developer is sure to wonder which language should be first priority, which has a steep learning curve, or which should be avoided until someone has a more in-depth understanding of programming in general.

SEE ALSO: Which technologies will dominate in 2019? Containers and serverless go head to head

But even the arguments on what we consider as ‘difficult’ or as a ‘steep learning curve’ are conflicting and extremely subjective. Frankly, what is difficult and what is not depends on you – your understanding, your capabilities, skills, and experience. Learning a new language is an entirely different process for someone who has just started digging into the world of programming and someone who has years of experience, even with an entirely different language. I might even argue that when we talk about various programming languages, the differences are not as fundamental as in spoken languages but rather,  I would dare to compare it to learning different dialects, rather than languages.

What’s more, some might argue that it is not the language itself that can make for a steep learning curve but rather the ecosystem. Learning a language is one thing, learning to navigate through an entire ecosystem, identify, learn and use the right tools is a whole other story!

The measuring

There are, however, some commonly accepted criteria we could use in order to determine which are the hardest languages to learn at a beginner level.


Some argue that these two are each more difficult than the other in different ways. For example, C will really force you to understand the computer at a lower level, nonetheless, it is a simple language that doesn’t seem that difficult. On the other hand, C++ has a high level of abstractions but at the same time it is a huge language and learning and, more importantly, master it will definitely be a challenge.


Java is among the most well-established and widely used programming languages. Learning the basics of Java is neither hard or easy, I would say. But reaching a level where you can actually do much with it, that’s another story. In order to be able to completely understand and use Java, there are a number of different topics that are essential. For example,

  • Data types, variables and user input.
  • conditional statements.
  • Branching
  • Loops
  • arrays
  • methods
  • Classes & object
  • static
  • inheritance
  • packages
  • access modifier
  • constructor
  • polymorphism
  • abstract class
  • interface
  • exception handling
  • collection

Keep in mind, that these are not the only topics essential in understanding Java. The list can be quite lengthy. And when it comes to the Java ecosystem… wow! Good luck with that!


Generally, PHP is considered to be a beginner-friendly language but there are so many things that can go wrong, easily and silently, never showing up on your screen! As a redditor argued, PHP may be easy to use but it’s easier to misuse and create insecure code with it. So, PHP makes a very precarious choice for a beginner, since the learning curve for actually learning it being able to manage everything that can go wrong, takes a lot of experience (and patience).


Now, JavaScript is generally considered to be fairly simple and easy to grasp. However, using JavaScript for complex applications can be quite a headache. More specifically, pre-ES6 JavaScript was far more inconsistent making it particularly difficult to use. Concepts like prototypal inheritance, function as a constructor, this behavior, or event loop were, and possibly still are, a pain in the neck!


If you are not familiar with functional programming, you’re in for a treat! Since you cannot program imperative algorithms in Haskell so you have no other option but to learn functional algorithms and functional decomposition! Haskell has arguably a pretty high learning curve since it is inherently different from other widely-used languages like JavaScript or C/C++. I don’t want to discourage you from learning it but don’t expect to develop elaborated programs and reading files over the weekend.

No matter how many lists we make and who many arguments we present, at the end of the day, what language you choose to learn depends entirely on what you want to do with it. Which leaves only the issue of how determined you can be in learning the language that will help you built your dream project!


Eirini-Eleni Papadopoulou
Eirini-Eleni Papadopoulou was the editor for Coming from an academic background in East Asian Studies, she decided that it was time to go back to her high-school hobby that was computer science and she dived into the development world. Other hobbies include esports and League of Legends, although she never managed to escape elo hell (yet), and she is a guest writer/analyst for competitive LoL at TGH.

Inline Feedbacks
View all comments