Languages: Difference between revisions

118 bytes removed ,  2 years ago
m
→‎Warning: Fixed grammar / flow
[unchecked revision][unchecked revision]
m (→‎Warning: Fixed grammar / flow)
 
(3 intermediate revisions by 3 users not shown)
Line 9:
== Warning ==
 
Not all languages are suited for low-level system programming{{which}},. Some have no suitable low-level development tools available, or require specific runtime support, a-- problemproblems C does not suffer from. Also, the vast majority of OS related resources (like tutorials, and how-to examples, including this wiki) assume C as the primary development language, so an OS developer should at least be able to read C code.
 
Using a language other than C entails a good deal of extra effort. But there are [[Alta Lang |some developers]] who are willing to put in that effort in order to suit the development of their OSes to their ways of thinking (for example: [https://en.wikipedia.org/wiki/Programming_paradigm programming paradigms]).
Line 42:
This is a red herring. There is no such thing as an "interpreted language". Any language can be implemented using either an interpreter or a compiler; and even in an OS project, there are forms of 'interpretation' which can nevertheless by applied to system operations.
 
You may from time to time hear of operating systems written in languages which are usually interpreted, or which used an interpreter of some sort: JavaOS, [http://en.wikipedia.org/wiki/Genera_%28operating_system%29 Genera] (the Symbolics Lisp Machine OS), Pilot-OS (the system for the [https://en.wikipedia.org/wiki/Xerox_AltoXerox_Star Xerox Alto] and [https://en.wikipedia.org/wiki/Xerox_Star Star] workstationsworkstation, written mostly in Smalltalk-80the Mesa language), UCSD Pascal, the various Forth systems, etc. Most of these fall into one of three categories :
* The operating system runs in a low-level interpreter, written in Assembly or some systems language like C, which is what actually interacts with the hardware. In effect, the 'operating system' is just an application running on top of another, lower-level OS. Pilot-OS, UCSD Pascal, and some Java OSes work like this, though they also have some modules which are compiled to native code as well (see below).
 
Line 50:
* The system ran on specialized hardware and microcode, which acted as hardwired 'interpreter' for it's primary language, or for the portable bytecode which it normally used. This type of system includes the SOAR (Smalltalk On A RISC), the Recursiv System, The Lillith Modula-2 System, and the Burroughs 6500 (a mainframe designed for running Algol-60 in the 1960s). The system programming techniques for these cannot work on stock hardware. For example:
** The '''[http://en.wikipedia.org/wiki/MIT_CADR MIT CADR] Lisp machine architecture''' had an extensive instruction set with hardware support for certain high-level operations such as type-tag checking and GC. It had a [http://en.wikipedia.org/wiki/Tagged_architecture tagged architecture] meaning that a portion of the 36-bit addressing word was designated for type information. Typically these machines had a variety of compilers including one for the system language Lisp which was capable of taking advantage of the additional instruction set.
** The '''Rekursiv Single-Board Computer''' had hardware support for a writable instruction set (that is, you could dynamically add microcode instructions) and associative memory dispatch tables for supporting object-oriented programming]https:// prefixwww.khanacademy.org/computing/computer-programming/.
[[Category:Languages]]
[[Category:OS Development]]
Anonymous user