Deutsch
Forum & Hilfe

Großer Funktionssatz, kleiner Funktionssatz.

 
Ich möchte etwas Grundlegendes an Infinity ändern, da ich mit dem Sprachschatz noch nicht zufrieden bin.

So soll es dann einen offiz. Funktionssatz (der Kleine) geben aber auch einen "Großer Funktionssatz".

Beispielsweise finde ich gut, dass es math(math.cos,... gibt, so bleibt alles in der Funktion math und man kommt nur mit math(... aus.

Auf der anderen Seite fände ich es auf Dauer wohl unpraktisch, wenn man nicht einfach nur cos( schreiben könnte. Natürlich könnte man nun proc cos f definieren mit return math(math.cos,f) aber das macht das Programm an dieser Stelle natürlich langsamer da eine weitere Funktion gerufen wird. Also muss eine Lösung her.

Da bekommt die xprofan.api-Include vielleicht eine Sonderrolle, sodass die darin enthaltenen Funktionen dann den sog. "Großer Funktionssatz" bereitstellen. Diesen kann man dann ja zuschalten insofern erwünscht.

Nur müssten die Funktionen darin dann auch so schnell sein wie die regulären Funktionen - also das cos( kein Umweg ist zu return math(math.cos.

Dazu überlege ich noch wie ich das optimal Lösen kann. Vielleicht sogar sowas wie Makros wie in ASM - muss aber noch eine Syntax für her.

Der große Funktionssatz aus der xprofan.api würde dann auch als großer Funktionssatz links in der Navigation  [...]  erscheinen als neuer Punkt etwa unter "Sprachelemente".

So kann es dann also ganz offiziell z.B. auch eine Funktion mid( geben, die dann wie str(string,from,to) reagiert aber ohne Geschwindigkeitsverlusst. So auch explode,.... lauter Funktionen halt wie sie aus XProfan bekannt sind oder in XProfan mal bekannt werden.

Gibt danach also einen harten/ kleinen Sprachkern mit dem man alles programmieren kann und _zudem den großen Funktionssatz für Einsteiger/ Umsteiger/ Tippfaule.
 
26.11.2015  
 




Jörg
Sellmeyer
Wäre da nicht sowas wie die ph-Dateien von Profan nützlich?

Statt math(cos... wird dann eine Zeile in der ph festgelegt:
~cos( = math(cos,;
und der Präcompiler (so es ihn hier auch gibt...) setzt das entsprechend um.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
26.11.2015  
 



Ja, mal überlegen, dank Spaceoperator vlt. sogar einfacher als ich fürchtete:

print(math(math.cos,x))

makro cos=math math.cos

wird per spaceop ja

makro cos=math(math.cos)

käme dann ein

cos(x)

könnte ich cos erkennen als undeklarierte Funktion,
dann aber ein Makro cos finden und schlicht ersetzen:

math(math.cos)(x)

bliebe noch ein )( Ungetüm am Ende der Ersetzung -
also leicht zu erkennen und in ein Komma umzuwandeln:

math(math.cos,x)

klingt interessant.

makro test=mufflon(10,20,30)

test 100

test(100)

test undeklarierte Funktion wird zu

mufflon(10,20,30)(100)

Stringende vom Makro ist ), folgt ein ( ersetzen zu ,
ergäbe:

mufflon(10,20,30,100)

könnte vmtl. jedem gefallen.

mal anhand explode schauen:

makro explode=arr()

explode("te|st","|")

würde zu:

arr()("te|st","|")

) am ende der Makros gefolgt von ( ersetzen in ,

ergäbe

arr(,"te|st","|")

wäre also arr(null,"te|st","|") -

haut also net hin.

Sei denn ich schaue ob eine ( vor dem Ende meiner Ersetzung steht -
was ja nicht sein kann in anderen Fällen,
dann könnte ich auch das Komma sparen wenn vor dem Ende der
Ersetzung eine Klammer öffnet.

Ich glaube das ist (Adj.) "integer" und die Makrosyntax wäre auch sehr gut.

Genau genommen bräuchte ich dann nichtmal das neue Schlüsselwort
"makro", da proc name=todo eineindeutig erkennbar ist und zu
unterscheiden von

proc name x=todo

was ja bedeuten würde proc name(x=todo),

proc name(=todo) wiederum kann es ja nicht geben,

ergo muss es ein makro sein.

cool.
 
26.11.2015  
 




HofK
Was ich da jetzt nicht überschaue:

Wie fügen sich die Konstanten in dieses Konzept ein, Punktschreibweise ausführlich oder die seinerzeit angepeilte Kurzform.

math.cos --> cos
event.keydown = 100 --> keydown
event.touchdown =200 --> touchdown
gui.width --> width

usw.
 
26.11.2015  
 



bei cos=math.cos komme ich noch mit, event.keydown etc ist auch noch
klar - width aber wird dann eher kein Makro sondern eben eine normale
Funktion die schaut von was genau da die "Breite" abgefrägt wird.

Vlt. sollte ich die xprofan.api-Datei auch zerfleddern in Threads und autom.
zusammensetzen als Projektdatei.
 
26.11.2015  
 




HofK
iF (26.11.15)
...
Vlt. sollte ich die xprofan.api-Datei auch zerfleddern in Threads und autom.
zusammensetzen als Projektdatei.


Seit der Präkompilierer für mich sichtbar arbeitet, war mein Gedanke warum immer mit include
xprofan.api die gesamte xprofan.api drangeklatscht wir, wenn nur eine/wenige Funktionen daraus
wirklich benutzt werden. Ist ja in einem Durchlauf zu ermitteln ob es die jeweilige Funktion in
dieser speziellen api gibt. Dann ok, sonst Fehler.
Noch ist die xprofan.api klein, aber wenn sie wächst wäre es sicher relevant.

iF (26.11.15)
Ich möchte etwas Grundlegendes an Infinity ändern, da ich mit dem Sprachschatz noch nicht
zufrieden bin.
...
So soll es dann einen offiz. Funktionssatz (der Kleine) geben aber auch einen "Großer
Funktionssatz".
...
Nur müssten die Funktionen darin dann auch so schnell sein wie die regulären Funktionen - also das cos(
kein Umweg ist zu return math(math.cos.
...


Diese Änderung finde ich von der Richtung voll ok, auch wenn ich dann die Anfangskapitel vom Buch
teilweise recht stark "umstricken" muss - gerade im Hinblick auf Erklärungen /Zusammenhänge. Aber
die Sprache gewinnt deutlich. Diese Richtung steckte ja schon am Anfang irgendwie drin:

Klaus Hoffmeister (18.01.15)
"... eine mächtige Sprache mit wenig Befehlen..."
ist für die innere Logik/Sprachentwicklung sicher günstiger und die Idee mit "include
xprofan.util.aprf, ...include java.util.aprf" finde ich prinzipiell gut.
Zu den Funktionen stellt sich die Struktur für mich derzeit so dar:
Je "Sachverhalt" möglichst nur eine/wenige Funktion/en und die Feingliederung mit den Parametern:
array, directory, event, file, message, print, rgb, string, time, var
Bei übergreifenden Dingen: len, del, long auf Strings & Arrays anwenden.


Wenn die programmieranfängerfreundlichen Schreibweisen vorab in die kompakte Funktionssyntax mit
den sehr variablen Parameterkonstellationen übertragen werden, steigt höchsten die
Präkompiliererzeit ein wenig. Dazu noch die Gliederung des Funktionssatzes in den Sprachkern und
die Sprachhülle -wie ich es bezeichnen würde- um auch den Spezialisten sofort die interne
Gliederung deutlich zu machen.
 
28.11.2015  
 



Unterthema: Funktionssatz 1 (ursprünglich), Test auf Näherung Satz 2  [...]  erzeugt.
 
12.12.2015  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.446 Betrachtungen

Unbenanntvor 0 min.
Jörg Sellmeyer15.05.2018
HofK11.04.2016
Erasmus.Herold30.03.2016
Kutsche23.03.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (4x)
HofK (2x)
Jörg Sellmeyer (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie