#1
| ||||
| ||||
Ideen für eine neue Scriptsprache :)Guten Abend. Ende letzten Jahres habe ich mit der Entwicklung meines Content Management Systems angehalten, weil ich realisierte, dass PHP - kurz gesagt - Müll war (s. auch Benutzertitel ): Es erlaubt weder die Deklaration von Packages oder Namespaces, die Überladung von Funktionen und Methoden, es besitzt eine schlechte Typisierung und viele Erweiterungen sind stets optional enthalten, was uns natürlich oftmals an deren Einsatz hindert. Diese und weitere Probleme veranlassten mich, verstärkt über die Entwicklung einer neuen interpretierten Programmiersprache und deren Design nachzudenken. Ich habe begonnen, einen kleinen Interpreter in C++ zu basteln, möchte jedoch betonen, dass dieser bisher nur als Experiment zu betrachten ist. Ich habe im Moment weder vor PHP, Ruby und Konsorten Konkurrenz zu machen, noch ihn sonst irgendwie zu verbreiten. Fertig sind jedenfalls bisher der Lexer / Scanner, der bestimmte Zeichenfolgen als Tokens erkennt und um beliebige Tokens erweitert werden kann, und der Parser für arithmetische Ausdrücke. Ich bin jetzt an dem Punkt angelangt, dass ich nun die Sprachkonstrukte usw. implementieren muss, wo ihr jetzt ins Spiel kommt. Ich muss gestehen, dass ich nicht sonderlich kreativ bin, was das Design der Sprache angeht. Sie sollte möglichst klar und einfach (und vor allen Dingen logisch) strukturiert sein, sodass sie sich als Scriptsprache fürs Web, aber auch zur Erweiterung von Software eignen würde. Ich habe eigentlich vor, mich grob an C++ und Java zu orientieren. Ich möchte nun gerne von euch erfahren, was ihr an bestimmten Programmiersprachen schätzt, und was weniger. Mich würde auch vor allen Dingen eure Meinung bzgl. allgemeinen Programmierparadigmen (Aspekt- und Objektorientierte Programmierung, ...), Reflection, Typisierung und generischer Programmierung (inkl. Templates und Überladung von Funktionen (Polymorphie) und Operatoren) interessieren. Vielleicht fallen euch auch Möglichkeiten ein, wie man bereits existierende Konzepte aus anderern Sprachen verbesseren könnte. Schönen Abend noch / Gute Nacht, codethief. |
#2
| |||
| |||
1) lambda/closures/functional programming (vgl. Common Lisp, Ruby, etc.) 2) Offene Klassen (vgl. Ruby/Common Lisps CLOS)/Categories (vgl Groovy/meinen Vorschlag für Java) 3) Macros/AST-Rewriting (vgl. Common Lisp) 4) Type inference (Typen fest, aber nicht explizit angegeben) - vgl. Haskell Das ist erstmal so das wichtigste, was mir so einfällt. Wie schonmal erwähnt fände ich es sinnvoll, das Ding in Java zu schreiben: Die Möglichkeiten der Bibliotheken, die du da geschenkt bekommst, sind einfach genial. __________________ Patrick Gotthardt Patrick Gotthardt on Software |
#3
| ||||
| ||||
Zu spät: C++ ist 1. geiler (:P), 2. will ich C++ lernen und 3. ist das Ding schon in C++ geschrieben und 4. ist es schneller (hab darüber mit mehreren Leuten gesprochen, die sowohl C++ als auch Java konnten). 1) und 2) muss ich mir mal genauer anschauen 3) Meinst du damit, dass man den Code bzw. Klassen / Methoden zur Laufzeit verändern kann? 4) Code: foo = new MeineKlasse(); |
#4
| |||
| |||
Ich lass mich da jetzt nicht auf ne Diskussion ein, aber eine Sache _muss_ ich einfach reinwerfen: Darum ist JRuby auch doppelt so schnell wie Ruby, ne? Du kannst in beiden Sprachen Müll machen und generell ist Java wirklich schnell genug - denk nur mal an den integrierten GC, der nicht umsonst der Beste der Welt ist - und den bekommst geschenkt. Spielt aber keine Rolle, weil 2. ein guter Grund ist. Alles andere ist natürlich subjektiv oder falsch. Zu 3) Damit meine ich, dass man eine Klasse an Stelle A definieren kann und an Stelle B ne Methode, Eigenschaft, etc. hinzufügen kann. Zu 4) Das und auch sowas: Code: getFoobarList := { return new ArrayList<Foobar>(); } // ist vom Typ Function foo := getFoobarList(); // ist vom Typ ArrayList<Foobar> Was ich übrigens vergessen hatte: 5) Metadata/Annotations __________________ Patrick Gotthardt Patrick Gotthardt on Software |
#5
| ||||
| ||||
Hmmm... neue Scriptsprache für einen Webauftritt. Also das erste wäre, das die Variabeln wie in c++ oder java nicht mehr automatisch eine Typezuweisung bekommen. 1. wird es dann sicherer 2. wäre ein sauberer Codestil gegeben. Was vermisse ich an c++ und java, das sind sowas wie Konstanten, die mag ich eigentlich sehr gerne an PHP. Dann wäre sowas wie zuweisung, hier hat schon jemand ein Beispiel gegeben: Code: int foo := 1; Code: int a := 2; int b := 4; if(a = b) { a++; } Variabeln mit $ einleiten und Konstanten so wie sie sind. Code: int $a := 2; constant int a := 4; if($a < a) { $a++; } __________________ Karsten Achterrath Die Signatur befindet sich im Offlinemodus, bitte versuchen Sie es später wieder. |
#6
| ||||
| ||||
@Patrick: Jaja. zu 3) Meiner Meinung nach dürfte das nur zu unübersichtlichem Code führen. zu 4) Genau das hatte ich vor (exakt diese Syntax mit Ausnahme des ":="). zu 5) Erm, was? @Karsten: Ich will mich jetzt bzgl. Java nicht allzu weit aus dem Fenster lehnen, weshalb ich vorsichtshalber mal nur für C++ spreche: C++ kennt symbolische Konstanten (#define x 1), konstante Variablen und Enum-Typen, die ich auch zu Konstanten zähle. PHP finde ich diesbzgl. recht inkonsequent. Einerseits kann symbolische Konstanten mit define() definieren, in Klassen sind jedoch auch const-Konstanten erlaubt. In C++ sieht das zwar auf den ersten Blick ähnlich aus, jedoch dort hat alles einen bestimmten Zweck: symbolische Konstanten (die mittels #define deklariert wurden), werden vor dem Kompilieren im Code durch den Präprozessor ersetzt und konstante Variablen dürfen ihren Wert ganz einfach nicht ändern, verhalten sich aber ansonsten ganz genauso (es können also auch Objekte sein). Konstanten werden in PHP hauptsächlich dazu verwendet, bestimmte konstante Werte, beispielsweise den Fehlertyp o.ä., an Funktionen / Methoden zu übergeben (man schaue sich da nur mal PEAR und ähnliche Softwarepakete an). Allerdings könnte man genauso völlig unpassende Konstanten, die den gleichen Wert repräsentieren, übergeben, da PHP diesbzgl. nicht typisiert ist. In C++ kann eine Methode einen Wert eines enum-Typs, also quasi nur bestimmte symbolische Konstanten, die in dem enum definiert wurden, erwarten. Und mit deiner Methode der Wertzuweisung und des Vergleichs mittels := und = kann ich mich überhaupt nicht anfreunden. Ich gehöre wohl zu den größten Pascal- und Delphi-Hassern auf diesem Planeten. |
#7
| ||||
| ||||
codethief, kennst du C#? Soll's wohl auch schon für Linux geben. (Nein, nicht ASP.NET… Nur die Sprache und das dahinterliegende Klassenframework.) __________________ Yves Goergen Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit) |
#8
| ||||
| ||||
Ich kenn es vom Namen und auch einigermaßen von der Syntax her, ist Java und C++ sehr ähnlich, wieso? |
#9
| ||||
| ||||
Naja, du hast nach „schönen“ Programmiersprachen gefragt und gemeint, dass du irgendwas wie C++ und Java haben willst. Da ich mich mittlerweile (für Windows-UI-Programme) sehr an C# gewöhnt habe und damit eigentlich sehr gut zurecht komme, dachte ich, das könnte sowas sein, was du suchst. Die Vorlesung Compilerbau Teil 1 hab ich nach wenigen Wochen in favour of einer anderen Vorlesung wieder abgesetzt. Es mag wohl sehr interessant sein, zu wissen, wie man eine Programmiersprache übersetzt, allerdings bin ich bereits zuvor an den in Java zu schreibenden Parsern gescheitert, da muss jetzt nicht auch noch das volle Programm sein. Will meinen: Wenn du nicht unbedingt yet another language erfinden musst, ist es schon etwas viel Arbeit, meinst du nicht? Allein wie lange so viele Menschen gebraucht haben, um PHP oder Python zu dem zu machen, was es heute ist… __________________ Yves Goergen Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit) |
#10
| ||||
| ||||
Zitat:
__________________ Karsten Achterrath Die Signatur befindet sich im Offlinemodus, bitte versuchen Sie es später wieder. |
#11
| ||||
| ||||
Zitat:
Trotzdem hast du mir meine Fragen nicht beantwortet - Parserbau usw. überlass mal mir. Es geht mir nur um die Sprache an sich. Vielleicht können wir uns dazu ja auch mal über Jabber kurzschließen. |
#12
| |||
| |||
3) Lässt sich drüber diskutieren. Generell richtig, aber zumindest bei Javascript find ich das verdammt nützlich. Zur Not gehts halt so, wie ich das bei mir im Blog beschrieben habe. Bleibt einfach, ist lokal und daher deutlich. 4) Das ":=" hab ich aus dem Proposal von Gosling für Java. Würd ich nur bei type inference nehmen. Weil: Normal mag ich das auch nicht. 5) Du packst Infos über den Code in den Code. Finde ich in Java und .NET extrem nützlich. z.B. wird das gern für ORM eingesetzt. __________________ Patrick Gotthardt Patrick Gotthardt on Software |
#13
| ||||
| ||||
Hast du bzgl. 5) einen Link für mich? @all: Zitat:
|
Stichworte |
- |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Ideen sammeln für eine andere Art Forum | LonelyPixel | Entwicklung und Konzeption sozialer Software | 34 | 26.10.2007 13:04 |
Ideen rund um Nullposter | TRS | Community Management, Administration und Moderation | 32 | 22.05.2005 11:10 |
Ideen und Anregungen für Forenscout und Boardunity | itst | Informationen, Anregungen und Kritik | 16 | 17.07.2004 18:48 |
Suche einen Schwerpunkt für eine neue Community.. | Schneidwui | Community Management, Administration und Moderation | 6 | 12.08.2002 16:13 |