[HN Gopher] IDEs we had 30 years ago and lost (2023)
___________________________________________________________________
IDEs we had 30 years ago and lost (2023)
Author : AlexeyBrin
Score : 447 points
Date : 2025-10-18 12:44 UTC (10 hours ago)
(HTM) web link (blogsystem5.substack.com)
(TXT) w3m dump (blogsystem5.substack.com)
| sph wrote:
| Now that CLI tools are in fashion again... has nobody thought to
| recreate a modern version of Turbo C++/Pascal?
|
| I know there's Emacs and vim, but they're far too programmable
| and bloated compared to the elegance of TC++, which did one job,
| and one job only, very well. Also, despite being an Emacs power
| user at this point, it's never going to be as ergonomic and well
| thought out with its arcane chords, while TC++ conveniently shows
| all possible keybinds throughout its UI.
| AlexeyBrin wrote:
| FreePascal has a text mode IDE similar to the old Turbo Pascal
| 7.0 that you can use in a Terminal. So you can use a _modern_
| Pascal compiler from it.
| coolcoder613 wrote:
| Have you seen tvision[0] and turbo[1]?
|
| [0] https://github.com/magiblot/tvision [1]
| https://github.com/magiblot/turbo
| badsectoracula wrote:
| There is also Free Vision which is part of Free Pascal. I
| used it sometime ago when i wanted to write a TUI viewer[0]
| for info files[1], though i never finished it (should pick it
| up at some point since it is mostly done).
|
| [0] https://i.imgur.com/Qvkt3W0.png
|
| [1] https://www.gnu.org/software/texinfo/manual/texinfo/html_
| nod...
| fithisux wrote:
| I use it instead of edit on Windows for everything in Windows
| Terminal, except development where I use helix editor.
|
| It works fine with Yori too, not only CMD.
| Brian_K_White wrote:
| A hundred years ago I found something called XWPE and managed
| to build it for sco osr5, and then pretty much never used it
| for real.
|
| (That doesn't imply I went with VS or similar fat ide, just
| that I didn't end up using xwpe for real. I tried code::blocks
| for a while but mostly just use geany or a plain editor.)
| Dwedit wrote:
| DOS programs ran in Text Mode, and directly interacted with the
| keyboard hardware.
|
| Linux Terminal programs are running in an emulated terminal,
| and are bound by keyboard input restrictions that DOS programs
| did not have.
| chris_wot wrote:
| Is there a TUI that can mimic Borland's text based UI? Something
| that integrates with lldb easily...
| api wrote:
| Speaking of bloat: why are binaries from Rust or (much worse) Go
| so damn huge? This is in release mode with debug off.
|
| It's weird because memory use for the same sorts of programs is
| not much worse than other languages. In Rust memory use seems
| comparable to C++. In Go there's a bit more overhead but it's
| still smaller than the binary. So all this is not being loaded.
|
| I get the sense devs just don't put a lot of effort into
| stripping dead code and data since "storage is cheap" but it
| shows next to C or even C++ programs that are a fraction of the
| size.
|
| I see nothing about Rust's safety or type system that should
| result in chonky binaries. All that gets turned into LLVM IR just
| like C or C++.
|
| Go ships a runtime so that explains some, but not all, of its
| bloat.
| kranke155 wrote:
| What binaries are a good example of this?
| AlexeyBrin wrote:
| Mostly because of static linking. C and C++ don't put every
| library they need in the binary by default. The advantage is
| that a pure Go or Rust binary just works (most of the time)
| when copied from one machine to another, you don't have to care
| about installing other libraries.
| Onavo wrote:
| Go especially, on some platforms they go straight to syscalls
| and bypass libc entirely. They even bring their own network
| stack. It's the maximalist plan 9 philosophy in action.
| self_awareness wrote:
| I don't really like Go as a language, but this decision to
| skip libc and go directly with syscalls is genius. I wish
| Rust could do the same. More languages should skip libc.
| Glibc is the main reason Linux software is binary non-
| portable between distros (of course not the _only_ reason,
| but most of the problems come from glibc).
| steveklabnik wrote:
| You can only skip libc on Linux. Other unices and Windows
| don't let you.
| immibis wrote:
| You can skip libc on Windows - you can't skip the system
| DLLs like kernel32. (In fact, Microsoft provided several
| mutually incompatible libcs in the past.)
|
| Well, you can _non-portably_ skip kernel32, and use
| ntdll, but then your program won 't work in the next
| Windows version (same as on any platform really - you can
| include the topmost API layers in your code, but they
| won't match the layers underneath of the next version).
|
| But system DLLs are DLLs, so also don't cause your .exe
| to get bloated.
| steveklabnik wrote:
| Yes, it's not literally libc on windows, but the point is
| that directly calling syscalls is not supported, you have
| to call through the platform's library for doing so.
|
| On some systems, this is just not a supported
| configuration (like what you're talking about with
| Windows) and on some, they go further, and actually try
| and prevent you from doing so, even in assembly.)
| immibis wrote:
| There's still something on the platform that you can call
| without extra indirection in the way on _your side_ of
| the handoff. That is true on all platforms; whether it 's
| an INT or SYSCALL instruction or a CALL or JMP
| instruction is irrelevant.
| badsectoracula wrote:
| > Glibc is the main reason Linux software is binary non-
| portable between distros
|
| Linux software _is_ binary portable between distros as
| long as the binary was compiled using a Glibc version
| that is either the same or older than the distros you are
| trying to target. The lack of "portability" is because
| of symbol versioning so that the library can expose
| different versions of the same symbol, _exactly_ so that
| it can preserve backwards compatibility without breaking
| working programs.
|
| And this is not unique to Glibc, other libraries do the
| same thing too.
|
| The solution is to build your software in the minimum
| version of libraries you are supposed to support.
| Nowadays with docker you can set it up in a matter of
| minutes (and automate it with a dockerfile) - e.g. you
| can use -say- Ubuntu 22 to build your program and it'll
| work in most modern Linux OSes (or at least glibc wont be
| the problem if it doesn't).
| api wrote:
| That's a great point.
|
| Another advantage is that at least for Rust you can do whole
| program optimization. The entire program tree is run through
| the optimizer resulting in all kinds of optimizations that
| are otherwise impossible.
|
| The only other kinds of systems that can optimize this way
| are higher level JIT runtimes like the JVM and CLR. These can
| treat all code in the VM as a unit and optimize across
| everything.
| aleph_minus_one wrote:
| > Another advantage is that at least for Rust you can do
| whole program optimization. The entire program tree is run
| through the optimizer resulting in all kinds of
| optimizations that are otherwise impossible.
|
| I get why this might lead to big _intermediate_ files, but
| why do the _final binaries_ get so big?
| 3836293648 wrote:
| Rust binaries + all their dynamic libraries are the same
| size as C++ binaries + their linked libraries (when
| stripped, this isn't default in Rust)
|
| The main issue is that Rust binaries typically only link
| to libc whereas C++ binaries link to everthing under the
| sun, making the actual executable look tiny because
| that's not where most of the code lives.
| uecker wrote:
| Both C++ and Rust are based on monomorphization, which
| means generic programming is based on a expansion of code
| for each combination of types. This makes compilation
| slow and causes code bloat. One then needs whole program
| optimization to get this under control to some degree.
| TinkersW wrote:
| C++ has had whole program optimization since forever. And
| you can use static linking if you want, the same as Rust.
| maccard wrote:
| Rust doesn't strip debug info by default.
| jeroenhd wrote:
| The vast amount of debug info does make the problem worse,
| but it doesn't take long before a moderately complex Rust
| programs grows to 100MB even after stripping.
|
| When I tried to compare Rust programs to their C(++)
| equivalents by adding the sizes of linked libraries
| recursively (at least on Linux, that's impossible for
| Windows), I still found Rust programs to have a rather large
| footprint. Especially considering Rust still links to glibc
| which is a significant chunk of any other program as well.
|
| I believe many of Rust's statically linked libraries do more
| than their equivalents in other languages, so I think some
| more optimisation in stripping unused code paths could
| significantly reduce the size of some Rust applications.
| throawayonthe wrote:
| https://github.com/johnthagen/min-sized-rust explains some of
| it and https://kobzol.github.io/rust/cargo/2024/01/23/making-
| rust-b...
| Sharlin wrote:
| A good article on minifying Rust binaries:
| https://github.com/johnthagen/min-sized-rust
| jfengel wrote:
| I used most of these and they weren't worth it. They didn't do
| enough to justify being locked in to the tool. The debuggers were
| too, uh, buggy. Command line tools were more flexible.
|
| They finally got good enough in the late 90s. I think it helped
| that computers finally had enough memory to run both the editor
| and the program itself.
| PaulHoule wrote:
| In the golden age of DOS you had an array of bytes representing
| characters and an array representing attributes (background and
| foreground colors) and the hardware drew out of that. If you
| wanted to write a 'A' to a certain spot you wrote 0x41 to a
| certain memory address and that was that --- there were some wait
| states involved but it was way faster than drawing on a 9600 baud
| terminal with ANSI terminal commands that use up even more bytes.
|
| I first used emacs on terminals that were hooked to Sun
| workstations and you were either going to use a serial terminal
| which was very slow, or the terminal emulator on the Sun which
| was a GUI program that had to do a lot of work to draw the
| characters into the bitmap. So that's your reason TUIs went away.
| floam wrote:
| Damn that actually sounds superior. How did changing the size
| work?
| layer8 wrote:
| Unless the program specifically allowed for it, you couldn't
| change the size (video mode, really) without exiting and
| restarting the program after changing modes on the DOS
| prompt.
|
| Remember, the video hardware rendered text mode full-screen,
| and it had to be reconfigured to change to a different number
| of lines and columns. Only specific sizes were supported.
| danparsonson wrote:
| There were a bunch of predefined modes in the video BIOS, and
| with a little bit of assembler you'd issue an interrupt (a
| system call really) which would change the video mode. Then
| as the parent comment said, you could write to video memory
| directly and your writes would either be interpreted as ASCII
| character/attribute pairs in a text mode, or colour palette
| indices in a graphical mode.
|
| Most games at that time used mode 13h which was 320x200 with
| 8-bits per pixel which therefore indexed into a 256-colour
| palette (which could itself be redefined on the fly via
| reading from and writing to a couple of special registers -
| allowing for easy colour-cycling effects that were popular at
| that time). Here's a list of the modes:
| https://www.minuszerodegrees.net/video/bios_video_modes.htm
| torgoguys wrote:
| You called an "interrupt," which was basically a system call.
| That changed a bunch of timing registers within the video
| hardware. For a long time you basically could only do 40, 80
| columns of text and 25, 43, or 50 lines. With some trickery
| you could get the video hardware to output 90 columns and
| with even more trickery you could get 60 rows.
|
| If you made a custom font you could also have more diversity
| in the number of rows too but this was rarely done.
|
| Eventually different text modes became available with higher
| resolution video cards and monitors. 132 columns of text were
| common but there were others.
| madmountaingoat wrote:
| The standard screen was 80 by 25. There were two addresses
| you needed to know 0xb000 for monochrome displays and 0xb800
| for color. For monochrome you could just blast
| characters/attributes to the address and everything looked
| great. For color you had to add a little bit of assembly so
| writes didn't happen when the monitor was doing certain
| things (or else you would get some flickering). The little
| hacks were all well known. Then you could build your own
| 'windowing' system by just maintaining separate screen
| buffers and having a little bit of code to combine for
| buffers when writing the actual hardware. In the early days
| everyone code was synchronous and code would start listening
| for keyboard events and react and repaint in a very ad hoc
| fashion. Mouses made things a bit more complicated as you
| needed to maintain a persistent model of the UI to process
| their events. So the UI code was simple and easy to work on,
| but you had to squeeze these programs into tiny memory
| footprints so you would spend a lot of time trying to find
| more memory. One of the bigger projects I worked on had a
| memory manager that relocated blocks to create contiguous
| space but since there was no OS support for things that like
| the code was actually updating pointer in the heap and stack
| - which was a great source of complicated bugs. Whoa onto
| anyone that tried to use a linked lists in such an
| environment. But yeah, it was a fun time.
| anthk wrote:
| You had WPE and XWPE. And current Emacs works under a TTY with
| GPM and mice.
| coldcode wrote:
| I used Borland Turbo Pascal in 1984. It was amazing to work with
| something so fast on a PC that was really so slow. No
| IDE/Compiler since then matched the speed. Today's code is
| massively more sophisticated and complex, so there is no way to
| match that performance today despite the speed of computers
| today.
| elevation wrote:
| I got a windows 95 66MHz Pentium machine with 16MB ram at a
| yard sale in 2002. Visual Studio 5 Enterprise worked plenty
| fast on that with features I still miss (or which don't perform
| as well) in modern environments.
| marstall wrote:
| totally. so strange that that was the fastest, most flowy dev
| experience i've ever had. been chasing that ever since. though
| i must say rails, vite, react fast refresh, etc. are pretty
| nice in that regard.
| chadcmulligan wrote:
| Have you tried Delphi lately, very fast, compiles in less than
| a second.
| 1313ed01 wrote:
| Came here to share this mandatory link on this subject, Dadgm's
| Things That Turbo Pascal is Smaller Than:
| https://prog21.dadgum.com/116.html
|
| I used Turbo Pascal 2 as late as 1991, if not later, because
| that was the version we had. It was really fast on a 386 40 MHz
| or whatever exact type of PC we had then. A bit limiting
| perhaps that it only came with a library for CGA graphics, but
| on the other hand it made everything simpler and it was good
| for learning.
|
| A few years ago I wanted to run my old Turbo Pascal games and
| decided to port to Free Pascal. Sadly Free Pascal turned out to
| only ship with the graphics library introduced in Turbo Pascal
| 4, but on the other hand I got a few hours of fun figuring out
| how to implement the Turbo Pascal 1-3 graphics API using
| inclined assembler to draw CGA graphics, and then my games
| worked (not very fun games to be honest; more fun to implement
| that API).
| burnt-resistor wrote:
| Neat. I have an original copy of Numerical Recipes in Pascal.
|
| I used to have a copy of a Turbo Pascal graphics book with a
| blue-purple Porsche (not pg's hah) on the cover that included
| code for a raytracer. It would take about a minute to render
| one line at 320x200x256 colors, depending on the number of
| scene objects and light sources.
| constantcrying wrote:
| The arguments for using TUI IDEs are just very poor. Developers
| should not be relying on something as loaded with legacy bloat
| like the terminal, to do development.
|
| Zed has remote editing support and is open source. Resource
| consumption is a bizarre proposition, considering what
| abstractions the terminal has to be forced into to behave
| something like a normal window.
|
| Really, TUIs are not very good. I get it, I use the terminal all
| the time and I will edit files with vim in it, but it is a
| pointless exercise to try to turn the terminal into something it
| was never meant to be and try to have it emulate something which
| would be trivial on a normal OS window. To be honest it makes me
| cringe when people talk about how much they perform tasks in the
| terminal, which would be much easier done in a graphical
| environment with proper tools.
| marstall wrote:
| and yet zed is straight up slower than turbo c++
| constantcrying wrote:
| What? "Slower" how? And why would dev experience not matter
| more?
|
| TUIs are bizarre legacy technology, which are full of dirty
| hacks to somewhat emulate features every other desktop has.
| Why would any developer use them, when superior alternatives,
| not based on this legacy technology, exist and freely
| available?
| jagged-chisel wrote:
| Lots of opinions in the thread without any substance to
| back it up. If you don't like TUIs and terminals, that's
| ok. But if you actually want to argue against them, let's
| hear a substantive argument. What specifically is so bad
| about the TUI?
| constantcrying wrote:
| They are built on ancient technology and need an enormous
| array of hacks to emulate basic features, which are
| trivial to do in any modern GUI.
|
| User experience is inconsistent with features varying
| wildly between terminals, creating a frustrating user
| experience. It is also making customization difficult.
| E.g. in a TUI IDE you can not have font settings. Short
| cuts are also terminal dependent, an IDE can only use
| those shortcuts the terminal isn't using itself.
|
| Something as basic as color is extremely hard to do right
| on a terminal. Where in a normal GUI you can give any
| element a simple RGB color, you can not replicate that
| across TUIs. The same goes for text styling, the terminal
| decides what an italic font it wants to use and the IDE
| can not modify this.
|
| They are also very limited in graphical ability. Many
| features users expect in a GUI can not be replicated or
| can only be replicated poorly. E.g. modern data science
| IDEs feature inline graphics, such as plots. This is
| (almost) not replicable on a Terminal. If you are using
| profiler you might want to plot, preferably with live
| data. Why arbitrarily limit what an IDE can do to some
| character grid?
|
| The terminal is just a very poor graphical abstraction.
| It arbitrarily limits what an IDE can do. Can you tell me
| why _anybody_ would seriously try to use a terminal as an
| IDE? Terminals UIs are _more_ complex, because they need
| to handle the bizarre underlying terminal, they are often
| less responsive, since they rely _on the terminal_ to be
| responsive. There might be some very marginal improvement
| in resource usage, do you think that is even relevant
| compared to the much increased dev experience of a normal
| GUI?
|
| There absolutely is no real advantage of TUIs. And
| generally I have found people obsessing over them to be
| mostly less tech literate and wanting to "show off" how
| cool their computer skills are. All serious developers I
| have ever known used graphical dev tools.
| nec4b wrote:
| As someone already mentioned before, I don't think you
| are talking about the same terminal as others are.
|
| >> need an enormous array of hacks to emulate basic
| features
|
| What are those hacks. As far as I can remember, TUIs ran
| faster on ancient hardware then anything else on today's
| modern computers.
| constantcrying wrote:
| >As someone already mentioned before, I don't think you
| are talking about the same terminal as others are.
|
| People know perfectly well that I am talking about the
| way in which a terminal emulator can be used to display
| 2D graphics. By utilizing specific escape sequences to
| draw arbitrary glyphs on the terminal grid.
|
| >What are those hacks.
|
| Everything is a hack. TUIs work by sending escape
| sequences, which the terminal emulator then interprets in
| some way and if everything goes right you get 2D glyph
| based graphics. Literally everything is a hack to turn
| something which functions like a character printer into
| arbitrary 2D glyphs. Actually look at how bad this whole
| thing is. Look at the ANSI escape sequence you need to
| make any of this work, does that look like a sane
| graphics API to you? Obviously not.
|
| >As far as I can remember, TUIs ran faster on ancient
| hardware then anything else on today's modern computers.
|
| This is just delusional. Modern 2D graphics are extremely
| capable and deliver better performance in every metric.
| nec4b wrote:
| There are no escape sequences when running TUI apps in
| DOS. They have direct memory access to the video card.
|
| >> This is just delusional.
|
| That is a bit uncalled for.
| constantcrying wrote:
| Did you just not read the rest of my post?
|
| We are not talking about DOS, we are talking about
| "modern" TUIs you would use on a modern
| Linux/Windows/MacOS system.
|
| I even made that explicit in my first paragraph.
| gldrk wrote:
| _Terminals_ are full of legacy bloat, but TUIs don't have to
| be. I don't think Borland IDEs used ANSI.SYS.
|
| How is graphical vim even different from TUI vim? At least
| Emacs can render images.
| bitwize wrote:
| Even 68k-based systems running in single digit megahertz
| could run full featured terminal emulation and have a lot of
| other stuff going too. There's legacy stuff in terminals, but
| compared to all the other stuff you've got going (Wayland,
| GTK, frickin' browser engine) it isn't _bloated_.
| jeroenhd wrote:
| One thing that's nearly impossible to replicate on modern
| systems is the extremely tight feedback loop these TUIs had.
| Keyboard latency was near non-existent while basic calculators
| these days will happily take a hundred milliseconds to process
| a key press.
|
| We don't need to go back to the 66MHz era, but it's
| embarrassing that programs running on a dozen computer cores
| all executing at several gigahertz feel less responsive than
| software written half a century ago. Sure, compiling half a
| gigabyte of source code now finishes before the end of the
| year, but I rarely compile more than a hundred or new lines at
| a time and the process of kickstarting the compiler takes much
| longer than actual compilation.
|
| A terminal is no more than a rendering environment. With some
| workarounds (a custom renderer and input loop most likely), you
| can probably compile Zed to run in a FreeDOS in the same
| environment you use to run Turbo Pascal. I doubt you'll get the
| same responsiveness, though.
| badsectoracula wrote:
| AFAIK Borland C++ (even on Windows) used to read the source
| from whatever editor buffers you had already in the IDE and
| since the compiler was part of the IDE, it cached various
| states in memory, which is why it was so fast (for a C/C++
| compiler anyway - Delphi was much faster) even on slow
| hardware. Meanwhile Visual C++ (and modern IDEs) had you
| autosave the file to disk so the compiler, that was launched
| as a separate program (often for each file), could read it
| (and rebuild its internal state from scratch for every single
| file).
| dapperdrake wrote:
| From what I remember researching it really js this.
|
| Today, Python, Rlang, PHP, Java, and Lisp bring these
| features. But not C. Oh the irony.
| somat wrote:
| C does as well, that is half the point of make. When
| building a large C project it will first create a bunch
| of object files from the source files then link them into
| an executable. make then keeps track of what source files
| have changed and rebuilds only those object files. The
| first build is slow, subsequent builds are much faster.
| only needing to compile one file then link them.
|
| At least that's the theory, in reality make has a lot of
| warts and implementing a good solid make file is an art.
| Don't even get me started on the horrors of automake,
| perhaps I just need to use it in one of my own projects
| but as someone who primarily ports others code, I hate it
| with a passion. It is so much easier when a project just
| sticks with a hand crafted makefile.
|
| For completeness: The other half of make is to implement
| the rest of the build process.
| uecker wrote:
| I would say autoconf/automake is not really useful
| anymore and probably somebody should just establish a new
| and simplified standardized setup and Makefile for C
| projects.
|
| And yes, efficient separate and incremental compilation
| is major advantage of C. I do not understand why people
| criticize this. It works beautifully. I also think it is
| good that the language and build system are separate.
| badsectoracula wrote:
| I think you probably refer to something else than what i
| meant in my post above.
|
| Borland C++ had the compiler as part of the IDE (there
| was also a separate command-line version, but it was also
| compiled as part of the IDE). This allowed the IDE to not
| spawn separate processes for each file nor even need to
| hit the disk - the compiler (which was already in RAM as
| part of the IDE's process) would read the source code
| from the editor's buffer (instead of a file, so again, no
| hitting the disk) and would also keep a bunch of other
| stuff in memory between builds instead of reading it.
|
| This approach allows the compiler to reuse data not only
| between builds but also between files of the same build.
| Meanwhile make is just a program launcher, the program -
| the compiler - need to run for each file and load and
| parse everything it needs to work for every single source
| file it needs to compile, thus rebuilding and destroying
| its entire universe for each file separately. There is no
| reuse here - even when you use precompiled headers to
| speed up some things (which is something Borland C++ also
| supported and it did speed up things even more on an
| already fast system), the compiler still needs to build
| and destroy that universe.
|
| It is not a coincidence that one of the ways nowadays to
| speed up compilation of large codebases is unity
| builds[0] which essentially combine multiple C/C++ files
| (the files need to be aware of it to avoid one file
| "polluting" the contents of another) to allow multiple
| compilation units reuse/share the compilation state (such
| as common header files) with a single compiler instance.
| E.g. it is a core feature of FASTbuild[1] which combines
| distributed builds, caching and unity builds.
|
| Of course Borland C++'s approach wasn't perfect as it had
| to run with limited memory too (so it still had to hit
| the disk at some point - note though that the Pascal
| compilers could do everything in memory, including even
| the final linking, even the program could remain in
| memory). Also bugs in the compiler could linger, e.g. i
| remember having to restart Borland C++ Builder sometimes
| every few hours of using it because the compiler was
| confused about something and had cached it in memory
| between builds. Also Free Pascal's text mode IDE (shown
| in the article) has the Free Pascal compiler as part of
| the IDE itself, but in the last release (i think) there
| is a memory leak and the IDE's use keeps increasing
| little by little every time you build, which is something
| that wouldn't matter with a separate program (and most
| people use FPC as a separate program via Lazarus these
| days, which is most likely why nobody noticed the leak).
|
| [0] https://en.wikipedia.org/wiki/Unity_build
|
| [1] https://fastbuild.org/
| constantcrying wrote:
| >One thing that's nearly impossible to replicate on modern
| systems is the extremely tight feedback loop these TUIs
|
| Why? Yes, VSCode is slow. But Zed and many neovim GUIs are
| extremely responsive. Why would achieving that even be
| impossible or even that hard? You "just" need software which
| is fast enough to render the correct output the frame after
| the input. In an age where gaming is already extremely
| latency sensitive, why would having a text editor with
| similar latency performance be so hard?
|
| Do you have any actual evidence that zed or neovide are
| suffering from latency problems? _And_ why would putting a
| terminal in the middle help in any way in reducing that
| latency?
| jeroenhd wrote:
| I'm not sure if you know what "terminal" means. I'm not
| talking about terminal emulators (the "terminal" program on
| macOS/Linux/Android/etc.) but actual, real terminals. The
| "terminal" is a text mode rendering mechanism built into
| computers of the terminal era. The closest modern operating
| systems come to it is the terminal-like environment you can
| get on Linux or the *BSDs by disabling the GUI, but even
| those merely emulate text mode, they still contain the
| stacks upon stacks of timers and necessary to process input
| peripherals.
|
| The problem is the entire software stack between the
| keyboard and the display. From USB polling to driver loops
| and GPU callbacks, the entire software stack has become
| incredibly asynchronous, making it trivial for computers to
| miss a frame boundary. Compared to DOS or similar
| environments, where applications basically took control
| over the entire CPU and whatever peripherals it knew to
| access, there are millions of small points where
| inefficiencies can creep in. Compare that to the hardware
| interrupts and basic processor I/O earlier generations of
| computers used, where entered keys were in a CPU buffer
| before the operating system even knew what was happening.
|
| VSCode isn't even that slow, really. I don't find it to be
| any slower than Zed, for instance. Given the technology
| stack underneath VSCode, that's an impressive feat by the
| Microsoft programmers. But the kind of performance TUI
| programs of yore got for free just isn't available to user
| space applications anymore without digging into low-level
| input APIs and writing custom GPU shaders.
|
| In small part, CRTs running at 70Hz or 85Hz back in the
| mid-80s, as well as the much smoother display output of
| CRTs versus even modern LCDs, made for a much better typing
| experience.
| anthk wrote:
| PS2 keyboards and mice had direct interrupts thru IRQ's.
| dardeaup wrote:
| I'd bet you never seriously used Borland's Turbo Pascal for DOS
| versions 5.5 or 6.0. That IDE was extremely FAST. A lot of
| really good software was written in it back in the day (pre-
| internet).
| tcoff91 wrote:
| Neovim is my favorite editor and is a brilliant TUI.
|
| I think what TUIs get right is that they are optimized for use
| by the keyboard.
|
| I don't care if they are a pain for devs to write vs OS APIs,
| they have the best keyboard control so I use them. I despise
| the mouse due to RSI issues in the past.
| constantcrying wrote:
| Neovim instantly becomes a superior piece of software if you
| use any of the GUI frontends. If you use neovim inside a
| terminal you are just straight up using an inferior product,
| with less features and more problems. The terminal version is
| most likely slower as well as you now also have the entire
| legacy terminal overhead.
|
| >I think what TUIs get right is that they are optimized for
| use by the keyboard.
|
| Neovim is just as much a GUI as a TUI. You can even use it as
| a backend for VSCode. Nothing about the keyboard controls
| have anything to do with this.
| prinny_ wrote:
| > If you use neovim inside a terminal you are just straight
| up using an inferior product, with less features and more
| problems
|
| I use neovim like that and the selling point for me is that
| it's 1 less program that I have to install and learn with
| the added (crucial) benefit that it doesn't update on its
| own, changing UI and setting that I was used to.
| rkomorn wrote:
| > it's 1 less program that I have to install
|
| It ships with your OS?
| constantcrying wrote:
| >benefit that it doesn't update on its own, changing UI
| and setting that I was used to.
|
| This exact thing remains true though, you are using the
| exact same neovim, but instead of it being wrapped inside
| a totally bizarre piece legacy software, it is rendered
| inside a modern graphical frontend. It looks mostly the
| same, except it handles fonts better, it is independent
| of weird terminal quirks and likely faster. There is no
| dowside.
|
| And again, your point about using TUI stuff because of
| the input method or whatever is just false. Neovide has
| the exact same input method, yet has a complete GUI.
| Using the terminal makes no sense it all, it is the worst
| neovim experience there is.
| tcoff91 wrote:
| Yeah but I also use a bunch of other stuff inside of Kitty
| so by using it in Kitty it composes well with the rest of
| my tools. Kitty windows and neovim splits integrate
| perfectly with smart splits. I even get images in the
| terminal and in Neovim.
| alfalfasprout wrote:
| What do you get using a GUI frontend? I'm genuinely
| curious. I have a pretty modern neovim setup and have never
| missed having a GUI.
|
| Heck, on modern terminals there's even pretty great mouse
| integration if you want.
| bitwize wrote:
| I know, man.
|
| Unless your window full of text is GPU-accelerated, tear-free
| and composited, with raytraced syntax highlighting and AI-
| powered antialiasing, what is even the point?
|
| TUIs are great if your structure them around keyboard input.
| There's more of a learning curve, but people develop a muscle
| memory for them that lets them fly through operations. I think
| the utility of this is sorely underestimated and it makes me
| think of my poor mom, whose career came to an end as she
| struggled with the new mouse-driven, web-enabled custoner
| service software that replaced the old mainframe stuff.
|
| The late 80s/early 90s trend of building GUI-like TUIs was
| really more to get users on board with the standard conventions
| of GUIs at a time when they weren't yet ubiquitous (among PC
| users). Unifying the UI paradigms across traditional DOS and
| Windows apps, with standard mouse interactions, standard pull-
| down menus, and standard keyboard shortcuts was a good thing at
| the time. Today it's less useful. Things like Free Pascal have
| UIs like this mainly for nostalgia and consistency with the
| thing they're substituting for (Turbo Pascal).
| constantcrying wrote:
| You are conflating a method of interaction with a method of
| drawing things to the screen. These are totally different
| things. Whether you have a keyboard focused interface like
| vim or not, has absolutely nothing to do with whether you are
| drawing graphics by sending escape codes to a terminal
| emulator to render the interface.
|
| Neovim and it's frontends prove that if you remove terminal
| emulators the applications become better. The terminal
| emulator is just in the way.
|
| There is absolutely no reason to build that keyboard focused
| interface around the terminal. Just drop the terminal and
| keep the interface, just like neovim did.
| bitwize wrote:
| Thats_just_like_your_opinion_man.gif
| constantcrying wrote:
| This isn't reddit. Please do not do this, it is not only
| totally dishonest it makes discussion impossible.
|
| What I said about the separation of user interaction to
| graphics is also not an opinion.
| andai wrote:
| I enjoyed this. Make sure to read the comments too!
| codezero wrote:
| Fun fact not mentioned in the article is that nano descends from
| pico which emerged from being the default editor in the email
| client pine.
| csmpltn wrote:
| Crimson Editor.
| chadcmulligan wrote:
| It's emerald editor now I think -
| https://sourceforge.net/projects/emeraldeditor/. I used to use
| this because it had integrated ftp and the place I was working
| wouldn't allow shares so edit in crimson editor and save as
| ftp. Its a nice editor.
| cwnyth wrote:
| A name I haven't heard in nearly 20 years. This was my go-to
| editor on Windows. Crimson Editor and Dev-C++ were great free
| tools.
| dimitar wrote:
| I think Emacs still does all of this; the argument the author
| makes is that it is "arcane", it just uses conventions he is not
| used to. It is however fully self-documented and interactive.
|
| For me the best textual interface I've ever used remains Magit in
| Emacs: https://magit.vc/ I wish more of Emacs was like it.
|
| I actually use emacs as my git clients even when I'm using a
| different IDE for whatever reason.
| creddit wrote:
| The Magit experience is due to the use of the transient package
| for its UI.
|
| Some other packages also use it. Most notably for my personal
| usage is the gptel package.
| dimitar wrote:
| Indeed! I went back just to mention it owes its incredible UX
| to the transient package, I am going to look up more uses for
| it. Do recommend more if you can, please!
| pkal wrote:
| Transient is the worst part about Magit IMO (the best parts
| are how you can prepare a commit to just include the right
| changes, or the functionality bound inside the transient
| menus that make complex operations such as fixups or rebases
| trivial). Transient UIs are consistently uncomfortable to
| work with, and could usually be replaced by just using a
| regular special-mode keymap in a custom buffer. The fact that
| Transient hooks into the MVC and breaks elementary navigation
| such as using isearch or switching around buffers has
| irritated me ever since Magit adopted the new interface.
|
| The real neat thing about Emacs' text interface is that it is
| just text that you can consistently manipulate and interact
| with. It is precisely the fact that I can isearch, use Occur
| write out a region to a file, diff two buffers, use find-
| file-at-point, etc. that makes it so interesting to me at
| least.
|
| A far more interesting example than Magit is the compile
| buffer (from M-x compile): This is just a regular text buffer
| with a specific major mode that highlights compiler errors so
| that you can follow them to the referenced files (thereby
| relegating line-numbers to an implementation detail that you
| don't have to show the user at all times). But you can also
| save the buffer, with the output from whatever the command
| was onto disk. If you then decide to re-open the buffer again
| at whatever point, it still all looks just as highlighted as
| before (where the point is not that it just uses color for
| it's own sake, but to semantically highlight what different
| parts of the buffer signify) and you can even just press "g"
| -- the conventional "revert" key -- to run the compile job
| again, with the same command as you ran the last time. This
| works because all the state is syntactically present in the
| file (from the file local variable that indicates the major
| mode to the error messages that Emacs can recognize), and
| doesn't have to be stored outside of the file in in-memory
| data structures that are lost when you close Emacs/reboot
| your system. The same applies to grepping btw, as M-x grep
| uses a major mode that inherits the compile-mode.
| tarsius wrote:
| > Transient UIs [...] could usually be replaced by just
| using a regular special-mode keymap in a custom buffer.
|
| For people who can look at a list of key bindings once and
| have them memorized, maybe. Turns out most people are not
| like that, and appreciate an interface that accounts for
| that.
|
| You also completely ignore that the menus are used to set
| arguments to be used by the command subsequently invoked,
| and that the enabled/disabled arguments and their values
| can be remembered for future invocations.
|
| > The fact that Transient hooks into the MVC and breaks
| elementary navigation such as using isearch
|
| Not true. (Try it.) This was true for very early versions;
| it hasn't been true for years.
|
| > or switching around buffers
|
| Since you earlier said that transient menus could be
| replaced with regular prefix keys, it seems appropriate to
| point out that transient menus share this "defect" with
| regular prefix keys, see https://github.com/magit/transient
| /issues/17#issuecomment-46.... (Except that in the case of
| transient you actually can enable such buffer switching,
| it's just strongly discouraged because you are going to
| shoot yourself in the foot if you do that, but if you
| really want to you can, see https://github.com/magit/transi
| ent/issues/114#issuecomment-8....
|
| > has irritated me ever since Magit adopted the new
| interface.
|
| I usually do not respond to posts like this (anymore), but
| sometimes the urge is just too strong.
|
| I have grown increasingly irritated by your behavior over
| the last few weeks. Your suggestion to add my cond-let* to
| Emacs had a list of things "you are doing wrong" attached.
| You followed that up on Mastodon with (paraphrasing) "I'm
| gonna stop using Magit because it's got a sick new
| dependency". Not satisfied with throwing out my
| unconventional syntax suggestion, you are now actively
| working on making cond-let* as bad as possible. And now you
| are recycling some old misconceptions about Transient,
| which can at best be described as half-truths.
| pkal wrote:
| > For people who can look at a list of key bindings once
| and have them memorized, maybe. Turns out most people are
| not like that, and appreciate an interface that accounts
| for that.
|
| To clarify, the "custom buffer" can list the bindings.
| Think of Ediff and the control buffer at the bottom of
| the frame.
|
| I am not saying that transient offers nothing over
| regular prefix keys, there is a common design pattern
| that has some definitive and useful value. My objection
| is that the implementation is more complex than it should
| be and this complexity affects UX issues.
|
| > Not true. (Try it.) This was true for very early
| versions; it hasn't been true for years.
|
| Then I was mistaken about the implementation, but on
| master C-s breaks transient buffers for me on master and
| I cannot use C-h k as usual to find out what a key-press
| execute. These are the annoyances I constantly run into
| that break what I tried to describe in my previous
| comment.
|
| > Except that in the case of transient you actually can
| enable such buffer switching, it's just strongly
| discouraged because you are going to shoot yourself in
| the foot if you do that
|
| I did not know about this, so thank you for the link. I
| will probably have to take a closer look, but from a
| quick glance over the issue, I believe that the problem
| that you are describing indicates that the fear I
| mentioned above w.r.t. the complexity of transient might
| be true.
|
| > I usually do not respond to posts like this (anymore),
| but sometimes the urge is just too strong.
|
| I understand your irritation and don't want to deny its
| validity. We do not have to discuss this publicly in a
| subthread about DOS IDEs, but I am ready to chat any
| time. I just want you to know that if I am not saying
| anything to personally insult you. Comments I make on
| cond-let and Magit sound the way they do because I am
| also genuinely irritated and concerned about developments
| in the Emacs package space. To be honest, it often
| doesn't occur to me that you would read my remarks, and I
| say this without any malicious or ulterior motives, in my
| eyes you are still a much more influential big-shot in
| the Emacs space, while I see myself as just a junior
| janitor, who's opinions nobody cares about. But these
| self-image and articulation problems are mine, as are
| their consequences, so I will do better to try to
| remember that the internet is a public space where anyone
| can see anything.
| bowsamic wrote:
| Yeah I agree. I think transient is one of the less
| appealing things about magit and isn't really very emacs-y.
| Also, you still have to memorise them anyway
| internet_points wrote:
| Odd, I can `C-s` just fine in transient buffers. It works
| exactly like in other buffers.
|
| The `C-h` override is pretty cool there too, e.g. if from
| magit-status I do `C-h -D` (because I'm wondering what "-D
| Simplify by decoration" means), then it drops me straight
| into _Man git-log_ with point at
| --simplify-by-decoration Commits that are
| referred by some branch or tag are selected.
|
| (Ooh, I learnt a new trick from writing a comment, who say
| social media is a waste of time)
| pkal wrote:
| OK, try the following in a Transient buffer:
|
| - Search for something using C-s - Exit isearch by moving
| the point (e.g. C-n) - Is the transient buffer still
| usable for you? In my case it becomes just a text buffer
| and all the shortcuts just got mapped to self-insert-
| command.
| tarsius wrote:
| > The Magit experience is due to the use of the transient
| package for its UI.
|
| (I'm the author of Magit and Transient. (Though not the
| original author of Magit.))
|
| The transient menus certainly play an important role but I
| think other characteristics are equally important.
|
| A few years ago I tried to provide an abstract overview of
| Magit's "interface concepts":
| https://emacsair.me/2017/09/01/the-magical-git-interface/.
| (If it sounds a bit like a sales pitch, that's because it is;
| I wrote it for the Kickstarter campain.)
| f1shy wrote:
| This is my experience. While transient mode helped at the
| beginning for discovery. I learned fast the 10 things I use
| constantly, and never look the transient buffer. When I
| want to do something, I see the documentation, for me it is
| often easier than guessing and searching. Things like spin-
| off are absolutely gold.
| badsectoracula wrote:
| > it just uses conventions he is not used to
|
| ...and everyone else, including everyone who is also using a
| GUI on Linux - even if they use the GUI version of Emacs.
| cmrdporcupine wrote:
| and frankly including other emacs users, too.
|
| Any non-trivial use of emacs ends up involving a pile of
| customizations.
| jama211 wrote:
| Yeah, basically when they said that it should've begged the
| question "why is he not used to those conventions?" And the
| answer would be because the conventions it uses aren't used
| by anything else (which means they can barely be called
| conventions), and makes no effort to adopt any conventions of
| the platform it's running on even just to get you started.
|
| Also, another user said it has a tutorial when opened which
| should teach the basics in "10 to 15 min" but I have a
| feeling I would need 0 minutes to learn the basics of turbo
| c++.
|
| I get that there are diehard eMacs and vim fans and honestly
| I'm happy for them. But at the end of the day scientifically
| speaking ease of use is not JUST down to familiarity alone.
| You can objectively measure this stuff and some things are
| just harder to use than others even with preloaded info.
| badsectoracula wrote:
| > I have a feeling I would need 0 minutes to learn the
| basics of turbo c++.
|
| Well, Turbo C++ (at least the one in the article) does use
| common conventions but those were conventions of 1992 :-P.
| So Copy is Ctrl+Ins, Paste is Shift+Ins, save is F2, open
| is F3, etc. Some stuff are similar to modern editing like
| Shift+motion to select, F1 for help, F10 to activate the
| menu bar, etc. And all shortcut keys are displayed on the
| menu bar commands so it is easy to learn them (some of the
| more intricate editor shortcut keys are not displayed in
| the menus, but are mentioned in the help you get if you
| press F1 with an editor window active).
| cmrdporcupine wrote:
| So, I have been using emacs on and off for 32 years at this
| point, and I my emacs all set up with eglot and rustic and
| magit and the like and it's great.. but I still find I just
| fall back to RustRover when doing development because (unlike
| some the classic TUI IDEs mentioned in TFA) it just never feels
| like it's fully glued together and it's always a bit fragile
| and I never remember how to do certain things -- even though
| I'm the one who set it up.
|
| That and lack of a decent visual debugger situation.
|
| So I have this weird thing where I use emacs for interactive
| git rebasing, writing commit messages, editing text files and
| munging text... and then RustRover for everything else.
|
| It's sorta like the saying, "I wish I was the person my dogs
| think I am"... "I wish emacs was actually the thing that I
| think it is" ?
| frou_dh wrote:
| There is a good IDE-style debugger available for Emacs these
| days: https://github.com/svaante/dape
|
| Since it has no dependencies, I wouldn't be surprised if it
| gets merged into Emacs core at some point.
| cmrdporcupine wrote:
| Thanks, I'll check it out. dap made me angrier and angrier
| the more I tried to configure and use it.
| jmmv wrote:
| > it just uses conventions he is not used to
|
| I think that after 25+ years of usage, I'm "used to it" by now.
| dapperdrake wrote:
| Magit is mind blowing.
|
| How did the magit guy or people even come up with the data
| model? Always had the feeling that it went beyond the git data
| model. And git porcelain is just a pile of shards.
| nobleach wrote:
| For reference, I did use Magit for my short stint with Emacs
| (and then Spacemacs/Doom Emacs). I've always been more into
| Vim. I tried the Atom editor several years ago with lots of
| Vim emulation and quite a bit of customization - one of those
| being a Magit clone.
|
| I moved to NeoVim many years ago and have been using NeoGit
| (a supposed Magit clone) the entire time. It's good but I'm
| missing the "mind blowing" part. I'd love to learn more
| though! What features are you using that you consider
| amazing?
| SoftTalker wrote:
| It's mind-blowing because it makes git actually usable.
| tombert wrote:
| Maybe it's Stockholm syndrome for me, but I never really
| understood what was so unusable about the vanilla command
| line git interface.
|
| If you want to do some really advanced stuff, sure it's a
| little arcane, but the vast majority of stuff that people
| use in git is easy enough. Branching and committing and
| merging never seemed that hard to me.
| SoftTalker wrote:
| Wnen I do anything more than commit/push/pull at the
| command line I will quickly get myself so confused that I
| end up deleting the directory and cloning it again. That
| doesn't happen to me (much) with magit.
| tombert wrote:
| Fair enough. I feel like I do a fair amount of the more
| advanced features (interactive add and rebase, bisect,
| worktrees) without any fancy tooling and I don't have a
| problem much anymore, but admittedly they did confuse me
| at first.
| em-bee wrote:
| i don't remember confusion. i find it's mostly
| understanding the data model and in particular the
| branches and references/reflog. when i am worried i might
| break something then i tag the the checkout where i am at
| and i know i can always revert to that. i also compare
| the original with the new state. i usually know what that
| diff should look like, and even if the operations in
| between are confusing, if the diff looks like what i
| expect then i know it went all right. trust the process
| but verify the results.
|
| the big thing i am missing from it is a branch history. a
| record for every commit to which branch it once belonged
| to. no improved interface can fix that. that would have
| to be added to the core of git.
| thdhhghgbhy wrote:
| I found Neogit quite buggy. Not even in the same league as
| Magit.
| BeetleB wrote:
| > How did the magit guy or people even come up with the data
| model?
|
| It's not all that different from a typical TUI interface.
|
| Magit isn't great because of the interface. It's great
| because the alternative (plain git) has such a crappy
| interface. Contrast principle and all.
| emmelaich wrote:
| Is magit much better than tig? I've never used magit.
| kelvinjps10 wrote:
| I don't know but I didn't find as intuitive as lazygit
| 1313ed01 wrote:
| Agree about Emacs, and I used it already in MS-DOS back in the
| day. You could launch the compiler (or make, more likely) using
| M-x compile or use C-z to open command.com to run commands on
| the prompt and then exit from that back to Emacs. Almost like
| multitasking!
|
| I never really liked any of the typical late-MS-DOS era TUI
| applications and have no nostalgia for those. I think a small
| TUI like a OS installer is fine, but I realised it is the
| command-line I like. Launching into a TUI is not much different
| from opening a GUI, and both break out of the flow of just
| typing commands on a prompt. I use DOSbox and FreeDOS all the
| time, but I almost never spend time in any of the TUI
| applications.
|
| Despite that, I am currently working on a DOS application
| running in 40x25 CGA text mode. I guess technically it is a
| TUI, but at least it does not look much like a typical TUI.
| pjmlp wrote:
| Back in the day I had to use XEmacs as it was more advanced as
| plain Emacs.
|
| After IDEs finally started being a common thing in UNIX
| systems, I left Emacs behind back to IDEs.
|
| Still I have almost a decade where Emacs variants and vi were
| the only option, ignoring stuff like joe, nano, ed, even more
| limited.
| layer8 wrote:
| To navigate a Turbo-Vision-style IDE and explore its
| functionality, you basically only need to know how the Alt and
| Tab keys work (okay, and Return and Esc and arrow keys), as
| alluded to in TFA. Emacs doesn't quite have that base level of
| operating uniformity I think.
| skydhash wrote:
| The base input of emacs is 'M-x'. From there, any command is
| accessible. And you have 'M-:' for evaluating any bit of
| elisp code. There's a few UI concepts to learn (frame,
| window, buffers, point, mark, region,...), but that would fit
| in a single sheet of paper.
| layer8 wrote:
| The keys I enumerated are sufficient to discover and
| execute all available operations in that style of TUI. You
| don't have to type commands or command-specific keyboard
| shortcuts, like you have to in Emacs. It's analogous to how
| in a traditional GUI you can discover and execute
| everything just using the mouse.
|
| Like in the GUI analogy, you can then _choose_ to remember
| and use the displayed keyboard shortcuts for frequently
| used operations, but you don't have to.
| JoelMcCracken wrote:
| For most fundamental operations there are menus
| available. Most heavy emacs users opt to turn them off
| however.
|
| You can even see the menu atop the screen shot in the
| article, with the familiar names etc.
| skydhash wrote:
| It's easy when you have a small amount of commands. And
| distributions like Doom Emacs is fairly discoverable too.
| But emacs have a lot of commands and while it offers
| menus, it's only the surface level of what's available.
| marssaxman wrote:
| It's possible I might once have given emacs a try, if the
| way people talk about it did not sound like such baffling
| moon-language: when I encounter stuff like "so I C-x C-f'd
| into my init.el, M-x eval-buffer'd, then C-c C-c'd an org-
| babel block before C-x k'ing the scratch buffer" I just
| want to back away slowly and leave them to it, whatever it
| is they're doing. Y'all have fun with your C-r X-wing mork-
| butterfly porg fluffers, I'm going to edit some code over
| here, using a text editor, that edits text files.
| skydhash wrote:
| So you don't 'git clone' and 'git commit', or 'mkdir' and
| 'grep'?
| JoelMcCracken wrote:
| To navigate emacs, you really only need to know ctrl, alt,
| and the basic norms of keyboard usage (return for
| newline/accept, shift for capitals)
|
| Really, compared to what I see here, the chief difficulty
| with emacs is the sheer volume of possible commands, and the
| heterogeneity of their names and patterns, which I believe is
| all a result of its development history. But the basics are
| just as you describe.
| layer8 wrote:
| It's a good question to what complexity (volume) the
| approach scales, but dialog boxes can get you quite far,
| and menus are fundamentally "just" a tree like keyboard
| shortcuts are.
|
| Emacs has Elisp commands first, then keyboard shortcuts for
| them, then maybe (not as a rule) menu items, and rarely
| dialog boxes. The Turbo Vision approach, from its design
| philosophy, has menus and dialogs first, then keyboard
| shortcuts for them.
|
| One approach isn't strictly better than the other, nor are
| they mutually exclusive. Ideally you'd always have both. My
| disagreement is with the "I think Emacs still does all of
| this" above. Emacs is substantially different in its
| emphasis, presentation, and its use of dialogs.
| JoelMcCracken wrote:
| Yeah that's fair. In many ways the spacemacs/doom model
| is more akin to what you describe, with a lot of caveats;
| it's not a total rework of all key bindings. In emacs
| novice affordances are usually an afterthought, not part
| of the core design and community norms.
|
| Of course, I must say there is a trade off here: you can
| design for novices or for advanced users, but very often
| not both.
| brucehoult wrote:
| The thing is that emacs predates Apple developing cmd-z/x/c/v
| and Microsoft copying Apple in Windows. Before that, the most
| commonly copied keystrokes in programmer's editors were the
| freaking Wordstar ones e.g. in all the Borland products.
|
| Also OP apparently has no knowledge of the far better IDEs we
| had 30-40 years ago including but not limited to:
|
| - Apple MPW, 1986. GUI editor where every window is
| (potentially) a Unix-like shell, running commands if you hit
| Enter (or cmd-Return) instead of Return. Also the shell
| scripting has commands for manipulating windows, running
| editing actions inside them etc. Kind of like elisp but with
| shell syntax. There's an integrated source code management
| system called Projector. If you type a command name, with or
| without arguments and switches, and then hit option-Return then
| it pops up a "Commando" window with a GUI with checkboxes and
| menus etc for all options for that command, with anything you'd
| already typed already filled out. It was easy to set up
| Commando for your own programs too.
|
| - Apple Dylan, 1992-1995. Incredible Lisp/Smalltalk-like IDE
| for Apple's Dylan language
|
| - THINK Pascal and C, 1986. The Pascal version was orginaly an
| interpreter, I think written for Apple, but then became a
| lightning-fast compiler, similar to Borland on CP/M and MS-DOS
| but better (and GUI). The C IDE later became a Symantec
| product.
|
| - Metrowerks Codewarrior, 1993. Ex THINK/Symantec people
| starting a Mac IDE from scratch, incorporating first
| Metrowerks' M68000 compilers for the Amiga, then a new PowerPC
| back end. Great IDE, great compilers -- the first anywhere to
| compile Stepanov's STL with zero overhead -- and with a
| groundbreaking application framework called PowerPlant that
| heavily leaned on new C++ features. It was THE PowerPC
| development environment, especially after Symantec's buggy PoS
| version 6.
|
| - Macintosh Allegro Common Lisp (later dropped the "Allegro"),
| 1987. A great Mac IDE. A great Lisp compiler and environment.
| Combined in one place. It was expensive but allowed amazing
| productivity in custom native Mac application development, far
| ahead of the Pascal / C / C++ environments. Absolutely perfect
| for consultants.
|
| Really, it is absolutely incredible how slick and sophisticated
| a lot of these were, developed on 8 MHz to 33 or 40 MHz M68000s
| with from 2-4 MB RAM up to maybe 16-32 MB. (A lot of the Mac II
| line (and SE/30) theoretically supported 128 MB RAM, but no one
| could afford that much even once big enough SIMs were were
| available.)
| Narishma wrote:
| All your example are in the Apple ecosystem. Depending on
| where the author is from, it may not be that surprising that
| they wouldn't know about them. In my corner of the wolrd,
| Apple was basically non-existent until the iPod and iPhone.
| oblio wrote:
| In most corners of the world, actually. Apple was
| reasonably popular in the US, the UK and a few developed
| countries (think marketshare of 5% in 1999) and basically
| non existant everywhere else.
| rbanffy wrote:
| > it just uses conventions he is not used to.
|
| It just came up with conventions few others adopted later when
| they reinvented the wheel.
| bigstrat2003 wrote:
| > It is however fully self-documented and interactive.
|
| Unfortunately not true. I've fired up emacs once or twice, and
| couldn't even figure out how to save a document because it
| didn't show me how to do that. It might be more documented than
| vi (but that bar is *on the floor, vi has one of the most
| discovery-hostile user interfaces ever made), but it's not
| self-documented enough to just pick up and use with no
| instruction.
| krs_ wrote:
| That's a fair criticism, although once you learn how to
| access the documentation and where to look for/expext it I
| find that most things, including add-on packages and whatnot,
| can be learned from within Emacs itself just fine. But it
| does take some knowledge to get to that point in the first
| place for sure.
| f1shy wrote:
| I think is not fair at all, as a default installation has a
| menu bar, and you can save a file in file->save. While
| doing so it will tell you the shortcut.
| SoftTalker wrote:
| I'm pretty sure that if you have an unmodified install and no
| .emacs that is configured otherwise, when you start emacs you
| are prompted with a help screen that includes instructions on
| using the built-in tutorial. If you do that, you'll learn the
| basics in about 10-15 minutes. If you skip that, yeah it's
| pretty different from most other software conventions.
| pkal wrote:
| And if you don't have anything configured, graphical Emacs
| will have a tool bar with a button to save and a menu bar
| that also gives the binding for the command.
|
| GUI is different because there is no tool bar, but in Emacs
| 31 `xterm-mouse-mode' will be enabled by default so you can
| use the menu bar like a TUI.
| ksherlock wrote:
| That's true (you can see it yourself with emacs -nw -q) and
| the picture is shown in the article. With a completely
| useless menubar.
| Narishma wrote:
| Yup. Vim is similar, except its tutorial takes more like 30
| minutes.
| SoftTalker wrote:
| Yeah the entire emacs tutorial might take a long time. I
| don't think I ever went through it to "the end" but
| learning cursor movement, opening and saving files, etc.
| is right up front.
| prmoustache wrote:
| vi is documented
|
| Problem is most people start it the first time by providing a
| text file instead of firing it on its own and be greeted by
| the tutorial. I guess that is because they are blindly
| following another tutorial instead of trying to understand
| what they are doing.
|
| My opinion is that "self documentation", "Getting started"
| pages and "tutorials" is a disease. People would actually get
| up to speed quicker by reading real manuals instead. They are
| just lured into thinking they will learn faster with
| tutorials because they get their first concrete results
| quicker but at this stage the harsh reality is thay they
| still usually don't know anything.
|
| First time I used vi, I just had my operating system manual
| on my desk and I quickly learned to open man pages in a
| separate tty.
| someNameIG wrote:
| I'm pretty sure the built in tutorial shows you how to save a
| document.
| bowsamic wrote:
| Magit is really great, however, it can definitely be quite slow
| and buggy sometimes
| Syntonicles wrote:
| I've been using Magit for years, and have never noticed any
| bugs.
|
| The interface is unique and takes a lot of getting used to. I
| did need to leverage my extensive experience with Git and
| Emacs to understand unexpected behaviour but the fault always
| lay with me.
|
| Given the implications of bugs in such a critical part of a
| developer's workflow, can you be more specific?
| thdhhghgbhy wrote:
| Love Magit, it is a work of art. I moved to vim a few years
| back and miss magit dearly. The most feature complete Neovim
| magit clone is buggy.
| speed_spread wrote:
| It's not about being arcane, it's about the lack of
| discoverability. Emacs and vi don't have (by default)
| affordances like a menu that enables a user to discover and
| learn the interface at their own pace. The learning curve is
| much smoother and allows for casual uses without having to pull
| a book each time.
| auggierose wrote:
| Oh wow. Slightly surprised about the emotions these pictures
| evoke! Not that I would want to program with that today, but I
| sure had fun with it back then.
| mickeyp wrote:
| The knocks against Emacs feel unwarranted. It has plenty of
| colour; it has mouse support, even in the terminal, but not all
| terminals support it, so it's optional. It also runs in a GUI
| with, you know, image support and whatnot.
|
| You can rail against its defaults, but do not make misleading
| claims.
| frou_dh wrote:
| Also, the set of top-level things in the menu bar is not
| static. So even if you cannot directly interact with it for
| some reason, it gives you a hint that new things are possible
| in particular contexts. (Same goes for the 'tool-bar' that's
| distinct from the menu-bar)
| DonHopkins wrote:
| My cat is named Emacs, so I take those knocks against Emacs
| personally.
|
| Interview with an Emacs Enthusiast [Colorized]
|
| https://www.youtube.com/watch?v=urcL86UpqZc
| rbanffy wrote:
| I wonder if it's still possible to run Guy Steele's era EMACS.
| internet_points wrote:
| Yeah, the menu bar thing just makes no sense. Here's what a
| completely uncustomized emacs looks like:
| https://i.imgur.com/0vFsd3p.png
|
| If you for whatever reason absolutely need to run it in the
| terminal, then you'll have to either learn that F10 toggles the
| menu bar, but then it still looks like a real menu bar that you
| can navigate with the arrows and enter:
| https://i.imgur.com/ETA2Qhs.png (or you can `M-x xterm-mouse-
| mode` to use the mouse in the terminal).
|
| (That said, I'm sure the out of the box experience with Borland
| was quite a bit better back in the day, if you only needed
| Pascal or C++ support. And emacs _really_ could do with a
| better default-theme; e.g. simply changing to the built-in
| modus-vivendi-tinted and it looks like
| https://i.imgur.com/lRAWzJK.png instead. Doesn't help with the
| tool-bar icons from 1999 or whatever though)
| G_o_D wrote:
| Been setteled on https://scintilla.org/SciTE.html It has
| simplicity + extensible for any language, you can create your own
| linter + highlighter
|
| Its nothing bloated, its not embedded ide like vscode and all
|
| Rather scite is just gui frontend for cli based binaries, it uses
| programming environments you have installed on your os
|
| Just like old time on cmd or sh, we used compilers eg javac or
| cpp
|
| Now scite just make it easy, its exactly same as borland turbo,
| you add path to your compiler binaries in scite and done you
| click compile or run,
|
| Plus its lightweight and portable, carry it in usb and run on any
| computer by just setting paths to compiler and executor binaries
| guerrilla wrote:
| I'm going to get punished for saying this, but I don't really see
| the point of IDEs when you have things like vim, Makefiles and
| bash. It just seems like more things to go wrong. I used Eclipse
| while I was doing Java development for a while and it had some
| conveniences but for the most part I just see it as one more
| thing that can go wrong and get in my way.
|
| Anyway, does anyone remember Metrowerks CodeWarrior? I see it
| still exists, but I mean back from the 90s. I got a T-shirt from
| them at MacWorld '99 and still had it until not too long ago.
| High quality merch.
| fragmede wrote:
| The convenience is the point. Instead of having to go and find
| the file that lists a class's functions, an IDE can list them
| and you can just click on the one you want. As the author
| points out, LSPs do that function in the modern era, but the
| point is, it's useful. Doesn't have to be your cup of tea, but
| you should at least be able to see the point.
| ivankelly wrote:
| I recall CodeWarrior being the official ide for SymbianOS when
| I started there. And it sucked, but likely more due to the
| integration. I think sucky custom rarely working IDEs is what
| pushed me to full time emacs
| tjpnz wrote:
| I do like the "quietness" of vim. With a minimal configuration
| I've replaced most of the conveniences I enjoyed with PyCharm
| and VSCode, but without the constant notification spam and
| weird virtualenv configuration issues I previously had
| switching between projects.
| tpm wrote:
| I can't really imagine navigating huge Java codebases with vim
| or bash. OTOH I used vim to work with Perl (that was not a
| small codebase either but had a very different structure).
| raw_anon_1111 wrote:
| As someone who has been doing this either professionally (since
| 1996) or as a hobbyist programming in assembly and a little
| Basic (1986-1992), I'm always amazed at the feigned Slashdot
| style "I haven't owned a Tv in 40 years why do people still
| watch them".
|
| Are you really saying that you don't see any utility in modern
| IDEs? Even back in 1999 I thought Visual Studio was a breath of
| fresh air let alone R# with all of the built in refactors in
| 2008.
|
| But going further back, to the Turbo days in college and my
| first few years working, breakpoints, conditional breakpoints,
| watches etc were a godsend
| guerrilla wrote:
| What I'm saying is that they can't do anything I can't do in
| a terminal. Another way of putting it is why would I need an
| IDE other than UNIX (GNU) itself?
|
| > But going further back, to the Turbo days in college and my
| first few years working, breakpoints, conditional
| breakpoints, watches etc were a godsend
|
| gdb does all of that.
| miohtama wrote:
| Because working in an IDE is an order of magnitude easier
| than with UNIX tools, especially for novices, significantly
| increasing productivity. The author also covers this a bit.
| raw_anon_1111 wrote:
| I can also walk 13 miles or get in my car and drive. So why
| do I need a car?
|
| GDB does guaranteed safe refactors over large code bases?
| nec4b wrote:
| >> What I'm saying is that they can't do anything I can't
| do in a terminal.
|
| Why do you need a terminal for if you can do all that with
| flipping switches and looking at LEDs?
| a-dub wrote:
| > Anyway, does anyone remember Metrowerks CodeWarrior?
|
| didn't it have a cute little re-distributable header file that
| had a bunch of useful containers in it? (linked lists, hash
| tables, etc)
|
| i didn't work with it much but once worked with a mac guy who
| added it to our project. sometimes i'd have to build his stuff,
| i remember lots of yellow road construction icons!
| mkovach wrote:
| Ah, Borland's IDE! An absolute delight. I've yet to find anything
| modern that matches it. Sure, nostalgia turns everything syrupy,
| but I actively hunt for excuses to use Free Pascal just to fire
| up that interface. Okay, fine--I like Pascal too. You caught me.
|
| I also use Sam and Acme from Plan 9 (technically from the
| excellent plan9port), but let's be honest: those aren't IDEs.
| They're editors. Tools that let me think instead of wrestle.
|
| There's a lot we could (and probably should) learn from the old
| TUIs. For example, it's perfectly acceptable, even heroic, to
| spawn a shell from the File menu and run something before
| returning. Seems people are afraid of losing style points with
| such grievous actions.
|
| And the keybindings! So many of those classic TUIs adopted
| WordStar's sacred keystrokes. They're burned into my muscle
| memory so thoroughly that using EMACS feels like trying to type
| with oven mitts. For years, joe (with the blessed jstar alias)
| was my editor of choice.
|
| Anyway! Time to boot the Dr. DOS VM, spin the wheel of Advent of
| Code, and be nostalgically inefficient on purpose.
| citbl wrote:
| What a wonderful write up and I feel the same.
|
| I've been working on my free time on a tui code editor in the
| same vein eventually with make and lldb built in.
| bombcar wrote:
| One thing about the "professional" DOS software (and you can
| see it in things like Emacs - eight modes and constantly
| shifting) was you were basically expected to _live_ in it - it
| had the full attention of the computer and the user.
|
| You were also expected to _learn_ it; which meant you became
| "one with the machine" in a way similar to an organ player.
|
| I remember watching Fry's Electronics employees fly through
| their TUI, so fast that they'd walk away while it was still
| loading screens, and eventually a printout would come out for
| the cage.
| esafak wrote:
| The old TUIs were faster yet I still prefer IntelliJ; it's
| fast enough and much more powerful.
| exe34 wrote:
| Even normal windows applications used to be like this
| (outside of crashing). I could alt-tab, type stuff and click
| where I know a button would show before I even saw the
| application window. It never missed a key stroke or type into
| the wrong window. Nowadays you load a webpage and start
| typing, and half you text appears and then the other half
| just never shows up.
| Aurornis wrote:
| > it had the full attention of the computer and the user.
|
| This why I like to use the full screen mode of my editors and
| IDEs.
|
| It surprises a lot of people who see my screen. Full screen
| features are everywhere but rarely used.
| vunderba wrote:
| Agreed. I do a lot my writing in Typora which, in addition
| to a full-screen mode, also has other "Focus" style
| features which get rid of distracting UI/UX elements, etc.
| so you can concentrate on the task at hand.
| Mountain_Skies wrote:
| About twenty years ago I did a consulting gig for a
| government agency that wanted to create a web interface for
| their CSRs to replace the green screens they had been using.
| The long time employees hated it because they had deep muscle
| memory for most tasks on the green screens and could get far
| ahead of the screen refresh. With the web UI, not only could
| they not type ahead, but many of the workflows now required
| use of the mouse.
|
| The agency was happy to have something new and modern but
| more important to them was that new employees could be
| trained on the system far faster. Even though there were a
| small number of long term employees, they had high turnover
| with the frontline CSRs, which made training a major issue
| for them.
| chiph wrote:
| Paying at Best Buy was torture - watching the cashier move
| their mouse around (on the slanted mousing surface they were
| given so they couldn't just let go) and click the buttons,
| going through 3 or 4 screens and waiting for them to load vs.
| using the keyboard. They would have been done with me and on
| to the next customer in half the time.
| chuckadams wrote:
| There's a lot from Plan 9 I love, but I couldn't find Acme's
| mouse-dependent UI acceptable in the least. I can't deal with
| any UI that requires precise aim when I have to use it hour
| after hour, and I'd hate to imagine using it if I had an actual
| disability.
| mkovach wrote:
| Most days, you'll find me in sam, regexing my way to bliss
| like some monastic scribe with a terminal fetish. When I feel
| the urge to let AI stroke my curiosity or scaffold a long
| template like magic, I cut, paste, and drop it into a local
| or remote model like a well-trained familiar.
|
| But I've also written larger applications and, frankly, a
| ridiculous amount of documentation in Acme. That 9P protocol
| was my backstage pass: every window, every label, was
| accessible and programmable. I could, for example, hook into
| a save event and automatically format, lint, and compile ten
| or fifteen years before most IDEs figured out how to fake
| that kind of integration.
|
| Sure, the system demands precision. It doesn't coddle. But
| for me, that was the feature, not the bug. The rigor
| sharpened my thinking. It taught me to be exact or be silent,
| forcing me to pause when I usually would not.
| robenkleene wrote:
| > So many of those classic TUIs adopted WordStar's sacred
| keystrokes.
|
| What are the WordStar bindings and what do you like about them?
|
| I have a general interest in the history of how these patterns
| emerge and what the benefits of them are relative to each
| other.
| disqard wrote:
| Sci-fi author Robert Sawyer (who has won Hugo and Nebula
| awards) is a big fan of Wordstar -- he uses it to write his
| books.
|
| I highly recommend reading this:
|
| https://www.sfwriter.com/wordstar.htm
| mbreese wrote:
| So is George R.R. Martin.
|
| https://news.ycombinator.com/item?id=26695017
| manquer wrote:
| Not an example we want to cite for prowess of
| productivity with WordStar, given Martin's throughput as
| a writer in last couple of decades.
| robenkleene wrote:
| This useful, but it also seems like a very comparable
| feature set to editors like Emacs and Vim. So I'd still
| love to hear from someone who has the background to do a
| direct comparison, especially if they prefer WordStar.
| Narishma wrote:
| I've used all three and I think it's just a matter of
| what you're used to. I mostly use vi but have no problem
| switching to the other two schemes when needed. But maybe
| that's just me not having strong preferences. I know some
| people who have trouble switching from Chrome to Firefox
| and those are practically identical.
| mkovach wrote:
| Vim was never a steep learning curve for me; more of a
| gentle slope. But then again, I cut my teeth on ed, and
| when I met sed, it felt like a revelation. On DOS, I even
| used edlin, a kind of ed junior with training wheels and
| a sadistic sense of "functional."
|
| You have to understand: my first DOS machine was a Tandy
| 1000, acquired before I had a driver's license. It was
| upgraded over the years and not retired until the grunge
| was well underway and I had already been married and
| divorced.
|
| MS-DOS's edit had WordStar keybindings; Ctrl-S to move
| back, Ctrl-E to move up, and so on. My dad "brought" home
| a copy of WordStar from work, and oh, the things that
| trio, WordStar, me, and a dot matrix printer conspired to
| create.
|
| Borland carried those keybindings into Turbo Pascal,
| which I learned in college, having finally escaped the
| Fortran 77 gulag that was my high school's TRS-80 Model
| III/IV lab. The investment into the Apple II lab didn't
| happen until AFTER they gave me my exit papers at a
| spring awards ceremony.
|
| Why do I still prefer these tools?
|
| Because they're what I know. They don't get in my way. We
| have history, a better and longer history that I have
| with my first wife. Those keybinds helped me write my
| first sorting algorithms, my first papers on circuit
| design, and the cover letters that got me my first jobs.
| They're not just efficient. They're familiar. They're
| home.
| robenkleene wrote:
| Thanks for sharing! (And to be clear, that's totally a
| great reason!) I wasn't familiar with these bindings and
| was curious to hear more about them, both the history and
| the subjective preference for them are both interesting
| to me.
| GregorBrandt wrote:
| And a modern implementation can be found here:
| https://wordtsar.ca
| ninalanyon wrote:
| They are control key sequences that are arranged so that a
| typist need never remover their fingers from the keyboard.
| The control key was to the left of the A so easily pressed
| with you left little finger.
|
| You had full control of the cursor without the need for
| dedicated arrow keys or page up and down keys. It worked on a
| normal terminal keyboard. I first used it on an Apple ][ with
| a Z80 add-on that ran CP/M.
| robenkleene wrote:
| Thanks for sharing! I'd consider all those things true for
| Emacs/Vim bindings as well? (Just curious if you'd disagree
| with that assessment.)
| skopje wrote:
| djgpp + vi for dos in 1991 ftw!
| pragmatic wrote:
| TUIs sucked and they still suck.
|
| Programmers are trying to bring them back bc nostalgia I guess?
|
| I floated the idea of TUIs to our data engineering team and got
| very negative responses. (My nostalgia for undergrad turbo pascal
| TUI I guess lol)
| loloquwowndueo wrote:
| Care to elaborate as to why they suck?
| bob1029 wrote:
| It's not that TUIs suck in terms of their inherent
| capabilities. It's that they're generally a miserable tool
| for the job, especially if it's a big one.
|
| TUIs are like shovels. A perfectly rational tool for doing a
| little bit of digging. Visual Studio 2022 is like Bagger 293.
| realharo wrote:
| I think TUIs mostly suck for IDEs, but some tools like k9s or
| htop are nice.
| tstenner wrote:
| Even k9s would profit enormously from detachable dialogs.
| Just let me do something without losing my current log view.
| dardeaup wrote:
| Some do and some don't. Have you ever used any to develop an
| application?
|
| I suppose a lot of it is also relative. When I started with
| TUIs decades ago, we didn't have too many options. Turbo Pascal
| 5.5 or 6.0 was extremely nice to use back in the day.
| 1313ed01 wrote:
| They _are_ undeniably programmer-friendly though, no matter how
| hated by users. Much easier to do things when you are limited
| to just a grid of fixed size characters rather than the bizarre
| complexities of modern GUIs.
| tcoff91 wrote:
| TUIs are great! So fast and efficient to use and accomplish
| tasks in.
| nec4b wrote:
| >> TUIs sucked
|
| Compared to what available at that time?
| donaldihunter wrote:
| There are plenty of great TUIs out there:
| https://terminaltrove.com/explore/
| MomsAVoxell wrote:
| I used to use a Java-oriented IDE called "Visix Vibe", at first
| as an experiment in application development with Java and then as
| an alternative to Delphi, which was my bread and butter tooling
| environment for custom application development.
|
| Both of these IDE's gave me a huge productivity boost, and it
| used to be a no-brainer to give customers a realizable estimate
| for getting the UI done, then wiring up logic, and get things
| ready to ship, etc.
|
| I really miss these IDE's, because of the integration factor. It
| was fun to wire up a database table and generate a form and
| immediately have something that could be used for data input and
| validation on the project - then spend a few weeks refining the
| UI to be more robust and cater to the application use case in
| focus.
|
| These days, it feels like a lot more careful planning is needed
| to make sure the UI/API/backend realms can play properly
| together.
|
| It would be nice to see some more progress on this level of
| tooling. It's one thing to have an AI generate UI code - but I
| still think there is room for painting the code and using a UI to
| build a UI.
|
| (The moment someone produces a properly WYSIWYG tool for JUCE,
| the glory days will begin again ..)
| dapperdrake wrote:
| You may laugh, but that is how I use html forms today. Simple.
| And effective.
| MomsAVoxell wrote:
| I wouldn't laugh at that, but my context is native
| applications and will be, for a while. Sure, the web is great
| and all. But native applications still have a part to play -
| especially in realms requiring custom applications be built,
| i.e. not for mass-market.
| salvesefu wrote:
| Schoolaged 1995 coder self with a fpuless Mac would like a word
| about what we lost/gained (no available c compilers at the time).
|
| The need for tui argument is vague outside of muscle memory. Lots
| of beautiful poetry though.
|
| That age of computing the author is romanticizing was expensive
| and corporate fed stupid (RIP Mr Bollenbach my hs cs teacher who
| gave us weekly insider tech reports).
|
| I feel like tui folk need their stack/os/integrated
| environment...oh wait. Nevermind.
|
| "Is FreeDos the Moderate Libertarian TempleOS?"
| matt7340 wrote:
| Great nostalgia! I fondly remember QuickBasic, and how excited I
| was to compile my BASIC code. And the rarely mentioned gem I
| thought was amazing at the time: Visual Basic for DOS!
| cmrdporcupine wrote:
| One I used to love back in the 80s/90s was GFA Basic on the Atari
| ST. In a similar category of TUI (mostly, it did have mouse
| control and menu bars, but you didn't have to reach for them)
| with great auto-indentation and code folding (features not common
| in mainstream editors at the time) and instant compilation and
| error checking.
|
| It took many decades for me to get that kind of flow back for
| mainstream programming languages on modern computers. And modern
| IDEs still have higher latency than they should.
| Lapel2742 wrote:
| > "In my house", we used something called SideKick Plus (1984),
| which wasn't really a code editor: it was more of a Personal
| Information Management (PIM) system with a built-in notepad.
|
| Finally! Someone who still remembers the best software ever
| written. I looooved Sidekick and we used it throughout our small
| company. It's so long ago. I remember only parts of it now but it
| was such a useful tool.
| SoftTalker wrote:
| The reason IDEs blossomed on DOS was because there was no
| multitasking. On unix/linux, even on a "dumb" tty with no GUI,
| you could hit CRTL-Z and your editor would go into the
| background and you'd be at a shell where you could run make or
| gdb or manage files. Then type 'fg' and your editor would be
| back exactly as you left it.
|
| IDEs do all that in one huge program because if you exited your
| editor to run the compiler or run your program, when you went
| back to the editor it was starting up cold again.
|
| TSR programs like Sidekick avoided some of this but were a poor
| substutute for real multitasking.
| burnt-resistor wrote:
| There are multitasking options using DESQview(/X) or Windows
| >=3.1. A friend of mine in high school ran a 4 line BBS using
| DESQview and 4 Courier 28.8K modems.
|
| In real mode, it's possible to have a TSR that swaps the
| entire contents of RAM from disk. As long as such a
| hypothetical TSR is always loaded into a fixed location, it's
| possible to save and restore the entire DOS, program, and/or
| EMS/XMS session.
| NetMageSCW wrote:
| The best software ever written was ThinkTank (and next it to
| it, Memory Mate). Sidekick was great for popularizing the TSR,
| though.
| 3x35r22m4u wrote:
| SideKick had the ability to take "screenshots" of the text
| shown in other applications. Being a TSR was cool, but stealing
| text from another program interface was mind blowing!
| RcouF1uZ4gsC wrote:
| To me VB 6 was the height of RAD IDEs
|
| You could throw together a CRUD app in under an hour
| interactively.
| rbanffy wrote:
| VB was the GUI equivalent of Dataflex - you could design the
| screen and it would automagically create the data structures
| under it. I also remember, from the same period, Mantis (from
| Cincom Systems) that did the same for 3270 terminals and IBM
| mainframes.
|
| I often say Deteflex is Ruby on Rails for the VT100.
| geenat wrote:
| Learned to code with Borland Turbo C++
|
| Moved to Dev-C++
|
| Nowadays just any editor and using GCC directly
|
| Eternally greatful for open source, Microsoft charged thousands
| for Visual C++ back then.
| jmmv wrote:
| Hey, thanks for sharing this again! FYI, previous discussion from
| 2 years ago now (wow, time flies...):
| https://news.ycombinator.com/item?id=38792446
| dang wrote:
| Thanks! Macroexpanded:
|
| _IDEs we had 30 years ago_ -
| https://news.ycombinator.com/item?id=38792446 - Dec 2023 (603
| comments)
| greatgib wrote:
| A little bit later, there was visual editors for gui app like
| Delphi and Visual Basic and co.
|
| Despite VB to be a little bit shitty, I think that a big loss
| happened in the GUI software development world since web apps
| became the norm.
|
| Not many remember this world where you could easily graphically
| create your UIs by placing components and that reactive interface
| were a given without effort.
|
| I really miss the original Delphi before things went DotNet
| shitty...
| 1313ed01 wrote:
| The nicest thing about programming for DOS (or probably any old
| home computer or console?) is that you are in full control of
| inputs and timing. If you only need to update the screen when
| the user hits a key for instance you can just call a function
| to wait for the next key-press, handle that, ask for the
| next... There is no async, no callbacks, no events, no threads.
| Nothing is easier than just imperative code doing things one
| line then the next, then the next. You can still have a main
| loop, but you do not need to, and if some function you call
| somewhere to handle something wants to wait for a key-press
| before returning it can do that and you do not have to yield or
| anything.
|
| I'd love to see some modern environment replicate that somehow.
| Let us pretend everything is simple and synchronous even if it
| very much isn't.
| markus_zhang wrote:
| Good article.
|
| I'm more of a GUI guy who is contend with VSCode. I'm intrigued
| to learn Emacs but don't have the time for it.
|
| Back in the 90s, however, Borland TUI was indeed the pinnacle. I
| remember I played with Turbo C for a while but did not learn
| anything, but it was fun just to use the IDE.
| bigstrat2003 wrote:
| I think that GUI editors are just plain superior for doing
| serious work. I'm a Sublime guy myself, but really any GUI
| editor blows any text based option out of the water. The only
| good use case for text based editors these days is to quickly
| edit and save config files while ssh'ed into a server.
| markus_zhang wrote:
| I heard people can be pretty productive in Emacs/Vim. My
| issue is that I'm not a great programmer, so 99% of the time
| is spent on reading code and figuring out the steps on paper.
| I'm sure TUI can be great for that purpose too, but GUI IDEs
| on multiple screens are on par at least.
| fragmede wrote:
| No mention of Visual Studio, as distinct from Visual Studio Code.
| No mention of JetBrains, PyCharm. The author didn't mention that
| Borland cost $99.95 in 1987, back in the day. Now, Visual Studio
| costs $499.92/mo. Yeah, the free versions aren't as fully
| featured or as well integrated as the thing you paid for, what
| else is new?
| massung wrote:
| Great post. I feel obligated to reply with a similar post a
| friend wrote a while ago that's probably made the rounds here as
| well: https://prog21.dadgum.com/116.html
| astatine wrote:
| Nostalgic! Turbo C was my preferred IDE over many years in the
| late 80s to mid 90s. What an amazing tool! Those key bindings,
| used in so many other IDEs since, are burned into muscle memory.
| Even after decades of not using them, they bring a smile back.
| CodeWarrior, the debugger, helped me understand what happens when
| you run a program more than literally anything else I read or was
| taught.
| fithisux wrote:
| I liked RHide a lot 23 years ago
| fnord77 wrote:
| 30 years ago I was using XEmacs version 19 something
| Dwedit wrote:
| The very first image in the article is not edit.com, it is the
| Windows 95 edit.exe which replaced it.
|
| The actual "edit.com" is a tiny stub that launches QBasic in edit
| mode, equivalent to "qbasic /edit".
| andsoitis wrote:
| Delphi - fantastic, modern RAD IDE. Borland heritage.
|
| Can build native apps for Windows, Linux, macOS, iOS, and
| Android.
|
| https://www.embarcadero.com/products/delphi
| dardeaup wrote:
| Delphi is still very impressive. However, they missed out on a
| much greater opportunity. Part of Delphi's crown jewels is VCL
| which can only be used on Windows. If you use Delphi for an OS
| other than Windows you have to use FireMonkey/FMX. Lazarus has
| LCL which is _VERY_ similar to VCL, but LCL on Lazarus is not
| limited to Windows. One can write a LCL application and it
| works the same on Windows, macOS, and Linux. If Delphi had
| extended VCL to macOS and Linux it would have become much more
| valuable. Just my $0.02.
| andsoitis wrote:
| Don't disagree that VCL across all the platforms would be a
| game changer.
|
| However, the quality and reliability of the Delphi experience
| together with mobile support overcome the VCL/FMX trade off
| in my books.
| nobleach wrote:
| I had high hopes for Kylix back around the turn of the
| millennium. At that time my company was looking moving an
| organization with field agents to a full Linux-based
| system. Our options were: 1. Keep the existing CA Clipper
| accounts receivable/accounts payable apps and run on
| emulated DOS. 2. Attempt to leverage the Harbour language
| (CA Clipper compatible web based thing). 3. Rewrite the
| system in Delphi/Kylix. We actually got fairly far with
| Kylix and I'll always be a fan of Delphi. In the end a pure
| web-based rewrite won over all those original options. I
| feel bad for whomever took over that old PHP4 stuff!
| spwa4 wrote:
| VCL was ported to linux in the "Kylix" product, for both
| Pascal and C++. It was non-free and didn't see any uptake
| really.
| dardeaup wrote:
| Granted, I never used Kylix, but it seems that it had all
| sorts of problems when it was first released. I don't
| remember, was Kylix available for Mac?
| microtonal wrote:
| As far as I recall VCL was ported, but the IDE itself was
| running WINE (as it was written back then) and it was not
| very stable.
|
| I just googled and Wikipedia seems to confirm my memory:
| https://en.wikipedia.org/wiki/Borland_Kylix#Features
| badsectoracula wrote:
| IIRC it wasn't VCL but another framework like VCL that was
| built on Qt.
|
| LCL (Lazarus' equivalent of VCL) took another approach
| where the base stuff are very Windows-y (due to the VCL
| heritage) but the backends have to essentially implement
| not only the backend-specific (Gtk, Qt, etc) widget
| functionality but also a small subset of the Windows API.
|
| While this makes porting harder for the Lazarus developers,
| it makes it easier to port stuff between OSes and even port
| stuff from Delphi to Lazarus (some developers can also use
| both Delphi and Lazarus - e.g. AFAIK Total Commander uses
| Delphi for the 32bit builds and Lazarus for the 64bit
| builds).
| alexshendi wrote:
| My favourite is Texas Instruments PC-Scheme. Complete with Emacs-
| like editor. You could compile and evaluate regions in the
| editor. It is amazing what you can do in 2MB or even 640K.
| gcanyon wrote:
| Looking at Windows UIs from the '80s -- did Microsoft just not
| know the phone numbers of _any_ graphic designers? Or did they
| make it ugly on purpose?
| layer8 wrote:
| There are no Windows UI screenshots in the article.
| gcanyon wrote:
| Fair --- but are you claiming either:
|
| 1. The DOS screenshots in the article are in any way
| reflective of a designer's input
|
| 2. That Windows was a visually pleasing design?
| layer8 wrote:
| The DOS screenshots are reflective of the PC video hardware
| of the time. Text mode had a fixed 16-color palette [0] at
| best, the IBM font including graphics characters was
| preset, while the aspect ratio of the characters wasn't
| fixed (the screenshots in the article are 80x25, but I used
| 80x40 or 80x50, with correspondingly more quadratic text
| cells). However, the screenshots aren't quite
| representative of how things looked on a CRT monitor,
| however; it looked more vibrant and organic, if that makes
| sense.
|
| Personally I didn't find Windows visually pleasing before
| Windows 95, but much of that can again be attributed to the
| PC video hardware limitations of the time.
|
| [0] https://en.wikipedia.org/wiki/Color_Graphics_Adapter#Co
| lor_p...
| sys_64738 wrote:
| I first used an IDE back in 1989 with MicroFocus COBOL from 1983.
| 30 years seems relatively new.
| Surac wrote:
| I agree with emacs. It is a fantastic operating system but it
| lacks a good text editor. I remember using the Borland ide and
| miss there clear design language. Fighting with ide, gui and
| language is no fun. I miss the ide I could just start up over a
| rs232 connection and use it
| dardeaup wrote:
| A few others not mentioned:
|
| DOS: FoxPro 2.x, dBASE III Plus, dBASE IV, Turbo Pascal 5.5/6.0
| was probably the pinnacle for me
|
| OS/2: Watcom VX-REXX - extremely powerful and productive
|
| Windows: Delphi before .NET
| justinhj wrote:
| These dos style TUIs are live and well in commercial and
| industrial settings. Most often you see them in fast food order
| trackers where their simple clarity stands out.
| cess11 wrote:
| I don't know, all of those are pretty similar to me.
|
| I'd like to be able to develop in other languages the way I do
| when I dabble in Pharo, i.e. mostly windows and widgets and
| dialogs that abstract away boilerplate, file and directory
| management, and allows me to relatively easily extend the
| environment when I feel like it.
|
| Instead I tend to complement the editor or IDE with a rather
| large set of Linux and Unix programs in terminal emulators. It's
| not nice or easy to teach, but nicer than trying to figure out
| whatever module protocol used by the editor. Perhaps I could have
| stayed with Emacs and been content, but when I arrived at this
| methodology Emacs was still single threaded and quite sluggish in
| comparison.
|
| I'm hoping Glamorous Toolkit might be the thing that eventually
| grows into what I'd like to have.
| afc wrote:
| For what it's worth it, I'm still developing and using
| exclusively my own text-based editor/IDE:
| https://github.com/alefore/edge
|
| I wrote recently a bit about my conclusions after ten years of
| developing it:
| https://github.com/alefore/weblog/blob/master/edge/README.md
| ivanjermakov wrote:
| Me too. It took ~4 months of development, but was fun.
|
| https://github.com/ivanjermakov/hat
| 4b11b4 wrote:
| Recent install of Emacs 30 and Doom 3.0 via
| https://github.com/jimeh/emacs-builds (MacOS) is feeling very
| nice.
|
| Emacs actually is friendly! apropos and all of the describe
| commands make it /discoverable/.
|
| Literate configs and tangling?! I finally feel the end game.
|
| Yes, you probably should read a book at the same time on the side
| to give you a higher perspective on fundamentals. Sure, some
| other tools are simpler to get started.
|
| If I could drop everything I'd make a simple emacs config for
| kids with like a turtles mode and maybe a sound sequencer, then
| teach them functional programming first. Hah
| neuroelectron wrote:
| I feel like we should go back to ASCII for programming languages.
| Does your IDE really need emojis? Parsing unicode is intractable.
| zzo38computer wrote:
| I agree, and I still do use ASCII for (most) programming
| languages. I do not use emojis and most programs I wrote do not
| use Unicode (although often there is a use to go beyond ASCII,
| but even then, I will use better character sets rather than
| Unicode).
| JeremyHerrman wrote:
| I'm interested in how these old IDEs were used during the
| transition from assembly to high level languages. It seems
| especially topical given the LLM integration into today's IDEs.
|
| Back then was it common to have a split or interleaved view of
| high level and assembly at the same time?
|
| I'm aware that you could do something like the following, but did
| IDEs help visualize in a unified UI?: $ cc -S
| program.c $ cat program.s # look at the assembly
| $ vi program.c # edit the C code
|
| A quick search shows that Borland Turbo C (1987) had in-line
| assembly: myfunc () { int
| i; int x; if (i > 0) asm
| mov x,4 else i = 7; }
|
| From the 1987 Borland Turbo C User's Guide [0] "This construct is
| a valid C if statement. Note that no semicolon was needed after
| the mov x, 4 instruction. asm statements are the only statements
| in C which depend upon the occurrence of a newline. OK, so this
| is not in keeping with the rest of the C language, but this is
| the convention adopted by several UNIX-based compilers."
|
| [0]: http://bitsavers.informatik.uni-
| stuttgart.de/pdf/borland/tur...
| cameldrv wrote:
| The Turbo Pascal version of this was even better, because you
| could do a whole block of asm instead of just a single line at
| a time. As I remember there were annoying limitations in the C
| version around labels and such. It was incredibly useful when
| writing performance oriented code at that time because it was
| very easy to write code that would outperform the compiler.
| badsectoracula wrote:
| I'm pretty sure you could do asm blocks in Turbo C using
| brackets, e.g. asm { ... }, though it might have been a Turbo
| C++ thing (i never really used plain TC much).
| miohtama wrote:
| It was not very common to interleave assembly in MS-DOS IDEs.
| Assembler and its IDE were separate tools you paid for. But not
| unheard of.
|
| You could "dump" your OBJ file for assembly.
|
| Later C compilers got some better inline assembler support but
| this was towards the 32-bit era already.
|
| Also Borland had its own compiler, linker and such as separate
| binaries you could run with a Makefile but you really never had
| to, as why would you when you can do that in the IDE in a
| single keypress.
| qingcharles wrote:
| I was writing game engines in Turbo C and assembler in 1988. I
| don't remember using inline assembler until the 90s. I just had
| all the graphics routines in a separate .asm file which was
| part of the build process and then linked in.
| reaperducer wrote:
| The author notes that he programmed back in the 1980's, but the
| article only focuses on the mid-90's IDEs.
|
| I'd like to see a companion article about the IDEs from the 80's.
|
| I remember 64FORTH had a multi-pane IDE, but I could only find
| this low-res picture of it:
| https://www.c64-wiki.de/images/thumb/2/24/Forth64-audiogenic...
|
| There were others, though, including one I remember that was all
| text at the bottom half of the screen, and then graphic output at
| the top.
|
| And, of course, the most famous one of all: the Atari 2600 BASIC
| Programming IDE which fit in just 4K.
|
| Today's ragebait bloggers like to say how awful it was, but if
| you're patient and thoughtful, the way people were when it came
| out, you can do quite a lot.
|
| An entire Pong game in six lines, from Wikipedia:
| 1 Hor2-2+Key 2 IfVer1>90ThenVer1-88 3 IfHitThenVer1-9
| 4 Ver1-Ver1+IfVer1Mod2Then8Else92 5 Hor1-Hor1+7 6
| Goto1
| somat wrote:
| I do want to point out that the 2600 was at it's heart a
| slightly generalized pong machine, to the degree that I don't
| find it surprising that you can make pong in 6 lines of 2600
| basic.
|
| The 2600 graphics were centered around 5 sprites dedicated to
| two players, two missiles, and a ball. Completely
| understandable, they were trying to make a toy computer
| affordable enough for everyone in 1975. but their design
| process was basically "what is the bare minimum video hardware
| required to make the games "combat" and "pong". Every single
| game found on the 2600 that is not a combat or pong clone is
| probably a masterwork example of making the hardware do
| something it was not intended for.
|
| https://en.wikipedia.org/wiki/Television_Interface_Adaptor
|
| Footnote: yes I know it was released in 1977, but it was
| designed in 1975.
| rajkhare05 wrote:
| I remember using Borland Turbo for C/C++ classes in my school and
| college days. In fact, it is still being used in most of the
| colleges in India even now. What nostalgia!
| bvan wrote:
| Back when you could focus on the code you wrote and not worry
| about the overly cluttered distractions of the likes of VSCode.
| CGamesPlay wrote:
| (Article is from 2023, so the title should be updated to say "32
| years ago", or something)
|
| The biggest loss in TUIs is the latest wave of asynchronous
| frameworks, which bring the joy of dropped keypresses to the
| terminal.
|
| In any TUI released before the year 2000, if you press a key when
| the system wasn't ready, the key would just wait until the system
| was ready. Many TUIs today still do this, but increasingly
| frequently (with the modern "web-inspired" TUI frameworks), the
| system will be ready to take your keypress, and discard it
| because the async dialog box hasn't registered its event listener
| yet.
|
| Other than that antipattern, TUIs are doing great these days. As
| for terminal IDEs, Neovim has never been more featureful, with
| LSPs and other plugins giving all the features this article
| discusses. I guess it isn't a mouse-driven TUI, so the author
| wouldn't be interested, but still.
| a3w wrote:
| Rough quote: "in 1984 we had at my house",
|
| so even 41 years seems to be in the scope.
|
| I was expecting
|
| - early projects that ended in Visual Studio 1.0 or NetBeans
| soon after, (2 to 9 years too early for them)
|
| not
|
| - "vim (1991) was not out yet" (not-a-quote, but my feeiling
| upon looking at ncurses instead of floating windows)
| projektfu wrote:
| I snickered a little because I know Visual Studio didn't have
| a version 1.0. Wikipedia identifies the first version as
| Visual Studio 97, which was at version 5.0. I remember before
| that there was "Microsoft Developer Studio 4.0" which came
| out around Windows 95, and could run on 95 or on NT 3.51.
| There was a Visual C++ 1.0 and a Visual Basic 1.0 released at
| different times. Meanwhile there were also the workhorses,
| Microsoft C and MASM. In those days, Borland and Watcom were
| real competitors to Microsoft for C and C++.
| roryirvine wrote:
| Yeah, by 1995, Visual Basic / C++, Delphi / Borland C++, and
| Symantec C++ were all-conquering.
|
| A few years before, it was very different - VisualAge and
| Rational Application Developer were the big names in the
| early 90s in "professional" IDEs. Interface Builder for
| university spin-outs or funky startups (and SunWorks / Forte
| Studio for the less-funky ones). CodeWarrior on the Mac
| (perhaps with THINK! hanging on too). I think Softbench was
| popular for scientific software, but I never actually saw it
| myself.
|
| And then just a few years later, the rise of Java turned
| things upside down again and we got Jbuilder, Visual Cafe, &
| NetBeans as the beginning of yet another new wave. The Visual
| Studio suite really began to take off around then, too.
|
| In short, the 90s were a time of huge change and the author
| seems to have missed most of it!
| calenti wrote:
| An all-in-one like Rational Rose may be making a comeback
| in terms of these agentic AI projects, because now you
| actually can turn a spec into code without layers of
| tagging and UML.
| karmakaze wrote:
| _I wasn 't paying attention to when 30 years ago actually
| was..._
|
| So disappointing to expect a GUI Smalltalk System Browser and
| seeing DOS TUIs.
|
| And then delight recalling Turbo C/Pascal and MS C 4.0 with
| CodeView that even worked in 43 or 50 line modes.
| jll29 wrote:
| Yes, me too, I was expecting either Smalltalk or LISP machine
| GUIs.
|
| Having said that, some old TUIs were clearer and faster even
| on weaker hardware. This should be a lesson for us today.
| Color transitions and animated icons flying over the desktop
| are NOT what I need, but speed, clarity, and discoverability
| of more rarely used functionality are vital.
| igouy wrote:
| May 1988 -- Smalltalk/V 286 -- on IBM-PC, PS/2 or
| compatible, with an 80286 or 80386
|
| "INTRODUCTION TO THE SMALLTALK/V 286 ENVIRONMENT"
|
| http://stephane.ducasse.free.fr/FreeBooks/SmalltalkVTutoria
| l...
| pjmlp wrote:
| That was my introduction to Smalltalk.
| igouy wrote:
| ditto
|
| So much better than the TUI Smalltalk/V
| heresie-dabord wrote:
| When people love an IDE product so much that they can't work
| without it, they have overspecialised to their detriment. And
| possibly to the detriment of the code itself.
|
| > As for terminal IDEs
|
| The GNU/Linux terminal _is the killer app_. Multiple terminals
| in a tiling window manager is peak productivity for me.
| (Browser in a separate virtual workspace.)
|
| And modern scaling for a big display is unbeatable for
| developer ergonomics.
| EbEsacAig wrote:
| > When people love an IDE product so much that they can't
| work without it, they have overspecialised to their
| detriment.
|
| I think you are wrong.
|
| https://en.wikipedia.org/wiki/Muscle_memory
|
| Being extremely good at something increases the gap between
| said something and everything else. That doesn't mean being
| extremely good at the first thing is "over-specialization to
| detriment". If someone is equally mediocre at everything,
| they have no such gap, so no "over-specialization to
| detriment"; but is that really worth desiring? I think not.
| mxkopy wrote:
| What if the IDE is a LeapFrog 2-in-1 Educational Laptop
| johnebgd wrote:
| If you make usable products that solve problems for
| others from that then it's a great IDE...
| jancsika wrote:
| > Being extremely good at something increases the gap
| between said something and everything else.
|
| You're also potentially over-specializing at one level
| while at the same time neglecting other levels.
|
| Musicians run into this problem when, for example, they
| rely _solely_ on muscle memory to make it through a
| performance. Throw enough stress and complicated music at
| them and they quickly buckle.
|
| Meanwhile, a more seasoned performer remembers the exact
| fingers they used when drilling the measure after their
| mistake, what pitch is in the bass, what chord they are
| playing, what inversion that chord is in, the context of
| that chord in the greater harmonic progression, what
| section of the piece that harmonic progression is in, and
| so forth.
|
| A friend of mine was able to improvise a different chord
| progression after a small mistake. He could do this because
| he knew where he was in the piece/section/chord progression
| and where he needed to go in the next measure.
|
| In short, I'm fairly certain OP is talking about these
| levels of comprehension in computer programming. It's fine
| if someone is immensely comfortable in one IDE and grumpy
| in another. But it's not so fine if changing a shortcut
| reveals that they don't understand what a header file is.
| rpodraza wrote:
| Good luck writing Java with notepad.
| anthk wrote:
| Tons of people did that but with nvi/vim and calling javac
| by hand.
| pjmlp wrote:
| We did that back in 1996, however the sentiment applies to
| most languages.
|
| Example Notepad versus Turbo C++ described on the article.
| wat10000 wrote:
| Why is it to their detriment? It's not like they're stuck
| with it forever. "Can't work without it" is really "won't
| work without it because they prefer installing it over going
| without."
| pjmlp wrote:
| As someone that started when only rich people could afford
| GUIs, I don't understand what is killer app about it.
|
| We used text terminals because that is what we could afford,
| and I gladly only start a terminal window when I have to.
| eikenberry wrote:
| The killer thing about it is that it is a gateway to the
| shell, all the command line tooling and the best cross-
| platform UI.
| pjmlp wrote:
| Xerox PARC, Atari, Amiga and many others had shells,
| without needing to live on a teletype world.
|
| It is only cross platform as long as it pretends to be a
| VT100.
| eikenberry wrote:
| It's not about needing to live in a teletype world, it is
| about how language/text is just a better interface for a
| general use computer. Computers primary feature is that
| they are programmable and an interface that allows you to
| take advantage of that is superior to one that doesn't.
| The programmable GUIs all failed to gain traction
| (smalltalk and like), that left the shell (and maybe
| spreadsheets) as the best UI for this. Though as AIs
| mature we might see a shift here as they could provide a
| programmable interface that could rival shell scripting.
| cameldrv wrote:
| Yes. Back in the DOS days, and even before, when people used
| actual terminals, there was a keystroke buffer. You'd see
| people who really knew the interface fly through tasks being
| multiple keystrokes ahead of the UI. Stuff would just flash
| onto the screen and disappear as it processed the input that
| was already in its buffer. It should be possible to implement
| this with modern frameworks, but it requires thought.
| markus_zhang wrote:
| Yeah. I used to work as a phone surveyor, the one you hate.
| Our software is a terminal connected to a mainframe. I got
| used to it after a few weeks and was very productive.
|
| Costco Canada vision shops still use a terminal connected to
| an AS/400 machine as I snooped around last month.
| Twirrim wrote:
| In the late 90s I was required to slowly replace dumb
| terminals with PCs. One of the older ladies taking phone
| orders was most put out by this, understandably. She was
| lightning fast on that terminal. She'd never used a PC (I
| hit on the idea of using solitaire to learn to use a mouse,
| which worked amazingly well), and was never able to get to
| the same speed with one as she'd done on her dumb terminal.
| It's hard to beat the performance of dedicated devices.
| thequux wrote:
| I recall reading somewhere that the entire point of
| solitaire (at least the original implementation that came
| with windows 3) was to teach users how to click and drag,
| so I'm not surprised that it was good for teaching your
| colleague how to use a mouse
| bionsystem wrote:
| I saw this at an airport. Took the same plane twice, one
| year apart, in between they had replaced the terminal by
| a web UI. First trip it took 15 seconds from the hostess
| (well into her 50s) to find my booking and print my pass.
| Second trip (on the web UI), it took 4 hostesses to team
| up for something that felt like 5 good minutes to do the
| same thing.
| ssl-3 wrote:
| In my own little world, I saw this first with mail and
| news readers. It was fast and simple to read mail and
| news with pine and tin: The same keystroke patterns, over
| and over, to peruse and reply to emails and usenet
| threads.
|
| As the network ebbed and flowed, email too-often became
| unreadable without a GUI, and what was once a good time
| of learning things on usenet became browsing web forums
| instead. It sucked. (It still sucks.)
|
| In the greater world, I saw it happen first at auto parts
| stores.
|
| One day, the person behind the counter would key in
| make/model/year/engine and requested part in a blur of
| familiar keystrokes on a dumb terminal. It was very, very
| fast for someone who was skilled -- and still pretty
| quick for those who hadn't yet gotten the rhythm of it.
|
| But then, seemingly the next day: The terminals were
| replaced by PCs with a web browser and a mouse. Rather
| than a predictable (repeatable!) series of keystrokes to
| enter to get things done, it was all tedious pointing,
| clicking, and scrolling.
|
| It was slow. (And it's still slow today.)
| roelschroeven wrote:
| While I agree that dedicated devices can be more
| efficient than Windows-style user interfaces, and even
| more so than browser-based user interfaces, many people
| don't use those modern interfaces in efficient ways.
|
| I have observed countless times how many people fill in a
| field, than move their hand to the mouse to move the
| focus to the next field or button, than move their hand
| back to the keyboard, instead of just pressing tab to
| move the focus. It's painful to watch. Knowing just a few
| keyboard shortcuts makes filling in forms so much faster.
|
| Things are getting worse, unfortunately. Modern user
| interfaces, especially in web interfaces, are made by
| people who have no idea about those efficient ways of
| using them, and are starting to make it more and more
| difficult to use any other method than keyboard -> mouse
| -> keyboard -> mouse -> ... . Tab and shift-tab often
| don't work, or don't work right. You can't expand
| comboboxes with F4, only the mouse. You can't type dates,
| but have to painstakingly select all the parts in
| inefficient pickers. You can't toggle options with the
| spacebar. You can't commit with enter or cancel with esc.
| snovymgodym wrote:
| Costco still uses AS/400 company-wide for their inventory
| system I think
| markus_zhang wrote:
| Interesting. Looks like it suits them perfectly. I wonder
| if the AS/400 is running in an emulator or on a real
| machine.
| snovymgodym wrote:
| I doubt it, probably just running on a regular Power ISA
| rack mount server from IBM. Though I guess technically
| all IBM i aka AS/400 is running on an emulator.
|
| https://en.wikipedia.org/wiki/IBM_i#Technology_Independen
| t_M...
| snuxoll wrote:
| Nope, we still have an IBM i deployment kicking around at
| $DAYJOB, it's running natively on POWER hardware. Way
| back in the days of the original OS/400 running on AS/400
| hardware, IBM had the foresight to have applications
| compile to MI (Machine Interface) code; which is a
| bytecode format closer to something like LLVM IR instead
| of something like JVM or CLR bytecode. When a PGM object
| is copied or created on an IBM i system, TIMI (Technology
| Independent Machine Interface) takes the MI code and
| translates it to a native executable for the underlying
| platform.
|
| We probably still have a couple of PGM objects kicking
| around on our modern POWER hardware that were originally
| compiled on an old AS/400 system, but they run as native
| 64-bit POWER code like everything else on the machine.
|
| The IBM midrange line gets a lot of undue disgust these
| days, it's not sexy by any means, sure, but just like
| anything running on modern day Z/OS you know that
| anything you write for it is going to continue to run
| decades down the line. Well, as long as you limit the
| amount of stuff you have running on 'modern' languages;
| because Java, Node, Python, Ruby, etc. are all going to
| need upgrades while anything written in 'native'
| languages (RPG, COBOL, C/C++, CL) compiles right down to
| MI and will keep working forever without changes.
| sillywalk wrote:
| Nitpick:
|
| The Machine Interface dates back to AS/400's predecessor,
| the System/38.
| sillywalk wrote:
| As far as I know, there are no AS/400 emulators.
|
| It's still updated by IBM and runs on POWER. It's just
| called "i" now.
|
| I believe the naming went something like
| AS/400->iSeries->System i->System i5->i
| Matumio wrote:
| Remember the venomous, desperate BEEP! when the keystroke
| buffer was full. (Or was it when pressing too many keys at
| once?) Like a tortured waveform generator constantly
| interrupted by some higher-priority IRQ. Good times.
| misnome wrote:
| Fun story: When I worked at blockbuster I had my computer
| access revoked and summoned to explain because a colleague
| told management I was "hacking" when they saw me doing this
| on the computer system.
| teeray wrote:
| Makes me wonder if that's where the TV trope of a hacker
| flying through screens faster than you can see came from
| p_l wrote:
| Was that still on the VMS-based blockbuster video system?
|
| Weird question, but I accidentally ended up with one of
| those in my hands that ran in probably non-blockbuster
| place from 1996 to 2000 :)
| acuozzo wrote:
| > You'd see people who really knew the interface fly through
| tasks being multiple keystrokes ahead of the UI.
|
| I remember.
|
| This, unfortunately, killed people: Therac-25. Granted, the
| underlying cause was a race condition, but the trigger was
| the flying fingers of experts typing ahead, unknowingly
| having been trained to rely on the hardware interlock present
| in older models.
| constantcrying wrote:
| People really should stop doing TUIs. Basing software around an
| ancient legacy paradigm of character grids is pretty silly.
| From my personal experience, people who talk about how much
| stuff they do in TUIs usually are mostly tech illiterate and
| all great devs I know use graphical tools in almost every
| situation.
|
| >As for terminal IDEs, Neovim has never been more featureful,
| with LSPs and other plugins giving all the features this
| article discusses. I guess it isn't a mouse-driven TUI, so the
| author wouldn't be interested, but still.
|
| Neovim instantly becomes a better piece of software if you use
| a GUI frontend. The terminal puts in arbitrary limitation and
| inconsistencies. Why anyone would use and interface paradigm
| which _can not do color_ in a sane way is beyond me. Just use
| the GUI, it is better in every way.
| yoz-y wrote:
| Most of my work is done on remote machines. Nothing beats
| tmux+tuis in this paradigm.
| pjmlp wrote:
| I rather stick with RDP, or browser based workflows.
| yoz-y wrote:
| They are fine, however RDP requires more bandwidth and
| most of the stuff I run is terminal commands anyway.
|
| Company I work for has a great browser based IDE but
| that's something I would never setup and maintain for a
| personal project.
| mlyle wrote:
| Modern terminals do color just fine-- 24 bit color support
| has existed since 2010-ish, and been mainstream since 2015.
|
| There's nothing wrong with graphical IDEs... or text user
| interfaces. Great developers use both. Low effort troll is
| low effort.
| calenti wrote:
| +1 - crap code can come out of notepad / emacs / vi or IDE-
| flavor-of-the-day or even the AI code sausage maker.
| Testing, specification, knowing what you are building and
| why still matters.
| pjmlp wrote:
| Agreed, we used TUIs because we couldn't afford anything
| better on MS-DOS, CP/M, 8 bit home computers.
|
| People on better systems like the Amiga and Atari were
| already past that.
| anthk wrote:
| Vim was born in Amiga and Amiga OS came with some Emacs
| clone.
| invader wrote:
| People should also stop using terminal emulators. It is
| pretty silly to base software around ancient printing
| terminals. Everyone knows for a fact that only tech
| illiterates use a console instead of a GUI. Since all great
| devs use a GUI. Just a fact.
|
| Also, people should stop playing 2D games. It is pretty silly
| to base your entertainment on ancient technology when modern
| GPUs can render super-complex 3D scenes.
|
| And don't make me start on people who still buy vinyl...
| rkomorn wrote:
| Honestly hard to disagree with your first point even though
| it's sarcasm.
|
| It's still quite easy to end up with a terminal you need to
| reset your way out of (eg with a misguided cat), not to
| mention annoying term mismatches when using remix/screen
| over SSH, across OSes, or (and this is self inflicted) in
| containers.
| constantcrying wrote:
| Completely disingenuous. Stop the snark.
|
| For UI there exists a straight up superior alternative,
| which keeps _all_ of the benefits of the old solution.
| Neovim is just straight up better when used outside of a
| terminal emulator.
|
| What is true for TUI vs. GUI is not true for CLI vs. GUI
| (or TUI for that matter) pretending the argument I made
| applies to the later is just dishonest. You can not replace
| CLI interfaces adequately by GUI or TUI interfaces, you can
| _totally_ replace TUI Interfaces by GUI. See neovim as an
| example. It is superior software when used outside of the
| terminal.
| anthk wrote:
| Current GPU's can't compete with my brain 'rendering' a
| Slash'em/Nethack scene with my pet cat while I kick ass
| some foes with my Doppleganger Monk full of Wuxia/Dragon
| Ball/Magical Kung Fu techniques.
| eikenberry wrote:
| TUIs are the best cross platform apps. They run on all the
| major and minor platforms in general use. GUIs cannot compete
| with browsers being the next closest thing. They can be
| integrated with the shell and also work perfectly well
| remotely w/o issues. TUIs are superior in many ways to GUIs
| and have a place in the ecosystem.
| constantcrying wrote:
| TUIs do not even run the same across terminal emulators.
|
| It is a total joke to call something which depends on how
| the underlying terminal emulator interprets specific ANSI
| escape sequences "multi platform".
| rkagerer wrote:
| Yes! That phenomenon drives me crazy. I used to be able to use
| a computer at warp speed by staying ahead of its responses with
| chains of rapid keyboard shortcuts etc. Now it's like I'm
| trying to sride through molasses.
| username223 wrote:
| When I use an editor, I don't want eight extra KILOBYTES of
| worthless help screens and cursor positioning code! I just want
| an EDitor!! Not a "viitor". Not a "emacsitor". Those aren't even
| WORDS!!!! ED! ED! ED IS THE STANDARD!!!
|
| TEXT EDITOR.
|
| -- https://www.gnu.org/fun/jokes/ed-msg.txt
| buescher wrote:
| Thirty years ago was 1995. TUI programming environments were
| closer to obsolete than obsolescent. We had 32-bit versions of
| Visual C++. We had Delphi and the Borland C++ stuff for Windows.
| We had Codewarrior. On the lighter end of RAD, Visual Basic was
| four years old, HyperCard was eight years old, and LabView was
| nine years old. The future was very unevenly distributed back
| then. I see now the article is from 2023, well, adjust
| appropriately.
| Sophira wrote:
| The article itself is a nice look at the state of editors and
| IDEs compared to those of yesteryear... but the site itself
| restyles my scroll bar to be thinner and less usable, which kind
| of spoils the experience.
|
| I hate it when sites do this. I don't want my window decorations
| to be restyled in the name of aesthetics. I need them to be
| usable.
| nhatcher wrote:
| Worth mentioning a version of ms Edit is now opensource. Not only
| that, it is extraordinary code to learn from:
|
| [1]: https://github.com/microsoft/edit [2]:
| https://news.ycombinator.com/item?id=44031529
| self_awareness wrote:
| I wouldn't _learn_ from it, since it uses unsafe code even for
| basic stuff, like hash calculation.
|
| It's also a complete reimplementation, it shares only the name
| with original edit.com.
| nhatcher wrote:
| Well, you wouldn't learn as is let's learn Rust from it. But
| I think it has many interesting bits not found in most open
| source projects out there. and true that, there is a lot of
| unsafe code, uses nightly builds, its own allocator, crazy
| stuff. I did learn a lot from it :)
|
| And yeah, it is a reimplemantion. But it is a TUI and very
| minimal. Keepining it minimal, with no dependendecies and
| software bloat seems to be one of the guidelines. So very
| much something adding to the article at case.
|
| But yeah, you are right on both counts.
| anarticle wrote:
| "the IDE had to be discoverable right away (which it was) and
| self-contained to offer you a complete development experience"
|
| This right here was the key to super flow state. Lightning fast
| help (F1), very terse and straightforward manuals. I have tried
| to replicate this with things like Dash
| (https://kapeli.com/dash), to some degree of success.
|
| The closest thing I had to this in windows was probably Visual
| Studio 6 before the MSDN added everything that wasn't C/C++ to
| the help docs. After that, the docs got much harder to use due to
| their not being single purpose anymore. The IDE was a little more
| complex, but you at least felt like you got something for it.
| After that, too many languages, too many features, overall not
| great experience.
|
| The keybindings were so simple and fast, Borland IDE on DOS was a
| very nice tool. Yes, easier than vim and emacs. The reason is
| because of mouse in TUI so things like complex
| selection/blocks/text manipulation are not keybindings in the
| same way so the key combos are more "programming meta"(build,
| debug, etc) rather than "text meta".
|
| EDIT: also, I feel like this needs to be mentioned: compilers
| were not free (as in beer) at that time!
|
| In order to develop on my own machine as a teen, I had to
| sneakily copy the floppy disks the teacher used to install this
| on the school computers so I could have more than 1h using it at
| home! COPY THAT FLOPPY
| fred_is_fred wrote:
| I wrote my first program using Borland Turbo Pascal probably
| around 1993 at my high school. I think those systems ran DOS 3.0
| or maybe 5.0? It was all trivial stuff but I found it to be very
| helpful to debug issues.
| ttul wrote:
| My view of the PC dev era was through the lens of a kid growing
| up in the 1980s with a dad who programmed for a living. My dad
| was a big fan of the Borland IDEs starting with Turbo Pascal and
| then moving on to the world of C and C++ by the late-1980s. As a
| kid, my friend and I spent hundreds of hours in Quick Basic's TUI
| - always trying to remake Super Mario Bros but never coming close
| to succeeding.
|
| These early IDEs were fantastic at their job and worked so well
| given the constraints of the DOS environment of the time. It's a
| shame that Borland the company eventually faded to black in 2015,
| but that's how these things go. I wonder where all the geniuses
| behind the Borland IDEs ended up.
| chuckadams wrote:
| I learned the C language from K&, and the C API by right-clicking
| on all the things in Turbo C on a 286. Learned a fair bit of lisp
| from emacs using C-h f. I do love the navigation capabilities
| modern IDEs have, but unless a library's author has gone off the
| deep end writing doc comments, they don't have the same
| discoverability.
| haolez wrote:
| The fun thing is that, if something like Claude Code can be
| competitive with modern IDEs, these ancient IDEs could become
| competitive as well with some kind of integration with AI
| workflows :)
| duanhjlt wrote:
| Nostalgia aside, those classic TUIs nailed responsiveness and
| cohesion. Modern setups can match features, but rarely that
| instant, synchronous feel. Emacs + Magit shows the power of text-
| first integration, yet JetBrains-style debuggers and glue still
| win for many. It'd be great to see a modern, fast, Borland-like
| TUI with solid LSP and LLDB integration.
| dualogy wrote:
| TextAdept, the most criminally-underhyped high-quality text
| editor that I know of, has supported LSP for quite some time
| now IIRC, and has (not just GUI versions but also) a first-
| class TUI version.
| jasperry wrote:
| TextAdept and its possibilities have intrigued me for a while
| now; a fast Qt GUI and Lua-based configuration sounds like a
| sweet spot for me. But I've never fully taken the plunge to
| configure it for development. I'm open to reading more
| propaganda for it if you can point me to any :)
| shermantanktop wrote:
| I struggle to understand what the author actually wants, aside
| from nostalgia about a specific look and feel that he imprinted
| on. And perhaps the simplicity of having few features.
|
| I would have appreciated a breakdown of what specific individual
| features those crummy old ides are offering.
|
| I suspect the one the author wants most is a time machine to go
| be 12yo again, but software can't do that. Yet.
| skopje wrote:
| 1. coders will use every available resource, and
|
| 2. there is no limit on resources.
|
| The consequences can be left to the reader (re: the article in
| this thread), but these two postulates are the source of all ills
| in commodity and open-source software today.
| andai wrote:
| Coders considered harmful.
| webdevver wrote:
| truth nuke
| newswasboring wrote:
| I grew up on the borland Turbo series. Learned C then C++ on it.
| Such nostalgia.
|
| I was wondering, is there a way to get VS code to look like this?
| Maybe neoVim?
| burnt-resistor wrote:
| I learned to code with Turbo Pascal 6 without the internet by
| trial-and-error and the debugger. When in real mode, a program
| crash would often reboot the system or occasionally lead to some
| other unexpected behavior/semi-silent corruption.
|
| Borland C++ 3.1 & Application Frameworks for DOS and Windows 3.1
| came with an entire library of paper books. It was probably the
| heaviest and largest boxed _retail_ software package ever because
| 4.0 skimped on paper books and didn 't include real mode versions
| of the IDE for DOS.
|
| The Pascal almost equivalent was Borland Pascal 7.0 with Objects.
|
| It was possible to link assembly, C++, and Pascal in the same
| executable assuming the memory model and function calling
| convention were set correctly.
| p0w3n3d wrote:
| We haven't lost. The best functionality of IDE is navigation
| (find implementations, calls etc) and refactor. Other functions
| are merely enhanced notepad.exe functionality
| shadowgovt wrote:
| Oh, this reminds me: I should turn off the menu bar in emacs. Not
| like I ever use it.
| JoshTriplett wrote:
| I still remember
| https://en.wikipedia.org/wiki/Brief_(text_editor) , which I used
| extensively in DOS; it was my first "programmer's editor".
| mcshicks wrote:
| Surprised there was no mention of brief. That was my favorite
| editor for programming for a while.
|
| https://en.wikipedia.org/wiki/Brief_(text_editor)
| moffkalast wrote:
| A brief mention.
|
| Ba dum tss.
| socalgal2 wrote:
| brief by underware
|
| I don't remember Borland buying it
| youngtaff wrote:
| Brief was fantastic was my day-to-day editor in the late 80s /
| early 90s
| mrbonner wrote:
| The Turbo Pascal "IDE" was my very first dive into programming,
| and it's still the best experience I've ever had! Maybe it's just
| because it was my first, but wow, it already had tons of cool
| features back then, like syntax highlighting, step debugging with
| breakpoints, and a quick peek at variable values.
|
| Do you think there's anything like that out there today? The only
| ones I can think of that are closed are nano and micro editors,
| but I wouldn't really call them IDEs.
| geophile wrote:
| Turbo Pascal was completely amazing. I remember resisting it for
| a long time, because IIRC it implemented non-standard Pascal. But
| the competitive tools were less powerful and far more expensive,
| (e.g. the Microsoft tools). And then I tried it, and was
| completely blown away. I no longer cared about the non-standard
| stuff. I had a fast intuitive IDE running on my original IBM PC.
|
| As for modern IDEs, Intellij has been orders of magnitude better
| than any competition for more than 25 years (I think). I have
| stayed away from Microsoft products for a very long time, so I
| can't comment on VSCode and its predecessors. The main
| competition I remember was Eclipse, which I always found to be
| sluggish, unintuitive, and buggy. The fact that it wasn't even
| mentioned in this article is telling.
|
| JetBrains, the company that created Intellij (and then PyCharm,
| CLion and many others) is one of those extremely rare companies
| that defined a mission, has stuck to it, and excelled at it for
| many years, and has not strayed from the path, or compromised, or
| sold out. It is so impressive to me that they maintain this high
| level of excellence as they support a vast and ever-growing
| collection of languages, coding standards and styles, and tools.
| prmoustache wrote:
| Except for resource usage.
|
| I chose it becaue I don't have access to neovim on my cloud
| desktop and ideavim is a superior solution to any vim like
| plugins for vscode. It is struggling with 4 cores and 16GB of
| ram with only a few projects open at a time. Some of it is due
| to being win11 with the amount of security malware installed by
| my company but still vscode doesn't seem to make it suffer that
| much.
| tangotaylor wrote:
| Having TUIs available for remote administration is an excellent
| point. I frequently spin up nmtui on machines with NetworkManager
| because I'm used to Ubuntu's network settings GUI and I haven't
| bothered to learn enough nmcli.
|
| ("real" deployments would use systemd-networkd and config files
| but for simple things...who cares)
|
| No matter how good computers and networking get, text-based tools
| always seem to win for remote administration. I've tried
| forwarding X servers, mounting remote file systems with sshfs,
| vscode's remote features, VNC, RDP, but I always seem to revert
| back to just tmux and TUI tools.
| manithree wrote:
| The Borland Turbos had a much bigger market impact, but I was
| blown away by the Zortech C++ IDE in 1988. I don't remember why
| any more, but I was very dismissive of other TUI IDEs of the day
| after using Zortech. Even in the early 1990's when I was
| professionally using PWB (Programmer's Waste Basket) I still felt
| Zortech's IDE was superior.
| tern wrote:
| I think what people miss about bloat, and about what's changed
| with software over the years, is that a vast variety of niche
| use-cases are now supported. Software runs on dozens of different
| systems, every aspect is customizable and programmable, and
| thousands of different programming languages and approaches are
| supported.
|
| To give a random example, I use Neovim with SuperCollider, and
| music programming language. This involves launching a runtime,
| sending text to the runtime, which in turn sends commands to a
| server. The server generates a log, which is piped back into a
| Neovim buffer. There are all sorts of quirks to getting this
| functional, and it's a somewhat different workflow from any
| traditional programming model.
|
| I'm not sure there's an easy solution to keeping things simple
| while also supporting the unimaginable variety of personalities,
| skill-levels, environments, and tasks people get up to. I do,
| however, think it's worth continued imagination and effort.
| a-dub wrote:
| good memories of the borland stuff! (especially super duper high
| resolution 43 line mode!), it was where i actually cut my teeth
| on c/c++ before moving to coherent then linux!
| ataru wrote:
| The interfaces look like they wanted to be graphical, as they
| have windows and drop down menus, and they wanted to have multi-
| tasking, as they implemented the overlay tools in Borland
| Sidekick. They wanted those things but they were limited to
| staying in text mode because widespread adoption of any real
| graphical interface was slow.
|
| It seems a little humorous now that professionals were stuck for
| several years doing their day to day word processing,
| spreadsheets and databases in text mode, where getting different
| sized text or different fonts was almost impossible. This also
| wasn't just in the 80s, it was still somewhat true in the early
| 90s, not very long before the beginning of the internet as we
| know it.
|
| Still, I wonder if things are really any better now, as we're all
| using software interfaces built on something else that's not
| really appropriate for the job. HTML.
| joe91 wrote:
| No love for MultiEdit? :(
| bibiver wrote:
| I saw this and was like, what?
|
| > have we advanced much in 30 years?
|
| IDEs have changed a lot, specially with AI-assisted ones. The
| author kind of acknowledges it, but imho it's a paradigm shift.
| Not just "a major difference".
|
| > The only major difference that we are starting to see might be
| AI-assisted coding, but this is a feature mostly provided by a
| remote service, not even by the installed code!
|
| Then I realized it's a post from 2023. IDEs have changed a lot
| since then. Autocompletion has evolved from merely suggesting
| function names to completing 20 lines of code in the blink of an
| eye. It's great for productivity, but it also makes you lazy, to
| the point where you can't live without it.
|
| In my opinion, software engineers should "disable the autopilot"
| from time to time, just like airline pilots must occasionally
| land without it. Otherwise, you end up becoming too dependent on
| it.
| nxor wrote:
| Is this not an overstatement? How does a person understand code
| if they write so much of it with AI?
| FpUser wrote:
| Because I tell AI exactly what and very often how to write
| the code to avoid sub-optimal solutions AI so keen to propose
| if not properly directed.
|
| As for autocompletion, not sure about every tool but CLion
| and other IDEs I have from JetBrains are genius. Yes they can
| autocomplete multiple lines of code with a single keystrokes
| and no I do not really want to write it myself as it mostly
| boilerplate code I've written many times and autocompletion
| just predicts it.
| nxor wrote:
| How can you recognize optimal / suboptimal solutions if you
| need to use AI in the first place? As for boilerplate, I
| thought there were ways to automate this without AI, but I
| guess that makes sense to me. Not trying to sound
| accusatory, just jarred by the AI hype generally
| FpUser wrote:
| >"How can you recognize optimal / suboptimal solutions"
|
| Maybe because I have 40+ years of programming under my
| belt starting with machine codes and every type of
| software one can imagine.
| tpmoney wrote:
| The same way a tailor understands stitches even if a sewing
| machine creates most of the stitches a tailor will ever
| stitch. Because understanding code is tangential to writing
| it. Which isn't to say that writing it doesn't help solidify
| knowledge and certainly plenty of people learn by doing and
| there may even be skills that atrophy as a result of not
| writing code in the same way that skills for writing assembly
| have atrophied with the use of higher level languages. But
| ultimately it is possible to understand some code without
| having written most of it by hand.
| James_K wrote:
| Of course, Emacs can do everything listed in this article, even
| edit remote files over SSH while in graphical mode.
| trashface wrote:
| By this point in college 30 years ago I had switched to mostly
| emacs, and was struggling with it - our program was unix based
| (solaris) with gcc. But a few years before that I was using turbo
| pascal, which was indeed a very fast ide, partially by virtue of
| how low latency hardware was back then.
|
| I like these programs, mostly for that sweet low latency which is
| just gone today, but I wouldn't romanticize them as dev
| experiences. To experience it you can download free pascal today
| and use theirs which is just like turbo pascal (may even based on
| turbo pascal?). Its pretty clunky compared to what you get today,
| although, the debugger works which is more than what you can say
| for the majority of languages today.
| submeta wrote:
| Ahh, memories. I started hacking in Emacs on my Amiga 2000 in
| 1988. And later in Turbo Pascal in 1991ish.
|
| When I saw Visual Studio years later, or Visual Basic, these IDEs
| were doing so much more, but I'd lose the ability to fully
| control the bare text. These MS tools wouldn't allow me to write
| my code in my favourite text editor and version it. So they were
| nice and a curse at the same time.
| foofoo12 wrote:
| Could we or do we have anything like that for the modern web?
| mikewarot wrote:
| I was expecting to see the most productive IDEs of all time,
| Visual Basic 6 and/or Borland Delphi, but we're just ahead of
| those in this article.
|
| While it was truly amazing that Borland managed to stuff a full
| text editor into a TSR under MS-DOS, and every new version of
| Turbo Pascal was faster and had more features, it all culminated
| somewhere around Delphi for me, and Visual Basic 6 for almost
| everyone else.
|
| Then the world ended... Anders Hejlsberg was lost to Microsoft,
| and everyone went _collectively crazy in at least two orthogonal
| ways_.
|
| First there was the obsession with C++ as "higher level" than
| Pascal and the view that it was for "adults", which was
| delusional. C++ generated a f*ckton more boilerplate and was
| brittle for the same functionality, at least when generating a
| GUI program.
|
| Then there was Microsoft's obsession with .NET, which they never
| recovered from. They crammed all the bloat of an interpreter into
| everything imaginable, even the operating system. You were always
| having to get the latest .NET libraries to make things work. They
| destroyed Visual Basic over this, and it never recovered.
| whartung wrote:
| I think these modern TUIs are a testament to the general failure
| of modern GUIs.
|
| It's not like they're particularly easier to write these.
|
| But since there's no remote GUI option, much less a portable
| remote GUI option, particularly one that's not just a video of an
| entire desktop, we're stuck with these.
|
| WHo wants to fire up an entire desktop to get open a simple
| utility app?
|
| Obviously the Web satisfies much of the demand for this, but
| clearly not all.
|
| Remote X is, essentially, dead. It's obviously "really hard",
| since "no one does that any more". Or, folks just don't miss
| having rootless windows peering into their remote server
| enclaves.
|
| It's just too bad, full circle, here we are again. "Progress."
| pjmlp wrote:
| Failure of Linux Desktop you mean.
|
| RDP works great and GUI tooling for Windows and macOS is quite
| comparable to using VB, Delphi, Smalltalk like experiences.
| f1shy wrote:
| X could do that before RDP was even a project. I think OP is
| meaning something different.
| pjmlp wrote:
| Of course it could, it is essentially dead, because hardly
| anyone still does X remoting, and Wayland doesn't support
| it.
| eikenberry wrote:
| RDP works great on Linux as well. The problem isn't remote
| access, it is lack of good cross platform GUIs. There is a
| reason browsers are dominating the UI space and TUIs are
| popular.
| pjmlp wrote:
| Yeah, laziness, we had plenty or cross platform GUIs in the
| 1990's.
| vpShane wrote:
| There are no failures for Linux Desktop; this can never be
| the meaning. I say this with humor in mind.
|
| Requiring me to have a cloud account to format my machine
| (mac) and requiring me to have a cloud account on only pre-
| authorized hardware (Windows 11), only to open up Notepad and
| see they slapped AI inside of it; now that is quite
| comparable to me slapping Linux on it.
|
| Just sayin'
| wpm wrote:
| You don't need any kind of account to erase a Mac.
| do_not_redeem wrote:
| > But since there's no remote GUI option
|
| ssh -X and waypipe both work perfectly fine.
|
| And to your point about portability, if you're stuck on an OS
| other than Linux, VNC/RDP aren't pretty but they'll get the job
| done.
| general1465 wrote:
| > And to your point about portability, if you're stuck on a
| non-linux OS, VNC/RDP aren't pretty but they'll get the job
| done.
|
| If you can make them working. Sorry you can't connect if user
| is logged on this computer. Whoops RDP session is active, so
| I will show you this black screen after typing your username
| and password until user disconnects (Why not kick out the
| user?). VNC is even bigger pain when you need to boot up
| server from SSH and sometimes restart it when it gets stuck.
|
| While on Windows you can just install TightVNC and it works.
| No screwing with screens. On MacOS you can just tick Remote
| Screen Sharing, put your VNC password and it just works. Even
| Android can do that droidVNC-NG, But Linux is such a PITA to
| make VNC or RDP working.
|
| And RDP also assumes that you are running X11 and not
| Wayland.
| do_not_redeem wrote:
| > I will show you this black screen
|
| Right, that's why I said RDP isn't pretty if you aren't on
| Linux. Windows insists on creating a separate desktop for
| each session. IIRC it has something to do with licensing,
| they don't like simultaneous users using one Windows
| license.
|
| > While on Windows you can just install TightVNC and it
| works.
|
| If you're resorting to installing third-party apps, you can
| install TightVNC on Linux too, and it just works. Though I
| found krfb performs better on my network, ymmv.
|
| > And RDP also assumes that you are running X11 and not
| Wayland.
|
| RDP is just a protocol that describes the bytes going over
| the network. Why would it care about your display server?
| There are VNC and RDP servers for both X11 and Wayland.
| Just install one that's supported by your system.
|
| Though if you're on linux, you don't have to deal with the
| VNC/RDP jank at all. Just use ssh -X or waypipe and it's
| way snappier.
| majormajor wrote:
| Lotta focus on TurboPascal vs Emacs or whatnot at the console
| level, but you couldn't give TurboPascal to a complete newbie any
| more than you could give them IntelliJ. The mouse is an advantage
| here, not a disadvantage.
| inetknght wrote:
| > Each program was its own island because its interface was
| unique to the program. However, they were all so similar in how
| they looked like--80x25 characters didn't leave much room for
| uniqueness--and how they worked that the differences didn't
| really get in the way of usability and discoverability. Once you
| learned that the Alt key opened the menus and that Tab moved
| across input fields and buttons, you could navigate almost any
| program with ease.
|
| This is the biggest thing I miss in modern GUIs, especially
| Windows, macOS, or mobile.
|
| Tabbing across every single possible inputs, with alt or control
| keys for quick access is insanely powerful compared to "click
| here, scroll this, click click"
| oblio wrote:
| I haven't checked in Win 11, but all standard Windows apps used
| to be fully navigable by keyboard only. Notepad, Wordpad, etc.
| jmyeet wrote:
| I learned on Turbo Pascal many years ago. It was amazing. There's
| another aspect beyond the TUI though: compiler speed. Turbo
| Pascal was designed for compilation speed. It was significantly
| faster than, say, Turbo C++ for an equivalent program.
|
| But this brings up something I think about every now and again:
| resource bloat.
|
| When Turbo Pascal was currently it'd be common for PCs to have
| 1MB of RAM. In fact with the DOS memory model you had to do weird
| stuff to use more memory than that (IIRC it was called "large
| mode").
|
| Obviously running in a graphical environment is going to use more
| memory but we had pretty capable Windows environments with Win
| 95/98/SE/NT3.5/NT4/XP with not much RAM (256MB to 1GB depending
| on year).
|
| Now with modern windowing systems we have capabilities that
| didn't exist in early windowing OSs like scalable rather than
| bitmapped fonts, UI scaling, etc. But we've had those things for
| 20+ years now and the resource requirements still keep going up.
|
| Yes we have Javascript UIs running in a browser now and that will
| never be as cheap as native apps but we've also had those for ~20
| years now (GMail is ~20 years old).
|
| In the 90s we had graphical X Windows systems on Linux with
| 4-16MB of RAM. I know. I ran them.
|
| Why do resource requirements keep going up? Is there demand for a
| low resource OS that could be user-facing? I know hardware is
| particularly cheap with Raspberry Pis and similar. We have ARM
| CPUs for a few dollars now that would've cost millions in the
| 1990s. So maybe that's why there's no demand.
|
| But this is really something I expected to top out at some point
| and it just hasn't.
| qingcharles wrote:
| What amazes me every day is that I'm using literally the exact
| same GUI to build apps that I was over 30 years ago, with Visual
| Studio.
|
| You could sit someone down from 1991 (Visual Basic 1.0) in front
| of Visual Studio 2026 and they would immediately know where
| everything is. (it still has BASIC in there too)
| timpera wrote:
| Substack needs to stop blocking VPN and data center IP addresses.
| I can't read the article because I'm on a train's WiFi...
| 29athrowaway wrote:
| The experiences so far that have been left behind:
|
| - A RAD TUI like Microsoft Visual Basic 1.0 for MS-DOS
|
| - DolDoc from TempleOS, with diagrams and sprites
|
| - Clipper, DBase, FoxPro, etc
| shevy-java wrote:
| I honestly don't understand why we lose IDEs and editors.
|
| I understand that software requires people maintaining it, but my
| point is more that I still don't understand the why.
|
| We have some functionality, a lot of which could be re-used in
| editors and IDEs. But people rarely share stuff. They like to re-
| implement things. Again and again and again. This is not logical
| to me.
|
| I'd like to have one editor that does EVERYTHING, but in a
| modular way so people decide what that editor can do. People
| could then just maintain one cohesive, feature-rich code base
| rather than each one duplicating what is already available in
| another IDE/editor.
| qiller wrote:
| Loved Borland IDE at the time. I still miss Ctrl-KB/KK (IIRC?)
| style selections from time to time.
|
| These days Far Manager (via far2l) or MC kind of scratch the itch
| for quick TUI edits.
| exceldrawing wrote:
| Visual Cafe (I know they got a bad rep after Symantec bought them
| but I felt the bugs weren't major enough to make stop using it
| back then).
| jbverschoor wrote:
| 30 years ago we had visual C++, with an amazing debugger. Visual
| J++, Visual Basic. Normal Basic. All with amazing debuggers and /
| or "REPL"s and compilers times of 0 or next to nothing.
| twism wrote:
| He touched on Emacs and it reminded me of the Blub Paradox
| https://wiki.c2.com/?BlubParadox
| immibis wrote:
| There's a recurring pattern that everything is worse now. There's
| a happy medium - the really old stuff is too basic, while the
| really new stuff is also basic. But why is the new stuff worse
| than the moderately old stuff?
| albertzeyer wrote:
| Ok, this post is mostly about text-based IDEs, but I think the
| point mostly stands as well for IDEs in general. I'm thinking
| about Visual Basic or Delphi.
|
| I think such a IDE for Python would really be helpful for
| beginners. Not text-based, but more like Visual Basic. But
| everything integrated, everything easily discoverable (that's
| very important!). Maybe also with such a GUI builder as in VB.
| And a built-in debugger. I think for the code editor, as long as
| it has some syntax highlighting and tab auto-complete, that would
| already be enough. But some easy code navigation would also be
| good. E.g. when you place some button on your window, and double
| click that button in the GUI editor, you get to the call handler
| code of that button.
|
| Some time ago, a small group of people (me included) (I think
| from some similar HN post?) got together and we brainstormed a
| bit on how to implement this. But we got lost in the discussion
| around what GUI framework to base this on. I already forgot the
| options. I think we discussed about PySide, Dear PyGui, or
| similar. Or maybe also web-based. We couldn't really decide. And
| then we got distracted, and the discussion died off.
|
| Note, Free Pascal was mentioned here. But then you should also
| mention Lazarus (https://www.lazarus-ide.org/), which is the same
| as Free Pascal but cloning Delphi. Lazarus is really great. And
| it is actively developed. But Object Pascal is too little known
| nowadays, maybe also a bit outdated.
| jmmv wrote:
| > Ok, this post is mostly about text-based IDEs, but I think
| the point mostly stands as well for IDEs in general. I'm
| thinking about Visual Basic or Delphi.
|
| Exactly. I recently recorded a video of me creating a toy app
| with VB3 on Windows 3.11 and the corresponding tweet went
| "viral" for similar reasons as this article.
|
| It's not really about the TUI: it's about the integrated
| experience as you say!
| garganzol wrote:
| Far Manager on Windows, and Midnight Commander on Unix, work
| wonders for terminal-based development nowadays. Not only they
| allow you to have OS commands at the tips of your fingers, but
| also they allow you to navigate freely in the file system
| structure of a project while viewing/editing files with built-in
| or external editors.
|
| UI/UX of those tools is pretty close to Borland IDEs, they have
| steep learning curve (at least 10x easier than vi/emacs).
| prmoustache wrote:
| author seems to be mistaking text editors and IDE. I wouldn't put
| Emacs in any of these categories, it is like an operating system
| without the kernel part but I am not exactly sure how to call it?
| sheepscreek wrote:
| > Visual Basic was the pinnacle of graphics programming
|
| I am still shocked how no tool since has managed to come even
| close to VB. You could easily develop a moderately complex GUI
| application that felt snappy in an afternoon. C# with WinForms is
| the second closest to that. All other iterations since have not
| been designed with individual developers in mind, sadly.
|
| A powerful developing alternative to this paradigm could be what
| I'm calling speech/voice driven development (SDD or VDD). It
| takes some pain of typing so much away - makes interactions with
| AI feel a bit more natural. Like talking to a colleague. But for
| it to really work well, AI models will need to become even
| faster.
| rednafi wrote:
| I love reading about and occasionally tinkering with older text
| editors like vim, emacs, ed, acme, ex, nedit, and as such.
|
| For actual work, though, I've been using VS Code exclusively
| since its inception. Electron might be a bloated mess, but
| spending time on alternatives doesn't feel worth it. Maybe that's
| because I didn't grow up in the golden era of computing and can't
| make the vim workflow stick no matter how hard I try.
|
| I'm pretty sure twenty years from now, this generation of
| developers will get blurry-eyed reminiscing about how fast and
| feature-packed VS Code was, and how Microsoft built the best GUI
| text editor of its time.
|
| As for TUI editors, I love micro because it has mouse support and
| doesn't make you memorize a spellbook just to move around.
| dusted wrote:
| The issues mentioned in the article is generally applicable.
| While modern software does manage to make life marginally easier
| and simpler in some very specific ways, they generally manage to
| do so while also looking like absolute garbage, consuming
| hundreds of megabytes of memory to do tasks requiring kilobytes
| while burning through multiple orders of magnitude the amount of
| instructions actually needed to do the work.
|
| Yes, Visual Basic was indeed the pinnacle, and today, it is QT,
| for what it's worth. But no, let's go write HTML and CSS, and
| when the Stockholm syndrome gets us bad enough, why not some
| React or Angular to get the party of pain going again ?
| SomeHacker44 wrote:
| We had Symbolics Genera, not mentioned, and way better than
| anything else mentioned here, IMO.
| zzo38computer wrote:
| MegaZeux was originally a DOS program, but now has emulated PC
| text mode (with some enhancements, such as SMZX and unbound
| sprites) and continues to use a TUI, although it is not as good
| as Microsoft and Borland (e.g. it does not have ALT+letters in a
| menu to select with different colour letters, etc).
| rimmontrieu wrote:
| Thank for the article, this brings back so much good memories and
| nostalgias. Turbo Pascal was my first programming language a
| couple decades ago, at that time it felt like super power when
| you could tell the computer what to do by learning the language
| and just hit the Compile button.
|
| The IDE was also so clean and intuitive, which was perfect for
| new programmers.
___________________________________________________________________
(page generated 2025-10-18 23:01 UTC)