| |
|
|
| §10 - Syntax
Die Syntax ist bewusst auf Praktikabilität getrimmt.
Zeilen-Enden und Semikolon trennen Befehle, ausgenommen eine Klammerung oder String-Konstante ragt über weitere Zeilen.
Befehle und Funktionen können als Befehl oder Funktion formuliert werden, z.B. print 123 oder print(123).
Variablensyntax:
Arrays (und Assoziative):
a[0]=10
a.0=10
//
a["test"]["test"]=10
a.test.test=10
//
b=[10,20,30]
//
c=["Hallo"=10,"Welt"=["pt2"=20,"pt3"=30]]
|
|
|
| |
|
|
|
| Neu und besser erklärt:
iF (18.01.15)
Zeilen-Enden - aber auch das Semikolon - trennen Befehle. Somit können mehrere Anweisungen auch innerhalb einer Zeile geschrieben werden, und, man muss das Semikolon nicht setzen wenn man zeilenweises Schreiben bevorzugt. Zudem ist es aber auch möglich, eine Anweisung über mehrere Zeilen zu verteilen, einfach in dem man mit Klammern arbeitet ( die Normalen ( ) oder die Eckigen [ ] ) die erst in nachfolgenden Zeilen (wieder) geschlossen werden. Dieses Verfahren dürfte alle Möglichkeiten bieten die Wünschenswert sind. Die XProfan'sche Schreibweise für zeilenübergreifendes Schreiben, indem vor dem Zeilenende ein Backslash angefügt wird, ist in InfinityProfan unnötig und zudem auch "falsch" und sie wird auch nicht unterstützt. Zeilenenden in InfinityProfan einfach per "Enter"-Zeichen setzen, ohne weitere Maßnahmen ergreifen zu müssen.KompilierenMarkierenSeparieren//Beispiele für zeilenweises und zeilenübergreifendes Schreiben:
print "Dies ist
ein Text mit einer
Stringkonstante mit
Zeilenumbrüchen"
// ist das Selbe wie:
print "Dies ist\nein Text mit einer \nStringkonstante mit\nZeilenumbrüchen".
//
print 10+20;print 30+40
// ist das Selbe wie:
print 10+20
print 30+40
//
print (10
+20
+30)
// ist das Selbe wie:
print (10+20+30)
// nicht funktionieren würde jedoch:
print 10
+20
+30
// weil hier keine Klammer über die weiteren Zeilen zwingt.
Befehle können als Befehl oder Funktion formuliert werden, z.B. print 123 oder print(123); |
|
|
| |
|
|
|
HofK | Fein, damit geht so ein Schachtelfeld echt übersichtlich: KompilierenMarkierenSeparieren// Name, essbar, Wochentag, Anzahl (3x)
var freieNatur =[
["Ameise", false, ["Mo",1001,"Mi",0,"Sa",2000 ] ],
["Taube", true, ["Mo", 2,"Mi",2,"Sa", 1 ] ],
["Feldmaus", false, ["Mo", 1,"Mi",2,"Sa", 0 ] ],
]
|
|
|
| |
|
|
|
| Neu: Intern genannt "Space-Operator":
Klaus Hoffmeister (16.05.15)
Das Leerzeichen, der Space Operator ist ein intelligenter Space Seperator, ein intelligenter Trenner, ein Space-Autoseparator kurz ein Autoseparator, ein polymorpher Seperator, damit noch etwas polymorphes bei InfinityProfan.
Generell einfachere Syntax für Schreibfaule dank sehr nachdenklichem Präkompilierer:
Tragweitenbeispiele:
wird kompiliert zu:
oder:
wird kompiliert zu:
Der (Prä)Kompilierer nimmt einem also viel Schreibarbeit ab durch Erkennung ob etwas als Funktion oder Funktionsparameter zu verstehen ist und ergänzt den Quelltext selbständig.
Statt:
schreiben, kann aber nochmal optimiert werden zu:
da String+Float = String ist. |
|
|
| |
|
|
|
RGH | Ob die Programme dadurch wirklich lesbarer werden ... |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.05.2015 ▲ |
|
|
|
|
| Schauen wir doch mal.
Scheint aber natürlicher zu sein als das Übliche:
display rotate left objekt verb adjektiv
dürfte der Mensch besser lesen können als display(rotate,left).
Dagegen gekruxel: display klammer auf rotate komma left klammer zu Dagegen gekruxel: display ( rotate , left )
ebenso später mgl.: rotate display left oder left rotate display
Da ich sowas wie eine weitere Dimension der Betrachtung der Schlüsselworte andenke, quasi sowas wie "Rotate"... ja was? oder "left"... ja was? Der Präkompilierer das "ja was?" beantworten könnte durch Festlegungen von Wertigkeiten von Schlüsselworten oder Aussagen.
Solange das Ganze ohne Einschränkungen im Bezug auf die üblichen Konventionen geschehen kann, dürfte es als Zugewinn empfohlen und aber auch empfunden werden so einen kleinen Hauch in die Richtung wie Programmiersprachen vielleicht einmal werden könnten, wenn wir denn endlich Quantenrechner zu hause haben.
Nach dem Motto "Der versteht schon, solange es anders kaum Sinn ergibt."
Vielleicht sollte man der Sache mal eine Chance geben. |
|
|
| |
|
|
|
HofK | RGH (14.05.15)
Ob die Programme dadurch wirklich lesbarer werden ...
Die einfachere Syntax für Schreibfaule dank sehr nachdenklichem Präkompilierer kann durchaus zugleich bequemer und übersichtlicher sein, wenn man die leicht mehrfach zu schreibenden Leerzeichen mit einer nichtproportionalen Schrift (z.B. Courier New) kombiniert. In der Online IDE ist das dann noch mit den Farben perfekt, hier in der Codebox schon ungünstiger und in der vereinfachten mobilen Version kann man momentan sehen, wie es eventuell noch ungünstiger ist.
Man erkennt das auch bei herkömmlichem Kode. Mein obiges Schachtelfeld var freieNatur = [ ... hatte ich für die Codebox mit Proportionalschrift extra "optimiert", mobil ist es in der bewusst vereinfachten Box logischerweise dann keineswegs übersichtlich und nach kopieren in die Online IDE sieht man, wie ich mit den Leerzeichen jongliert habe.
Gibt der nachdenkliche Präkompilierer das Ergebnis seines "Denkprozesses" eigentlich lesbar an den Menschen heraus? Etwa sogar bearbeitbar? |
|
|
| |
|
|
|
| Das Ergebnis des Präkompilierers ist für Menschen kaum lesbar aufbereitet, hm. |
|
|
| |
|
|
|
GDL | Hallöle,
ich habe das immer noch nicht kapiert. Man setzt ja extra Klammern wegen der Punkt vor Strich Regel.
(1+3)*2 =8 1+(3*2)=7
Nach was für einem Grundschema wird nun gerechnet, wenn man 1+3*2 eingibt ?
Grüßle Georg |
|
|
| |
|
|
|
RGH | Normalerweise geht Punktrechnung vor Strichrechnung, also müsste hier 7 herauskommen. Das ist zumindest in allen mir bekannten Programmiersprachen so.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 31.05.2015 ▲ |
|
|
|
|
GDL | Hallöle,
Ok. Das heisst, wenn man (1+3)*2 eingibt, bleibt die Anweisung in der Klammer erhalten oder muss man 2 Programmschritte machen? a=1+3 a=a*2
Ist zwar Offtopic, war aber für mich wichtig zu wissen bei den ganzen Vereinfachungen in der Syntax.
Grüßle Georg |
|
|
| |
|
|
|
| Würde ich auch nicht anders programmieren, jedenfalls funktionieren nProcs und InfinityProfan genau so.
Es gibt halt Prioritäten:
Klammern Punktrechnung Strichrechnung Vergleiche
So ist die Abarbeitung klar: 10+(20-10)*30=40
20-10 10*30 10+300 310=40 false |
|
|
| |
|
|