Hacker News new | ask | show | jobs
by skocznymroczny 2855 days ago
I think it's a symptom of times changing. People don't want to code in vi/nano anymore. A general purpose language launching today is expected to have a good support in an IDE. At least autocompletion, support for building and debugging, refactoring if possible. Also people prefer to have a one well working IDE plugin than several half-baked ones that don't offer much more than syntax highlighting. That's why IDE plugins are becoming important part of language development, either through IDE specific plugins like IntelliJ ones or more generic solutions such as language servers.
4 comments

> I think it's a symptom of times changing. People don't want to code in vi/nano anymore.

Not sure if that is true. Many people are still using vim for many newer languages. I think it depends on the language.

Some languages are simply more IDE-reliant than others. Statically typed languages with a large vocabulary (Java, C#, Scala) tend to benefit more from IDEs than simple, dynamic languages like Python and Ruby.

And there are newer languages like Go. Go was designed to not require an IDE while not being opposed to one.

I think the language server idea is a brilliant one and probably something we'll see more and more of, because it makes a language completely editor/IDE agnostic. It would allow folks using vim or VS code to debug or refactor as cleanly as full-blown IDEs. I suspect this will lead to a decline in the specialized IDE market (Jetbrains).

All languages can benefit from a good IDE. It's not related to the language. However very few languages actually have good IDEs, either because they are designed in ways that are hostile to static analysis (scripting langs) or because they just don't invest in tooling (Go, Rust).

Kotlin is unusual because JetBrains invested heavily in their IDE support from the start and developed it hand in hand with their plugin, so there's nothing in the language that is hard to statically analyse in a fast way.

As a Kotlin user it makes it a very pleasant language to develop in. You should try it.

As for IDE agnostic language servers, I think you'll find they find it hard to compete with IntelliJ or similar advanced IDEs simply because the "protocol" for classical IDEs is very fast, high throughput and complex object APIs. The featureset of something like IntelliJ is enormous and they can iterate very quickly. It'll be a long time until there is strong competition to it especially with a standards based out of process server-type design.

I agree with GP. I do not want to use a language that does not at least have a plugin in IntelliJ. I remember the amount of dumb errors running the code has decreased tremendously after started using a serious IDE. Not going back as I'm dependent on it and feel scared of coding without its checks and utilities.
This. I really only bother touching languages with good to great IDE experiences which is why I basically concentrated on JVM tech for most of my career. The good news is that the tools story is improving across all languages these days.
In other words, you're intenionally limiting your horizon because of convenience?
Not really practically but yes in theory? The JVM is host to many languages with different paradigms and it is not like I don't futz around with other stuff. I refuse to write serious code in poorly tooled languages and at this point in my career there are also some areas of exploration I just don't care about (e.g. machine level programming with ASM or C/C++ and web dev with JavaScript).
Ah, okay. What I didn't quite get from your original post was that you were talking about professional-level coding. That makes sense, I guess.
To be fair, life is indeed too short to waste it trying to wrangle unusable tools, particularly when potential gains are slim to none.
I went the other way round; dumped all JetBrains stuff and now write most things in Atom/Nuclide. At least it's not as slow with very large files as JetBrains stuff. I realized with Deep Learning work and Jupyter Notebook that I actually don't need IDE anymore...
How do you use Jupyter for Deep Learning? I can only think about prototyping stuff, but not for training a large dataset (that doesn't fit in memory) for days.
Of course, prototyping only + test runs; then moving the code to proper source files (or writing them separately and including them in the notebook). Usually I write everything in the notebook, make sure I catch all the bugs, do some initial test runs to see if I am getting anywhere, then separating code out to individual Python files. The good thing is I can immediately showcase principles and progress to clients by interleaving markdown with the code, throw in some visualization and stats to the mix, add links to arxiv papers and github repos, showcase multiple approaches/models with preliminary accuracy results or heatmap visualizations etc. Then (reasonable) clients are properly informed and can decide which direction they want to move forward etc.
How big are your datasets?
A few petabytes in some cases. Some advanced balanced sampling in Spark must be used for testing the models.
Also, Kotlin is mostly developed by JetBrains, makers of IntelliJ.