Es scheint mir, dass Programmiersprachen, die für den Einsatz in Wissenschaft und Technik gedacht sind, im Vergleich zu Allzwecksprachen durchweg seltsam sind . Einige Beispiele aus meinem Kopf:
- In Matlab muss jede Funktion in einer separaten Datei abgelegt werden
- In R ist <- der Zuweisungsoperator im Gegensatz zu = in fast jeder anderen Sprache
- Matlab, R, Julia und andere sind alle 1-indiziert
- Matlab verwendet% für Kommentare und nicht das Standard-# oder //
Natürlich haben diese Sprachen alle mehrere Designmerkmale, die eigentlich für wissenschaftliche Anwendungen sie leichter zu bedienen, wie natürlicher Matrizenschreibweise. Trotzdem treffen sie alle unerklärlicherweise all diese bizarren Entscheidungen, die nichts einfacher machen und leicht hätten vermieden werden können, wenn die Sprachdesigner nur das getan hätten, was 99% der anderen Sprachen tun. Ist der Grund, warum der Anbieter gesperrt ist? Mangelnder Kontakt zur breiteren Softwareentwickler-Community? Etwas anderes?
Ich habe diesen Thread gelesen und fand die Erklärungen nicht zufriedenstellend. Nur weil R als Wissenschaftssprache entwickelt wurden, bedeutet nicht , es mußte vollständig Konventionen und Verwendung ignorieren <- statt =.
quelle
Antworten:
Und selbst wenn wir nur nach IT-Standards urteilen ... Entschuldigung, welche Standards meinen Sie? Haben Sie versucht, einen Prog in APL oder SNOBOL zu schreiben? Diese beiden Sprachen sind meiner Meinung nach die mächtigsten in geeigneten Bereichen (Zählen und Zeichenfolgen). Die Syntax ist jedoch SEHR seltsam (und effektiv). Das Lesen einer Zeile APL-Code kann Tage dauern. Auf der anderen Seite ist eine solche Linie ein ernstes Stück SW. Sie würden mit Tränen der Erleichterung nach Mathlab zurückkehren.
Was "=" betrifft, haben viele Menschen Probleme, sich daran zu gewöhnen, dass es nicht Gleichheit, sondern Zuordnung ist. Übrigens, in Pascal ist es Gleichheit und Zuordnung ist ": =".
Und Sie denken wirklich, dass == für Gleichheit natürlicher ist? Im Gegenteil, Mischen = und == ist der häufigste Fehler in der C-Programmierung. Er tritt selbst in modernen IDEs mit ihrer automatischen Steuerung sehr häufig auf.
Über die Indizierung von 1 - es ist die einzige natürliche. Als Kind hatten Sie Gedichte und Lieder gelernt, in denen Sie gezählt haben: eins, zwei, drei ... und nicht 0,1,2 ... In der Schulmathematik haben wir gelernt, dass das Zählen bei 1 beginnt und bei 0 gehört nicht zu natürlichen / zählenden Zahlen. Nur mit der Definition von Funktionen kommen nicht natürliche Indizes. Immerhin wurde die 0 viele tausend Jahre erfunden, nachdem unser Vorfahr einen Finger erhoben hatte.
0-Start war einfacher zu realisieren und begann sofort nach dem Erscheinen von C mit der IT-Praxis. In Fortran, der ersten Sprache, wird jedoch die 1-Indizierung verwendet. Gleiches gilt für andere Sprachen der vorindustriellen Epoche.
Und ja, ich hatte Dyjkstras Artikel über die Natürlichkeit der 0-basierten Zählung gelesen. Und stimme seiner Argumentation überhaupt nicht zu. Es ist nur für Musiker selbstverständlich. Und selbst 0 Enthusiasten, die die C- und Java-Compiler erstellen, zählen die Zeilen des Codes ab 1!
quelle
Die Indizierung von 1 ist nicht seltsam, sie ist völlig normal und wird mit Ausnahme von Programmierern erwartet , da sie so konditioniert wurden, dass sie eine 0-basierte Zählung durch C erwarten (was von den Eigenschaften der Prozessorarchitektur abhängig war).
Kommentare werden auf viele, viele verschiedene Arten in verschiedenen Sprachen bezeichnet. Es gibt keinen Standardweg, jede Sprache wählt ein Symbol oder einen Digraphen, der noch nicht vergeben ist.
Zuweisung ist ebenfalls ein seltsames und unverständliches Konzept, außer für Programmierer ; die meisten Menschen ist es egal, ob es
=
oder:=
oder<-
, sie kämpfen , um das verstehen Bedeutung (und für sie ist es in der Tat besser nicht zu verwenden=
, weil dies , dass die Zuordnung betont ist nicht Gleichheit - die häufigste Hürde für Nicht-Programmierer Code verstehen).Kurz gesagt, Programmiersprachen, die für andere Personen als professionelle Programmierer bestimmt sind, sehen anders aus, weil die Leute, die sie am häufigsten verwenden, dies so wollen.
quelle
Es gibt drei Probleme:
Nun zu Ihren spezifischen Punkten:
Ich kenne Matlab nicht, daher kann ich die Anforderungen der Dateiorganisation nicht kommentieren. Beachten Sie, dass Java möchte, dass Sie eine Datei pro öffentlicher Klasse verwenden.
In R
=
kann auch als Zuweisungsoperator verwendet werden. Beachten Sie, dass mehrere Zuweisungsoperatoren erforderlich sind<-
und<<-
das Konzept des Gültigkeitsbereichs behandelt werden soll (<<-
Zuweisung eines Symbols in einem externen Bereich, anstatt ein neues Symbol innerhalb einer Funktion zu erstellen). Die Pfeile können auch in die andere Richtung verwendet werden, wodurch möglicherweise sauberer Code entsteht :complex_calculation() -> x
.1-basierte Indizierung ist der Standard in der Mathematik, mit dem sich die Benutzer von Matlab und R wohler fühlen als C. Julia folgt Matlab, um eine bessere Lernkurve zu erzielen.
%
für Kommentare wird auch in TeX / LaTeX verwendet. Dies#
ist nur eine Konvention aus Unix-Skriptsprachen und ihren Nachkommen.Sie ignorieren auch, dass „echte“ Programmiersprachen viele seltsame Teile haben. Warum wird das Schema nicht verwendet
=
? Stattdessen:Warum wird C
*
zur Dereferenzierung verwendet, wenn ein Caret^x
in anderen Traditionen offensichtlich häufiger vorkommt?quelle
Ich denke, es hängt davon ab, ob Sie anderen Sprachen ausgesetzt sind. Aus dem Kopf:
quelle
<!-- ... -->
. Das Prozentzeichen wird für die URL-Codierung verwendet:http://example.com/()
wirdhttp://example.com/%28%29
.