Dan Ingalls said ‘the operating system is everything that doesn’t fit in the language, it shouldn’t exist’, which tells you the Smalltalk view. I think this attitude was the main reason that Smalltalk failed: successful languages are the ones that play well with others.
I’d phrase it as ‘the operating system is the everything that should be shared by multiple languages’ and with that framing I want my language runtime to be the small thing.
Per gabriel, success as measured via popularity need not correlate with actual quality.
And there are much more coherent ways to allow one programming language to coexist with another. For example, compilation. Take javascript and the web as a moderately good example of this (far be it from me to hold up the web as an examplar of good design, but it serves to illustrate the point).
A mistake unix people too often make is to assume that unix is capable of being unopinionated, or that it does not restrict the scope of programs or programming languages that can run on it. (Curiously enough, people who do not know common lisp very well tend to say the same of it.) With enough effort, and compromised performance, you can achieve a great deal; but 1) despite recent efforts to the contrary (such as io_uring), you do sacrifice performance; 2) when you build your system in this fashion, you no longer interoperate with unix, and would lose nought by ceding from it; in this respect, you are not really a unix program and do not playing with others.
The author did a talk at Strange Loop 2014 on the subject.
I never really figured out if people wanted their programming languages to be the kernel or the userspace or both.
Dan Ingalls said ‘the operating system is everything that doesn’t fit in the language, it shouldn’t exist’, which tells you the Smalltalk view. I think this attitude was the main reason that Smalltalk failed: successful languages are the ones that play well with others.
I’d phrase it as ‘the operating system is the everything that should be shared by multiple languages’ and with that framing I want my language runtime to be the small thing.
Have fun with your domain of shadows.
Per gabriel, success as measured via popularity need not correlate with actual quality.
And there are much more coherent ways to allow one programming language to coexist with another. For example, compilation. Take javascript and the web as a moderately good example of this (far be it from me to hold up the web as an examplar of good design, but it serves to illustrate the point).
A mistake unix people too often make is to assume that unix is capable of being unopinionated, or that it does not restrict the scope of programs or programming languages that can run on it. (Curiously enough, people who do not know common lisp very well tend to say the same of it.) With enough effort, and compromised performance, you can achieve a great deal; but 1) despite recent efforts to the contrary (such as io_uring), you do sacrifice performance; 2) when you build your system in this fashion, you no longer interoperate with unix, and would lose nought by ceding from it; in this respect, you are not really a unix program and do not playing with others.
This looks quite interesting and worthwhile, even as “just” a thought experiment.