9 ms·
The Origin of Emacs in 1976
- ggm 2y agoOn FreeBSD /usr/ports/editors/teco still works if you want to try your name and $ to see what awesome edit happens (my name starting with g I think means its g(lobally) applied) Interesting to see '76 email formats had To: and CC: but not Subject: and Date: info was rolled into what now we might call the Envelope, projected into the header. I used EMAS and Vax/VMS based email in '79 which was sufficiently second-system to have a standard to implement against and Type:Value was in, with Date: and Subject:
- Blackthorn 2y agoAlso if anyone wants to dip your toes into teco, we're sufficiently full circle that there's an emacs implementation of it you can use! https://github.com/mtk/teco https://github.com/mtk/teco
- ggm 2y agoIt's emulated turtles all the way down.
- gumby 2y agoI used to use meta-altmode (a non-ascii key on the KTV) to enter the minibuffer (note: not the region under the mode line) that accepted raw TECO and interpreted it directly. And to be more extreme: you could actually write small assembly routines and run them in the registers (the first 20 addresses in the PDP-10 address space were the registers — super fast bc they were implemented with semiconductors rather than core!). That was hardcore and I only did it once or twice, just for fun.
- Blackthorn 2y agoI'd love to learn enough TECO to be able to do exactly that with Emacs's teco mode. I do it with ex (through viper) all the time. At this point I wonder if my brain has ossified to the point that it's incapable of learning a new language syntax.
- gumby 2y agoHave you ever seen TECO? It barely has syntax — it looks like line noise. Would you want to run the local assembly language (x86 or ARM) or are you thinking of also doing this with a PDP-10 emulator? Either way, this would be rather cool.
- anyfoo 2y agoIt’s a bit trite to call out the next nesting step, but in this particular case I’d really like to see original TECO emacs running in modern emacs TECO.
- whartung 2y agoMy Pooh brain, especially today, goes into cognitive overload trying to keep track of an invisible point in a character based text editor. Line editors are much less of a problem. In these I typically did not insert text in the middle of a line, I simply changed/substituted text in the middle of the line. This helps maintain context in contrast to moving a point around. Fortunately, my TECO exposure was mostly tempered through VTedit, a screen oriented macro set for TECO on the PDP. Couldn’t escape it completely, but it helped reduce the load in my challenged, tiny brain. By the time I moved to VMS, they had switched to EDT. Much more accessible.
- ggm 2y agoYea, I walked into the SOS room day one of my degree and so learned SOS and Pascal instead of LISP and TECO. I do sometimes think I chose the wrong room. But your point about the point is well made, I think the DEC-10 TECO had a way to draw the current line and show where the point was, but it was very inferior to have to do it. Like chess wizards you're meant to carry an image of the code in your head at all times. I tried teco, couldn't entirely cope. SOS led naturally to ed in due course. I did learn emacs, But never really took to it. Now, I run my daily work log in org mode and do nothing else in it, but it is very good as a massively over-engineered multi-window table editor. Charles Forsyth (York) wrote a macro for ed which took the point, redrew the 24 line vt00 display to show the lines around it (12 above 11 below) and put you back where you were. He said it made ed as good as vi, and on the baudrate of the day who am I to disagree?
- whartung 2y agoOn the Cyber running NOS, we had XEDIT. And similar to your story, I routinely dumped 10 lines of context after each change. Whatever that command was, was hard coded into muscle memory to the point it was mostly automatic. The other nice feature was that you could do quick in place edits from the command line. Combination of ed and sed. Another aspect that impacted TECO on the PDP was the concept of paging the file in. The machine was limited enough that you as a user were responsible for swapping parts of the buffer in and out, which, while usable, was not a good user experience. When loading a large file TECO/vtedit would prompt “loading file xxx.yyy slowly”. And it was. In the labs, my friend and I would commandeer multiple terminals, with one of them being our file loaded in the editor. We’d constantly write the file out, but never exit. And by “large file”, I’m talking a 35K byte source file. It was a different time, to be sure.
- deleted 2y ago[deleted]
- lkrubner 2y agoAbout this: To: CBF at MIT-AI, EAK at MIT-AI, ED at MIT-AI, MOON ay MIT-AI Does anyone know if this is literally how they wrote email addresses in 1976? Instead of using the @ symbol they typed the word "at"? I realize this was before DNS was invented, so I am not surprised by the lack of TLD.
- gumby 2y agoWow, I know all those people on that recipient list! Yes, “ at “ was still in use. ISTR typing ‘@‘ but this was a long time ago (I didn’t get to the AI lab until ‘78 by when EMACS was well entrenched). This was pre TCP, pre RFC 733, pre DNS etc. I don’t remember if mail already had its own transport or if mail was still a special mode of the FTP protocol. I think that was still being argued over.
- hibbelig 2y agoUUCP?
- kragen 2y agomit-ai was running its, not unix, and there wasn't even a port of unix to the pdp-10 at the time. moreover uucp addresses are of the form host!user rather than user@host
- ForOldHack 2y agoIt was more of host_route!hop2!hop3!etc!user, You kept a list of routes on your terminal. Here is a very early map of the routers. https://groups.google.com/g/net.general/c/u1dxxNcTIX0/m/mHMWbCVJZswJ https://groups.google.com/g/net.general/c/u1dxxNcTIX0/m/mHMW...
- kragen 2y agoyeah, eventually, but in 01976 uucp was just getting started. even in 01978 i don't think they had a well-defined network map, though they said uucp already connected over 100 unix machines in the 7th edition manual. that post is from 01981 unfortunately 'show original message' is grayed out, so i can't actually see the map
- zombiwoof 2y agoI had always thought James Gosling helped create Emacs with Guy
- neonscribe 2y agoGosling created a Unix clone of the PDP-10 Emacs in 1981, about five years later.
- deleted 2y ago[deleted]
- zombiwoof 2y agoAh cool! Thanks for clarifying that for me
- kragen 2y agomultics emacs and lisp-machine emacs also predated gosmacs, which drew a lot of features from them, most notably being scripted in lisp (though gosmacs's lisp was a pathetic sort of thing called 'mocklisp')
- lispm 2y agoMultics Emacs and the Lisp Machine EINE/ZWEI/ZMACS were also implemented in Lisp, they did not use an embedded scripting Lisp implementation. There is no boundary between an implementation and scriptling language, just one Lisp (Maclisp for Multics Emacs and Lisp Machine Lisp (aka ZetaLisp) for EINE/ZWEI/ZMACS), which in the case of the Lisp Machine also was used to implement the rest of the operating system and all its applications.
- jhbadger 2y agoFor a similar situation today, there is the editor lem which is an Emacs-clone written in Common Lisp (and whose extension language is also Common Lisp).
- jhallenworld 2y agoThe TECO version of EMACS is always a kick to look at, here is the dired code: http://pdp-10.trailing-edge.com/mit_emacs_170_teco_1220/01/emacs/new-dired.emacs.html http://pdp-10.trailing-edge.com/mit_emacs_170_teco_1220/01/e... From this we can conclude that humans do not need any nice things like programming languages, assemblers or compilers to program effectively.
- throwanem 2y agoWhat's that weird APL derivative called that quants love so much? Julia? Reminds me a little of that, in the syntax at least. A little like MUMPS, too, maybe, and probably closer to that level in terms of its abstractions.
- mjaniczek 2y agoYou probably mean K. J is also up there, but more educational and less "let's make some money".
- cmrdporcupine 2y agoJulia != J. Or K. Or anything like either of those. It's not an array language. It's a very readable language that anybody who knows Python etc could understand and has nothing to do with any of this. EDIT: LOL, downvotes why?
- Blackthorn 2y agoDownvotes are because the person you are replying to was talking about J, not Julia.
- cmrdporcupine 2y agoBeh. The first person said Julia (wrong). Then the reply assumed that parent meant J, but did not correct parent about Julia, leaving the misconception in place. Which I clarified.
- SoftTalker 2y agoI'm nearly 60 years old. I used emacs in school and I still use it every day today. Along with the unix shells and utility commands, I can't think of any other software I've consistenty used for all those years. They really did it right with that stuff. Back in those days, csh was more popular as an interactive shell. sh was used more for scripting. At least that's what I recall. bash didn't exist yet.
- sien 2y agoIt's really remarkable just how durable the unix command line, emacs, vi have been. From monochrome terminals to the latest (Android at least) phones you can still pull up a terminal and edit like it's 1984. Even on Windows with Cygwin. If you had to bet on a technology still being there 40 years from now it would surely be that.
- jerodsanto 2y agoWow! I'm putting together a podcast about emacs and I'd love to talk to you about your experience for it. Please contact jerod@changelog.com if you're interested.
- awahab92 2y agowould it be a bad idea to rewrite the emacsLisp interpreter and other OS parts in a multi-core friendly language like preferably GO but rust would work too? my reasoning is that it would add another 100 years to the shelf life of emacs. its good enough i dont have any reason to switch, but if the single threaded perf i s still a bottleneck in 5 years i'd probably switch to ZED.
- ankitrgadiya 2y agoGNU Guile implementation already supports Emacs Lisp. But I believe having Emacs Lisp implementation is still far from being proper Emacs. https://www.gnu.org/software/guile/manual/html_node/Emacs-Lisp.html https://www.gnu.org/software/guile/manual/html_node/Emacs-Li...
- mjul 2y agoHave a look at remacs (an experimental Rust port of emacs, now discontinued) [1] and its successor, emacs-ng (also in Rust) [2] I haven’t followed closely, but I am sure there are som valuable lessons learned there that would answer your question. [1] https://github.com/remacs/remacs https://github.com/remacs/remacs [2] https://emacs-ng.github.io/emacs-ng/ https://emacs-ng.github.io/emacs-ng/
- sneed_chucker 2y agoIs there any point in learning emacs in 2024? I know vi/vim pretty well, but I've never bothered with emacs much since the multi key stroke navigation just seems so unergonomic to me.
- xenodium 2y agoYes. Learn a bit of elisp and it becomes super fun. I often glue all sorts of things with it and post at https://lmno.lol/alvaro https://lmno.lol/alvaro - https://lmno.lol/alvaro/native-emacsmacos-ux-integrations-via-swift-modules https://lmno.lol/alvaro/native-emacsmacos-ux-integrations-vi... - https://lmno.lol/alvaro/building-your-own-bookmark-launcher https://lmno.lol/alvaro/building-your-own-bookmark-launcher - https://lmno.lol/alvaro/emacs-quick-kill-process https://lmno.lol/alvaro/emacs-quick-kill-process - https://lmno.lol/alvaro/emacs-utilities-for-your-os https://lmno.lol/alvaro/emacs-utilities-for-your-os - https://lmno.lol/alvaro/ob-swiftui-updates https://lmno.lol/alvaro/ob-swiftui-updates - https://lmno.lol/alvaro/emacs-connect-my-bluetooth-speaker https://lmno.lol/alvaro/emacs-connect-my-bluetooth-speaker - https://lmno.lol/alvaro/hey-emacs-change-the-default-macos-app-for https://lmno.lol/alvaro/hey-emacs-change-the-default-macos-a... - https://lmno.lol/alvaro/emacs-open-with-macos-app https://lmno.lol/alvaro/emacs-open-with-macos-app - https://lmno.lol/alvaro/emacs-rotate-my-macos-display https://lmno.lol/alvaro/emacs-rotate-my-macos-display - https://lmno.lol/alvaro/emacs-searchplay-music-macos https://lmno.lol/alvaro/emacs-searchplay-music-macos