| |
|
|
- Seite 1 - |
|
| §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]]
|
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
| 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 |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
HofK | Teste gerade die Möglichkeiten des Space-Operators
...
... und so weiter.
App funktioniert.
Nun lasse ich in der markierten Zeile koerper = "Würfel"; kantenlaenge = 5 das Semikolon weg. Nur ein Leerzeichen trennt.
Der Kompilierer ist zufrieden, die App wird per Reciever sofort anstandslos installiert und nach dem öffnen gibt es? - einen schwarzen Beta-Bildschirm.
Aber schon mächtig Klammern und Kommata gespart. Und es bleibt gut lesbar, zumal im Vergleich zu Android Java |
|
|
| |
|
|
|
| Eigentlich ist der Spaceoperator nicht so gedacht für var und print, print z.B. hat als 2. Parameter keinen String etc.:
print ( { string | long | float | array | boolean } [, long Textfarbe [, long Hintergrundfarbe ] ] )
Es geht eher darum, Parameter die mit Komma zu trennen sind, auch einfach mit Space schreiben zu können - so wie du das mit Cls machst.
Der Space-Operator kann nur das Komma ersetzen, nicht + oder - oder... |
|
|
| |
|
|
|
HofK | Das war mir halt noch nicht 100% klar, zumal es der Kompilierer schluckt und ... iF (31.05.15)
... so sehr sauber parst, dass sogar Zeilenumbruch und Semikolon für die Zeilentrennung nicht zwingend notwendig sind. ... print(2)return 10 print 5
Da werde ich mal typische Beispiele und "Gegenbeispiele" zusammenstellen und eine Übersicht für den Anfänger daraus machen. |
|
|
| |
|
|
|
HofK | Space-Operatoeur
Ein wenig rumwurzeln!
Zu Risiken und Nebenwirkungen lesen SIE meistens nicht die P. BeilageReferenz oder fragen ihren ArztProgrammierer oder ApothekerBuchschreiber.
Die Wurzelbehandlung:
siehe auch [...] |
|
|
| |
|
|
|
HofK | Teste gerade so vor mich hin und muss auch mal einstecken .
Dabei habe ich entdeckt , dass Infinity-Profan zu while sowohl endwhile als auch wend als Abschluss wie in der Referenz angegeben tatsächlich schluckt.
Das ist der Ansatz für eine polymorphe (ich liebe dieses Fremdwort ) Syntax. Allerdings sollte es immer leicht erkennbar bleiben um verschiedene Programme vergleichbar zu halten. Bei wend ist das sicher gegeben.
Es erhöht natürlich die Zahl der reservierten Schlüsselwörter. Aber wer definiert schon eine Variable wend, wenn er nicht nur eine einzige Programmiersprache kennt.
Da while so ein doppeltes Ende beschert bekommmen hat, wäre es nur logisch, noch einige sinnvolle Ergänzungen zu tätigen (ev. später bei IPextended oder so ).
Wie wär's z.B. mit proc procedure func function und deren Enden? Dann könnte man sich/anderen schon formal klarmachen, ob man einen Wert zurückliefert und muss in umfangreichen Funktionsprozeduren nicht nach dem/den return(s) schauen.
Da gibt es sicher noch mehr Kandidaten. Bei §99 ist schon einer angedeutet pic(ture). Und select bzw. switch sind auch Kandidaten - siehe § 8 - Kontrollstrukturen.
Nachtrag: zu i++ i-- bevorzugen einige Progger das inc i dec i.
Und Dank Präkompilierer beeinflusst das ziemlich sicher nicht einmal den eigentlichen Kompiler. |
|
|
| |
|
|