Discussion:
Source code für Original sh
(zu alt für eine Antwort)
Thomas Koenig
2017-05-07 20:47:06 UTC
Permalink
Raw Message
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut. "Interessanter" Stil, würde ich sagen.

Ausschnitt aus expand.c:

/* check for meta chars */
BEGIN
REG BOOL slash; slash=0;
WHILE !fngchar(*cs)
DO IF *cs++==0
THEN IF rflg ANDF slash THEN break; ELSE return(0) FI
ELIF *cs=='/'
THEN slash++;
FI
OD
END

Wäre mir nicht unbedingt aufgefallen, dass das C ist. Aber
dafür gibt es ja den Präprozessor :-)
Thomas Koenig
2017-05-07 20:49:16 UTC
Permalink
Raw Message
Post by Thomas Koenig
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut.
Bevor die Nachfragen kommen:

http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh
Sven Mascheck
2017-09-25 11:44:41 UTC
Permalink
Raw Message
[followupto dcous]
Post by Thomas Koenig
Post by Thomas Koenig
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut.
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh
Wenn man am Source interessiert ist, dann ist es zu einem Executable
nicht weit. Geoff Collyer [1] und Nikola Vladov [2] haben ports gemacht,
die auf aktuellen Systemen uebersetzt werden koennen. Nikolas Variante
ist etwas naeher am Original, Geoff hat ein paar Kleinigkeiten modernisiert.

[1] http://www.collyer.net/who/geoff/ ,
https://web.archive.org/web/*/http://riemann.fmi.uni-sofia.bg/sh/
[2] riemann.fmi.uni-sofia.bg/sh/
--
https://www.in-ulm.de/~mascheck/bourne/#source
Rainer Weikusat
2017-05-07 21:49:25 UTC
Permalink
Raw Message
Post by Thomas Koenig
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut. "Interessanter" Stil, würde ich sagen.
/* check for meta chars */
BEGIN
REG BOOL slash; slash=0;
WHILE !fngchar(*cs)
DO IF *cs++==0
THEN IF rflg ANDF slash THEN break; ELSE return(0) FI
ELIF *cs=='/'
THEN slash++;
FI
OD
END
Wäre mir nicht unbedingt aufgefallen, dass das C ist. Aber
dafür gibt es ja den Präprozessor :-)
Vermutlich das einzige tatsaechlich benutzte Programm, das jemals in
Agol 68 gescrhieben wurde :->.
Peter J. Holzer
2017-05-08 06:23:59 UTC
Permalink
Raw Message
["Followup-To:" header set to de.comp.lang.c.]
Post by Thomas Koenig
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut. "Interessanter" Stil, würde ich sagen.
/* check for meta chars */
BEGIN
REG BOOL slash; slash=0;
WHILE !fngchar(*cs)
DO IF *cs++==0
THEN IF rflg ANDF slash THEN break; ELSE return(0) FI
ELIF *cs=='/'
THEN slash++;
FI
OD
END
Wäre mir nicht unbedingt aufgefallen, dass das C ist. Aber
dafür gibt es ja den Präprozessor :-)
Algol-Fans wird das ja im Kapitel über den C-Präprozessor in K&R I
vorgeschlagen ;-)

Aber ja, die Bourne Shell ist bekannt dafür. Auch für ein paar andere
"interessante" Techniken. So wurde z.B. eine Art lazy malloc
implementiert, indem einfach im Signal-Handler für SIGSEGV (s)brk
aufgerufen wurde.

hp
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
J***@fokus.fraunhofer.de
2017-05-10 08:53:48 UTC
Permalink
Raw Message
Post by Peter J. Holzer
["Followup-To:" header set to de.comp.lang.c.]
Algol-Fans wird das ja im Kapitel über den C-Präprozessor in K&R I
vorgeschlagen ;-)
Aber ja, die Bourne Shell ist bekannt dafür. Auch für ein paar andere
*** war ***

Der Bourne Shell wurde spätestens um 1984 de-Algolisiert.

Das geschah einmal durch David Korn um 1982 und zum Anderen um 1984 mit der
Erweiterung für SysV.

Möglicherweise wurde aber auch schon durch Sun im Jahre 1982 als man den Bourne
Shell auf dem defekten Motorola MC68000 zum Laufen bringen mußte, der sich bei
Execptions bei:

*p1++ = *p2++

nicht genügend Microstatus aufhob um die Instruktion sauber weiterlaufen zu
lassen.
--
EMail:***@schily.net (home) Jörg Schilling D-13353 Berlin
***@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/
Volker Borchert
2017-05-10 20:00:00 UTC
Permalink
Raw Message
Post by J***@fokus.fraunhofer.de
Möglicherweise wurde aber auch schon durch Sun im Jahre 1982 als man den Bourne
Shell auf dem defekten Motorola MC68000 zum Laufen bringen mußte, der sich bei
*p1++ = *p2++
nicht genügend Microstatus aufhob um die Instruktion sauber weiterlaufen zu
lassen.
Naja, für VM sollte man halt den (vermutlich saftig teureren und/oder
(noch) nicht (in Stückzahlen) verfügbaren) 68010 verwenden. Immer nach
dem Motto: Wer nicht zahlen will, muß leiden. Oder so.
--
"I'm a doctor, not a mechanic." Dr Leonard McCoy <***@ncc1701.starfleet.fed>
"I'm a mechanic, not a doctor." Volker Borchert <***@despammed.com>
Peter J. Holzer
2017-05-13 13:37:44 UTC
Permalink
Raw Message
[XP und Fup2 de.comp.sys.misc]
Post by Volker Borchert
Post by J***@fokus.fraunhofer.de
Möglicherweise wurde aber auch schon durch Sun im Jahre 1982 als man
den Bourne Shell auf dem defekten Motorola MC68000 zum Laufen bringen
*p1++ = *p2++
nicht genügend Microstatus aufhob um die Instruktion sauber
weiterlaufen zu lassen.
Naja, für VM sollte man halt den (vermutlich saftig teureren und/oder
(noch) nicht (in Stückzahlen) verfügbaren) 68010 verwenden.
Noch nicht verfügbar glaube ich. Insofern konnte man den gar nicht
verwenden. Es gab ja für den 68000 auch eine MMU, aber das Zusammenspiel
der beiden hat nicht ganz funktioniert. IIRC hat Sun damals eine eigene
MMU entwickelt, die mit dem 68000 gemeinsam funktioniert hat.

hp
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
J***@fokus.fraunhofer.de
2017-05-15 12:51:16 UTC
Permalink
Raw Message
Post by Volker Borchert
Post by J***@fokus.fraunhofer.de
Möglicherweise wurde aber auch schon durch Sun im Jahre 1982 als man den Bourne
Shell auf dem defekten Motorola MC68000 zum Laufen bringen mußte, der sich bei
*p1++ = *p2++
nicht genügend Microstatus aufhob um die Instruktion sauber weiterlaufen zu
lassen.
Naja, für VM sollte man halt den (vermutlich saftig teureren und/oder
(noch) nicht (in Stückzahlen) verfügbaren) 68010 verwenden. Immer nach
dem Motto: Wer nicht zahlen will, muß leiden. Oder so.
Nun, den 68010 gab es erst 2 jahre später.
--
EMail:***@schily.net (home) Jörg Schilling D-13353 Berlin
***@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/
Peter J. Holzer
2017-05-13 13:39:47 UTC
Permalink
Raw Message
["Followup-To:" header set to de.comp.lang.c.]
Post by J***@fokus.fraunhofer.de
Post by Peter J. Holzer
Algol-Fans wird das ja im Kapitel über den C-Präprozessor in K&R I
vorgeschlagen ;-)
Aber ja, die Bourne Shell ist bekannt dafür. Auch für ein paar andere
*** war ***
Der Bourne Shell wurde spätestens um 1984 de-Algolisiert.
Manche Leute kennen auch historische Fakten.

hp
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
Thomas Jahns
2017-05-08 08:51:02 UTC
Permalink
Raw Message
Post by Thomas Koenig
Ich habe mir mal ein bisschen den Quellcode für die V7 Bourne Shell
angeschaut. "Interessanter" Stil, würde ich sagen.
/* check for meta chars */
BEGIN
REG BOOL slash; slash=0;
WHILE !fngchar(*cs)
DO IF *cs++==0
THEN IF rflg ANDF slash THEN break; ELSE return(0) FI
ELIF *cs=='/'
THEN slash++;
FI
OD
END
Wäre mir nicht unbedingt aufgefallen, dass das C ist. Aber
dafür gibt es ja den Präprozessor :-)
Darüber hatte sich van der Linden in "Deep C Secrets" einmal schön beschwert,
weil alle Bug-Reports zur Shell auf seinem Tisch landeten. Da versteht man schon
eher, warum er als nächstes an einer Bondage&Discipline Sprache wie Java
gearbeitet hat. Ich bin nicht sicher ob das ein Argument für oder gegen
Sprachentwickler ist, die schon viele Programme von anderen Entwicklern debuggen
"durften".

Thomas
Jens Kallup
2017-09-23 20:03:43 UTC
Permalink
Raw Message
die schon viele Programme von anderen Entwicklern debuggen "durften".
ja genau, vor allem solche Programme, die Bytecode verwenden
und einen Compiler haben, der sporadisch dazu Bytecode erzeugt
und kein GC kann.

Jens
Loading...