Forum: Compiler & IDEs Was hat es mit den 'trigraphs' aufsich


von Kaj (Gast)


Lesenswert?

Hallo Leute,

diese Codezeile
1
if( !strcmp("???!!!", test_array) )
loest folgende warnung aus:
1
trigraph ??! ignored, use -trigraphs to enable [-Wtrigraphs]

Commpiler: GCC 4.8.3, -std=gnu99 -Wall -Wextra

Soweit ich durch kurzes bemuehen der suchmaschine meines vertrauens 
herausfinden konnte, gibt es da irgendwie 9 Sequenzen, die durch den 
Praeprozessor ersetzt werden.
1
 The nine trigraphs and their replacements are
2
3
Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
4
Replacement:      [    ]    {    }    #    \    ^    |    ~

mit dem Flag -std=c99 kommt die Warnung:
1
trigraph ??! converted to | [-Wtrigraphs]

Was hat es jetzt aber genau damit auf sich?
Warum gibt es diese Sequenzen, und fuer was benutzt man diese?

Gruesse

von Karl H. (kbuchegg)


Lesenswert?

Kaj schrieb:

> Warum gibt es diese Sequenzen, und fuer was benutzt man diese?

Hostorische Ursachen.
Such mal auf einem Fernschreiber von 1960 die Zeichen '{' bzw. all die 
anderen auf der Tastatur.
Als Computer noch klimatisierte Räume füllten, von Menschen in weißen 
Kitteln bedient wurden und mehr gekostet haben als das Budget einer 
Kleinstadt im Jahr ausmacht, hat man genommen was da war. Fernschreiber 
als Ein-/Ausgabeeinheit waren verfügbar und mit ihnen kriegte man auf 
einfache Art und Weise eine Tastatur und ein Druckwerk 'von der Stange', 
ohne dass die Computerschmieden für die 5 Computer, die sie im Jahr 
verkauft haben auch noch hier feinmechanische Sonderanfertigungen machen 
mussten.

: Bearbeitet durch User
von Florian S. (flst78)


Lesenswert?

Diese wurden eingeführt, damit man auch auf Rechnern, die einen 
eingeschränkten Zeichensatz besitzen (z.B. kein "}") C++ programme 
schreiben kann. Füge einfach -Wno-trigraphs in Deinen Compileraufruf ein 
und mach Dir darüber keine Gedanken mehr ;-) Das ist noch ein 
Überbleibsel aus der Zeit als es noch 6 und 7-Bit Terminals gab. Es gibt 
auch noch Digraphs.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Florian S. schrieb:
> C++ programme schreiben kann

Zu dem Zeitpunkt, als C++ ins Leben gerufen worden ist, dürften
Trigraphs bereits ziemlich bedeutungslos gewesen sein.

Kaj schrieb:
> strcmp("???!!!"

Generell sollte man sich natürlich überlegen, welchen Sinn eine
derartige Anhäufung von Interpunktionen hat.

von Kaj (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Kaj schrieb:
>> strcmp("???!!!"
>
> Generell sollte man sich natürlich überlegen, welchen Sinn eine
> derartige Anhäufung von Interpunktionen hat.
Das stimmt natuerlich, ohne frage. Mir ist zu dem Zeitpunkt aber kein 
besserer Test-String eingefallen ^^
Das diese wilde, unsinnige zeichenfolge jedoch eine (wenn auch 
historische) bedeutung haben koennte,... naja, wer soll denn auf sowas 
kommen? :)
Wir sind hier ja schliesslich nicht bei wuensch-dir-was ;)


Ansonsten:
Vielen Dank fuer eure Antworten. :)

Gruesse

von Yalu X. (yalu) (Moderator)


Lesenswert?

Schon witzig, dass jemand durch reinen Zufall auf die Trigraphs stößt
:-)

Karl Heinz schrieb:
> Such mal auf einem Fernschreiber von 1960 die Zeichen '{' bzw. all die
> anderen auf der Tastatur.

So weit muss man gar nicht zurückgehen: Noch in der zweiten Hälfte der
80er Jahre arbeitete ich an IBM 3270 Terminals, denen einige der in C
benötigten Sonderzeichen (insbesondere die eckigen und geschweiften
Klammern) fehlten. Normalerweise programmierte ich dort ausschließlich
in Fortran, wo das nicht stört. Als ich aber eines Tages mein frisch
gelerntes C ausprobieren wollte, wusste ich wenigstens sofort, wozu der
Trigraphs-Abschnitt im K&R gut war ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> IBM 3270 Terminals

Wenn es nicht jemand mit derartiger Marktmacht gewesen wäre (erinnert
sich noch jemand an diese Firma? ;-), dann hätten die Dinger vermutlich
auch nie Einzug in irgendeinen Standard gehalten.

von Florian S. (flst78)


Lesenswert?

Jörg Wunsch schrieb:
> Florian S. schrieb:
>> C++ programme schreiben kann
>
> Zu dem Zeitpunkt, als C++ ins Leben gerufen worden ist, dürften
> Trigraphs bereits ziemlich bedeutungslos gewesen sein.

Das ist richtig, ich meinte auch C.
Muß hier (Arbeit) andauernd zwischen C und C++ wechseln, da kommt man 
schon mal durcheinander. ;-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Jörg Wunsch schrieb:
> Wenn es nicht jemand mit derartiger Marktmacht gewesen wäre (erinnert
> sich noch jemand an diese Firma? ;-), dann hätten die Dinger vermutlich
> auch nie Einzug in irgendeinen Standard gehalten.

Ja, IBM war lange Zeit die Computerfirma, die für sehr vieles in der
Computerindustrie die Richtung vorgab. Mittlerweile habe sie diesen
Status verloren und niemand interessiert sich heute mehr für die damals
gesetzten De-facto-Standards.

Wirklich niemand?

Nicht ganz: IBM selbst hält immer noch eisernst an ihren damaligen
Standards fest.

So gibt es bspw. die EBCDIC-Zeichencodierung, der ursprünglich die
eckigen und geschweiften Klammern fehlten, auf den aktuellen Mainframes
(System z mit dem Betriebssystem z/OS) immer noch, konkurriert aber
immer mehr mit dem in anderen IBM-Produkten verwendeten ASCII-Code:

  http://www-03.ibm.com/systems/z/os/zos/features/unix/bpxa1p03.html

Die fehlenden Klammern sind zwar mittlerweile in Form von Codepages in
die Zeichencodierung integriert, liegen aber je nach Codepage an völlig
unterschiedlichen Positionen:

  http://de.wikipedia.org/wiki/Extended_Binary_Coded_Decimals_Interchange_Code

Selbst für C-Quellcode, der nur auf einer einzigen Architektur (nämlich
IBM System z) unter nur einem einzigen Betriebssystem (nämlich z/OS)
genutzt werden soll, kann es wegen der unterschiedlichen Codepages also
ratsam zu sein, Trigraphs zu verwenden.


Jörg Wunsch schrieb:
> Zu dem Zeitpunkt, als C++ ins Leben gerufen worden ist, dürften
> Trigraphs bereits ziemlich bedeutungslos gewesen sein.

Da ist IBM aber ganz anderer Meinung :-o

Im ISO-Gremium für C++ wurde schon darüber diskutiert, die Triqraphs
allmählich abzuschaffen. Hier ist der "Comment on Proposed Trigraph
Deprecation" von IBM Kanada im C++-Standard.

  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2910.pdf

Wenn ich das so lese, bekomme ich fast ein schlechtes Gewissen darüber,
dass ich selber (wohl als einziger auf der ganzen Welt) keine
Trigraphs benutze ;-)

: Bearbeitet durch Moderator
von Markus F. (mfro)


Lesenswert?

Muß das geklackert haben (Model M Keyboard), als die das geschrieben 
haben... ;)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Wenn ich das so lese, bekomme ich fast ein schlechtes Gewissen darüber,
> dass ich selber (wohl als einziger auf der ganzen Welt) keine
> Trigraphs benutze ;-)

Ja.  Ich frage mich, wie du deinen Code dann jemals IBM in einer
codepage-neutralen EBCDIC-Variante anbieten können willst. :-))

von Daniel A. (daniel-a)


Lesenswert?

Beim C-String "???!!" Muss jedes fragezeichen escaped werden: "\?\?\?!!"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Daniel A. schrieb:
> Beim C-String "???!!" Muss jedes fragezeichen escaped werden: "\?\?\?!!"

Es genügt auch, "??" "?!!!" zu schreiben.  Funktioniert allerdings
nicht innerhalb von #include, also sollte man besser keine Dateinamen
mit zwei Fragezeichen starten lassen. ;-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ein Backslash nur vor dem zweiten oder nur vor dem dritten Fragezeichen
genügt auch schon, um den ungewollten Trigraph aufzubrechen. Also
1
"?\??!!!"

oder
1
"??\?!!!"

Ein Softwareentwicklung bei IBM würde das so schreiben:
1
"???/??!!!"

oder so:
1
"????/?!!!"

Es ist aber natürlich auch kein Fehler, alle drei Fragezeichen zu
escapen. Das sieht dann bei IBM so aus:
1
"??/???/???/?!!!"

;-)

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Yalu X. schrieb:
> Das sieht dann bei IBM so aus:
>
>
1
> "??/???/???/?!!!"
2
>

Und jetzt soll mir noch einmal einer kommen und über die Syntax von Perl 
motzen!

;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael Reinelt schrieb:
> Und jetzt soll mir noch einmal einer kommen und über die Syntax von Perl
> motzen!

Tja, wäre Perl (oder Python) bei IBM entstanden, dann hätten sie
bestimmt auch Trigraphs. :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Witzigerweise kommt von IBM auch die Sprache APL, deren Syntax Unmengen
von Sonderzeichen enthält, die weder in ASCII noch in EBCDIC vorhanden
sind. Da waren sie sich nicht zu schade, nicht nur eine eigene Codepage
in EBCDIC zu schaffen, sondern sogar spezielle Tastaturen zu bauen:

  http://en.wikipedia.org/wiki/APL_%28codepage%29

von Kaj (Gast)


Lesenswert?

Das ist ja der Knaller, was man hier so fuer Geschichten zu lesen 
bekommt. Hut ab, fuer alle, die sich noch an sowas erinnern :) Finde ich 
super spannend.

Yalu X. schrieb:
> Es ist aber natürlich auch kein Fehler, alle drei Fragezeichen zu
> escapen. Das sieht dann bei IBM so aus:
> "??/???/???/?!!!"
>
> ;-)
So muss BrainF**k entstanden sein, anders kann ich mir das nicht 
erklaeren :D
http://de.wikipedia.org/wiki/Brainfuck

Yalu X. schrieb:
> Witzigerweise kommt von IBM auch die Sprache APL, deren Syntax Unmengen
> von Sonderzeichen enthält, die weder in ASCII noch in EBCDIC vorhanden
> sind. Da waren sie sich nicht zu schade, nicht nur eine eigene Codepage
> in EBCDIC zu schaffen, sondern sogar spezielle Tastaturen zu bauen:
>
>   http://en.wikipedia.org/wiki/APL_%28codepage%29
Weiss jemand was die bei IBM geraucht haben? Muss echt super sein das 
Zeug :D

Jörg Wunsch schrieb:
> (erinnert sich noch jemand an diese Firma? ;-)
Mir ist IBM eigentlich nur wegen der ThinkPads ein begriff.
IBM scheint da ja aber so einiges verbrochen zu haben, nicht nur gutes 
(wie die ThinkPads).

von (prx) A. K. (prx)


Lesenswert?

Kaj schrieb:
> Weiss jemand was die bei IBM geraucht haben? Muss echt super sein das
> Zeug :D

Gibt schön kompakte Programme. Die in wenigen Zeilen erledigen, wozu 
COBOL ein Buch füllt. Um mal in die Extreme zu gehen. Solche Programme 
zu lesen ist jedoch eine ganz eigene Erfahrung. ;-)

Kannst du dich noch vage an mathematische oder physikalische Formeln 
erinnern? In denen mittlerweile wohl auch Zeichen aus babylonischer 
Keilschrift genutzt werden, nachdem die griechischen längst aufgebraucht 
sind. Daher kommt das. APL ist näher an der Mathematik, als jede andere 
Sprache.

Meinereiner hat an einer APL Kugelkopfschreibmaschine programmieren 
gelernt. Da programmiert man im Kopf, nicht auf dem Bildschirm.

: Bearbeitet durch User
von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Kaj schrieb:
> Mir ist IBM eigentlich nur wegen der ThinkPads ein begriff.
> IBM scheint da ja aber so einiges verbrochen zu haben, nicht nur gutes
> (wie die ThinkPads).

Wenn du mal so richtig das Kopfwackeln mit anschließendem freiwilligen 
Aufschlagen des Kopfes auf den Tisch üben willst, sieh dir z.B. die 
Technik an, mit der IBM Terminals anbindet (IBM 3270), oder 
Plattenspeicher.

Auf der anderen Seite, IBMs Maschinen zur Lochkartenerstellung (IBM 029) 
und -verarbeitung (Sortierer, etc.) sind beeindruckend.

von Kaj (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> also sollte man besser keine Dateinamen
> mit zwei Fragezeichen starten lassen. ;-)
Das hab ich gerade mal versucht: Ist gar nicht so einfach, da windows so 
ohne weiteres keine Sonderzeichen wie ?,!, usw. im Dateinamen zulaesst. 
Unter Linux geht das schon eher, aber auch da gibt es ein paar kleinere 
hindernisse mit Sonderzeichen im Dateinamen :D

Hannes Jaeger schrieb:
> Wenn du mal so richtig das Kopfwackeln mit anschließendem freiwilligen
> Aufschlagen des Kopfes auf den Tisch üben willst, sieh dir z.B. die
> Technik an, mit der IBM Terminals anbindet (IBM 3270), oder
> Plattenspeicher.
Werd ich mir gleich mal anschauen :)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Kaj schrieb:
> Jörg Wunsch schrieb:
>> (erinnert sich noch jemand an diese Firma? ;-)
> Mir ist IBM eigentlich nur wegen der ThinkPads ein begriff.

In der breiten Öffentlichkeit wurde IBM vor allem durch den IBM PC, den
Urvater aller heutigen Desktop-PC mit x86-Prozessor:

  http://de.wikipedia.org/wiki/IBM_Personal_Computer

Ohne diesen wären heute sowohl Intel als auch Microsoft vermutlich nur
kleine Lichter oder überhaupt nicht mehr existent.

Hannes Jaeger schrieb:
> Wenn du mal so richtig das Kopfwackeln mit anschließendem freiwilligen
> Aufschlagen des Kopfes auf den Tisch üben willst, sieh dir z.B. die
> Technik an, mit der IBM Terminals anbindet (IBM 3270), oder
> Plattenspeicher.

Die Technik der Terminals und die Kommunikationsprotokolle waren
eigentlich gar nicht so blöd, nur eben IBM-spezifisch und anders als der
Rest der Welt :)

Sie waren darauf ausgelegt, von einem einzelnen, für heutige
Verhältnisse schwachbrüstigen Mainframe über eine ganz langsame
Datenverbindung Hunderte oder gar Tausende Terminals (und damit Nutzer)
zu bedienen. Das wurde u.a. durch recht viel Intelligenz in den
Terminals selbst erreicht. So konnte der Nutzer bspw. lokal (ohne
Interaktion mit dem Mainframe und damit verzögerungsfrei) eine komplette
Eingabemaske ausfüllen. Es wurden immer nur ganze Bildschirminhalte in
einem Block übertragen und davon auch nur diejenigen Teile, die
tatsächlich verändert wurden.

Bei zeichenorientierten Terminals wie bspw. dem VT100 von DEC wurde
hingegen jeder Tastendruck und jedes auf dem Bildschirm ausgegebene
Zeichen einzeln kommuniziert. Das führte bei hoher Rechen- und
Kommunikationslast dazu, dass die getippten Zeichen auf dem Bildschirm
stark zeitverzögert erschienen, wodurch ein flüssiger Arbeitsstil
verhindert wurde.


Kaj schrieb:
> Das hab ich gerade mal versucht: Ist gar nicht so einfach, da windows so
> ohne weiteres keine Sonderzeichen wie ?,!, usw. im Dateinamen zulaesst.
> Unter Linux geht das schon eher, aber auch da gibt es ein paar kleinere
> hindernisse mit Sonderzeichen im Dateinamen :D

Unter Windows sind in Dateinamen Steuerzeichen und folgende
Sonderzeichen nicht erlaubt:
1
< > ? " : | \ / *

Zusätzlich sind die ganzen Gerätenamen wie COMx, LPTx usw. reserviert.

Unter Unix/Linux hingegen ist fast alles erlaubt. Nur der Slash '/' und
das NUL-Zeichen '\0' sind verboten. Die restlichen Steuerzeichen (bspw.
Tabs und Linefeeds) sind erlaubt, wenn auch nicht gerade ratsam.

Siehe

  http://de.wikipedia.org/wiki/Dateiname

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Yalu X. schrieb:
> Unter Unix/Linux hingegen ist fast alles erlaubt. Nur der Slash '/' und
> das NUL-Zeichen '\0' sind verboten. Die restlichen Steuerzeichen (bspw.
> Tabs und Linefeeds) sind erlaubt, wenn auch nicht gerade ratsam.

zwar nicht ratsam, aber immer wieder lustig: mal schnell eine Datei '*' 
erzeugen, und beobachten wie der Nutzer versucht die loszuwerden :-)

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

> zwar nicht ratsam, aber immer wieder lustig: mal schnell eine Datei '*'
> erzeugen, und beobachten wie der Nutzer versucht die loszuwerden :-)

mit 'rm *' :-) Gut ist die Datei dann im home des Nutzers abzulegen und 
ihm zu sagen das die Option -r am schnellsten geht.

Das spart dem Admin auch jede Menge Stress bei der Datensicherung...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael Reinelt schrieb:
> mal schnell eine Datei '*' erzeugen, und beobachten wie der Nutzer
> versucht die loszuwerden
1
rm \*

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Jörg Wunsch schrieb:
> Michael Reinelt schrieb:
>> mal schnell eine Datei '*' erzeugen, und beobachten wie der Nutzer
>> versucht die loszuwerden
>
>
1
rm \*

Ja, nur wenn der Benutzer soweit ist, hat er vorher schon "aufgeräumt", 
und wird eine lapidare meldung "*: no such file" bekommen

von Yalu X. (yalu) (Moderator)


Lesenswert?

Jörg Wunsch schrieb:
> Michael Reinelt schrieb:
>> mal schnell eine Datei '*' erzeugen, und beobachten wie der Nutzer
>> versucht die loszuwerden
> rm \*

Bei meinen ersten Unix-Gehversuchen ist es mir tatsächlich irgendwie
durch Zufall gelungen, eine Datei namens "*" anzulegen. Dass es unklug
war, diese einfach mit
1
rm *

zu löschen, war mir schon bewusst. Da ich noch nicht wusste, wie man die
Shell davon abhalten konnte, den Stern als Wildcard zu interpretieren,
fiel mir in meiner Verzweiflung schließlich nichts besseres ein, als ein
C-Programm mit einem
1
  unlink("*");

zu schreiben. Immerhin hat's funktioniert :)

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Yalu X. schrieb:
> unlink("*");

man muss sich halt zu helfen wissen :-)

übrigens kommt das ^H^H^H das man ab und zu in Foren liest, auch noch 
aus dieser Zeit.

Ich hatte mal das Vergnügen, unter HP-UX die Dateiablage eines 
CAD-Systems und dessen "Datenbank" zu reparieren, da aufgrund eines 
Fehlers Bei der Eingabe von Modellnamen Backspace zwar optisch das tut 
was man am Bildschirm sah, tatsächlich aber die Tippfehler + Backspaces 
+ Korrektur sowohl in den Dateinamen als auch in der Dtaenbank zu finden 
waren. das war ein lustiger Job ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael Reinelt schrieb:
> Ich hatte mal das Vergnügen, unter HP-UX

Jaja, das letzte UNIX, das seinerzeit noch bei "stty sane" das Zeichen
"#" zum Löschen des zuletzt eingegebenen Zeichens und "@" zum Löschen
der Zeile als Voreinstellung produziert hat. ;-)  Ich glaube, mit
Version 10.20 haben sie das dann endlich auf <DEL> und ^U umgestellt,
wie es der Rest der Welt bereits 10 Jahre lang praktiziert hat.  Kurz
danach hat HP dann sein HP-UX fallenlassen ...

von Karl H. (kbuchegg)


Lesenswert?

A. K. schrieb:

> Kannst du dich noch vage an mathematische oder physikalische Formeln
> erinnern? In denen mittlerweile wohl auch Zeichen aus babylonischer
> Keilschrift genutzt werden, nachdem die griechischen längst aufgebraucht
> sind. Daher kommt das. APL ist näher an der Mathematik, als jede andere
> Sprache.

Ja. APL ist schon .. ähm ... geil. Meine einzige Berührung damit war ein 
Praktikum an der Uni.
Irgendwo muss ich noch ein 'Manual' über die Symbole und ihre Funktion 
haben. Das Manual hat die Größe einer Scheckkarte. :-)

von Karl H. (kbuchegg)


Lesenswert?

Yalu X. schrieb:
> Kaj schrieb:
>> Jörg Wunsch schrieb:
>>> (erinnert sich noch jemand an diese Firma? ;-)
>> Mir ist IBM eigentlich nur wegen der ThinkPads ein begriff.
>
> In der breiten Öffentlichkeit wurde IBM vor allem durch den IBM PC, den
> Urvater aller heutigen Desktop-PC mit x86-Prozessor:

Wohingegen vor allen Dingen die älteren Semester mit IBM unweigerlich 
die legendäre S/370 verbinden. Unzählige Firmen vertrauten darauf.

: Bearbeitet durch User
von Micha S. (ernie)


Lesenswert?

Yalu X. schrieb:

Moin Moin,

> Jörg Wunsch schrieb:
>> Michael Reinelt schrieb:
>>> mal schnell eine Datei '*' erzeugen, und beobachten wie der Nutzer
>>> versucht die loszuwerden
>> rm \*
>
> Bei meinen ersten Unix-Gehversuchen ist es mir tatsächlich irgendwie
> durch Zufall gelungen, eine Datei namens "*" anzulegen. Dass es unklug
> war, diese einfach mit
>
>
1
> rm *
2
>
>
> zu löschen, war mir schon bewusst. Da ich noch nicht wusste, wie man die
> Shell davon abhalten konnte, den Stern als Wildcard zu interpretieren,
> fiel mir in meiner Verzweiflung schließlich nichts besseres ein, als ein
> C-Programm mit einem
>
>
1
>   unlink("*");
2
>
>
> zu schreiben. Immerhin hat's funktioniert :)

ich habe damals! als Einsteiger in Fällen wo ich absolut nicht
weiterwusste immer den "mc" gestartet. NortonCommander kannte
ich ja noch von früher :-)
Grüße,

Micha

von (prx) A. K. (prx)


Lesenswert?

Hannes Jaeger schrieb:
> Wenn du mal so richtig das Kopfwackeln mit anschließendem freiwilligen
> Aufschlagen des Kopfes auf den Tisch üben willst, sieh dir z.B. die
> Technik an, mit der IBM Terminals anbindet (IBM 3270),

Meinst du die alte Koax-Technik? Überleg mal, wie alt die ist.

> oder Plattenspeicher.

Bus and Tag? Yep, wuchtige Konstruktion und Kabel wie Besenstiele.

von (prx) A. K. (prx)


Lesenswert?

Karl Heinz schrieb:
> Ja. APL ist schon .. ähm ... geil. Meine einzige Berührung damit war ein
> Praktikum an der Uni.

Mit hatte die Erfahrung aus der Schule immerhin am Anfang des Studiums 
Ferienjobs in APL-Programmierung eingebracht.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

A. K. schrieb:
> Meinst du die alte Koax-Technik? Überleg mal, wie alt die ist.

War das nicht Twinax?

von Karl H. (kbuchegg)


Lesenswert?

A. K. schrieb:
> Karl Heinz schrieb:
>> Ja. APL ist schon .. ähm ... geil. Meine einzige Berührung damit war ein
>> Praktikum an der Uni.
>
> Mit hatte die Erfahrung aus der Schule immerhin am Anfang des Studiums
> Ferienjobs in APL-Programmierung eingebracht.

Echt? So etwas gabs tatsächlich industriell?
Ich hab das immer für eine Anekdote gehalten, dass irgendjemand das 
tatsächlich einsetzt <Augenzwinker>.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Es hätte ja auch keiner gedacht, dass heute noch tatsächlich 
irgendjemand Trigraphs verwendet ;-)

von (prx) A. K. (prx)


Lesenswert?

Jörg Wunsch schrieb:
> War das nicht Twinax?

Nope. Konnst du auch in den PC stecken:
http://www.nci-inc.com/Coaxse.pdf

Twinax war AS/400.

von (prx) A. K. (prx)


Lesenswert?

Karl Heinz schrieb:
> Echt? So etwas gabs tatsächlich industriell?

Ja. Das besagte Terminal hing ja nicht in der Luft, sondern ging per 
Modem an einen Mainframe. Von dieser Firma mit den späteren Ferienjobs. 
Das war so um 1979/80 herum. Schulen hatten noch keine PCs - aber die 
Eleven hatten genug Eltern in ebendieser Firma.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Yalu X. schrieb:
> Es hätte ja auch keiner gedacht, dass heute noch tatsächlich
> irgendjemand Trigraphs verwendet ;-)

Ich kanns mir ehrlich gesagt immer noch nicht wirklich vorstellen.

Gehts nur mir so, oder finden andere die IBM-Position hier auch etwas 
"Wir sind IBM, wir ändern unseren Compiler nicht, nur weil ihr 
anachronistische Dinge aus dem Compiler draussen haben wollt. Und 
basta!". Die Sache mit der Codepage überzeugt mich ehrlich gesagt nicht 
wirklich. Detail am Rande: Im Paper ist die Rede davon, dass der 
Compiler defaultmässig die Codepage IBM-1047 benutzen würde, nur um dann 
im Code per Pragma auf die Codepage IBM-1047 (also dieselbe) zu 
schalten. Ein Schelm wer böses dabei denkt.

Und das hier
1
Another example, the following code is portable across all EBCDIC
2
codepages: 
3
4
int main () 
5
??< 
6
int a = ??/ 
7
3; 
8
return a; 
9
??> 
10
11
This seems to be a sound argument for NOT deprecating trigraphs,
Ich kann mir nicht helfen. Aber das wäre für mich ein 'sound argument' 
um mir schleunigst eine anderes System zu suchen.
Beides weckt in mir eher das Gefühl, dass da jemand seiner alten 
Marktmacht nachtrauert.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

1
#define BEGIN ??< 
2
#define END   ??>
3
#define LP    (
4
#define RP    )
5
#define LB    ??(
6
#define RB    ??)
7
#define PTR   *
8
#define LF    "??/n"
9
#define GE    >=
10
11
int main LP int argc, char PTR PTR argv LBR RB RP
12
BEGIN
13
  if LP argc GE 2 RP
14
  BEGIN
15
    printf LP "%s" LF, argv LB 1 RB RP;
16
  END
17
END

: Bearbeitet durch User
von Gustav (Gast)


Lesenswert?

Karl Heinz schrieb:
>> Mit hatte die Erfahrung aus der Schule immerhin am Anfang des Studiums
>> Ferienjobs in APL-Programmierung eingebracht.
>
> Echt? So etwas gabs tatsächlich industriell?

Ein Kumpel von mir hat immerhin Ende der Neunziger tatsächlich einen 
Ferienjob in Smalltalk gemacht.

von (prx) A. K. (prx)


Lesenswert?

Zu APL, man beachte bitte die FFT auf Seite 10:
http://fafner.dyndns.org/~vaxman/publications/apl.pdf

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

A. K. schrieb:
> Zu APL, man beachte bitte die FFT auf Seite 10:
> http://fafner.dyndns.org/~vaxman/publications/apl.pdf

Wow! Ich dachte ich hätte in meinem nicht mehr ganz so kurzen Leben 
schon viel gesehen. Dachte ich. Wurde soeben eines besseren belehrt.

Ich glaub das Statement auf Seite 11 bringt es auf den Punkt: "People 
thinking of Perl as an unreadable language have obviously never seen any 
APL code (yet)."

Aber das Ding ist ja voll von bemerkenswerten Zitaten: "real programmers 
write microcode – Assembler is a high level language"

: Bearbeitet durch User
von Kaj (Gast)


Lesenswert?

A. K. schrieb:
> #define BEGIN ??<
> #define END   ??>
> #define LP    (
> #define RP    )
> #define LB    ??(
> #define RB    ??)
> #define PTR   *
> #define LF    "??/n"
> #define GE    >=
>
> int main LP int argc, char PTR PTR argv LBR RB RP
> BEGIN
>   if LP argc GE 2 RP
>   BEGIN
>     printf LP "%s" LF, argv LB 1 RB RP;
>   END
> END

Interessante Idee, gefällt mir :)

Michael Reinelt schrieb:
> Ich glaub das Statement auf Seite 11 bringt es auf den Punkt: "People
> thinking of Perl as an unreadable language have obviously never seen any
> APL code (yet)."
Das Unterschreib ich sofort :D

Karl Heinz schrieb:
> Yalu X. schrieb:
>> Es hätte ja auch keiner gedacht, dass heute noch tatsächlich
>> irgendjemand Trigraphs verwendet ;-)
>
> Ich kanns mir ehrlich gesagt immer noch nicht wirklich vorstellen.
>
> Gehts nur mir so, oder finden andere die IBM-Position hier auch etwas
> "Wir sind IBM, wir ändern unseren Compiler nicht, nur weil ihr
> anachronistische Dinge aus dem Compiler draussen haben wollt. Und
> basta!".
Mit diesem Gefühl bist du nicht alleine.

trigraphs fallen für mich irgendwie in die Kategorie:
"How To Write Unmaintainable Code"
( https://www.thc.org/root/phun/unmaintain.html )
Wie gesagt wurde, hatten die Dinger mal einen Sinn, der heute aber mehr 
als obsolet sein dürfte.
Oder anders formuliert:
Wer der Meinung ist, kein Eingabegrät mit entsprechenden Sonderzeichen 
beistzen zu müssen, der sollte vielleicht überlegen, ob er im Jahr 2014 
im PC-/Software-Geschäft noch richtig ist.

Ist ja so, als wenn mir ne KFZ-Werkstatt erzählt, die brauchen keine 
Schraubenschlüssel, weil es ja Engländer, Kombi-, Rohrzangen und sonst 
was gibt...

Aber ok, soweit meine Meinung zu dem IBM-Statement. :)

Je mehr ich hier lese, desto trauriger werde ich fast, dass ich all 
diese Geschichten nicht live und in Farbe erleben durfte :D

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

A. K. schrieb:
> Hannes Jaeger schrieb:
>> Wenn du mal so richtig das Kopfwackeln mit anschließendem freiwilligen
>> Aufschlagen des Kopfes auf den Tisch üben willst, sieh dir z.B. die
>> Technik an, mit der IBM Terminals anbindet (IBM 3270),
>
> Meinst du die alte Koax-Technik? Überleg mal, wie alt die ist.

Mit Koax fing es glaube ich an. Ich weiß nicht mehr wie alt der Scheiß 
ist. Danach wurde es nicht besser, nur anders. IBM hat ja ständig 
nachgelegt.

Alles für ursprünglich mal um die 40x15(?) Zeichen (so genau weiß ich 
das nicht mehr) und etwas später 80x24 Zeichen. Ähnlich wie später beim 
PC wuchs auch die Anzahl der Funktion-Keys mit jeder Generation, bis 
niemand sich mehr traute überhaupt eine Taste zu drücken.

>
>> oder Plattenspeicher.
>
> Bus and Tag? Yep, wuchtige Konstruktion und Kabel wie Besenstiele.

Mit Steckern für echte Männerhände :-)


Kaj schrieb:
> Je mehr ich hier lese, desto trauriger werde ich fast, dass ich all
> diese Geschichten nicht live und in Farbe erleben durfte :D

Keine Panik. Eure Generation hat auch einen Haufen Hundekacke am Schuh 
kleben, ihr wisst es nur noch nicht :-) Zum Beispiel alle Nase lang eine 
neue Programmiersprache, bei der jemand seinen Individualismus durch das 
Ausleben diverser Hirnfürze demonstrieren musste.

Wir alten Säcke stöhnen dann mal wieder auf ob des üblen Gestanks und 
winken ab.

von (prx) A. K. (prx)


Lesenswert?

Hannes Jaeger schrieb:
>> Meinst du die alte Koax-Technik? Überleg mal, wie alt die ist.
>
> Mit Koax fing es glaube ich an. Ich weiß nicht mehr wie alt der Scheiß
> ist.

1971.

> Danach wurde es nicht besser, nur anders.

Welche damals verfügbare Variante war besser?

Der Blockmode der 3270 Terminals ging mit Ressourcen von 
Mehrbenutzer-Rechnern wesentlich sparsamer um, als die 
zeichenorientierte serielle Übertragung von beispielsweise der DEC VAX. 
Wenn man mit echten Bildschirmanwendungen arbeitete, also beispielsweise 
Editor oder Buchhaltungskram, nicht mit einer Kommandozeile (*).

Denn der Aufwand der Interaktion blieb weitgehend im Terminal oder einer 
Steuereinheit. Der Mainframe wurde erst behelligt, wenn man den ganzen 
Schirm abschickte - nicht zuletzt dafür waren die Funktionstasten gut. 
Bei dieser formularorientierten Arbeitsweise toleriert man weit höhere 
Latenzen als bei zeichenweiser Interaktion. Der Rechner konnte so weit 
mehr Anwender gleichzeitig verkraften.

*: Selbst dann. Denn solange ein früheres Kommando noch auf dem 
Bildschirm stand konnte man direkt darauf zurückgreifen und es ändern, 
ohne dass der Mainframe durch die Interaktion gestört wurde. In Unix 
hatte man damals bestenfalls Kommandozeilen-Editoren wie sie für 
Fernschreiber entwickelt wurden, wie die History-Referenzen der C-Shell.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

A. K. schrieb:

> Denn der Aufwand der Interaktion blieb weitgehend im Terminal oder einer
> Steuereinheit. Der Mainframe wurde erst behelligt, wenn man den ganzen
> Schirm abschickte - nicht zuletzt dafür waren die Funktionstasten gut.

Ich erinnere mich noch, dass auf den IBM Terminals es links und rechts 
von 'Space' die Tasten 'Enter' und 'Return' gab. Die eine machte einen 
Zeilenvorschub (im Formular dann eben den Wechsel ins nächste Feld) und 
die andere schickte die Maske ab.
Bei Siemens hiessen die beiden Tasten dann 'DÜM' und 'DÜZ'.


Auf der Uni gabs sogar ein Praktikum für die Maskenprogrammierung, 
soweit ich mich erinnere. Aber abgesehen davon machte das bei uns nicht 
viel Sinn, da wir auf dem 370-er Nachbau(*) (den die Uni von einer 
Sparkasse geschenkt bekommen hat, der hatte ganze 4 oder 8 MB 
Hauptspeicher (weiss nicht mehr so genau) und ein paar 100MB 
Plattenkapazität) ein Timersharing System einsetzen (GUTS == Gothenburg 
University Timesharing System), welches das alles mehr oder weniger 
obsolet machte. Abgearbeitet wurden die Jobs allerdings nach wie vor 
über die Batch-Job-Queue, allerdings mit hoher Priorität. Das heisst, 
solange man keinen Fehler in der JCL-Description hatte :-)


(*) oder wars eine 360-er? Ist alles schon so lange her und mein 
Gedächtnis ist auch nicht mehr so toll. Auf jeden Fall waren es 
beeindruckende Schränke im Rechenzentrum, in das wir als Frischlinge auf 
der Uni mal rein durften.

: Bearbeitet durch User
von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Karl Heinz schrieb:
> Ich erinnere mich noch, dass auf den IBM Terminals es links und rechts
> von 'Space' die Tasten 'Enter' und 'Return' gab.

Ich kenn das noch als "Datenfreigabe"

von Karl H. (kbuchegg)


Lesenswert?

Hannes Jaeger schrieb:

>> Bus and Tag? Yep, wuchtige Konstruktion und Kabel wie Besenstiele.
>
> Mit Steckern für echte Männerhände :-)

Und Tastaturen am Terminal im Blechgehäuse, die einen Druckpunkt hatten 
für den man vorher 2 Wochen Finger-Fitness-Training brauchte :-)
Dafür konnte man sie allerdings auch mit einem Hammer malträtieren, ohne 
das was zu Bruch ging.

von Karl H. (kbuchegg)


Lesenswert?

Michael Reinelt schrieb:
> Karl Heinz schrieb:
>> Ich erinnere mich noch, dass auf den IBM Terminals es links und rechts
>> von 'Space' die Tasten 'Enter' und 'Return' gab.
>
> Ich kenn das noch als "Datenfreigabe"

Lass mich nachdenken. Wir hatten englische Terminals, also Z in der 
unteren Reihe. "Datenfreigabe" stand da sicher nicht drauf, aber ich 
denke du hast recht. Kann es sein, dass die mit "Data" oder so ähnlich 
beschriftet waren?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Karl Heinz schrieb:
> Kann es sein, dass die mit "Data" oder so ähnlich
> beschriftet waren?

Ich hatte nur deutsche, und so wirklich erinnern kann ich mich nur mehr 
an die zwei Reihen Funktionstasten (F1..F24?)

Es könnte sein dass in Deutsch "DFRG" draufstand. Das System war eine 
AS/400, Twinax.

von bko (Gast)


Lesenswert?

die erste höhere Programmiersprache der Welt, wurde aber bis vor kurzem 
nicht implementiert:
http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Genese/Genese/Genese.htm

von Bronco (Gast)


Lesenswert?

"This has APL earned the notation of being a write only language."

Ich schmeiss mich weg!

von Kaj (Gast)


Lesenswert?

Bronco schrieb:
> "This has APL earned the notation of being a write only language."
>
> Ich schmeiss mich weg!
Aber recht hat der Typ ja, der dieses PDF gemacht hat ;)

von (prx) A. K. (prx)


Lesenswert?

Hannes Jaeger schrieb:
>> Bus and Tag? Yep, wuchtige Konstruktion und Kabel wie Besenstiele.
>
> Mit Steckern für echte Männerhände :-)

Damit man sich drunter was vorstellen kann. Soweit noch harmlos:
http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/ChannelConnector.JPG/1280px-ChannelConnector.JPG

Aber nun zur besagten Männerhand:
https://www.flickr.com/photos/epitti/5092339415/

Und hier sieht man - in einer etwas anderes Verdrahtung - weshalb die so 
monströs sind. Das sind nämlich lauter einzelne Koax-Kabel:
https://www.flickr.com/photos/epitti/5092936738/

Zu einer Verbindung gehörten wohlgemerkt pro Seite zwei Stecker. Deshalb 
ja "bus and tag".

Die Grösse von Steckern und Kabeln war aber letztlich egal. Denn die 
Festplatten, die man via Steuereinheit damit verdrahtete, waren keine 
2,5" Disks, sondern hatten die Grösse einer Waschmaschinentrommel:
http://www.suomentietokonemuseo.fi/vanhat/eng/ibm_3380_eng.htm

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.