Macintosh Common Lisp is another one. It was so much fun to use and worked so well with MacOS. Echoing etchalon's comment, sometimes I miss OS 8 (also 9). https://en.wikipedia.org/wiki/Macintosh_Common_Lisp
Apple Dylan IDE (2014)
11–20 of 58 posts
Re: Apple Dylan IDE (2014)
#12Popularised (if we can call it popular!) by Charles Simonyi of Microsoft's fame who created the company called Intentional Software that was recently purchased by Microsoft.
There was interesting editor called Isomorf that demonstrates the benefits of a non-text-based editor.
(site is down https://isomorf.io/) (youtube demo https://www.youtube.com/watch?v=awDVuZQQWqQ)
I would really like to see something like this take off.
I firmly believe we can only unlock the next generation of software engineering by breaking free from plaintext. Think about it, how many more ASCII symbols can we mangle together to create meaning and context?
A structural editor takes all of that away. Suddenly syntax becomes a choice just like the colour theme of your editor.
Plaintext programming puts us into a fight with the computers because on one hand we need to keep the syntax parsable and on one hand humans need to read and write it.
It's a huge conflict of interest. You want to provide information to the compiler now the syntax becomes hard and complicated (rough example: Java). You want to keep the syntax human-friendly now the program becomes weak from the compiler's point of view (rough example: Python).
Our editors need to be context aware so they can hide/show relevant information and to encourage the people to provide as much information about the context/domain as possible.
If you look around you see we have been doing a lot of this stuff in the past decades but for some reason we just half-ass it by baking stuff on top of plaintext.
For example embedding documentation or even unit tests (python "doctests") in comment blocks in ad-hoc languages.
Or we embed naming conventions and so on to relate concepts with each other.
For example a "User.js" file and "User.spec.js" file for a test.
If we kept information in a structured manner suddenly so many of our problems would go away.
For example we will get structured version control. No need to have something like git tracking lines in files.
We will get unit testing that is always correctly tied to its relevant components.
We will get documentation that is structurally accurate. The editor could switch between programming and "documentation" mode. But the documentation would be a first-class object of the program not just some text that is shoved into it somewhere.
We will get much smarter re-factoring.
We will get much better compatibility across versions. Because there's no syntax to worry about breaking from a textual perspective. Because the program becomes a semantic tree and older programs can be "transformed" to fix them or make them compatible or something similar.
Because we are text-free the environment can encourage the programmer to provide a lot more information because it can get folded/hidden/etc.
The "units" will all have unique identifiers so confusion in naming and so on will be significantly reduced.
Perhaps you could create and publish modules/units in some central repository then use them in your projects. Kind of like NPM for example but a lot more structured.
So you could import a bunch of "units"/functions from someone else's catalogue.
Because everything could have metadata attached to it you could imagine for example "security advisories" could be attached to certain units such as a function and published.
The environment would know exactly in which places you are calling that exact function and it could alert you to the fact.
You could do semantic find and replace ("show me all sql queries", "show me all untested functions", "show me all functions modified by John Smith since last 14 days", "show me all undocumented functions", etc...).
You could do smarter CI/CD by way of defining rules and constraints on the structure of the program.
Made-up Examples: - If the changeset involves objects tagged with "security" require approval before deploy - If the changeset introduces new SQL queries ping the DBA team - If the changeset introduces more than 1 function without corresponding documentation show warning - If more than 50% of the new objects introduced in the changeset lack corresponding test cases fail the build - You get the idea..
The point is, all the cool stuff we'd like to do depends on us having a lot more structured information and context about our programs and a plaintext environment is not suitable and is hostile towards that.
Re: Apple Dylan IDE (2014)
#13In case people don't know, this is often referred to as a "projectional editor" and the paradigm is also known as "Intentional Programming" in the sense that the programming environment helps capture the intent of the authors. Popularised (if we can call it popular!) by Charles Simonyi of Microsoft's fame who created the company called Intentional Software that was recently purchased by Microsoft. There was interesti…
Re: Apple Dylan IDE (2014)
#14Macintosh Common Lisp is another one. It was so much fun to use and worked so well with MacOS. Echoing etchalon's comment, sometimes I miss OS 8 (also 9). https://en.wikipedia.org/wiki/Macintosh_Common_Lisp
Note that the Apple Dylan IDE is written mostly in Macintosh Common Lisp. Only its Interface Builder was written in Dylan, IIRC.
Re: Apple Dylan IDE (2014)
#15In case people don't know, this is often referred to as a "projectional editor" and the paradigm is also known as "Intentional Programming" in the sense that the programming environment helps capture the intent of the authors. Popularised (if we can call it popular!) by Charles Simonyi of Microsoft's fame who created the company called Intentional Software that was recently purchased by Microsoft. There was interesti…
It's not 'Intentional Programming', just because it uses a source object store and some browsers too.
The most defining element in it is the projectional editing of a structure.
That's why I said "the paradigm".
Re: Apple Dylan IDE (2014)
#16Earlier quoted context omitted.
Note that the Apple Dylan IDE is written mostly in Macintosh Common Lisp. Only its Interface Builder was written in Dylan, IIRC.
MCL had its own interface builder. Didn't Dylan just use MCL's?
Re: Apple Dylan IDE (2014)
#17Earlier quoted context omitted.
It's not 'Intentional Programming', just because it uses a source object store and some browsers too.
"Intentional Programming" doesn't have a very rigid definition. The most defining element in it is the projectional editing of a structure. That's why I said "the paradigm".
As you can see in the screen shots, it presented Dylan source code, but through a bunch of browsers, folding editors and navigation tools.
There is no 'intent' captured.
Re: Apple Dylan IDE (2014)
#18What I like the most is the abstraction-away from plaintext source files. Imagine a C and C++ IDE that hid the (often ugly) source files from you put only exposed individual function definitions - it could automatically keep header files in-sync, for example, and automatically place each free-function or class member in the right file without manual refactoring. (I still think it's outrageous that C is still a single…
http://lighttable.com/2012/04/12/light-table-a-new-ide-conce...
Re: Apple Dylan IDE (2014)
#19Earlier quoted context omitted.
"Intentional Programming" doesn't have a very rigid definition. The most defining element in it is the projectional editing of a structure. That's why I said "the paradigm".
Why should it be 'projectional editing'? All you see in Apple Dylan is a bunch of browsers/editors, conceptually similar to what a Smalltalk or Interlisp IDE did, but with a different UI. As you can see in the screen shots, it presented Dylan source code, but through a bunch of browsers, folding editors and navigation tools. There is no 'intent' captured.
"This also illustrates a key feature of the Apple Dylan TR: every part of your source code was not just text in a text file, it was a separate object in an object database. This gave the IDE incredible power, because meta-data about each object could be maintained to facilitate browsing via a variety of relationships and views, but less-than-optimal implementation may have been responsible for some of the performance problems of the Technology Release."
Having the program as an object stored in database with metadata and editing/browsing it with an editor is intentional software as far as I'm concerned (Simonyi's definition has nuances and extra constraints I know).
It's not like there are so many of these around that we have to categorise and differentiate them anyway. They are very few of them around so for now as far as I'm concerned they all go in the same bucket of "things that attempt to break away from plaintext" in my view.
Re: Apple Dylan IDE (2014)
#20Some days, I still miss OS 8.