Die Verwendung von Prinzipien natürlicher Sprachen in Perl
 

 

 

 
Autor: Larry Wall <larry@wall.org>, http://www.wall.org/~larry
Übersetzer: Steven Schubiger

Copyright: Copyright © Larry Wall
Source: http://www.wall.org/~larry/natural.html

Datum - Inhalt: unbekannt
Datum - Übersetzung: 2003-12-06

 

 

 

 

 

 
Index
 
Lerne sie einst, wiederverwende sie oft.
Der Erfahrungswert oder "wie man durch Fortschritt lernt"
Viele akzeptierte Grade von Kompetenz
Die Möglichkeit über verschiedene Wege dasselbige auszudrücken.
Keine falsche Scham
Unbestimmbare Dimensionalität
Zweideutigkeiten sind beschränkt annehmbar
Zeichensetzung mithilfe der Silbenmessungslehre und Modulation
Die Entwirrung von Zweideutigkeiten durch Zahl-, Fall- und Wortreihenfolge
In punkto Schlüsselwörter
Diskursive Strukturen
Die Verwendung von Pronomen
Keine theoretischen Gebilde
Eine ungezwungene Syntax (Gruppendruck ausgenommen)
Kooperativer Entwurf
``Unweigerliche'' Divergenz
 

 

 

 

 

 
Index Lerne sie einst, wiederverwende sie oft.  
  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 Der Erfahrungswert oder ``wie man durch Fortschritt lernt''  
  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 Viele akzeptierte Grade von Kompetenz  
  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 Die Möglichkeit über verschiedene Wege dasselbige auszudrücken.  
  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 Keine falsche Scham  
  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 Unbestimmbare Dimensionalität  
  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 beschränkt annehmbar  
  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 Zeichensetzung mithilfe der Silbenmessungslehre und Modulation  
  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 Die Entwirrung von Zweideutigkeiten durch Zahl-, Fall- und Wortreihenfolge  
  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 punkto Schlüsselwörter  
  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 Strukturen  
     
  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 Die Verwendung von Pronomen  
  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 Keine theoretischen Gebilde  
  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 Eine ungezwungene Syntax (Gruppendruck ausgenommen)  
  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 Kooperativer Entwurf  
  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 ``Unweigerliche'' Divergenz  
  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''.