The hardest languages to learn are the ones that have a different paradigm than the ones you’re used to.
Most modern languages today somehow derive from C, in a way or another. JavaScript, Go, PHP, Java, C#, even Python… If you’re used to one of these languages, you should be able to get a high level understanding of code written in other languages. Some like Rust can be a bit harder when diving into idiosyncrasies (e.g. borrow checker and lifetimes), but it’s not too hard.
But if I encounter a Lisp, or a more domain-specific language like Julia or Matlab, I need to put in a lot more effort to understand what I’m trying to read. Though Lisps are inherently simple languages, the lack of familiarity with the syntax throws me off.
I’m not much of a programmer, but when I was a kid I used to play around in QBasic. Then dropped all programming for decades and picked up Lua a few years back. Made me realise it’s more of a dialect than a new language.
From personal experience making the jump from Python to Julia was overall painless, it was probably made to be as well. I do agree that rust on the other end is something else. Even after clearing the whole rustlings course I was still brute forcing my way through code by relying on the compiler to tell me where borrowers were missing. Spoiler: everywhere!
I had the most problems with Ruby, or was that Rails. However I have to admit I gave up quickly. It left me with the impression the language itself doesn’t do much but the magic is all in the framework. You can’t follow the logic but have to know where things are, you have to know whatever assumptions the framework started with, but they don’t seem to be set anywhere.
That was the paradigm jump I didn’t make, didn’t want to make. APL was just so much more straightforward, because it was logical. Variants of C and Java are all pretty easy. PERL and Groovy have been two of my favorites except I’m a strong believer in strict variable typing. I have to admit Python took some getting used to, because who makes spacing part of your code structure these days: I thought we gave that up many decades ago. The COBOLs of the world are pretty focused - I’m not sure if even call them a programming language, but fairly easy to embed a query or report in a real language
The big problem lisp has isn’t that it’s syntax is hard to read (but yes this is an issue). It’s that it basically has no syntax
Lisp wants you to use metaprogramming constructs to develop your own syntax which is why every emacs enjoyer is a crazy person with a shiv under their pillow (((̸̙̤̏̊’̵̮̀ḥ̶̤̪̊̊è̶̼̥͈́̌l̶͍̱̀̏̏p̷̘̗̈́̇̐-̴̨̰͂i̶̬̜̋̂͝a̴̱͌͗̔m̶̖̥̏-̸̥̬̜̈́ḃ̶͔̭͝e̸͙͉̖̊͒̾į̶̥̞́̄̒n̷̳͓̼̐g̷̤̠̿̈́̉-̴̪͓̘́h̵̝̳̓͒è̵͕̒ļ̴͔͘͝͠d̶̳̍̇-̷̩̣̱̒͝c̸̪̦͍̓͛ä̸̤̗͖̈̆p̷̤͘ẗ̵̯́ǐ̴̝̇͝v̵̖̘̖̉e̴̤̣̲̋)̸̧̟̮̍͒))
The hardest languages to learn are the ones that have a different paradigm than the ones you’re used to.
Most modern languages today somehow derive from C, in a way or another. JavaScript, Go, PHP, Java, C#, even Python… If you’re used to one of these languages, you should be able to get a high level understanding of code written in other languages. Some like Rust can be a bit harder when diving into idiosyncrasies (e.g. borrow checker and lifetimes), but it’s not too hard.
But if I encounter a Lisp, or a more domain-specific language like Julia or Matlab, I need to put in a lot more effort to understand what I’m trying to read. Though Lisps are inherently simple languages, the lack of familiarity with the syntax throws me off.
I’m not much of a programmer, but when I was a kid I used to play around in QBasic. Then dropped all programming for decades and picked up Lua a few years back. Made me realise it’s more of a dialect than a new language.
From personal experience making the jump from Python to Julia was overall painless, it was probably made to be as well. I do agree that rust on the other end is something else. Even after clearing the whole rustlings course I was still brute forcing my way through code by relying on the compiler to tell me where borrowers were missing. Spoiler: everywhere!
I had the most problems with Ruby, or was that Rails. However I have to admit I gave up quickly. It left me with the impression the language itself doesn’t do much but the magic is all in the framework. You can’t follow the logic but have to know where things are, you have to know whatever assumptions the framework started with, but they don’t seem to be set anywhere.
That was the paradigm jump I didn’t make, didn’t want to make. APL was just so much more straightforward, because it was logical. Variants of C and Java are all pretty easy. PERL and Groovy have been two of my favorites except I’m a strong believer in strict variable typing. I have to admit Python took some getting used to, because who makes spacing part of your code structure these days: I thought we gave that up many decades ago. The COBOLs of the world are pretty focused - I’m not sure if even call them a programming language, but fairly easy to embed a query or report in a real language
The big problem lisp has isn’t that it’s syntax is hard to read (but yes this is an issue). It’s that it basically has no syntax
Lisp wants you to use metaprogramming constructs to develop your own syntax which is why every emacs enjoyer is a crazy person with a shiv under their pillow (((̸̙̤̏̊’̵̮̀ḥ̶̤̪̊̊è̶̼̥͈́̌l̶͍̱̀̏̏p̷̘̗̈́̇̐-̴̨̰͂i̶̬̜̋̂͝a̴̱͌͗̔m̶̖̥̏-̸̥̬̜̈́ḃ̶͔̭͝e̸͙͉̖̊͒̾į̶̥̞́̄̒n̷̳͓̼̐g̷̤̠̿̈́̉-̴̪͓̘́h̵̝̳̓͒è̵͕̒ļ̴͔͘͝͠d̶̳̍̇-̷̩̣̱̒͝c̸̪̦͍̓͛ä̸̤̗͖̈̆p̷̤͘ẗ̵̯́ǐ̴̝̇͝v̵̖̘̖̉e̴̤̣̲̋)̸̧̟̮̍͒))