1. 29

  2. 12

    One thing I’ve noticed is that people use the IDE term to mean two very different things:

    • Original meaning, a cohesive collection of dev tools working together under the same UI.
    • PostIntelliJ meaning, a smart tool that parses and type checks your code on the fly to offer assistance based on semantic understanding of the programming language.

    Unix fits the first definition perfectly, but doesn’t help with the second one at all.

    It really pains me that most syntax highlighting today is done the unix way, with regular expressions. You don’t parse HTML with regexes. Luckily, with tree sitter and semantic highlighting finally coming to LSP we might see this changed.

    1. 3

      Your comment about the second kind of IDE reminds me of this post:


    2. 5

      Somewhat relevant, a while ago I did a video demonstrating how to use window manager hotkeys to allow “jump to error” from any terminal:


      1. 4

        I think “IDE” is the wrong term here – in this case Unix isn’t just a program, within the (operating) system for development. Rather the system itself is “developable”, making it an “interactive development/computing environment”, like Smalltalk or to a lesser degree Emacs.

        1. 15

          The E in the IDE stands for Environment. While some are constrained within a single program, an operating system is definitely an environment.

          1. 1

            Yes, but IDE’s usually aren’t operating systems, but as I say are at best interactive development environments?

            1. 6

              The I in IDE stands for Integrated, not Interactive, although Unix-like operating systems are both. I guess you could argue that ‘integrated’ is intended to mean ‘integrated into a single program’ but then you’re arguing what counts as a single program. I run them all from dmenu and they’re all windows within my window manager, how does that really differ from running them all from M-x and them all being panes within Emacs?

              1. 1

                That’s my point though, Unix (or a WM under Unix) is more similar to Emacs or other Interactive Development Environments (/= IDE = Integrated Development Environment) than it is to an IDE. Of course there are differences, but in it’s core, it’s providing a human-machine interface, rather than tools to ease project and code management, which is what I understand an IDE to be.

              2. 3

                Yes, but IDE’s usually aren’t operating systems

                Emacs would like to have a word with you ;)

          2. 2

            that goes a long way to making Unix as powerful as a full-blown IDE.

            And here is the conceptual flaw in the article in my opinion.

            The title is unfortunate click-bait. UNIX is an incredibly powerful paradigm and philosophy that can be leveraged to do just about everything an IDE can do provided you’re willing to be clever in your use of its tools and have mastered enough of the minutia around how each tool works to combine them in the necessary way.

            But UNIX is not in any way, nor should it be compare to an “Integrated Development Environment”.

            1. 11

              But UNIX is not in any way, nor should it be compare to an “Integrated Development Environment”.

              How is it not? The article lists several reasons why for all intents and purposes UNIX is an IDE, and that there’s no point moving all these tools into a text editor when they’re already right there at your fingertips.

              Your response here doesn’t amount to much more than “Nuh uh!”

              Furthermore, first you say UNIX “can be leveraged to do just about anything an IDE can do”, but then you say the two should not be compared. Didn’t you just compare them yourself?

              1. 4

                I think what I was going for was that UNIX is indeed a superlative development environment, but from my perspective it is not “integrated” in the same way that tools like IDEA or Visual Studio are - bundled in one giant binary.

              2. 12

                The title is unfortunate click-bait.

                It’s really not. It’s a good title that conveys the point of the article, which is that you can use Unix to replace an IDE. Here the term IDE is used because everyone knows what an IDE is and will get what the author is meaning immediately, just from reading the title. Stringent and effective doesn’t mean clickbaity.

                But UNIX is not in any way, nor should it be compare to an “Integrated Development Environment”.

                Why not. Unix is a development environment. It’s also the title of that book by Kernighan and Pike, “The UNIX Programming Environment”. You said yourself, Unix “can be leveraged to do just about everything an IDE can do“ — that’s really the whole point, the article just shows you how. This article and this whole blog are great reading material and the author is a very talented technical writer. Save your criticism for the actual clickbaity, low-quality content, because this is not it.

                1. 4

                  Perhaps you’re right. I think what I was indexing on was the word “integrated”.

                2. 4

                  UNIX is not in any way, nor should it be compare

                  Even assuming the former (which I disagree with strongly), why should it not even be compared to an IDE? They’re clearly at least comparable.

                  1. 2

                    They’re not comparable. Unix tools don’t give you all the semantic knowledge an IDE has (unlike LSP, which is all about the semantics of a language). How do I jump-to-def with Unix? How do I ask for the type, or documentation, of a symbol? How do I reindent a region of code (not the whole file)?

                3. 1

                  Kinda related, I’ve gotten a bit worn out from pycharms perf problems that I started looking at emacs for my IDE, and it’s tough! Lots of stuff that I’m trying to reproduce

                  Notably I really want some sort of good symbol browser (though likely what I need is to make myself a good cheat sheet). Keeping track of major modes is a bit tough at times too. Will need to work a lot on this one