Hacker News new | ask | show | jobs
by aschatten 2101 days ago
(disclaimer: I am an IntelliJ fanboy)

> From my experience out of the box you get poor performance and you have to spend a lot of time figuring out how to change configuration to improve it as knowledge is scattered in many places and not always up to date.

I don't know if you are talking about IntelliJ or VCS, but IntelliJ can quickly start an empty project. And you don't to spend time to figure out how things work. I mean, there is literally no entry barrier for a bare bone project.

> I wish there was an editor with low latency, smart search, some proper file system database

You are describing an IDE here. Smart search and a proper file system database, it means operating not on a collection of text files but on a project and a code tree, which is the main difference between IDE and Editor.

> I think the success of VSCode is because you can easily open it in your current directory from the terminal and it will show you your folder etc.

IntelliJ is adding this functionality slowly: https://blog.jetbrains.com/idea/2020/04/lightedit-mode/ It's not on par with opening a folder in VCS, but it's a matter of time until the close the gap if they choose to.

3 comments

I know this is how a lot of people think of the text editor/IDE divide, but it’s just not true anymore: for specific languages like Clojure or Common Lisp, emacs has plugins that provide all the essential features of an IDE with minimal fuss. For JavaScript, VSCode or tide-mode for emacs have, in my experience, significantly better code intelligence than WebStorm. The only languages IntelliJ is better at than the competition, IME, are Java, Kotlin and Scala: and, even in these cases, the LSP tooling is catching up fast.
> emacs has plugins that provide all the essential features of an IDE with minimal fuss

I vehemently disagree. There is no such thing as minimal fuss in emacs, especially when it comes down essential IDE features.

> for specific languages like Clojure or Common Lisp

Common Lisp is esoteric language at this point, not relevant here, IMO.

I agree. Which language you use defines which editor/ide suits it best.
What about Resharper/Resharper++?
Well, obviously a text editor built on top of Lisp is going to be pretty good at editing Lisp-based languages like Clojure. Emacs is pretty poor at everything else though. I remember trying to get it to do even basic completions in C++ beyond hippie-style completions and it just couldn't do it no matter how many packages or servers it had to help it. That was some years ago though, but emacs develops slowly so I doubt it's changed.

That said, the tiling WM features it has are pretty good.

"LSP tooling" for Java/Kotlin/Scala doesn't exist as far as I'm aware. I'm sceptical about LSP stuff anyway. In an IDE performance and latency really matters. IntelliJ plugins have direct heap access to the AST and editors so they can rapidly explore the code, add annotations etc. Java adds some overhead but it gets lower every year, they just never stop optimising the JVM, and serialisation/context switching is gonna add a lot back. Especially as you'll really want to be writing language servers in high level languages anyway. There's no justification for writing such a thing in C++ or Rust.

> "LSP tooling" for Java/[…] doesn't exist as far as I'm aware.

There's https://github.com/eclipse/eclipse.jdt.ls. It's used by Visual Studio Code's Language Support for Java (https://marketplace.visualstudio.com/items?itemName=redhat.j...).

I use this with emacs, and it works pretty well: it was built for Eclipse, but it’s well-integrated into lsp-mode and, more or less, “just works”.

There are also Kotlin and Scala LSP servers that work. The servers themselves can be a bit annoying to get working, but the emacs integration “Just Works”.

I've used both VSC and IntelliJ and I understand where you're coming from but when the parent comments says VSC is fast they really mean it. It's almost instantaneous and I can get a lot done in VSC even without all the complex smart functionality.
I use both VSC And IntelliJ. Searching symbols/usages/implementations in large projects is far faster in IntelliJ in my experience, not to mention it's much more accurate too but that's probably due to the language (Java/Kotlin in IntelliJ, Go/JS in VSC). It's really annoying when I have to wait seconds to find implementations of a Go interface in VSC as I am used to IntelliJ's instantaneous searches. I think you mean VSC is faster to start up, and perhaps to type? It's certainly not faster overall.
In my experience (on Linux), intelliJ reacts immediatly when I type, vscode always has that little delay that always make it feel weird to me.
I'm a fanboy of both JetBrains and VSC. In the many years I've used JetBrains IDE variants (IntelliJ, Webstorm & Pycharm), I was never able to get rid of the frequent project re-indexing that slows everything down and makes the fans go crazy; you'd think they would cache that info and write it to disk.
They introduced recently an interesting feature: https://blog.jetbrains.com/idea/2020/07/shared-indexes-plugi... that might help with indexing of some shared libraries. I have not experience with this feature, but it looks promising.

Frequent re-indexing sucks and and times it slows you down. But I see it as a direct price to pay for intelligent autocomplete, search, refactoring, etc.

It also eats a lot of memory :(

It is cached and written to disk. Actually they're now going further and supporting downloads of pre-calculated indexes.

I use IntelliJ every day and I'd say reindexing only happens now when there's an actual need for it, like because I switched to a different JDK (which may therefore have different classes in the std lib). It's incremental too so this doesn't bother me like it used to. Definitely an area of focus for them.