Programming Languages Will Become OSes 461
Anonymous Coward writes "A couple of months ago, at the Lightweight Languages Workshop 2002, Matthew Flat made a premise in his talk: Operating systems and programming languages are the same thing (at least 'mathematically speaking'). I find this interesting and has a lot of truth in it. Both OS and PL are platforms on which other programs run. Both are virtualizing machines. Both make it easier for people to write applications (by providing API, abstractions, frameworks, etc.)"
Programming languages become OSes? (Score:5, Funny)
Re:Programming languages become OSes? (Score:5, Interesting)
The original IBM PC's would start up with ROM BASIC if no other OS was present.
Actually (Score:4, Interesting)
Oberon anybody? (Score:5, Informative)
Re:Oberon anybody? (Score:5, Informative)
Although, Oberon is not the past. It's still being actively developed, in both it's OS and PL incarnation.
TRS-80 (Score:2, Interesting)
Use Emacs (Score:5, Funny)
Re:Use Emacs (Score:5, Funny)
Re:Use Emacs (Score:5, Funny)
With Emacs, you really NEED psychiatric help! (Score:3, Funny)
But if you use VIM, you won't need psychiatric help, whereas with Emacs, of course you do, so of course it provides it. ;-)
Re:Use Emacs (Score:5, Funny)
Emacs: It's a nice OS, but to compete with
Linux or Windows it needs a better text
editor. - Alexander Duscheleit
Re:Use Emacs (Score:2)
*less* bloated OS (Score:4, Funny)
Yes, be we want OSs to get LESS bloated, not more.
Re:Use Emacs (Score:2)
Re:Use Emacs (Score:3, Interesting)
It's actually pretty easy to migrate your email to another client because Emacs will happily create mbox files. Fire up info on GNUS and read the bit about "Incorporating Old Mail" and simply do it in reverse.
The short but sweet synopsis is that you enter the group that you want to export, type 'M P b' to process mark all article, and then type 'B r' to respool those articles. When it asks for the backend to use choose 'nnmbox'.
Don't forget to make backups of your email first (I have had problems with really large groups).
As a side note have you tried some of the Vi-emulation modes in Emacs. Vim is pretty good stuff, but it doesn't do everything that Emacs does. Vi-style keystrokes on top of Emacs is the best of both worlds (IMHO).
Re:Use Emacs (Score:3, Informative)
Assuming you are on a Linux box with Emacs (and info) properly installed you might be able to simply type 'info viper'. The info file included with viper is pretty darn good.
Or you can just start up Emacs and type M-x viper-mode. viper-mode has a start-up message that is pretty handy, it should get you started without too much trouble. If you set the viper-expert-level variable low enough Emacs will act just like vi.
If you are really interested in using Emacs, however, I would suggest learning to use Emacs' built in info browser. There is a ton of functionality built into Emacs that is not immediately apparent. I have been using Emacs for years now, and I still find amazing new functionality on a regular basis. Time spent reading the documentation will pay for itself quickly.
Happened before... (Score:5, Insightful)
Re:Happened before... (Score:5, Interesting)
The bulk of his argument is sound and has convincing precedent in the examples you give(Micro, Spectrum, etc.) and I could add a few of my own, not to mention the modern example of Java. As for his ad hoc specualtion at the end that programming languages will eventually replace OSes. I'm prepared to call that bullshit until he presents some evidence. I don't see it happening, who wants to code on a machine that can only use one language?
Of course, the response is that new language will be written to run inside the OS-Language and that coders can work in either these sub-languages or the OS-level meta-language. But really how would this be any different than the current situation with many languages vs. assembler as meta-language only with an additional obfuscating level of go-between.
my two cents.
Re:Happened before... (Score:4, Insightful)
The Feds. They've done it before (Ada) and, I'm sure, wouldn't mind doing it again.
Re:Happened before... (Score:4, Insightful)
if people want to use the machine (or OS), but don't like the language it understands, they will build translators from whatever made up language they like to the language the machine does understand (i.e. compilers and virtual machines).
Re:Happened before... (Score:3, Interesting)
There are excellent reasons to go this route though. While I'm definitely no Microsoft lover, I do think .net is pretty cool. Even if figuring out what they mean by that is more than a tad confusing.
Of course in practice the distinction between language and OS has always been somewhat blurry. Take Unix. At what point to you separate Perl, gcc, and the shell from the OS? In a way, in the older versions of Unix it was even more pronounced. Using LaTex involved many shell scripts and custom programs and even writing in it was in effect programming.
Even early versions of LISP were their own OS and one could argue that UCSD Pascal was as well. (Especially the version for the old Apple II)
So this is hardly a new thing. The only time I think we can truly make an OS - language distinction is when people start trying to make languages portable and make it used for development. The move to do everything in C for all platforms in the late 80's is a great example of this. This lead to many companies using C instead of Pascal for development and also pushed ANSI C and then the C++ standards. Class libraries tended to be quite separate from the language. However lets be honest. All of this was more of a short blip in the history of languages rather than the typical situation.
Even going back to "prehistoric" times, when people wrote Fortran code with punch cards could they tell what was the program and what was the OS easily?
Parrot (Score:3, Interesting)
Python, Ruby were considered important add ons
Java allows the Parrot VM to be the main VM
The Basics were ported as a test of porting a language that Parrot was not designed to support (i.e. a test of how good a generic VM it is)
Really? (Score:5, Insightful)
A single machine could have multiple languages co-existing for different tasks. Some of these tasks require quick and dirty scripting, some require high performance and some other application programs might concentrate on object oriented features and such.
The operating system, on the other hand, is typically only one per machine and performance and stability might be the major considerations (other than compatibility with the popular applications around!)
Re:Really? (Score:2)
The operating system, on the other hand, is typically only one per machine and performance and stability might be the major considerations (other than compatibility with the popular applications around!)
I disagree with you there, and I think you didn't think that through yourself. Currently mainstream OSs are designed and optimized for common case. But as we already see, we have demands like Real Time, high throughput and good interactivity that aren't really met by main-stream OS.
A lot of people have been asking that such decisions would be left tunable in linux for example. Last fall during the quest for high throughput and all those db benchmarks resulted in extremely POOR desktop feel. Software compilation in another window jammed your editor for example, which for a desktop developer is something you never want to be face to face with. Even now the only way to achieve good feel with 2.4 is to buy more memory and turn off swap all together.
Naturally that nullifies all the benefits that the "clever" mm does for throughput in linux.
(for the record 2.5 behave a lot better)
In any case the language selection like you said is alread taking place also with OSes. Neither Linux nor Windows is suitable for hard real time for example.
Re:Really? (Score:2)
Re:Really? (Score:4, Funny)
A lot of comments that are being made here seem a little funny to me
Ahem. That's because they're jokes.
Re:Really? (Score:3, Funny)
"A joke.. is a story with a humorous climax?"
Re:Really? (Score:2, Interesting)
Re:Really? (Score:3, Interesting)
Just as quite a few computers 'round here have multiple OS's installed.
On this machine, I currently have 2 different installs of Linux, and one of Win2000. They are used for different things; one of the Linux instances is for my desktop machine - customisation, and my 'feel' is important. Another is for testing/playing with, while the windows install is for any apps I need which still aren't around on linux (practually none that I use these days actually).
I'd suggest that this kind of arrangement is analogous to having differnt languages for different purposes, and is quite common amongst computer hobbyists.
I'd also hope that performance, stablity/security and compatibility are important criteria when selecting programming languages as well as OS's!
- Chris
Amusing... (Score:2)
C64 (Score:2, Funny)
what I want (Score:2)
Re:what I want (Score:2, Informative)
Re:what I want (Score:2)
Email me if you need help. And you will.
Also, a PDF on code generation [imatix.com] that may enlighten.
Behind the times? (Score:4, Informative)
great... (Score:2)
Shittier than Luna, that is...
And all this time (Score:4, Funny)
-Peter
Re:And all this time (Score:2)
Bah (Score:4, Insightful)
OSes and programming languages have some superficial features in common, but they are totally different concepts. This is so manifestly obvious that I'm not even sure how to argue the point.
However, Mr. Flat's suggestion that languages need better isolation capabilities is a good one. It all goes back to Fred Brooks' point that one in ten programmers is a superstar. I think isolation facilities in a programming language allow the superstar to set the rules that the other nine programmers must follow, making the system more coherent by the guidance of one mind.
Isolation capabilities... (Score:2, Insightful)
So what Mr Flat is really saying is that he hasn't looked at Eiffel, Ada, OCL or any design by contract work.
This really is a bizarre article that most first year students would get marked down for.
Re:Bah (Score:2)
Your lack of ability to argue it kinda shows how you were also unable to see the similarities.
Naturally they're not the same thing, but they have a lot more things in common than "superficial features".
The interface that an OS offers is exactly the same as with languages, i.e. system calls. Granted that there's no lexical syntax involved, but there's a shit load of rules how you must use them, just any other API out there.
There'd be a ton more to say, about PL intermediate representations and functional binary programs within an os etc. But I'll just say that try remember what Turing et al taught us of computing theory. Where the HW is a turing machine so is an OS.
And I also disagree with the mythical man-month remark. The other nine should have their license to code revoked.
FORTH (Score:4, Interesting)
Re:FORTH (Score:2)
I was going to say 'And FORTH people have known this for how many years?'
I remember writing a VM with Kernel-like memory paging in Miller FORTH on a TRS 80 mdl 1 back in the old days.
FORTH is the greatest, if you can handle it.
Re:FORTH (Score:2)
Re:FORTH (Score:2)
Forth is hard, very hard, but like assembly can be very, very fast. And is excellent for embedded systems....I mean, it was originally designed to control radio telescopes!
ttyl
Farrell
Re:FORTH (Score:3, Interesting)
I don't think the typing battle is anywhere near over. After C/C++ and Jave the 3rd most popular language on
That's why MS is so afraid of Java (Score:3, Insightful)
Exactly (Score:4, Insightful)
Why, yes, this was what I was missing all along! (Score:2, Funny)
Yet I shall take this wisdom even further: the digital universe is based upon everything being opposite, where you have everything and nothing.
That's deep, man.
don't think so (Score:4, Insightful)
For one the wall between OS space and user space is there for a good reason (security) and second different people like to use different languages, and you'll lose a good part of your developers by forcing them into the straightjacket of a single language for a certain os.
it's been tried before (smalltalk, java) and failed, for these and a whole bunch of other reasons.
Re:don't think so (Score:2)
re-implementing all kinds of languages in other languages usually comes at a pretty high performance hit (there always is some cross compiler for machines like that but everybody that is serious about them programs them native).
Even the java virtual machine is a forth engine at heart.
An os will always be written in some language or other, but if you think you have a virus / security issue now wait until what happens when you blur the lines further.
Note that NONE of these hybrids has ever been used in a hostile environment like the internet, unless they were running on some other os.
Idealism (Score:3, Insightful)
This is especially true of the VM languages (Score:4, Interesting)
The 2008 Operating System Review (Score:4, Funny)
C OS - Every single task you want to achieve has to be split into fifty bite size actions.
COBOL OS - The literati's dream OS! No longer must you click and drag, but instead type bizarrely syntaxed English to do your work! PROGRAM OPEN CALCULATOR AS NEW PROGRAM
Perl OS - An open source OS worked on by a bunch of extremely crazy (but clever) bearded anoraks. You can do EVERYTHING in one click or one line of code. Oh, face it, it's just the future of Linux.
PHP OS - This OS was originally the shell for Perl OS, but some wimps who couldn't work out the Perl way of doing things decided to turn it into their own 'paint by numbers' OS. Unfortunately you can only access the Internet with PHP OS, no off-line facilities are available.
C++ OS - A simple upgrade to C OS. Still just as complicated, but the ++ makes it cooler to use and adds a host of useless features that are non standard across all implementations. Besides, C OS is for old fogeys.
Python OS - Supposedly this exists, but since no-one cares, we won't go into it.
Ruby OS - EVERYTHING is an object. Want to open your calculator app? calculator.open; please. Need to enter some numbers? calculator.buttons[8].press; It's long, tedious, but at least it makes logical sense.
BASIC OS - Joe six pack's answer to operating systems. This is Microsoft XP in the future. Anything can be done with point and click, but it's slow, crashes a lot, and is totally lame. Oh, I'm already talking about XP here aren't I?
Addendum (Score:5, Funny)
Java OS - True object orientation meets platform-independent code. Boot once, run it on anything. However, it takes 10 seconds alone to start each application's virtual machine. Early benchmarks indicate cold program starts of the Mozilla browser approaching the 60 minute mark on a dual Pentium system. Future benchmarks are planned and will be measured using a sun dial.
Re:The 2008 Operating System Review (Score:2)
Sounds like SQL OS...
Ditto with, say, bash. Given bash, sed, awk, and netcat one can do pretty much anything at the prompt. Oh, and bash is already the present of Linux.
I've been using PHP in command-line mode for quite some time; I don't know what you're talking about.
True that!
Python is a serious language, though it has some 'features' I find irksome (whitespace as syntax element), it is nonetheless quite powerful and is actually used in the real world.
Funny he did not mention .NET (Score:3, Interesting)
And Java is half an OS already, it has its own threading moodel, has memory management etc. Though frankly I believe this paradigm of PLs becoming OSes will be first be seen on handhelds etc. Note that many Cellphones run Java etc. (though now sybian is more commoon).
Re:Funny he did not mention .NET (Score:2)
Re:Funny he did not mention .NET (Score:4, Insightful)
Of course the other reason MS might be pushing .NET so much is the money they stand to make off of the hundreds of books they've written on the subject.
Note that .NET is not a programming language (and I've already seen it used this way in this thread). .NET is a platform (the CLI is like the Java VM) and a framework (the class libraries) but it's not a language. C# is a .NET language, VB.NET is a .NET language, (language).NET is a language, but .NET isn't a language.
Tip: If you ever ask someone what they're writing their app/web site in and they say ".NET" and can't say anything else (like C# or ASP.net) then they don't know what they're talking about (and I should know - I used to do it myself).
Sounds familiar (Score:2)
Microsoft Basic is Microsoft Windows!
*louder*
Microsoft Basic is Microsoft Windows!
*shouting at top of lungs*
Microsoft Basic is Microsoft Windows!
Sure, the distinction is artificial/arbitrary... (Score:5, Interesting)
A few decades ago, MANY environments blurred the distinction between OS and language: FORTH, MUMPS, SMALLTALK, and, indeed, most early versions of BASIC, to name four.
The traditional textbook discussion of an OS ("provides four interfaces, to the filesystem, to devices, to applications, and to users") is just a discussion of what IBM evolved in the sixties or thereabouts.
Incidentally, the very name "operating system" indicates the original rationale and function of these pieces of software. They were intended to automate the functions that previously required the manual services of an "operator," thus increasing utilization and decreasing payroll.
Another example of the arbitrariness of the term "OS" is the way in which various applications programs are now considered to somehow be part of the OS. In Digital's glory days, these were sometimes referred to as "CUSPS"--Commonly Used System Programs. Is grep "part" of UNIX? Is Windows Explorer (not Internet Explorer, but Windows Explorer--the application that displays directory contents and that "start" button at the bottom of your screen--Windows' graphical "shell") part of Windows?
At one point Apple said Hypercard was "systems software." Perhaps iTunes is "part of" OS X?
Re:Sure, the distinction is artificial/arbitrary.. (Score:5, Insightful)
Same with Windows Explorer. The "My Computer" icon is part of Windows' operating environment. You can, believe it or not, use Windows without using Explorer (using the command line or a replacement shell like LiteStep). Windows just isn't designed or intended to have its core components replaced so easily. I think there was a court case about it... Anyhow, I used to run Windows NT with just cmd.exe as the shell, which was fun for a few weeks, figuring out how to set control panels from the shell. With cywin & GINA installed, you could put a nearly complete UNIX face on NT and still be able to run Win32 apps.
Sun is one the only companies I've seen distinguish between an OS and OE. They used to (still?) call it the Solaris Operating Environment, with the SunOS kernel as the underlying OS. The truth is nobody cares. _My_ eyes are glazing over just writing about this. My sincerest condolences to your disintigrating brain. But on the bright side, without the ambiguous use of technical terms, slashdot readers would have a lot less to argue about, and this site would degrade into a competitive festival of increasingly embarrassing personal confessions on sex, drug use, music, government secrets, scams, circumventing the law, satire, and other boring stuff like they have kuro5hin. If we should be so lucky.
good programs act as an os (Score:4, Troll)
Functional relations (Score:2)
Re:Functional relations (Score:2)
Re:Functional relations (Score:2)
It isn't neither functional nor relational.
Re:Functional relations (Score:2)
Re:Functional relations (Score:2)
That should be possible by running GNU SmallTalk as a GNU Hurd server.
etlinux: Linux + TCL (Score:2)
This might in fact be your daddy's Linux: 2.0 kernel, and the TCL is a very-stripped-down one. Why? Reduced resource requirements: it'll run on a 386sx with 2M ram and 2M disk/flash!
More features:
- embedded cgi-capable WEB server
- a telnet server
- an email server, with the ability to execute commands sent by email from a remote site
- CORBA support
- easy-to-use remote file management
- a flexible package selection scheme, allowing an easy customization of the system
- source code available for every component
In other news (Score:3, Funny)
Both are required for the succesful opperation of a car. Each require steel in their construction for structural reinforcement. In a pinch, and with a little engineering, theoretically one could be used to replace the other.
But most striking in their simularities: Both are round.
Bad Titles..! (Score:2, Interesting)
All of his examples, the bulk of the paper, are examples of how the RUNTIME system restricts the PL. He talks about the runtime system security model and somehow this is supposed to extend to the definition of the programming language? No, this is not how it works. The runtime system, the sandbox or whatever you call it, is a restriction defined seperatly from the language itself. The JVM is defined seperatly from the Java language. That's why products like JET exist that can compile Java code to something other then bytecode. Because the runtime enviroment is not defined in the language. You don't have to have a security manager, like in perl, you don't have to support a trusted mode in your perl runtime. It's a feature of the runtime, not the language.
The runtime, by definition is like a mini-OS. Usually, a vm runtime (for perl, java, python, etc...) takes non-native instructions, parses them and translates them into some sort of binary instruction. Since there is no processor that can execute perl natively, this is how it works.
Neat idea, bad paper.
Confusion (Score:5, Interesting)
Systems architecture (and to a certain extent application architecture) revolves around creating "environments" where other applications operate, (note emphasis). Architectures provide services to these applications, which in turn may provide different services to yet more applications (components, web-based solutions, etc.). Thus you can argue that by sitting down and designing and implementing a specific or generic purpose architecture, you're creating a "mini-OS". That much is true. But the OS is simply a lower-level architecture than, say, Java or COM or .NET. It's a more complicated and extensive one, but one nonetheless. The stuff you do with a programming language (or as they like to be called these days - platforms) is essentially a higher-level abstraction than the real OS happens to be.
So we can argue then that we're moving towards the platform concept where things are interconnected via well-defined interfaces and entry points (that's your APIs) where the OS itself is just another component.
I'd like to point out... (Score:4, Interesting)
The truly wise path to go is to define an OS/bytecode combination, so that (in a very LISP-like way) security is accomplished by "thought-controlling" programs rather than action-controlling (the MS/Linux model).
What I want to know is this: Is the LISP bytecode the best, or should a more modern one be used? JavaVM?
Oh, God no! (Score:2)
Bleah. Count me out.
What happened to the idea of modularity? Programming languages shouldn't be OSes. They should have access to a modular interface to different OS elements. But now, "modern" languages include all kinds of crap, like GUI code, that should be kept in nice, modular libraries. You know, so that you, the coder have choice.
Interpreted languages maybe... (Score:2)
However, compiled languages are fundamentally dissimilar to OSes, because the compiler is not needed to run the program once it's compiled. Your OS is not as easily dispensed with!
no, they won't (Score:5, Insightful)
The best attempt at isolation at the language level is probably Java. The internal security architecture is rather complicated. And even after half a dozen years, Java still does not provide anything like "ulimit" and I wouldn't trust it to isolate arbitrary code within the same VM.
Cringley agrees; run windows on Linux (Score:2)
Not langs, Database! (Score:2)
This is more database territory than language territory it seems to me. I see too many applications that reinvent the database from scratch or using wimpy, tangled array thingies. If you don't like database API's or features, and that is why so many of you reinvent your own, then lets look at DB API's and languages (includind SQL) and fix them.
IBM's AS/400 allegedly uses a RDBMS for many of its OS functionality, I would note. I have not used it extensively, but it usually gets high praises from techies who have.
Perhaps these "OS's are really X" arguments are ridiculous, but a database is as good a candidate as anything.
The two lines summary (Score:4, Insightful)
At LL2 Matthew Flat posed that, while OS's and programming languages both support application development, by providing libraries of function calls, their difference in focus fundamentaly sets them appart. OS's focus on isolation of code, for security and for stability. Programming languages focus on cooperation, and try to maximize code reuse and efficiency.
Basicaly, OS hacker and the PL hacker have alot to learn from each each other. They would win at from cross-pollination between the two fields. Matthew then proceeded to show his implementation of what operating system concepts would look like in a programming language, by demoing DrScheme [drscheme.org], a programming environment which can run (and debug) itself recursively.
OS==Library (Score:2)
Hey, computers are the future!!! (Score:2)
The remarkable thing is how people have accepted OSes that do not work like programming languages: MS-DOS and its Windows brood being the most common examples, though many other firms have produced non-programmable (and non-abstractable) OSes in the past: IBM OS/400 being one wonderful example that still gets the Pavlovian juices flowing. Brrrrr.
The question is not about "mathematical identity". If that's all that matters, I can say that people will eventually become sweet corn. We are, after all, mathematically identical at many levels: consider the structure of living cells or organic molecules.
The question is how we build and use tools to hide and digest complexity. We program by creating models. Models encapsulate complexity. Can the OS do the same? If so, it's a programming language. Does it impose a single static designer model? If so, it's a crippled OS.
Doesn't anyone remember PICK? (Score:3, Interesting)
that they are equivalent dosn't mean they'll merge (Score:2)
Besides a programming language does something that an OS is never supposed to do, make things human writable (and hopefully readable). Back in the days of DOS you could say people coded to the OS as much as the PL (especially if you were talking about writing ASM) but today they are vastly different.
Another difference is that the OS does it's job in real time, while a PL doesn't need to.
If you want to say that programming 'environments' like the Standard Template Lib, the JVM,
Safety and Efficiency (Score:2, Interesting)
PerlOS:\ (Score:2)
Seems silly to me. I agree that there could be an interesting use for a high-level language that is completly independent upon the underlying OS or be the OS, but I don't think the languages he discusses are going to work.
Perl is a scripting language that is a bastardized version of every other language. I love perl, so don't think I am bashing Perl. It does a great job at what it does, but making it secure enough to run a multi-user OS is crazy. Look at how strange it does object-oriented stuff, it's ugly. I just think retrofiting a language to do something that it was not ever designed to do is wrong.
If you want a high-level language that is the OS and also the language you write user applications in, you better create a new language. Java is the closest I have come across that could run as an OS.
Start from the ground up and build a high-level language that handles, printing, DNS, user authentication, the file system, and every other thing the current OSes handle now as well as provide a kick ass development environment for application programmers.
Some day we probably will have a language that can do everything but it won't be Perl, or will it?
A Microprocessor *IS* a language Interpreter (Score:3, Insightful)
Re:A Microprocessor *IS* a language Interpreter (Score:3, Interesting)
Seems too many people forget that "rooms, walls and controlled openings" are a good idea. The bigger the building the more important they become. Sure you can have one huge room and put everything in it, but you'll end up partitioning it anyway. And even then either you resort to separate rooms or accept that the furnishings and decorations will be inconsistent within a room.
Me: One man's impedance mismatch is another man's layer of abstraction.
It's more likely that someone will add yet another type of "room" than for things to merge together.
Lucent did a virtual OS - Inferno (Score:3, Interesting)
It was a project started before Java and shares many of it's aims but went that one step futher by retaining the concept of an OS where you can read and write files etc.
Dennis Ritchie talks about Inferno and other things [linuxfocus.org]
What a load of BS! (Score:3, Interesting)
The article is an act of mental masturbation, and typically for such acts it takes one property of the unfortunate subject of such "research" and builds a whole theory based on it, regardless of its relevance and applicability.
Languages are supposed to be designed to allow a programmer to express the implementation of his design. The OS design is supposed to give the program implemented by a programmer means to perform various actions that the programs may need. Between those two things there are libraries that include implementations of various procedures that programs perform.
This clearly separates what is the environment common for all programs and carries no application programmer's ideas at all, what is designed specifically to be used by a programmer for his specific purpose, and what lies in between, and may be close to the specifics of application (say, SDL) or to be an interface to the OS (libc).
In this way VMs are OS-like components that run over the OS, and the fact that many VMs are tied to their languages does not mean that this is a good design. In my opinion the fact that there are ties between OS and language beyond straightforward "OS is written in a language" and "language operates within an OS" are what I call "noosphere pollution". It's true that many people when they develop a new OS or language want to make "The Grestest Program Ever" and spill their ideas into areas where they do not belong. This is at best misguided attempt to coerce others into their model of thinking, at worst an attempt to create a system so closed and convoluted inside that no one ever will be able to affect it, leaving the initial developer the only "true expert" in the area. And unless that developer has influence of Microsoft or at least Sun, usually the response is "Screw you, and your giant blob of code!" because it's not possible that developers will happen to agree with every single idea developed by a single person, or a small group of them, even if most of those ideas are sane (do you hear me, Pike?).
Good (or semi-good) operating systems are designed with a very clear separation between themselves and languages that are used. Nothing required Unix to be separate from C, yet if one looks at the system calls interface and libc he will see nothing that can tie the two together like siamese twins -- there is no builtin type in C that corresponds to any Unix internal structure -- no directories, files, sockets, inodes, etc, all those things are represented by language-neutral and OS-neutral integers, and only libc makes actual OS-specific primitives visible for the programmer. This is why Unix is used with many languages, and C is used with many OS, or without any OS at all.
This demonstrates the strength of the C and Unix designs, authors were confident enough that their ideas can stand on their own so they didn't add any hidden (and not-so-hidden) strings to trap the user in a messy OS-language symbiotic monster.
Later people started making giant libraries that LOOK like OS libraries but are tied to some environment that has nothing to do with OS, and tied to a language that they can't be separated from. This was a step back -- it wouldn't if those libraries were more modular, but one glance at monstrosity like MFC gives an idea how much Microsoft wanted "to rule them all". But no, that wasn't enough -- languages with ridiculously large and complex VMs, totally inaccessible from anything but themselves appeared, imitating the behavior of interpreted languages. Java, now C#, I am sure there will be more of this. But there is a difference -- perl has to have a complex interface inside because it is an interpreter and can't just call OS. Java chosen to have an interface deliberately different from anything else, and to build VM and libraries that implement the ideas of its creators and nothing else. And of course, control freak Microsoft didn't make anyone wait before it made its own version -- with some lip service about "multiple languages" that looks like "multiple languages as long as they have Microsoft object model rammed into the middle of them, or it will be a pure hell to use".
So IMO the "siamese twins" designs are inferior to clearly defined and well-designed interfaces, and are the realm of hacks and control freaks -- with some exceptions for interpreters and things like Forth that are specifically designed not to scale beyond systems where any full-blown OS is too much (Forth developers may take it as an insult, but I believe that it's a good thing that such a closed system stops scaling where its applicability ends).
If you wait long enough .... (Score:3, Insightful)
On the IBM System/3 in the later 60's and early 70's, the RPG/II compiler generted a binary that was booted onto bare iron to run. (If you were really down-scale, like I was, the compiler was a bootable 4-foot deck of punch cards and the result was a freshly punched deck of cards that was itself bootable.) This included the code for both the "program" -- the business logic -- and the "operating system" that allowed the program to control card reader, printer, and disk drive.
On the IBM 1401, people had decks of program cards that did specialized things, like control the printer; you added them to your program. I'm sure Goldstein and von Neumann had something similar.
What I wonder sometimes, though, is whether this repetition of the same old idea, generation by generation, proves that "computer science" is essentially a dead topic?
The application becomes the shell (Score:5, Funny)
You are in a directory, there are many files here. A path leads to the the south and down labeled Mydocuments.
> look
There are files here labeled read.me, config.sys and autoexec.bat. A path leads to the the south labeled Mydocuments.
> take read.me
taken.
> kill read.me
You smite the file labeled read.me and it crunbles to dust.
There are files here labeled config.sys and autoexec.bat. A path leads to the the south labeled Mydocuments.
> South
You move through the passage and reach the grand chamber of Mydocuments. There are many files here. Passages lead further south and down labeled Mymusic and Mypr0n. To the north is a passage leading up......
Throwback (Score:3, Interesting)
Re:Well I think.... (Score:3, Funny)
Re:Smalltalk as OS (Score:5, Insightful)
Smalltalk was originally the entire system on the original hardware. Indeed, Dan Ingalls said back then (paraphrasing, I don't have the exact quote handy) "An operating system is a collection of things that don't fit into a programming language. There shouldn't be one".
The reality of commercial machines caused those of us interested in using Smalltalk to accept the limitations (and it must be said, benefits) of OSs. Even so, there have been several occasions where an attempt has be made to use Smalltalk as the entire system: the Active Book and the Momenta machines for example and more recently the Interval Research MediaPad (where the RTOS was written in Smalltalk).
These days I'd be inclined to 'soften' Dan's statement to something like "An OS is a collection of things underneath the language. There shouldn't be any way to tell the difference". That is to say, the language ought to be able to make full use of anything available without having to burden the programmer with wierd crap.
Re:Lisp (Score:2)
Re:Lisp (Score:2, Informative)
The point is not that the code to a Lisp compiler is anything like the code to an operating system; rather, it is that each advanced programming language provides its own set of high-level abstractions for what are traditionally OS-level services.
Re:JavaOS (Score:2, Informative)
Re:Punch Card Systems (Score:2)
I suppose that one could look at the article at hand in terms of whether or not punch cards contain linguistical features (language support) or systemic features (operations support).
As such, I'm not all that sure that the method of transfering information from a punch card was/is the same as decision making operations utilized by the machine itself.
Call me crazy, if you will, but it seems to be a text/context dichotomy to me, where one cannot have a PL without an OS, and vice versa. That is, they go hand-in-hand, and each are somewhat inherrent in the definition of the other.
But I'm no computer scientist... =)
Re:For fuck sakes (Score:2)
Too bad it'd be really, really slow. There's a reason database servers use binary formats -- you don't have to do any string processing to do a lookup on a table given an integer primary key. And, in most cases, you know exactly how long each row is, so you can go to an arbitrary row by performing an fseek(row * row_len).
If you're not bent on the rather dumb idea of eliminating binary formats, you sould check out what some other people have already thought of. Check out the future of ReiserFS [namesys.com] and the "filesystem as database" concept.
Re:Going Forth? (Score:4, Informative)
What is the standard C library except an API specification to an OS?
Standard C library is not a standard library of C language for Unix, it's a standard library of the Unix system that is used with C language (and every other language on Unix). Of course, for applications portability purpose it was ported to other systems, however it's still not really a part of the language design -- say, variable arguments list is a part of C design, but [v[s[n]]]printf strictly speaking isn't.