|
Index |
|
|
Man lernt eine natürliche Sprache einmal von Grund
auf und gebraucht sie dann viele Male. Es sollte ein Bestrebnis von
Sprachentwerfern sein, dass die Sprache vielmehr hinsichtlich den
Möglichkeiten des Ausdrucks als der Vereinfachung des Lernprozess
optimiert werden sollte. Es ist einfach zu lernen wie man einen Kartwagen
fährt, aber es fällt einem schwer gleichzeitig darin zu
gestikulieren. |
|
|
|
|
Index |
|
|
Die Kenntnis einer Sprache kann nie gänzlich erworben
werden, da sich jene kontinuierlich als fortschreitender Prozess erweitert.
Keiner hat je das Repositorium einer natürlichen Sprache in all
seinen Aspekten gekannt und ausgereizt. Bedauerlicherweise sind eine
Unmenge von Computersprachen so entworfen worden, dass jeder Grad
von ``Freiheit" (oder: Dimension) jederzeit verfügbar
ist bedingt durch die Orthogonalität. Das mag ein nützlicher
Aspekt sein wenn man den vollen Umfang der Sprache auszureizen imstande
ist, aber kann zu Missverständnissen führen sofern dieser
Umstand nicht gegeben ist. Zu Beginn möchte man erstlich einige
der Dimensionen nicht beachten. Man möchte sich einfach und trotzdem
verständlich ausdrücken. Das mag eine Lösung darstellen,
sofern man nicht die vollumfängliche Kenntnis der Sprache unverzüglich
erwerben muss. |
|
|
|
|
Index |
|
|
Dies ist mehr ein soziologisches Ereignis verglichen
mit dem sprachlichen Lernprozess, der die Psyche beansprucht. Menschen
erweisen sich als gnädig, wenn man nur den ``Grundstock"
einer Sprache beherrscht, insbesondere wenn man ein Kind oder ein
Immigrierter ist. (Ausser in Paris, natürlich.) Wenn eine Sprache
so entworfen wurde, dass durch die Erfahrung das Wissen erworben werden
kann, dann wird stillschweigend angenommen, dass ein jeder diesem
stetigen Lernprozess unterworfen ist, was nicht als verächtlich
betrachtet wird. |
|
|
|
|
Index |
|
|
Dies hat mehr anthropologischen Charakter. Menschen
erweitern ihr Wissen nicht nur durch den stetigen Lernprozess, sondern
auch durch ihren Hintergrund; sie werden sich differierende Dialekte
der Sprache zuerst erwerben. Es wird von der Perl Gemeinschaft gutheissen,
wenn man anhanden der syntaktischen Regelungen von wahlweise sed,
awk, C, shell, BASIC, Lisp, Python programmieren möchte. Selbst
wenn es FORTRAN sein sollte. |
|
|
|
|
Index |
|
|
Es ist gang und gäbe die englische Sprache (und
andere Sprachen, die keine Identitätskrise erleiden) durch Elemente
aus anderen Sprachen zu ergänzen und sie der eigenen Sprache
anzueignen. Bestrebungen die Purität einer Sprache (sei sie natürlicher
oder künstlichen Ursprunges) zu wahren, führt zur Bildung
einer Klasse von elitären Mitgliedern, die schlussendlich als
einzige befähigt sind die Sprache kontextbezogen zu verwenden.
Das ordinäre Volk weiss es besser selbst wenn es den Ausdruck
``Shibboleth'' nicht kennen sollte. |
|
|
|
|
Index |
|
|
Wissenschaftler bevorzugen die Lokalisierung eines Gegenstandes
bzw. Punktes durch die Assozierung eines ``Vektors'', welcher Koordinaten
des Objektes innerhalb einer dem Wissenschaftler bekannten Dimensionalität
enthält. Dies ist einer der Gründe, warum die Wissenschaftler
die Orthogonalität mögen -- da es die Unabhängigkeit
verschiedener Komponenten von Vektoren nach sich zieht. Bedauerlicherweise
nimmt die reelle Welt ihren Lauf nicht anhand dieser Schematik. Die
meisten Probleme, linguistische miteinschliessend, rühren aus
distanzbedingten Gegegebenheiten; die Geographie, die den dazwischenliegenden
Raum in seinen Aspekten zu darstellen versucht, hat einen massgebenden
Einfluss auf den praktischen Wert einer Lösung. "Probleme"
werden üblicherweise auf verschiedenen Ebenen angegangen. Eine
übliche Reise könnte deine Beine, nachfolgend dein Auto,
ein Fahrstuhl, ein Flugzeug, dann ein Tram, ein anderes Flugzeug,
ein Taxi, und wiederum einen Fahrstuhl involvieren. Auf vielen dieser
Ebenen, existieren keine ``rechtwinkligen Winkel'' und das ganze erweist
sich in der Natur ein wenig fraktal. Bezogen auf die Sprache würde
dies heissen, dass man einen Ausdruck verwenden würde, der z.B.
den Gegen- oder Umstand relativ akkurat beschreiben würde und
dessen Umschreibung anschliessend raffinieren und verfeinern würde,
ebenso wie man zuerst die Reiseroute zwischen den relevanten Flughäfen
plannen würde und erst später sich der Problematik wie man
zum und weg von dem Flughafen käme, widmen würde. |
|
|
|
|
Index |
|
|
Zweideutigkeiten sind annehmbar, solange die Personen
imstande sind, sie ihrer Bedeutung zuzuführen. Als Faustregel
gilt, dass innerhalb einer natürlichen Sprache Zweideutigkeiten
rapide ihrer Bedeutung zugeführt werden können, wenn man
auf kürzlich gesprochene Sätze und Schlüsselwörter
referenziert. Pronomen wie ``es'' verweisen auf Gegenstände,
die sich nahebei befinden, syntaktisch gesprochen. Perl enhält
Unmengen von kleinen Zweideutigkeiten, kaum zur Kenntnis der Personen,
die Perl benützen, da sie ungeheuer schnell aufgelöst werden.
Zum Beispiel beginnen viele Ausdrücke und Operatoren innerhalb
Perl mit identischen Zeichen. Perl eruiert den Typus dieser durch
den Code, der wiederum die Ausdrücke und Operatoren umgibt; wie
auch eine Person innerhalb der Sprache differenzieren würde.
Wenn man den Code 1 & 2 betrachtet,
weiss der Interpreter, dass das &
ein bitweises UND ist, aber wenn man hingegen
&foo gebrauchen würde,
riefe es eine Unterprozedur namens foo
auf.
Im Gegensatz dazu enthalten viele stark typisierte Sprachen vage
Zweideutigkeiten. C++ ist eine der übelsten
Sprachen diesbezüglich, da einen z.B. das Konstrukt a
+ b bezüglich der kontextbezogenen Funktion des
Operators + im Dunkeln tappen lässt.
Personen immatrikulieren sich an Hochschulen, um solche vage Zweideutigkeiten
nach einem Studium auflösen zu können.
|
|
|
|
|
Index |
|
|
In einer natürlichen Sprache und deren Wortfluss
wird über die Zeichensetzung durch Kommatas, Hervorhebungen und
Pausierungen indiziert, wie die Relationen der Wörter zueinander
sind. Die sogenannte ``Körpersprache'' spielt ebenso eine unerlässliche
Rolle. Vergleichsweise ein geringer Teil der Zeichensetzung innerhalb
dieses Dokument wurde in Englisch verfasst (Anm. d. Übers: Ausführung
von L. Wall), das Gros jedoch nicht -- oder dann wurde die englische
Zeichensetzung nur angedeutet. Unlängst war die Tendenz in elektronischen
Kommunikationen verschiedenste Formen der Zeichensetzung ins Leben
zu rufen. :-)
Einige Computersprachenentwerfer glauben Zeichensetzung sei ein
Relikt, dass nicht vonnöten wäre; ich bezweifele jedoch,
dass ihr Englischlehrer diesbezüglich mit ihnen übereinstimmen
würden.
|
|
|
|
|
Index |
|
|
Ein Grund warum eine Sprache mit gewissen Zweideutigkeiten
bestehen kann, besteht darin, dass gewisse Zweideutigkeiten durch
verschiedene andere Mechanismen unterdrückt werden. Die englische
Sprache gebraucht Zahlen und die Wortreihenfolge, mit der Spur eines
``Fallsystems" betreffend den Pronomen: ``Der Mann sah die Männer
an, und sie sahen den Mann an.'' Es wird somit unmissverständlich
ausgedrückt, wer welche Handlung auf wen bezieht. Perl verwendet
einen Grössenbezeichner für seine Variablen; $dog
ist ein Hund, wohingegen @dog für
(potentell) viele steht. $ und @
ähneln ein wenig den Ausdrücken ``dies'' und ``diese'' im
englischen. Perl macht sich auch die Reihenfolge der Ausdrücke
zunutze: ``sub use'' unterscheidet sich vergleichsweise
stark von ``use sub''. Es verwendet nur wenig
die Fallunterscheidung im Gegensatz zu den Shells, welche Gebrauch-versus-Erwähnung
Unterscheidungen über ein $ Präfix
gebrauchend implementieren. Wenn ich bedenke, dass es möglich
wäre dies zu implementieren, so könnte man Perlcode Auszüge
als eine Form von Fallmarkierungen zählen. Auf einer leicht abstruserer
Ebene, ist der Operator \ in Perl 5 eine Art
von ``Fallbezeichner" oder Präposition vielmehr die Erwähnung
als den Gebrauch indizierend. Aber in den meisten Computersprachen,
werden präpositionale Notierungen üblicherweise durch ihre
Position innerhalb einer Argumentenliste determiniert. (Obschon es
gewiss möglich wäre, in Perl Prozeduraufrufe mit benannten Variablen
zu forcieren; Schlüssel aus Hashes fungieren manchmal als Präpositionen.)
move $rook from => $qr_pos, to => "kb3";
|
|
|
|
|
Index |
|
|
In Bezug auf die Schlüsselwörter, sollte ich
nicht unerwähnt bleiben lassen, dass dieser Satz mit einem beginnt.
Ein Schlüsselwort erläutert das Thema des Subjektes über
das man zu sprechen gedenkt. Mehrere syntaktische Formen sind im englischen
verfügbar, die einfachste deren ist ein Nomen: ``Ich hasse Karotten.''
Pascal gebraucht ``with'' Klauseln, welche als Schlüsselwörter
fungieren. Schlüsselwörter erläutern manchmal die Thematas,
wobei man dann an jenen Stellen etwas wie ``for BLAH and BLAH, do
BLAH'' sehen würde. In Perl existieren verschiedene Komponenten,
die ihre Funktion als Schlüsselwörter erfüllen. Ein
Beispiel:
foreach (@dog) { print $_ }
Dies kann sogar im singularen Kontext verwendet werden:
for ($single_long_name) { s/foo/bar/g; tr/a-z/A-Z/; print; }
Gefundene Muster (auch innerhalb Bedingungen) haben die Tendenz als
Schlüsselwörter in Perl zu operieren:
/^Subject: (.*)/ and print $1;
|
|
|
|
|
Index |
|
|
|
|
|
Diskursive Struktur definiert wie ein Ausdruck länger
als eine Sentenz zusammengefügt wird. Verschiedene Sprachen und
Kulturen haben verschiedene Regelungen wie z.B. ein Witz oder eine
Geschichte erzählt wird oder wie man ein Buch über Perl
schreibt. Einige Computersprachen haben sehr restriktive Regelungen
für grössere Strukturen. COBOL und Pascal kommen mir in
den Sinn. Perl tendiert ziemlich grosszügig betreffend der Reihenfolge
von Ausdrücken zu sein, der aristokratische Fakt ausgenommen,
dass es einen expliziten Beginn und Ende von grösseren Strukturen
benötigt - Klammern gebrauchend. Aber es ist eine Gewissheit,
dass #!/usr/bin/perl zu dem Ausdruck
``Es war einst einmal'' äquivalent ist, sowie__END__
das Äquivalent von ``Und sie lebten danach glücklich bis
in alle Ewigkeit.'' darstellt. |
|
|
|
|
Index |
|
|
Wir alle sind uns der Funktion des Pronomens und dessen
Gebrauch gewahr. Es existieren eine gewisse Zahl von Pronomen in Perl:
$_ bedeuted ``es'' und @_
tendiert ``sie'' zu bedeuten . ($1,
$2 etc. sind pronominale Rückwärtsreferenzen
auf skalare Werte in der letzten Evaluierung eines Muster, welche
wie erwähnt als Schlüsselwörter fungieren können.)
Innerhalb einer foreach Schleife
oder der Evaluierung eines grep,
ist die Variable $_ nicht bloss
eine Kopie des evaluierten Ausdrucks, sondern vielmehr ein Alias.
@_ ist ähnlicherweise eine
Liste von Referenzen auf die Funktionsargumente; die Argumente können
durch Modifikationen an Elementen innerhalb @_
verändert werden. |
|
|
|
|
Index |
|
|
Natürliche Sprachen werden durch Personen verwendet,
welche die meiste Zeit sich nicht im geringsten dafür interessieren,
wie formschön der Entwurf der benützten Sprache ist. Im
Gegensatz zu wenigen Autoren, bestrebend Nuancen in der effizentesten
und bestumschreibenden Form zu erläutern, wird das ordinäre
Volk redundante Elemente zuhauf in ihre Kommunikation einbetten, um
das Verständnis des Inhaltes beim Gesprächspartner zu gewährleisten.
Wörter, die der Umschreibung angemessen erscheinen, werden skrupellos
eingefügt, auch wenn sie aus dem Kontext gerissen sein sollten.
Normalerweise stellt dies kein Problem dar. Sie sind einigermassen
gewillt von Zeit zu Zeit ein neues Wort dem bestehenden Vokabular
hinzuzufügen, sofern sie es betreffend einem späteren Nutzen
als nützlich klassifizieren können; aber verglichen mit
Rechtsanwälten oder Computerforschern, sehen sich nicht ermutigt,
eine Unmenge von neuen Begriffen zu definieren, um z.B. einen Umstand
präzise ausdrücken zu können. Bezüglich Computersprachen
ist dies ein Indiz für die Befürwortung von Vordefinitionen
gemeinsam benutzter Konzepte, sodass Personen nicht nach der Notwendigkeit
eigener Definition sinnen müssen. Eine grosse Zahl an Perlscripten
beinhaltet keinerlei Definitionen. Ich bezweifle hingegen jedoch,
dass Sie je ein C++ Programm ohne Definitionen entdecken werden. |
|
|
|
|
Index |
|
|
Wir müssen nicht alle wie Faulkner schreiben oder
wie Dijkstra zu programmieren imstande sein. Ich erläutere interessierten
Personen offenherzig worin sich mein Programmierstil äussert,
und werde Sie auf einen eventuell nicht integren Programmierstil hinweisen
oder an welcher Stelle er mich wortwörtlich in mentale Abgründe
stürzen liess. Dies tue ich jedoch als ein Gleichgesinnter und
nicht als ein herrschender Perl Imperator. Einige Entwerfer von Computersprachen
erhoffen die Stilistik durch typographische Restriktionen zu erzwingen,
die z.B. nur eine Anweisung pro Zeile als korrekte Syntax werten.
Dies mag alles sehr nützlich für die Poesie sein,
aber ich denke nicht, dass ich jemanden explizit ``ermutigen"
möchte Poesie in Perl zu verfassen. Solcherlei stylistische
Restriktionen sollten sich selbst auferlegt worden oder als Konsensus
zwischen Freunden gehegt werden. |
|
|
|
|
Index |
|
|
Niemand beruft eine natürliche Sprache ins Leben,
sofern er nicht Tolkien heissen sollte. Durch unsere Entlehnung der
Sprache für den Gebrauch und Addierung von Modifikationen, die
wir für nützlich erachten und Verwerfung, von subjektivem
obskur erscheindem Vokabular, verändern wir stetig die Sprache
als solches und deren implizierte Elemente (Grammatik, Vokabular,
u.a.). Als die herrausragendesten, künstliche Sprachen erwiesen
sich Kollaborationen -- sogar in einer Sprache wie Perl, über
die eine Person die Oberhand über Veränderungen zu besitzen
scheint. Die meisten der guten, innovativen Perl Ideen entsprangen
ursprünglich nicht mir. Einige wurden aus anderen Sprachen inkludiert,
andere wiederum ergaben sich infolgedessen durch Vorschläge von
verschiedensten Personen, als wir in der Entwicklung fortschritten.
Wenn man bedenkt, dass eine Sprache die verschiedensten "Anhängsel"
inkludiert (Bibliotheken, binäre Verzeichnisse), die ihre Entwicklung
paralell zu der der Sprache nehmen, dann sind sogar Computersprachen
wie C, oder Ada, oder C++, oder sogar die Unix Shells Kollaborationen
durch ungeheur viele Personen. Perl ist bezüglich diesem Aspekt
nicht anders. |
|
|
|
|
Index |
|
|
Da eine Sprache durch viele Personen entworfen wird,
ergeben sich dadurch unweigerlich immer Dialekte und Variationen.
Die Hinauszögerung dieses Phänomens ist nicht unmöglich,
aber in jeder regen benützten Sprache übertreffen auf die
Dauer die Kräfte der Divergenz beinahe immer die Kräfte
der Konvergenz. POSIX versuchte System V und BSD zu vereinheitlichen;
alsbald jene diese Dimension annahmen, explodierte sprungartig die
Zahl der Unix Varianten, die sich andersweitig entwickelten. Es sollte
das Bestreben eines Computersprachenentwerfers sein, explizit Mechanismen
zu integrieren, die die Identifizierung der benützten Variante
der Sprache ermöglichen. Perl 5 beinhaltet einen expliziten Erweiterungsmechanismus
durch den die Spezifizierung von ungewöhnlicher Semantik oder
``Dialekten'' über die ``use'' Deklaration ermöglicht wird.
Perl 4 war rückstandig, da es dies nicht erlaubte; somit war
der Druck grösser verschiedenste Dinge in die Sprache zu implementieren,
die nicht zum Kernrepertoire gehörten. Hoffentlich gelingt es
uns nun, das ``Basis'' Perl so zu stabilisieren, sodass weniger der
Bedarf besteht, Variationen wie oraperl, sybperl, isqlperl, etc. zu
``erfinden''. |
|
|
|
|
|