My first language was ZX Basic, and then I started to do bits of assembly (badly) and C. C was my proper first language, and obviously the hardest to learn because of that, but once over the hump of the learning curve, it's surprisingly straightforward - the advantage of a language with minimal tooling, that hasn't changed in decades, is that there are no real surprises when you come back to it.
Modern C++ is great as long as you're doing something that has library support. The moment you go off piste, it becomes a matter of writing your own wrappers around C libraries or something, and there's a lot of old-style C++ around which is more painful to use, because it tends to be written similar to...
Java, which I cannot describe without first making an AbstractDescriptionFactory, deriving a concrete DescriptionFactoryImpl which I'll inject using Spring to generate a DescriptionImpl derived form an AbstractDescription passed as a reference to a Description interface, and by the time I've done all that I've forgotten what it was I wanted to say.
Python is great, as long as nobody tries to be clever. Python allows clever, but when programmers get that glint in their eyes and say, "Oh, I could solve this with a metaclass" it's usually time to run.
Javascript is all clever. I sometimes think that every Javascript program or library has its own style. Honestly I feel lost every time I look at a new project.
Erlang is fascinating. I think all pure functional languages are - it's a bit like programming applications in Sudoku. It's amazingly gratifying when I figure out how to write something vaguely useful, but it feels a bit like writing a novel without using the letter 'e'. It's possible, I'm sure, I'm just not terribly clear on the point.
Oh, and PHP, which is a bit like if someone wrote a language by having all the other languages written up on a dart board, and every time they needed a new facility they threw a dart to decide which language to model it on. There's bits of C, Perl, C++, Java, Python, JavaScript, and all sorts there. And we're talking PHP7 - which is so much better than PHP4 was, were you'd finish writing your code only to find that the hosting provider used a different minor version so it wouldn't run anymore. Learning PHP back then was a constant minefield because the language would shift beneath your feet.
But yeah, my hardest problem now is remembering which arrow to use for arrow functions in Javascript versus Erlang.
"""Java, which I cannot describe without first making an AbstractDescriptionFactory, deriving a concrete DescriptionFactoryImpl which I'll inject using Spring to generate a DescriptionImpl derived form an AbstractDescription passed as a reference to a Description interface, and by the time I've done all that I've forgotten what it was I wanted to say.""" Whoa this made my head spin.
My first language was ZX Basic, and then I started to do bits of assembly (badly) and C. C was my proper first language, and obviously the hardest to learn because of that, but once over the hump of the learning curve, it's surprisingly straightforward - the advantage of a language with minimal tooling, that hasn't changed in decades, is that there are no real surprises when you come back to it.
Modern C++ is great as long as you're doing something that has library support. The moment you go off piste, it becomes a matter of writing your own wrappers around C libraries or something, and there's a lot of old-style C++ around which is more painful to use, because it tends to be written similar to...
Java, which I cannot describe without first making an AbstractDescriptionFactory, deriving a concrete DescriptionFactoryImpl which I'll inject using Spring to generate a DescriptionImpl derived form an AbstractDescription passed as a reference to a Description interface, and by the time I've done all that I've forgotten what it was I wanted to say.
Python is great, as long as nobody tries to be clever. Python allows clever, but when programmers get that glint in their eyes and say, "Oh, I could solve this with a metaclass" it's usually time to run.
Javascript is all clever. I sometimes think that every Javascript program or library has its own style. Honestly I feel lost every time I look at a new project.
Erlang is fascinating. I think all pure functional languages are - it's a bit like programming applications in Sudoku. It's amazingly gratifying when I figure out how to write something vaguely useful, but it feels a bit like writing a novel without using the letter 'e'. It's possible, I'm sure, I'm just not terribly clear on the point.
Oh, and PHP, which is a bit like if someone wrote a language by having all the other languages written up on a dart board, and every time they needed a new facility they threw a dart to decide which language to model it on. There's bits of C, Perl, C++, Java, Python, JavaScript, and all sorts there. And we're talking PHP7 - which is so much better than PHP4 was, were you'd finish writing your code only to find that the hosting provider used a different minor version so it wouldn't run anymore. Learning PHP back then was a constant minefield because the language would shift beneath your feet.
But yeah, my hardest problem now is remembering which arrow to use for arrow functions in Javascript versus Erlang.
Cool, great.
As for arrow functions, quite a little bit of practice would do.
The problem is too much practice, in too many languages, in the same day - I end up typing Erlang syntax into Typescript, and C++ into Erlang, and ...
"""Java, which I cannot describe without first making an AbstractDescriptionFactory, deriving a concrete DescriptionFactoryImpl which I'll inject using Spring to generate a DescriptionImpl derived form an AbstractDescription passed as a reference to a Description interface, and by the time I've done all that I've forgotten what it was I wanted to say.""" Whoa this made my head spin.
Me too!