Erfahrungen mit Racket

Ok. Gleich mal einpatchen.

Das #t steht für TRUE.
Genau. Und auto-wrap ist ein optionaler Parameter.

Es wird also bereits bei der Instanziierung der Klasse mitgegeben.
Da fällt mir noch was ein, was ich noch sagen wollte.
Dieses Prozentzeichen hinter bestimmten Bezeichnern wie text% ist lediglich eine Konvention. Damit schließt man unter Racket Bezeichner ab, die eine Klasse sind.
Siehe dazu auch:
http://docs.racket-lang.org/guide/classes.html
 
Noch ein weiterer Tipp:

https://www.bsdforen.de/threads/erfahrungen-mit-racket.34483/post-304649

Ist Gnome unter OpenBSD installiert, muß der Eintrag

Code:
export PATH=/home/ralph/.racket/6.12/bin/:$PATH

in der .profile hinzugefügt werden.

Unter Gnome ist es hilfreich, wenn wir für drracket einen Starter in Form einer drracket.desktop Datei erstellen und diese nach

Code:
/usr/local/share/applications

kopieren.

Die Datei drracket.desktop sollte folgenden Inhalt haben:

Code:
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=DrRacket
GenericName=IDE für Racket Scheme
Comment=DrScheme is an interactive, integrated, graphical programming environment for the Scheme, MzScheme, and MrEd programming Languages.
Exec=drracket
Icon=/home/ralph/.racket/6.12/share/drracket-exe-icon.png
Terminal=false
Categories=Development;IDE;
StartupNotify=true

Jetzt findet die gnome-shell drracket und wir können drracket zu den Favoriten hinzufügen.

Ich hänge hier die drracket.txt für Tippfaule an, sie muß natürlich in drracket.desktop umbenannt werden, bevor wir sie in den Zielordner /usr/local/share/applications kopieren.

have fun :)
 

Anhänge

  • drracket.txt
    396 Bytes · Aufrufe: 258
Dieses Prozentzeichen hinter bestimmten Bezeichnern wie text% ist lediglich eine Konvention. Damit schließt man unter Racket Bezeichner ab, die eine Klasse sind.
In Scheme scheint es einige solcher Konventionen zu geben:
xxx! -> variable
xxx? -> Prädikat
<xxx> -> CLOS-KLasse (coops in chicken)

Git es irgendwo ein Auflistung solcher Konventionen?

Peter
 
An dem überbordenden Echo sehen wir wieder, das wir uns mit Nischenprodukten beschäftigen. Ich habe mir extra die Zeit genommen, um zu googeln, bin aber nicht wirklich fündig geworden. Im übrigen gilt das auch für racket. Ich habe gestern stundenlang eine Methode gesucht, um nach dem Start des Editors den Cursor direkt ins Textwidget zu setzen. Normalerweise nennt man das den Focus setzen. Es ist mir nicht gelungen. Die Dokumentation ist üppig, aber nicht gut genug. Und damit wären wir auch bei den Qualitätsmerkmalen von Script- oder Hochsprachen. Was nutzt mir die gute Funktionalität, wenn nicht ein Mindestmaß an Workflow gegeben ist? Auch eine gute Doku reicht nicht aus, gibt es Foren, genügend nachvollziehbare Beispiele? Das könnte ich noch endlos fortsetzen. Vor 22 Jahren habe ich mir Delphi 3 Professional gekauft, die IDE und der Objektinspektor waren genial. Wenn ich im Codeeditor eine Klasse angab und einen Punkt setzte, wurden mir in einer Liste sofort alle verfügbaren Mehoden angezeigt. Da war nichts mit zeitaufwendigen suchen, nur um den fokus zu setzen. Einen komfortabelen Editor in Delphi oder Lazarus programmiere ich in 10 Minuten. Alles was von diesem Standard abweicht, sind Zeiträuber, deswegen wird Scheme und Racket IMMER ein Nischenprodukt bleiben.
 
An dem überbordenden Echo sehen wir wieder, das wir uns mit Nischenprodukten beschäftigen. Ich habe mir extra die Zeit genommen, um zu googeln, bin aber nicht wirklich fündig geworden. Im übrigen gilt das auch für racket. Ich habe gestern stundenlang eine Methode gesucht, um nach dem Start des Editors den Cursor direkt ins Textwidget zu setzen. Normalerweise nennt man das den Focus setzen. Es ist mir nicht gelungen. Die Dokumentation ist üppig, aber nicht gut genug. Und damit wären wir auch bei den Qualitätsmerkmalen von Script- oder Hochsprachen. Was nutzt mir die gute Funktionalität, wenn nicht ein Mindestmaß an Workflow gegeben ist? Auch eine gute Doku reicht nicht aus, gibt es Foren, genügend nachvollziehbare Beispiele? Das könnte ich noch endlos fortsetzen. Vor 22 Jahren habe ich mir Delphi 3 Professional gekauft, die IDE und der Objektinspektor waren genial. Wenn ich im Codeeditor eine Klasse angab und einen Punkt setzte, wurden mir in einer Liste sofort alle verfügbaren Mehoden angezeigt. Da war nichts mit zeitaufwendigen suchen, nur um den fokus zu setzen. Einen komfortabelen Editor in Delphi oder Lazarus programmiere ich in 10 Minuten. Alles was von diesem Standard abweicht, sind Zeiträuber, deswegen wird Scheme und Racket IMMER ein Nischenprodukt bleiben.

Der erste Vorschlag bei einer Google-Suche nach "racket set focus" hat mir direkt eine Loesung praesentiert:

https://docs.racket-lang.org/gui/window___.html#(meth._(((lib._mred/main..rkt)._window~3c~25~3e)._focus))

In deinem Beispiel wie folgt:
Code:
[...]
(send c focus)
(send f show #t)

Unter https://docs.racket-lang.org findest Du die Dokumentation von Racket und wenn Du oben links im Suchfeld das Wort "focus" eingibst, kommst Du auch direkt zu o.g. Beschreibung.

Ich persoenlich finde die Doku zu Racket sehr gut und auch vollstaendig. Daher wuerde ich Dir und auch jedem anderen empfehlen, erst einmal die Grundlagen von Racket zu lernen, bevor Du gleich mit einem Editor anfaengst und aufgrund fehlender Basics irgendwo nicht weiterkommst und frustriert das Handtuch wirfst. Ohne die Basics fehlt einfach das Verstaendnis von vielen Dingen.

Das soll keine Kritik sein, sondern ein gut gemeinter Rat von jemandem, der auch schon oft auf die Nase gefallen ist, weil er einfach zu schnell und ungeduldig Fortschritte machen wollte. :-)
 
Im Grunde genommen stimme ich Dir vollumfänglich zu @midnight, die Doku ist wirklich gut, aber als Anfänger sehr aufwendig, meistens ist es die Syntax, die man ableiten muß. Und wenn man die noch nicht richtig verinnerlicht hat, dann kommt es eben zu Fehlleistungen. Mein Fehler war, das ich

Code:
(set t focus)

genommen habe, weil ich nicht bedachte, das ja der Focus auf den Canvas als Widget gesetzt werden muß. Ja, ich war einfach mal frustriert, das kann ja mal vorkommen. Und an fehlender Geduld arbeite ich. Ich werde mich, wie Du empfohlen hast, jetzt erst mal weiter mit den Basics beschäftigen, danke. Auf jeden Fall bleibe ich dran und am Ball.:) Aufgeben kann jeder .....;)
 
Wie jede Sprache ist auch Racket reine Übungssache. Ein Lisp einmal verstanden zu haben macht dann auch spätere Lisps viel einfacher. :)
 
Das ist wie in allen Sprachen, man muss die Konzepte verstehen, Idiome und dann die Biblotheken, das letztere ist der aufwendigste Teil. Ich finde diese Einführung recht gut. Und natürlich hilft es Code zu lesen. Immerhin fange ich langsam (!) an in dem No-Syntax so etwas wie Struktur zu erkennen. Aber es ist schon recht mühsam...
 
So ich habe mich jetzt mal neu sortiert und setze @midnight's Empfehlungen um.:) Ich fange mit sicp an. Und man was bist Du schnell @midnight, warst schneller als ich, das letzte Original Buch in englisch und als pdf hatte ich bereits gefunden. Sollte ich mit dem eglischen Original anfangen oder gleich die deutsche weiterführende Ausgabe konsultieren?
 
So, hat sich erledigt, ich fange mit der deutschen Einführung an. Immerhin wird sie inhaltlich für ein Semester benutzt.
 
Ich habe SICP als Buch, und hatte eine ältere Ausgabe in deutsch. In der deutschen Ausgabe sind die Namen "eingedeutscht" was recht lästig ist. Nehme das englische! Ist gut verständlich geschrieben. Im übrigen meine ich dass SCIP zwar gut, aber mehr eine Einführung in Programmierung überhaupt ist, also recht umfangreich. Ich denke für unsere Zwecke ist eine der anderen Einführungen (s.o.) zureichend bzw. besser.
 
So ich habe mich jetzt mal neu sortiert und setze @midnight's Empfehlungen um.:) Ich fange mit sicp an. Und man was bist Du schnell @midnight, warst schneller als ich, das letzte Original Buch in englisch und als pdf hatte ich bereits gefunden. Sollte ich mit dem eglischen Original anfangen oder gleich die deutsche weiterführende Ausgabe konsultieren?

Ich habe mir die deutsche Ausgabe von SICP gekauft, weil der Lesefluss bei deutschen Texten fuer mich einfach besser ist und ich das Blaettern und Lesen in Büchern im allgemeinen lieber mag als bei ebooks. Es spricht ja nichts dagegen, die deutsche Ausgabe zum gemuetlichen Studieren und das kostenlose englische ebook zum Arbeiten auf dem Rechner zu haben. ;-)

EDIT: Auch eine gute Einfuehrung in englischer Sprache ist das Buch "Realm of Racket".

https://www.amazon.de/Realm-Racket-Learn-Program-Game/dp/1593274912/
 
Das kannst du zum Beispiel auch übertragen: In Common Lisp entspricht das Fragezeichen einem "p" (Beispiel: numberp = ist Zahl?). :)
 
ralli. member: 22143 schrieb:
Vor 22 Jahren habe ich mir Delphi 3 Professional gekauft, die IDE und der Objektinspektor waren genial. Wenn ich im Codeeditor eine Klasse angab und einen Punkt setzte, wurden mir in einer Liste sofort alle verfügbaren Mehoden angezeigt.
Es gibt ja sogar eine solche Funktionalität in DrRacket unter Bearbeiten / Wort vervollständigen
Aber natürlich gibts in der IDE noch viel Verbesserungspotential.
Nur irgendwer muss das halt auch immer machen. Und bei einer vergleichsweise kleinen Community sind halt die Ressourcen begrenzt.

ralli. member: 22143 schrieb:
Einen komfortabelen Editor in Delphi oder Lazarus programmiere ich in 10 Minuten.
Nu muss man aber auch sagen, Programmierumgebungen wie Delphi sind genau für solche Aufgaben gemacht. Also GUIs zusammenklicken und mit Funktionalität hinterlegen. Ich sag mal, wenn das mein tägliches Geschäft wäre (GUI, Datenbanken etc.) würde ich auch eher zu Delphi oder etwas Vergleichbaren greifen als ausgerechnet zu Racket.

Racket ist gut, wenn man eben Sachen haben möchte, die es woanders nicht gibt. Oder wenn man in die Tiefen des Programmierens einsteigen will. Oder eben das Racket-Ökosystem gut zu dem passt, was man möchte.

Man kauft sich ja auch kein 40-Tonner und beschwert sich dann, dass man ein echtes Parkplatzproblem hat und es mit nem popligen VW-Polo ja sehr viuel wendiger ist.

ralli. member: 22143 schrieb:
Alles was von diesem Standard abweicht, sind Zeiträuber, deswegen wird Scheme und Racket IMMER ein Nischenprodukt bleiben.
Nunja. Mag sein. Aber Delphi ist ebenfalls ein Nischenprodukt (wenn auch sicher verbreiteter als Racket ). Insofern reicht sowas auch nicht immer.

ralli. member: 22143 schrieb:
So ich habe mich jetzt mal neu sortiert und setze @midnights Empfehlungen um.:) Ich fange mit sicp an.
Man muss natürlich wissen, was man möchte. SICP ist ganz gut, aber es geht dabei primär nicht ums Lisp lernen, sondern Programmierkonzepte (und das dann anhand von Lisp).
Wenns mehr Racket im Speziellen sein soll, dann ist natürlich Der Racket Guide ein guter Anlaufpunkt:
https://docs.racket-lang.org/guide/index.html

Da gehts einmal quer durch die Wesentlichen Dinge die die Programmierung in Racket betreffen (Variablendeklarationen, structs, Classen, Eceptions usw.). Dort werden dann auch die Konventionen eingeführt.

Außerdem ganz nützlich, weils ne gute Kurzübersicht ist: Das Racket-Cheat-Sheet:
https://docs.racket-lang.org/racket-cheat/index.html
 
Ich sag mal, wenn das mein tägliches Geschäft wäre (GUI, Datenbanken etc.) würde ich auch eher zu Delphi oder etwas Vergleichbaren greifen als ausgerechnet zu Racket.

Ich stimme zu. Ich habe vor einer Weile sozusagen an einem Wochenende in Delphi eine kleine Verwaltungssoftware ("Serverinventar") programmiert, weil das Evernote zu unübersichtlich wurde. Ein GUI mit Eingabefeldern, dahinter eine SQLite-Datenbank. Die Hauptdatei hat 661 Zeilen und der Großteil des UI-relevanten Codes wurde erstellt, ohne den Texteditor öffnen zu müssen.

Dass das nicht immer erstrebenswert ist und manchmal größere Kontrolle über das Endprodukt eine gute Idee wäre: Geschenkt. Dafür nimmt man auch keine RAD-Software.
 
Man muss natürlich wissen, was man möchte. SICP ist ganz gut, aber es geht dabei primär nicht ums Lisp lernen, sondern Programmierkonzepte (und das dann anhand von Lisp).
Wenns mehr Racket im Speziellen sein soll, dann ist natürlich Der Racket Guide ein guter Anlaufpunkt:
https://docs.racket-lang.org/guide/index.html

Da gehts einmal quer durch die Wesentlichen Dinge die die Programmierung in Racket betreffen (Variablendeklarationen, structs, Classen, Eceptions usw.). Dort werden dann auch die Konventionen eingeführt.

Außerdem ganz nützlich, weils ne gute Kurzübersicht ist: Das Racket-Cheat-Sheet:
https://docs.racket-lang.org/racket-cheat/index.html

Ah natuerlich. Das Naheliegendste habe ich natuerlich vergessen. :-)

Zum Thema SICP: Viele "Programmierer", vor allem die copy&paste Programmierer, haben nie gelernt, wie man eigentlich sinvoll programmiert und tun sich selbst mit den einfachsten Dingen schwer, wenn es keine entsprechenden Loesungen und Beispiele im Internet gibt. Das erfordert natuerlich als erstes ein gewisses Grundverstaendnis, denn Programmieren setzt nicht nur das Kennen von Befehlen voraus, sondern auch das Wissen ueber Struktur und Interpretation und wie man ein Problem loest. SICP (und auch How to Design Programs) vermitteln genau diese Themen und lehren gleich nebenbei noch Lisp / Scheme / Racket. Ich persoenlich finde es einfacher, beides zusammen zu erlernen als zuerst eins und dann das andere, denn eins von beiden wird dann immer irgendwo vernachlaessigt. Es kommt immer darauf an, welche Ansprueche man hat. Will man nur kurze Codes zusammenschustern oder auch groessere Projekte in Angriff nehmen? Das ist aber nur meine persoenliche Sichtweise. ;-)
 
Viele "Programmierer", vor allem die copy&paste Programmierer, haben nie gelernt, wie man eigentlich sinvoll programmiert und tun sich selbst mit den einfachsten Dingen schwer, wenn es keine entsprechenden Loesungen und Beispiele im Internet gibt. Das erfordert natuerlich als erstes ein gewisses Grundverstaendnis, denn Programmieren setzt nicht nur das Kennen von Befehlen voraus, sondern auch das Wissen ueber Struktur und Interpretation und wie man ein Problem loest.
Ja. Das stimmt. Es ging mir auch nur darum, die Dokumentationen entsprechend einzuordnen.

Ich persoenlich finde es einfacher, beides zusammen zu erlernen als zuerst eins und dann das andere, denn eins von beiden wird dann immer irgendwo vernachlaessigt.
Das ist auf keinen Fall verkehrt.
Ralli machte nur den Eindruck, das er schon seit 30 Jahren programmiert und man ihm daher nicht mehr beibringen muss, warum es keine "if-Schleifen" gibt. :-)

Das ist aber nur meine persoenliche Sichtweise. ;-)
Der ich mich durchaus anschließe. :-)
 
Zum Thema SICP: Viele "Programmierer", vor allem die copy&paste Programmierer, haben nie gelernt, wie man eigentlich sinvoll programmiert und tun sich selbst mit den einfachsten Dingen schwer, wenn es keine entsprechenden Loesungen und Beispiele im Internet gibt. Das erfordert natuerlich als erstes ein gewisses Grundverstaendnis, denn Programmieren setzt nicht nur das Kennen von Befehlen voraus, sondern auch das Wissen ueber Struktur und Interpretation und wie man ein Problem loest. SICP (und auch How to Design Programs) vermitteln genau diese Themen und lehren gleich nebenbei noch Lisp / Scheme / Racket. Ich persoenlich finde es einfacher, beides zusammen zu erlernen als zuerst eins und dann das andere, denn eins von beiden wird dann immer irgendwo vernachlaessigt. Es kommt immer darauf an, welche Ansprueche man hat. Will man nur kurze Codes zusammenschustern oder auch groessere Projekte in Angriff nehmen? Das ist aber nur meine persoenliche Sichtweise. ;-)
Ganz genau so ist es. Spätestens mit racket lernst Du, in Strukturen zu denken und logisch zu abstrahieren. Das macht es aber so reizvoll und so spannend.:)
 
Das ist auf keinen Fall verkehrt.
Ralli machte nur den Eindruck, das er schon seit 30 Jahren programmiert und man ihm daher nicht mehr beibringen muss, warum es keine "if-Schleifen" gibt. :-)
Einspruch Euer Ehren. Seit 40 Jahren, mit BASIC angefangen. Bereits 1974 als Operator gearbeitet, da warst Du ganz sicher noch nicht auf der Welt:

Noch mal zum mitschreiben:


    • 1974 - Arbeit als Operator mit Systemfamilie Nixdorf 820 (Lochkarten basiert)
    • 1980 - erster eigener Rechner Video Genie EG 3003 (TSR 80 kompatibel) mit Doppelfloppy und Newdos 80 als OS.
    • 1983/85 - EDV Kurse BASIC im eigenen Computerraum mit eigenen Rechnern
    • 1985/1995 - Programmentwicklung Audits für die Qualitätssicherung einer größeren Automobilfabrik
    • 1985/1995 - Freiberuflicher EDV Dozent in der Automobilindustrie (Abendkurse für Mitarbeiter und Auszubildende)
    • 1996 - erster Kontakt mit SuSE Linux und Abschied von Windows
    • 2005 - Umstieg auf Debian
    • 2012 - Umstieg auf FreeBSD
    • 2017 - Umstieg auf OpenBSD
Und mit wie vielen Programmier- und Scriptsprachen ich bereits ernsthaft gearbeitet habe, will ich Dir gerne ersparen... ;) Ich kann logisch denken und lerne schnell, sehr schnell. Eine neue Syntax ist halt wie die Grammatik einer neuen Sprache. Und von einem banalen send c focus, was ich auf die Schnelle nicht gefunden habe, zu schließen, das ich nicht programmieren könnte, ist wirklich maßlos überzogen. Aber wenns Spaß macht, gerne ......:)

Hab aber nur die Volksschule besucht, weil trotz Anratens meiner Lehrer meine Eltern mich nicht auf eine weiter führende Schule schickten. Auch ein fehlendes Studium hat meiner beruflichen Laufbahn nicht geschadet. 1994 bekam ich vom Land Niedersachsen eine Sondergenehmigung für das Studium des Betriebswirtes EDV. Das habe ich aber nicht mehr in Anspruch genommen, weil ich beruflich bereits alles erreicht hatte und es mir keinerlei neue Chancen eröffnet hätte. Ich bin ein Autodidakt und habe mir alles selbst beigebracht. Alles klar?
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben