Guido van Rossum
๐ค SpeakerAppearances Over Time
Podcast Appearances
And I think that actually the founders of VS Code may not necessarily agree with me on this.
But to me, VS Code is, in a sense, the spiritual successor of Emacs.
Because as you probably know, as an old Emacs hack, the key part of Emacs is that it's mostly written in Lisp.
And that sort of new features of Emacs usually update all the Lisp packages and add new Lisp packages.
And oh yeah, there's also some very obscure thing improved in the part that's not in Lisp.
But that's usually not why you would upgrade to a new version of Emacs.
There's a core implementation that sort of can read a file and it can put bits on the screen and it can sort of manage memory and buffers.
And then what makes it an editor full of features is all the list packages.
And of course, the design of how the list packages interact with each other and with that sort of that base layer of the core immutable engine.
But almost everything in that core engine in Emacs case can still be overridden or replaced.
And so VS Code has a similar architecture where there is like,
a base engine that you have no control over.
I mean, it's open source, but nobody except the people who work on that part changes it much.
And it has sort of a package manager and a whole series of interfaces for packages and an additional series of conventions for how packages should interact with the lower layers and with each other.
And powerful primitive operations that let you...
move the cursor around or select pieces of text or delete pieces of text or interact with the keyboard and the mouse and whatever peripherals you have.
And so the sort of the extreme extensibility and the package ecosystem that you see in VS Code is a mirror of very similar architectural features in Emacs.
They're usually actually just specializations of IntelliJ because underneath it's all the same editing engine with different veneer on top.
Where in VS Code, many things you do require loading third-party extensions.
In PyCharm, it is possible to have third-party extensions, but it is a struggle to create one.