Hacker News new | ask | show | jobs
by advocaat23 4305 days ago
>A simple example is if I want to iterate through every item in a container, I'd like to just type 'for', tab, the first few letters of the container variable, tab, and have it all set up. Resharper does this, and will even name things appropriately for you (if the container is something like myInts or intList, it will name the item myInt).

Yeah, but e.g. in C++ there are many styles of for-loops. How does the IDE find out what you want to do? Different projects adopt different for styles (size_t, iterators, etc.).

>Is it myList.length(), myList.length, myList.Count, len(myList), count(myList)?

That's a legitimate question, but how does your IDE help there? I solve the problem using a

"<language> get length of list"

web-search. Can your IDE answer this question? If I just type

myList.

I will get usually a drop-down menu of all the methods. But then I have to try "c" for count, "l" for length, etc. In particular I have to assume that the size function is a method which is the case in Java, C++, but e.g. not in Python. Or does JetBrains Python version (PyCharm I think) rewrite a.length to len(a)?

My main IDE complaint is that IDEs lock you into languages, libraries and workflows. If you work with a text editor your have to know

  - the language
  - the text editor
  - your build system
  - your version control system
If you work with an IDE you have to know

  - the language
  - a text editor (e.g. remote sessions without X)
  - the build system
  - the version control software
  - the ide
  - probably a plugin that makes your ide editor behave like your text editor
  - a plugin for your language
  - a plugin for you build system
  - in general: how does the IDE's plugin system work
So I like the idea of IDEs, but for me the abstraction always fails and I struggle with its plugins. I give them a try sometimes but most of them are locked into eco-systems:

  - qtcreator: QT, C++
  - eclipse: Java
  - netbeans: Java
  - PyCharm: Python
  - Clion: C/C++
If you work with different languages, libaries and workflows it is often not trivial to make the IDE adapt (in particular, most of them have their own definition of "projects" and scatter you directory trees with hidden files) and the whole dev-setup gets more complicated. What do you do if you have to use a language that's not supported by the IDE?

The text editor abstraction feels more honest: "Look your project is a bunch of text files. I give you the following interface to explore/change this text blobs." Again, I like the idea, but good IDEs were always locked into eco-systems and these change so fast that the IDE seems always behind. I think Smalltalk had an advanced IDE but it locked you into ... Smalltalk.

1 comments

eclipse: Java, Scala, Clojure, C, C++, Ada, D, OCaml, Haskell, ...

Netbeans: Java, C, C++, PHP, Ruby, Groovy, ...

> I think Smalltalk had an advanced IDE but it locked you into ... Smalltalk.

Which shows you never used it.

Smalltalk is an environment. Workstation OS, IDE, REPL and programming language.

Only the whole experience is gratifying.

Same goes to Interlisp-D, Mesa/Cedar, Lisp Machines and Oberon systems. All Workstation OSs that mix all these concepts together.

UNIX developer experience might sound great, but only for those that never had the experience to touch such systems.

It is true that there are systems (Lisp Machines, Oberon, Smalltalk, etc.) with a more integrated approach and there are great ideas, but what I meant with the term "IDE" is classic IDEs on Windows, Linux and OSX. These OSs are heavily UNIX influenced and for those systems I consider text tools (editors, shells, command-line tools) the easier development UI.