Diskussion:Aleph (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie

Beispiel

Wirkt ja ganz interessant, diese Sprache. Aber ein kleines Code-Beispiel fehlt mir noch, um ein Gefühl für die Syntax der Sprache zu bekommen. --jpp ?! 18:13, 22. Sep. 2007 (CEST)

Es existiert mittlerweile ein Aleph-Kurs bei Wikiversity. Er ist zwar im Aufbau, aber dort finden sich viele Beispiele. --Heuerli 20:08, 7. Okt. 2007 (CEST)
Danke für den Hinweis (habe den Link zum Schwesterprojekt eingefügt, damit man ihn findet). Dennoch denke ich, dass dem Artikel Aleph (Programmiersprache) ein Code-Beispiel gut tun würde. Wikipedia-Artikel sollten auch für sich betrachtet informativ sein. --jpp ?! 23:16, 7. Okt. 2007 (CEST)
Ich werde in den nächsten Tagen einige Beispiele einbauen. Komme leider nicht eher dazu, denn die Kurse in WV sind doch umfangreicher ausgefallen. --Heuerli 14:49, 8. Okt. 2007 (CEST)
Beispiele sind eingebaut. Dieser Eintrag dient nur der Vollständigkeit, weil Mitteilung direkt an jpps-Diskussion ging. --Heuerli 17:47, 29. Okt. 2007 (CET)

Bitte um Löschung

 Bitte löscht diesen Artikel!
 
 1. Man erkennt bereits an den Formulierungen, daß sich der Autor keine große Mühe machen will, 
    Wissen zu vermitteln. Sachliche Beschreibung ist durchmischt mit Argumenten gegen einen 
    erfundenen Gegner dieser Sprache. Der Autor geht auf die Ideen ein, wie sie ihm einfallen;
    ein roter Faden ist nicht erkennbar. Bereits der erste Abschnitt entbehrt jeglicher Logik.
 2. Mir scheint, der Autor ist an die Grenzen der Sprache Java gekommen und möchte nun 
    die ultimative Programmiersprache erfinden. Dieser Wunsch ist nachvollziehbar.
    Dennoch: So wie dieser Artikel formuliert ist, gehört er in ein privates 
    Ingenieurs-Tagebuch, aber nicht als öffentlicher Artikel in Wikipedia.
 3. Die Argumentation, insbesondere der Aspekt der 'Freiheit' einer Programmiersprache
    läßt auf einen mittel-erfahrenen Programmierer als Autor schliessen. 
    Für größere Projekte ist es unerläßlich, daß die Programmiersprache sinnvolle Grenzen setzt
    und bereits der Compiler den Code auf die schlimmsten Fehlerquellen hin untersuchen kann.
    Wer glaubt, er könne mit Python, Ruby oder auch Aleph ein fehlerfreies größeres Projekt
    erstellen, dem fehlt schlicht noch ein gutes Stück Erfahrung (so toll diese Sprachen für 
    kleine Projekte auch sein mögen!).
 4. Dem Autor fehlt ein grundlegendes Verständnis der verwendeten Fachbegriffe. Die Begriffe
    'Grammatik', 'kontextfrei', 'objektorientiert', 'funktional' u.a. werden nicht dem 
    fachüblichen Verständnis gemäß verwendet. Der Autor sollte diese Begriffe erst dann in 
    den Mittelpunkt seiner Argumentation stellen, wenn er diese verstanden hat.
 
 Ich möchte weder den Autor noch die Sprache schlecht reden. Allerdings soll deutlich werden,
 welchen Platz diese Sprache in der Welt der Programmierung vermutl. einnehmen wird: Den eines
 anspruchsvollen Übungsprojekts, anhand dessen der Autor eine Menge für sein späteres 
 Informatik-Studium lernen kann. Die Welt wird aber m.E. eher an seinen späteren Projekten 
 interessiert sein, als an Aleph. (Ich nehme an, daß ich keinen wesentlichen
 Fehler mache, wenn ich den Autor der Sprache un den des Artikels gleich setze).
Dann stell doch einen Löschantrag. Wenn Du schon anonym schreibst, dann halte Dich wenigstens an die restlichen Gepflogenheiten. Der Artikel steht im Review, also schreib da. Das Review ist doch gerade für Leute wie Dich gedacht, damit sie dort erzählen was sie nicht erkennen können. Vielleicht kannsolchen dort geholfen werden. Schnuppe

Review November/Dezember 2007

Zu Aleph gibt es eigentlich nicht viel mehr zu sagen. Alles Weitere wäre wohl nur mit Beispielcode sinnvoll und ich glaube nicht, dass hier der richtige Ort dafür ist; wozu gibt es die WV. Heuerli 09:17, 30. Nov. 2007 (CET)

Muss sagen, dass mich der einleitende Satz "Sie stellt die herkömmliche Programmierung auf eine breitere Basis. So ist interaktives Vorgehen und Kompilierung vereint." nicht gerade animiert, den Artikel zu lesen. Der könnte aus einem Werbeprospekt stammen. Eine etwas differenziertere Darstellung wäre schön, so suggeriert er, diese Sprache sei der Weisheit letzter Schluss, was ich nicht glaube. Und was soll das überhaupt heißen, "interaktives Vorgehen und Kompilierung sind vereint"?--Cactus26 10:03, 30. Nov. 2007 (CET)
An das individuelle Sprachempfinden habe ich bein Einstellen in den Rev.Proc. nicht gedacht. Äußerungen können mit einem Werbeprospekt verbunden werden. Im Konjunktiv formuliert ist das sogar immer der Fall. Wahrscheinlich ging man bei der Einleitung von guten Absichten im Sinne von "nicht alles auf einmal" aus. Wer sich über eine Programmiersprache kundig machen möchte wird wohl kaum von einem "letzten Schluß" ausgehen. Zu der Frage:
Interaktion ist auch ein Paradigme der Programmierung (siehe Forth, Moore u.ä). Damit ist die unmittelbare Umsetzung der Eingaben in das System gemeint. Normalerweise ist das bei Interpretern immer gegeben, bei Skript-Sprachen zumindest mittelbar. Eine Kompilierung, die sofort nach der Eingabe stattfindet (ohne syntaktische Analyse) war bisher nur bei Forth vorhanden und Jetzt auch bei Aleph. Eben diese Vereinigung von Kompilierung und Interaktion ist gemeint. Die breitere Basis ist ebenfalls durch diese Fähigkeit gegeben, denn es gibt keine Beschränkungen in der Elementauswahl des Alphbets, damit liegt ein lexikalischer Parser im Ermessen des Programmierers, die Syntax ist sekundär. Breiter geht es nicht.
Diesen ganzen Sermon in der Einleitung unterzubringen wäre nach meinem Sprachempfinden eine Zumutung. Wie wäre es mit Vorschlägen zur Verbesserung? Ohne Assoziationen zu Werbeprospekten. Der Initiator des Artikels ist bestimmt für jede Hilfe dankbar. Heuerli 12:35, 30. Nov. 2007 (CET)
Tschuldigung, vielleicht habe ich mich im Ton vergriffen. Als Entschädigung werde ich den Artikel demnächst ganz lesen und dann auch konstruktive Kritik äußern. Mal vorab: Das, was Du oben mit "breiter Basis" erläuterst, klingt für mich nach Metasprache.--Cactus26 14:31, 30. Nov. 2007 (CET)

Wie versprochen, eine etwas detaillierter Durchsicht. Tue mich aber mit dem Artikel schwer, was nicht unbedingt an mangelndem Programmiersprachenwissen liegt. Hoffe, Du kannst mit meinem Feedback was anfangen, also:

  • Aleph ist die Weiterführung eines evolutionären Prozesses.: Sagt recht wenig, welchen Prozesses?
  • Dadurch nähert sich eine Forth-Maschine dem Ideal Turing Maschine sehr viel mehr, als herkömmliche Maschinen: Weiß nicht so recht, was ich mir unter einer herkömmlichen Maschine vorstellen soll.
  • Durch die rasant fortschreitende Entwicklung neuer Prozessoren und des verfügbaren Speicherplatzes wurde der Einsatz von Parser- und Compilergenerator möglich: Das glaube ich nicht, ich kann mir nicht vorstellen (insbesondere nicht für Compiler), dass eine nennenswerte Zahl von Compilern durch einen Generator erzeugt wurde, Compiler haben ein Front- und Backend um portabel zu sein.
  • Java und Forth benutzen indirekt die physische Maschine. Entweder über C/C++ oder direkt über den Assembler: Das stimmt so nicht, zumindest für Java, Forth kenne ich nicht.
  • Es sind stets physikalische Adressen zu beachten. Das ist irreführend und vermutlich auch falsch, physisch sind die Adressen im Zeitalter des virtuellen Speichers sowieso nicht.
  • Aleph ist sowohl Compiler- als auch Interpretersprache. Sie ist sogar beides gleichzeitig. Während interpretiert wird, kann compiliert werden und anders herum. Außer Aleph hat nur Forth diese Fähigkeit.: Stimmt mMn auch nicht, bei Java gibt es auch beide Varianten, auch bei .Net.
  • Die Grundlage der objektorientierten Programmierung ist die Trennung von Daten und Programm.: Das ist nun wirklich Quatsch, das Gegenteil ist wahr. Objektorientierung bringt ja gerade Funktionen und Datenstrukturen zusammen.
  • Es ist nicht angebracht, in diesem Artikel die mathematische Definition der Fakultät zu erklären. Das kannst Du ruhig voraussetzen.
  • Warum wird eigentlich die Fakultät immer als Paradebeipiel einer rekursiven Implementierung dargestellt? Ich habe nichts gegen Rekursion, im Gegenteil, aber wenn es mindestens genauso einfach auch iterativ geht, sollte man es auch so lösen.

--Cactus26 16:08, 30. Nov. 2007 (CET)

Ich habe mir zunächst einmal erlaubt Deine Punkte (virtuell) zu nummerieren um Stellung nehmen zu können.
  • zu 1: Seit programmiert wird läuft ein evolutionärer Prozess (der Programmiersprachen - mein Zugeständnis). Die zu besetzenden Nischen sind die Bedürfnisse der Anwender. Bei Programmiersprachen also die Programmierer.
  • zu 2: Eine "herkömmliche" Maschine ist physisch und begrenzt (Adressraum). Es kann sich um einen Chip handeln. Eine Turingmaschine unterliegt diesen Beschränkungen nicht.
  • zu 3: Elementare Literatur schafft Abhilfe - "Compilers - Principles, Techniques and Tool" von Aho, Sethi, Ullman, Verlag Addison-Wesley. Der"Compiler-Compiler" ist heute ein normales Werkzeug.
  • zu 4: Java hat eine virtuelle Maschine - JVM genannt. Diese Maschine führt Bytecode aus. Der Bytecode-Interpreter ist in C/C++ geschrieben und eine untergeordnete Einheit der JVM. Forth hat ebenfalls eine virtuelle Maschine, die in Jave einfach weiterentwickelt wurde. Hier ebenfals elementare Literatur: "Java Virtual Machine, Sprachem Kpnzept, Architektur" von Dalheimer im O' Reilly Verlag.
  • zu 5: Physische Adressen sind durchaus vorhanden - Stichwort "side effect". Wie diese physischen Adressen aussehen, kann in einem Beispiel des Kurses auf WV angesehen werden.
  • zu 6: Java besitzt diese Fähigkeit nur eingeschränkt über Reflection. Deshalb gibt es Aleph.
  • zu 7: Nachlesen bei "Eiffel". Die Trennung von Daten und Programm ist das Paradigma der OOP. Die Zusammenfassung wurde gerade bei Java durch die Unterscheidung von Daten und Properties deutlich.
  • zu 8: Könnte ich irgendetwas voraussetzen, bräuchte hier nichts zu stehen. Es geht gerade darum, den Interessierten einen Fixpunkt zu geben, der dauernd benutzt wird und deshalb als Bezug für eigene Überlegungen dient.
  • zu 9: Spätestens Ackermann sollte auch dem letzten Vertreter der allein selig machenden iterativen Programmierung seine Grenzen aufgefürt haben. Nicht alles was rekusiv lösbar ist, ist auch iterativ lösbar! Genau darum existiert die Rekursion und keinesfalls weil der Quellcode so schön kurz ist. Allerdings gehört Ackermann nicht zu den gängigen Beispielen in der Beschreibung einer Programmiersprache.
Soweit die Klärung der Fragen/Anmerkungen zur elementaren Programmierung. Gibt es, außer der Kritik zur "Orientierung an einem fiktiven Werbeprospekt" Hilfe bei der Formulierung? Dankbarkeit wurde bereits versichert. Heuerli 19:03, 30. Nov. 2007 (CET)
Habe den Eindruck, dass Du mit meiner konstruktiv gemeinten Kritik nicht sonderlich viel anfangen kannst, insofern lohnt es wahrscheinlich nicht, auf die einzelnen Punkte nochmals einzugehen. Nur so viel: Das mit der Objektorientierung solltest Du Dir unbedingt noch mal ansehen. Das nachzulesen bei Eiffel meinst Du vermutlich nicht wörtlich, vermutlich meinst Du "nachzulesen bei Bertrand Meyer", dem Erfinder von Eiffel. Es würde mich allerdings wundern, wenn B. Meyer sowas gesagt haben sollte, da würde mich schon genau die Textstelle interessieren, aus der Du eine solche Interpretation ableitest. Im übrigen passt mMn Dein Diskussionsstil nicht zur Qualität des Artikels.--Cactus26 12:17, 1. Dez. 2007 (CET)
Ich gebe Dir unumwunden Recht. Kontruktiv gemeint mag die Kritik gewesen sein, aber zu subjektiv (Stil, Aversion gegen Weiterlesen usw.). Fachlich fundierte Kritik darf - ja sollte - sogar destruktiv sein. Gewiss ist man bereit derartig angetragene Punkte umzusetzen. Falsch wäre es, die Beschreibung dem Wissenstand von "Kritikern" anzupassen. Wenn etwas wegen der genannten Fakten funktioniert, diese Gegebenheiten also notwendige Bedingung sind, so würde eine Anpassung des Artikels an einen unzureichend vorbereiteten Leser zu einem Grundlagenkurs der Programmierung ausufern. Das ist gewiss nicht Anspruch und Ziel von WP, dafür gibt es WV. Heuerli 15:31, 1. Dez. 2007 (CET)
Dann will ich mal versuchen das einige der Punkte weniger subjektiv zu formulieren:
  • zu 5. Cactus meinte sicherlich, dass im Zeitalter der virtuellen Speicherverwaltung niemand außer dem Betriebssystemkern mit physikalischen Adressen in Kontakt kommt. Absolut niemand. Siehe auch hier
  • zu 6. Wegen "sowohl Compiler- als auch Interpretersprache": Das ist doch eigentlich nicht ein Feature der Sprache, sondern ein Feature des Compilers/Interpreters. Für Basic gibt es zum Beispiel sowohl Compiler als auch Interpreter. Wenn mit dem Satz im Artikel etwas anderes gemeint ist kommt das nicht klar rüber.
  • zu 7. Wenn man über Trennung von Daten und Programm redet muss man erstmal klarstellen von welcher Ebene man hier redet. Auf Speicherebene ist das ganze schon seit Ewigkeiten getrennt (Codesegment vs Datensegment). Auf höheren Ebene wurden Daten und Code durch die OO Programmierung auf eine gewisse Art nicht mehr getrennt sondern zusammengeführt. Zu bestimmten Objekten (=Daten) gibt es bestimmte Methoden (=Code) die logisch miteinander verbunden sind. Wenn man also von Trennung von Code und Daten spricht muss man unbedingt dazu sagen auf welcher Ebene das gemeint ist.
Hoffe das hilft etwas. --Regani 19:56, 1. Dez. 2007 (CET)
Danke für die deeskalierenden Worte Regani. Es sollte wirklich kein Nachhilfekurs werden. Eigentlich läuft es auf die Frage hinaus: "Welches treffende Synonym sollte für Adressierung, Pointierung, Referenzierung und (bei Aleph) der Verwendung ungebundener und untypisierter Variablen benutzt werden?" Virtualisierte Maschinen, die wieder auf einer virtuellen Maschine aufbauen sind rar und die beiden einzigen Vertreter benutzen Letzteres. Ich denke das wären zu viele spezifische Gegebenheiten und halte den Hinweis auf physikalische Adressen für hinreichend. Wenn es etwas Besseres gibt -immer her damit. Heuerli 12:20, 2. Dez. 2007 (CET)

Entschuldigt, dass ich hier mit der Tür ins Haus Falle, aber ich sehe keine zuverlässigen, unabhängigen Quellen für den ganzen Artikel angegeben. D.h. eigentlich müsste der Artikel gelöscht werden und dürfte erst wiederkommen, wenn es Veröffentlichungen gibt. --Pjacobi 23:30, 1. Dez. 2007 (CET)

Dann müsste er auch in WV entfernt werden. Wenn Du dann schon dabei bist, lösche auch die Peirce-Zahlen, denn es gibt nur zu Peirce selbst entsprechende Literatur. Ach ja - bevor ich es vergesse - da wären dann noch: Hierarchie mathematischer Strukturen, Gruppentheorie-Glossar, Stapelspeicher ... Heuerli 12:29, 2. Dez. 2007 (CET)
Ich glaube, dass Witzereißen nicht hilft. Und natürlich wäre auch Erwähnung in WV zu überdenken. Bedenklich auch dass die Vereinsseite, die Erwähnung von Aleph prominent herausstellt. Das lässt bei mir immer Alarmglocken läuten.
Welche Veröffentlichungen gibt es also -- oder soll ich gleich Löschantrag stellen?
--Pjacobi 18:22, 2. Dez. 2007 (CET)
Schon erledigt! Heuerli 19:35, 2. Dez. 2007 (CET)

Merkwürdigkeiten?

Da das Ganze hier irgendwie eingeschlafen zu sein scheint, möchte ich hier noch mal auf Merkwürdigkeiten hinweisen. Ich glaube nicht, ein ausgewiesener Experte zu sein, bilde mir aber ein, die Grundlagen zu kennen.

Das Sprachkonzept von Aleph ist näher an dem einer natürlichen Sprache als einer Programmiersprache. Damit könnte Aleph als nicht kontextfrei angesehen werden. Tatsächlich ist Aleph kontextfrei wenn es verlangt wird. Auch diese Fähigkeit teilt Aleph mit Forth. Diese hoch geschätzte Erweiterung ergibt sich aus der nicht vorhandenen Grammatik. Es gibt nicht einmal eine Syntax im eigentlichen Sinne

Kontextfrei und nicht-kontextfrei beziehen sich doch auf die formale Grammatik einer formalen Sprache, in diesem Falle Aleph - in den nächsten Sätzen wird aber die Existenz einer Grammatik geleugnet. Mir scheint auch die Nähe zu natürlichen Sprachen sehr schwammig formuliert. Ohne Aufstellung einer Grammatik kann man doch keine Aussage über die Klassifizierung in der Chomsky-Hierarchie ("nicht kontextfrei") machen, oder? Wie soll es eigentlich eine Programmiersprache geben können die keine „Syntax im eigentlichen [formalen???] Sinne“ hat? --93.193.210.53 20:36, 28. Apr. 2014 (CEST)