The language itself is often no trouble at all. It's all the stuff around it that ends up eating shitloads of time.
The language itself is often no trouble at all. It's all the stuff around it that ends up eating shitloads of time.
Kotlin is great! I enjoy it a lot and am having a fun time ramping up for my new role. But the entire Java ecosystem is a dumpster fire, and I abhor Gradle/Maven/Intellij.
It would take me an entire weekend to try to configure Sublime Text or another lightweight plain-text editor to work with Gradle to even build the project, let alone any language server features like code suggestions and debugging.
What do you dislike about IntelliJ?
IDEs should not punish you for knowing what you want to say and typing it quickly. They should be DETERMINISTIC, and you should get the EXACT same results no matter how many milliseconds of delay you wait between each keystroke, and you should always be able to insert something by typing it literally at any speed, without pausing and waiting then focusing your visual attention on the screen and then finally pressing other buttons to use the menus.
Turns out, Intellij’s “Actions on Save” are only triggered when a “Save All” (option-command-s) is issued, and ignores any other type of save like good-ole command-s.
It is weaker IDE in terms of what it does. Eclipse is older, look uglier and strictly superior unless you work on some kind of super large project where it is breaking.
Nowadays, given the state of LSP implementations and editors being as flexible as VSCode i.e it's hard to justify the need for an IDE... In general.
I usually use nvim or VSCode (if I collaborate with someone) for other languages. Every time I have to work on a Java project, and I have to open IntelliJ... I know it's going to be a nightmare.
Java is therefore somewhat a victim of its own success. There is no absolute "best" as you seem to suggest. Every ecosystem has pros and cons.
Rationalising a language's ecosystem is harder than building one. I suspect that this drives at least some new language adoption.
A good programmer uses the right language for the task. A good language is one that doesn't need a community and a beast of an editor just to code something that compiles and runs.
An "ecosystem" is usually a sign of costly entropy.
Agreed!
> A good language is one that doesn't need a community and a beast of an editor just to code something that compiles and runs.
Hmm. [citation needed]. I'd argue the exact opposite. A robust ecosystem and community around a language are a substantial part of its value proposition. Naturally, the language's PL details are what seed and fuel its ecosystem, so I'm not claiming semantics, syntax, and zeitgeist are irrelevant.
See every "worse is better language": C, Python, Java, Javascript, English against whatever ML, Haskell, Esperanto, Lojban, etc.
It's a measure of a language's usability if a programmer can't use the simplest possible tools to be productive.
Education and documentation is necessary. But if you have to have an entire support channel for a technology, it isn't necessarily a positive reflection on the technology.
Which languages don't need a community?
The reason I single out self-taught developers is that many CS paths will push though a broad degree of language, or at least interpreters and compilers, such that its less of a hill to climb.
I am a self-taught developer with this problem. But I still enjoy diving head first into new languages. It just takes awhile.
Self-taught programmers on the other hand more often have the intrinsic curiosity and motivation to learn those topics. Also diving deep into topics is their strength, since the uni counterparts often know the names of concepts, but after a while it's quite clear that this knowledge of names is rarely coupled with familiarity with the topics they represent. I'm sure just knowing the names of things gets you far when you want to pass an exam, but for actual work it's scarcely different from knowing nothing at all. As Feynman said, there's a big difference between knowing the name of something and knowing something.
Now, those are just generalizations from experience. I've also met plenty of counterexamples in both groups.