Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> emacs outshines all other editing software in approximately the same way that the noonday sun does the stars

What makes Emacs genuinely great? Not that it was built a long time ago and withstood the test of time. Not the fact that it is absolutely free to use, distribute and extend. Not that it doesn't have tons of bugs (it does), or has superb support for every known programming language (it does not).

To understand what makes Emacs so awesome, to learn and master it, one simply needs to embrace the single fundamental truth about it. Emacs based on Lisp. And please don't make a mistake - I am not talking here about a programming language. I am talking about an idea - one of the most magnificent ideas in computer science. Embrace the awesomeness of that idea, the fluidity, and malleability of the structure. Accept it with all its incredible power and some unavoidable flaws - and you will gain superpowers. Which is not necessarily a good thing. Let me explain.

There's a scientific term "umwelt" that biologists use to describe the world as experienced by a particular organism. Every one of us has this "umwelt" - our "subjective view of the world." Our umwelt is limited by our physical and mental capabilities, past experiences, and social circles we grow up and live. e.g., your subjective understanding of Renaissance Art would drastically differ from when you're taken to a museum at the age of three, and when you go there as an adult, or after studying art for fifteen years.

Learning and understanding Lisp expands your umwelt. You will start seeing things differently. It doesn't inevitably make you a better programmer; it might, but doesn't guarantee it, just like suddenly gaining the ability to see things in the infrared spectrum not guaranteed to make your life better.

Finally, once you embrace the idea of Lisp, soon enough, you find out - humans have yet to invent a better Lisp environment than Emacs.

And that's what Emacs is - it is not just an editor, it is not a mere IDE. Most importantly, it is a Lisp environment - living, "breathing", dynamic and malleable. That's what makes it so extensible. And that's what makes it so versatile. And that's why it will never die.



> Learning and understanding Lisp expands your umwelt. You will start seeing things differently.

Lisp made me weird. Every day I say something like "Rabbits are machines for turning grass into rabbits" and my wife just rolls her eyes.


Oh jesus. I don't Lisp but I guess I should start now since I'm in that mindset already.


If you are a programmer, you are using [a subset of] Lisp already. Every single programming language that in use today was influenced by Lisp. Sadly, most of them dropped the main and arguably the most powerful feature of Lisp - homoiconicity.


Wow, that's a good example of recursive thinking!

([Rabbits], Grass) -> [Rabbits]


Thank you for introducing me to the term "umwelt". Over the past few years I've come to believe there's no such thing as objective reality at all—that it just feels that way when enough subjective viewers agree about what is true—and it's amazing to have a word for this for the first time.


Note that "Umwelt" is just the german word for "Environment" (or "Surrounding") - which actually fits in this context.


I was including the whole academic background around this usage that I can use as a conversation springboard, but thanks for teaching me a second thing today :)


willkommen auf Deutsch


" Emacs users are like Terry Pratchett’s Igors": https://chrisdone.com/posts/emacs-users-are-like-igor/


I knew they had an uncanny ability to show up out of nowhere as soon as someone mentions them.


Emacth?


To even be compared to anything related to Terry Pratchett is honor enough! And that's EYE-gor, thank you very much.


This comment almost reads like a joke.


Same. Ironically, recursion is one of the main features pioneered in Lisp.


I have a suspicion, which I have never verified, that the things that make emacs great are basically the things that made Lisp Machines great back when those were a thing - that emacs is best viewed as a Lisp Machine embedded in a modern operating system.

I never used a real Lisp Machine, but I'd love if someone who did can confirm this.


The closest thing to a Lisp machine you can get today is if you use Lisp based window manager. StumpWM or EXWM.


EXWM or StumpWM+Emacs, since the window managing bits are pretty small compared to other tasks (manipulating text of various sorts) that one would use Emacs for.


Lisp machines were indeed a whole other level. Everything integrated with everything. We're getting closer though with emacs in stumpwm and eaf. There's plenty of room for scope in extending stumpwm.


GNU Emacs is just an example of extensible Lisp software running on top of an operating system. Lisp software, which sometimes provide integrated IDE features. Other examples: Autocad and some other CAD systems, OpusModus ( https://opusmodus.com ), ... There are also other Emacs variants with a similar idea. The original Emacs variants which introduced the idea of a Lisp written extensible Editor were EINE/ZWEI on the Lisp Machine (written in Lisp Machine Lisp) and Multics Emacs (written in Maclisp for the Multics OS). There were and are a multitude of Lisp systems with integrated editor / IDE written in itself - the most elaborate examples are the commercial Lisp IDEs coming with Allegro CL and LispWorks.

GNU Emacs provides an application programming environment based on an editor-like paradigm (windows, text buffers, programmable modes, ...) and integration of external tools. This toolkit has then been used to implement its own IDE.

Most people haven't seen extensible Lisp-based software. For another example look at Smalltalk-based software, which also comes with its integrated development environment - which is largely written in Smalltalk itself.

Actual "Lisp Machines" differ from GNU Emacs in many ways: They were actually real computers: real hardware - sometimes even specialized hardware like the 36bit / 40bit tagged memory of Symbolics Lisp Machines - the machine used specialized memory cards for that. These systems had a Lisp Operating System covering all layers of the operating system and its applications. They provided an editor (often a variant of Emacs) as one application, but the user interface was mostly not based on text buffers in windows with modes. Historically most Lisp Machine software was written in rich Lisp dialects, often making heavy use of OOP.

There are a bunch of ways GNU Emacs talks to the surrounding operating system: direct calls to the OS, running external programs, connecting to external applications over the network via some protocol (an example would be the SLIME IDE for Common Lisp, which connects GNU Emacs to an external Lisp via a network connection), ... Some GNU Emacs applications can be largely implemented with internal functionality and occasional calls to the OS or other applications.

On a Lisp Machine (the ones which existed so far) everything runs inside a shared memory heap where most stuff is implemented in Lisp: process scheduler, network stacks, disk drivers, file system, printer drivers, graphics, user interface, other programming language compilers, ...

Summary: GNU Emacs shares a bunch of features with other extensible Lisp software, including the software side of Lisp Machines. GNU Emacs does not work or looks like actual historical Lisp Machine systems (MIT Lisp OS, Symbolics Genera, LMI / TI Lisp OS, Xerox Interlisp-D / Medley, ...) .


[flagged]


I have a job. But thank you for your concern.


[flagged]


Personal attacks will get you banned here. Please review https://news.ycombinator.com/newsguidelines.html and don't post like this again.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: