CUD, eine weitere Scriptsprache.

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

CUD, eine weitere Scriptsprache.

Beitrag von Teekeks »

CUD, Version 0.1 Alpha

Was ist CUD?
CUD ist eine Scriptsprache die ich in meiner Freizeit gebastelt habe um wieder mal ein wenig zu üben.
Momentan kann CUD nicht allzu viel, das wird sich aber noch ändern.

Und: momentan gibt es CUD auch nur für Linux.
Bitte fragt mich nicht wofür CUD steht, ich weiß es nicht. Vl. fällt euch ja was ein?

Was kann CUD?

unterstützte Datentypen:
  • Integer
  • String
  • Boolean

Weitere Merkmale:
  • Parsen von Mathematischen Ausdrücken (z.B. (2+123)*42/7)
  • Einbinden von Units
  • Verwendung von Globalen und Lokalen Proceduren und Funktionen

Syntax von CUD:

Blöcke:
Blöcke werden durch ein [ begonnen und durch ein ] abgeschlossen.
Es ist momentan noch wichtig das jeweils Blockanfang und Blockende eine eigene Zeile bekommen.

Variablendeklaration:
Zum Deklarieren einer Variable wird folgende Syntax verwendet:
#[varname]:[vartype];

Zugriff auf Variablen:
Auf Variablen wird Immer mit folgender Syntax zugegriffen:
$[varname]

Zuweisung von Werten an Variablen:
Syntax:
$[varname]:[value];

Procedurendeklaration:
Eine Procedure kann jederzeit über folgende Syntax Deklariert werden:
proc [Name]([Prarameter1]:[Datentyp1]; [...] [Parametern]:[Datentypn]; );
[codeblock]

Wenn eine Procedure Unitübergreifend Deklariert werden soll muss anstatt proc ein proc* stehen.
Eine Procedure ist nur nach der Deklaration bekannt.

Funkionendeklaration:
Eine Funktion kann jederzeit über folgende Syntax Deklariert werden:
func [Name]([Prarameter1]:[Datentyp1]; [...] [Parametern]:[Datentypn]; ):[resulttyp];
[codeblock]
Auch hier gilt:
Wenn die Funktion Unitübergreifend sein soll, muss sie so lauten: func*

Aufruf von Funktionen und Proceduren:
Syntax:
*[Name]([param1],[param2],[...],[paramn]);
Wenn der Aufruf innerhalb einer Zuweisung erfolgt muss das Semikolon weggelassen werden.

Schleife:
Zur Zeit gibt es nur eine Schleifenart: die for-Schleife.
Die Syntax für diese lautet:
for [Integervariable]([integer],[integer]);
[codeblock]

Bedingte Anweisungen:
Hier gibt es das Stichwort If.
Syntax:
if [boolean] [
[viel Code]
]
Zu beachten ist das Variablen-, Proceduren- und Funkionendefinitionen, welche innerhalb der Schleife sind, auch von der Bedingung abhängen.

Eine Unit Einbinden:
Das einbinden einer Unit erfolgt mit folgender Syntax:
+[Unitname];
Die Unit muss zuvor in der Datei regunits.ini Registriert werden.
Dabei wird folgende Syntax verwendet:
[displayname]
Path=/Pfad/zur/.cud-Datei

Grundbefehle:
  • Out([string]);
  • Outln([string]);
  • Input([variable(integer/string)]);
  • clrscr; (Clear Screen)
  • WOE; (Wait on Enter)
  • Wait([integer]);

Parsen mit CUD:
Der Aufruf Erfolgt so:

Code: Alles auswählen

cud -f datei.cud


Was noch geplant ist:
  • Boolsche Vergleiche einbauen (= <= => <> or and xor)
  • Hinzufügen des Datentypes real
  • Hinzufügen des Datentypes pointer
  • Bessere Fehlerbehandlung
  • Einrückung ermöglichen
  • Mehrere Befehle in eine Zeile
  • Dynamischen Binding von Units
  • Einbindung von Units über den Dateipfad
  • records
  • arrays
  • Definition von eigenen Datentypen
  • Sets
  • Dateizugriff realisieren (von/in Datei Lesen/Schreiben)
  • mehr Grundbefehle
  • Input auch für boolean (und später real)
  • u.v.m.
Dateianhänge
cud.zip
Parser und eine Kleine Testapplikation
(282.26 KiB) 77-mal heruntergeladen

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: CUD, eine weitere Scriptsprache.

Beitrag von Teekeks »

Da ich gerade sah das ich vergessen hatte hier die verschiedenen neueren Versionen noch mit zu Posten, kommt nun noch einmal ein Zwischenstand der Entwicklung von CUD:

Diese steht keinesfalls still sondern wird momentan einfach nur nicht veröffentlicht.
Das liegt daran das momentan einfach zu viele Baustellen noch schöne Speicherleggs oder dergleichen Produzieren und ich euch das einfach nicht antun wollte (gut, die meisten Speicherleggs sollten behoben sein, aber ich glaube ihr wisst was ich damit meine).

Zu den neuen Funktionen die euch bei der nächsten Version erwarten kann ich folgendes Sagen:
Es wird eine volle Unterstützung von Pointern geben, sowie einer direkten Einbindung von Shell-Script in den Quellcode, wodurch der volle Leistungs- und Funktionsumfang dieser Sprache genutzt werden können.

Der Mathematische Parser wird zwar etwas langsamer werden, doch er wird Zahlen mit beinahe beliebiger Genauigkeit ausgeben können (z.B. bis auf 1000 Stellen hinter dem Komma oder so).

Die Stringverarbeitung wird um ein vielfaches besser sein als bei der bisherigen Version (bei welcher man nicht mal ein normales "+" im Text verwenden konnte ohne das die beiden Zeichen Links und Rechts davon nicht gleich noch mit Ignoriert wurden).

Es werden Konstanten unterstützt werden.

Der Parser wird einige weitere Grundbefehle beherrschen wie z.B. getTime (wäre bei Pascal ein now) und getVarType (gibt den Typ einer Variablen aus) und noch einige andere.

Evtl. werde ich bis dahin auch Records und Arrays realisiert sein.

Des weiteren habe ich eine kleine IDE in der Entwicklung (nichts allzu großes, z.B. leider noch kein Debugger).

Und, um mit meinen Ausführungen zu ende zu kommen, wird der Parser selbst deutlich mehr Einstellungsmöglichkeiten bieten (ist ja auch nicht schwer, waren ja bisher genau 0 :) ).

Bei Fragen, Wünschen, Sorgen oder Problemen bin ich jederzeit zu Sprechen.

Wenn sich jemand an dem Projekt beteiligen möchte, ist das auch sehr gerne gesehen.

Gruß Teekeks

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: CUD, eine weitere Scriptsprache.

Beitrag von Lollo67 »

Hmm, warum das Rad neu erfinden? :roll:

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: CUD, eine weitere Scriptsprache.

Beitrag von carli »

Allein von der Beschreibung der Sprache kann ich auf folgende Nachteile schließen:

- langsame Ausführung
- Syntax ist eher auf Ausführungseinfachheit als auf wirklich gutes Programmieren ausgelegt
- die Sprache ist (aufgrund von fehlemdem While) nicht Turing-Vollständig, somit sind damit noch nicht mal alle Probleme lösbar.

Ich meine, es ist zwar schön, mal eine Scriptsprache selber geschrieben zu haben, aber wenn du nicht wirklich neue Konzepte bringst (siehe http://www.objectteams.org/ oder ähnliche), wirst du NIEMANDEN finden, der deine Sprache benutzen will.

In unserem Projekt haben wir auch eine Scriptsprache entwickelt mit:
- objektorientierter Programmierung
- Erweiterung von Klassen in anderen Sources
- Template-System

und viele Dinge, die halt Standard sind und ich nicht sonderlich erwähnenswert finde (Datentyp float, string, integer, bool, mehrere Anweisungen auf eine Zeile, for, for-each, while, if-else, funktionsüberladung nach datentyp oder nach vererbung, und und und), trotzdem sehe ich keinen Grund, weshalb jemand anderes als wir selbst diese Scriptsprache benutzen sollte (es sei denn, jemandem gefällt die Sprache, dann rück ich sie raus)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: CUD, eine weitere Scriptsprache.

Beitrag von Euklid »

Anstatt froh zu sein, dass es nun eine größere Vielfalt an Skriptsprachen gibt, wird gleich schon wieder gemeckert. Insbesondere finde ich es fragwürdig, wenn jemand alleine aus der Bescheibung der Sprache auf Eigenschaften wie Geschwindigkeit schließt.

Wieso es nicht einfach jedem Forennutzer selbst überlassen, ob er die Sprache gut oder schlecht findet? Nur negatives Herrunterreden nutzt niemanden.

Carli: Wenn ich mich recht entsinne, hat es auch bei Euch mehrere Anläufe gebraucht, bis Eure Skriptsprache den heutigen Stand erreichte. Wenn eine Sprache mit "0.1 Alpha" bezeichnet wird, kann man im Allgemeinen erwarten, dass sie noch nicht zuende entwickelt ist.

Häufig genannt ist die Frage der Redundanz: Muss man das Rad neu erfinden, wird da gefragt. Ich sage: JA!
Wäre das Rad nie neu erfunden worden, gäbe es viele heutige Produkte nicht (darunter auch Linux, WinAmp, OpenOffice, Chrome, Mathematica, u.s.w.). Die meisten der heute gebräuchlichen Softwareprodukte waren, als sie ursprünglich entstanden, nichts Neues. Viele Projekte entwickeln sich nunmal erst nach einiger Entwicklungszeit über das hinaus, was es am Markt schon gibt. Da von vornherein zu sagen: "Gib es auf, es gibt dafür keine Notwendigkeit!" halte ich daher für die völlig falsche Bootschaft, die durch viele der heute bekannten großen Softwareprodukte falsifiziert wird.

Viele Grüße, Euklid

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: CUD, eine weitere Scriptsprache.

Beitrag von carli »

Euklid hat geschrieben:Carli: Wenn ich mich recht entsinne, hat es auch bei Euch mehrere Anläufe gebraucht, bis Eure Skriptsprache den heutigen Stand erreichte. Wenn eine Sprache mit "0.1 Alpha" bezeichnet wird, kann man im Allgemeinen erwarten, dass sie noch nicht zuende entwickelt ist.


Oooh ja.

Und heraus gekommen ist eine 1a objektorientierte Scriptsprache, die OpenSource für alle Pascaller verfügbar ist. Und OpenOffice hat soweit ich weiß keiner mehr nachgemacht, weil es das einfach schon OpenSource gab.

Zum anderen hast du natürlich Recht @Notwendigkeit.
Lazarus an sich ist ja schon wenn man viele C++ler und Java-Fans hört, überflüssig.
Und diejenigen, die mir sonst immer von gewissen Projekten abraten, haben meist selbst noch nie was auf die Beine gestellt.

Lollo67
Beiträge: 69
Registriert: Mo 25. Jan 2010, 23:07

Re: CUD, eine weitere Scriptsprache.

Beitrag von Lollo67 »

Euklid hat geschrieben:Häufig genannt ist die Frage der Redundanz: Muss man das Rad neu erfinden, wird da gefragt. Ich sage: JA!

Hallo @Euklid!

Vielleicht zum besseren Verständnis... meine Frage mit dem Rad sollte KEIN Meckern sein!!!

@Teekeks hat ja vorab schon erwähnt, daß er das Projekt u.a. auch aus pers. Übungszwecke starten möchte und wenn andere Interessierte sich an einem solchen Projekt (allgemein) beteiligen, ergibt das grundsätzlich ja auch einen Sinn, weil man dann zusammen voneinander prima lernen kann und ich programmiertechnische Pfeife habe auch großen Respekt vor Jedem, der (egal was) brauchbare Programme auf die Beine stellt !!! :wink:

Ich stelle meine kurze Frage nun doch mal ausführlicher... :mrgreen:
Meine Frage war eher so gemeint, daß wenn einer schon recht gut im Programmieren ist, warum man dann nicht evtl. ein Ziel anstrebt, was es noch nicht oder als Freeware noch nicht so auf dem Markt gibt... spontan würde mir hier z.B. ein Mailer mit integr. BBS-Programm "der heutigen PC-Zeit" einfallen, daß in der Lage wäre, wie früher zu Zeiten der 90er Jahre wieder mit einfachen Modem private BBS-Netze in die Welt zu rufen, die dank dem heutigen Internet und moderner Technik so gut wie ausgestorben sind, weil sie damals nur unter DOS liefen...

Wer etwas älter ist, wird sich vielleicht noch an folgender Software erinnern wie z.B.:
Das FidoNet - Das damals größte, weltweite Mailernetz, was über viele SysOps mit Status Host/Hubs/Nodes und Points geroutet / betrieben wurde...
- Hierzu war als Mailer-Software z.B. Frontdoor V2.02NC State of the Art gewesen, als Tosser in Deutschland zum Schluss FastEcho V140 oder sowas...

Als BBS-Software gab es diverse ANSI-Software, die gut funktionierte, ich mich aber an keinen Namen mehr erinnere... lediglich an RoboBBS, die erste Grafische Mailbox-Software auf Win95 Ebene, was zum Schluss hin als RoboBoard FX vertrieben wurde, fällt mir da noch ein...

Soweit mal meine Info zurück zu den 90er Jahren...
- Was wäre hierbei Sinnvoll?

Nichts... aber es war eine schöne Zeit, wenn man als privater SysOp am Rechner saß und öfters am Tag einzelne Personen (Points) bei einen angerufen hatten, um z.B. ihre "eMails" auszutauschen oder wenn Freunde in die private Mailbox gingen und Dir dort öffentliche oder nicht öffentliche Nachrichten hinterließen (das war ein Stückweit ähnlich wie hier bei Foren...) oder aber auch nach neuen Programmen suchten, also Downloads/ Uploads machten!
- letzteres ist aus heutiger Sicht quatsch, da ein 56K Modem vieeeeel zu lahm ist... :mrgreen:

ABER... es war damals halt alles viel persönlicher, jeder PC-Freak konnte mal eben sich der Gemeinschaft anschließen, eben ohne Webspace anmietung, die Freeware war noch Werbungsfrei gewesen, es hat einfach Spaß gemacht.... ist vielleicht grob vergleichbar mit alten Oldtimer-Motorräder/Autos, die kann man nicht mit heutigen vergleichen, die alten Fahrzeuge haben kaum Leistung und haben schlechte Fahrwerke... und dennoch machen sie in der heutigen Zeit junge Menschen froh und glücklich, wenn mancher noch so ein altes intaktes Fahrzeug fahren kann... :wink:

Sorry, wenn ich hiermit nun Off-Topic geworden bin... aber wenn ich könnte, würde ich z.B. mir wieder mit einpaar Kumpels so ein privates Modem-Netz aufbauen, einfach nur "just for fun" ... die alte DOS-Software der 90er Jahre die unter MS-DOS gut lief, habe ich auch noch und dachte, daß diese evtl. unter DOS-Emulatoren läuft... läuft zum Teil auch, jedoch die Modem-Geschichte läuft darunter nicht...
Sicher, ein aktuelles 56K Modem ist sehr lahm... die Anschaffung kostet heute aber auch nicht mehr viel, es ist Weltweit überall einsetzbar und wer auch Telefon-FLAT besitzt, hätte bei häufiger Nutzung auch keine weiteren Kosten mehr anstehen.

- Einpaar schlaue Köpfe könnten so etwas ähnliches sicherlich wieder in's Leben rufen, wenn man z.B. das mit Lazarus programmieren würde, könnte man damit auch gleich anderes OS-Systeme wie Linux / Mac versorgen bzw. die Software leichter an jede OS-Systeme anpassen... so ein Projekt wäre z.B. cool, da kann man ja auch als Projekt-Softwareentwickler voneinander lernen und wenn man entwas funktionsfähiges hin bekommen sollte, könnten Foren-User ebenfalls als Testpersonen mit machen... damit könnte man vergessenes wieder zurück in das Leben rufen, denn das gibt es nicht (mehr), weil jeder nur noch Breitband-Internet nutzt... :wink:

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: CUD, eine weitere Scriptsprache.

Beitrag von Teekeks »

Hi ihr alle.
Ich entschuldige mich zuerst einmal das ich erst jetzt Antworte, ich war eine Woche weg.
@Euklid:
Danke das du hier meine Scriptsprache verteidigst und ja, du hast recht das ich das Projekt deswegen angefangen hatte, um zu lernen wie so etwas gemacht wird.
Mittlerweile finde ich das ganze so spannend, dass ich auch komplett ohne Veröffentlichung weiter machen würde, nur weil ich Spaß daran habe.

@carli:
Dank an dich für deine Kritik, aber diese muss ich "leider" größtenteils zurück weisen.
Wie Euklid anmerkte ist diese Sprache bei weitem noch nicht zu ende Entwickelt und somit werden auch fehlende Funktionen wie while, else und andere Sachen noch hinzukommen /sind bereits in der unveröffentlichten Version hinzu gekommen (while).

Es gibt verschiedene Wege eine Sprache aufzubauen und du hast dich scheinbar für reine Objektorientierung entschieden:
gut, aber ich nicht. Aber, wie ich bereits schrieb, arbeite auch ich an einer Objektorientierung, diese hat meiner Meinung nach aber momentan keinen Vorrang.


Gruß Teekeks

Antworten