NG Programmiersprache?
-
Ich interessieren mich über eure Gedanke wie eine Programmiersprache aussehen, bieten muss, damit Sie im Betracht käme, euch näher mit der Programmiersprache zu beschäftigen bzw. auch damit zu arbeiten?
P.S: An Flamerei bin ich nicht interessiert.
-
schau dir doch mal ansi c syntax an;)
-
Ich sage mal so: ansehen würde ich mir jede Sprache, für die ich irgendwie Verwendung hätte - einfach des Interesses wegen (was hat sie für Features, mit denen sie sich von anderen Sprachen abhebt etc.).
Damit ich wirklich damit arbeite, muss sie mich wirklich überzeugen. Dabei haben verschiedene "Features" Priorität:
- Portabilitaet: wenn eine Sprache (oder eher die Runtime/Standardlib) nicht wenigstens unter Linux und Windows läuft, ist sie für mich gestorben. Tendenziell sollte sie leichtgewichtig sein und auf wesentlich mehr Plattformen portiert worden sein.
- Orthogonalität: Anweisungen/Funktionsnamen usw. sollten alle nach einem bestimmten Schema benannt worden/aufgebaut sein. Absolute hassen tu ich Sprachen, wo man nicht auf ähnliche Dinge schliessen kann. Paradebeispiel für eine grottiges Stück Sprache ist für mich immer Bash *schauder*
- Verbreitung: es ist mir schon recht wichtig, dass eine Community existiert und man irgendwie Hilfe bekommt. Ausserdem sollten ein paar Libraries vorhanden sein etc. Ist für mich aber nicht zwangsläufig K.O. Kriterium, ich würde einer gut designten Sprache, welche meiner Meinung nach eine Zukunft hat, durchaus eine Chance geben.
und nun noch ein paar _sehr_ mit Vorurteilen behaftete Aussagen:
- Sie muss kompiliert werden (natürlich nutze ich auch hin und wieder eine Skriptsprache, aber für was grösseres wohl kaum - kommt aber auch auf den Fall drauf an, ich würde auch nie freiwillig nen Web-Projekt mit PHP machen).
- Kein GC.
- Direkter Speicherzugriff.Bin low level freak
Gibt noch mehr Punkte, das waren die wichtigsten, welche mir gleich eingefallen sind.
-
Ich würde mir ein striktes, statisches Typsystem (dafür aber sehr flexibel in der Typerzeugung) wie bei ADA wünschen. Generische-Programmierung ala C++. Design-by-contract-Möglichkeiten ala Eiffel. Restarts in den Exceptions ala Common Lisp. Metaprogrammierung. Das ganze sollte einfach parsbar sein und direkt einen Parser für die Sprache in der Standardbib haben (damit die Entwicklung von Zusatztools begünstigt wird). Optionaler(!) GC. Wenn es Operatoren gibt, dann auf jeden Fall Operatorüberladung.
Einfaches FFI für C (damit man ohne Probleme Bibliotheken einbinden kann. Eine Sprache ohne Bibliotheken ist leider oft unpraktisch).
-
a)
Ich hätte gern einen minimalen Kern, Ganzzahlen und Fließkommazahlen verschiederer Längen, Adressdereferenzierung, goto, if mit nur einem bedingten Befehl, und was man so nötig noch braucht. Keine Ahnung, was man braucht. Vielleicht in einem namespace native oder so. Oder nur erreichbar in Dateien, die vor allen anderen Befehlen #pragma IKnowWhatIDo drin haben.Und die Möglichkeit, Sprachmittel zu definieren, echte Sprachmittel, die den Parser bestimmen, was vielleicht zu einem rekursiven Abstiegscompiler führt, der nicht hardcoded ist, sondern sich an unserem Syntax-Semantik-Baum entlanghangelt, oder einem Compiler, der immer, wenn was neues kommt, das lernt und von vorne beginnt. Keine Bange, das Von-Vorne-Beginnen betrifft nur die ersten Versionen und die Sprachdefinition, die unter Umständen dadurch duetlich vereinfacht wird, später werden schlaue Leute auch den Compiler optimieren und nur von vorne beginnen, wenn es wirklich nötig ist, praktisch nie.
Zum Beispiel:
syntax::define while(cond) cmd syntax::as nochmal: if(cond) cmd goto nochmal
Was ich mir davon verspreche ist: Zum Beispiel wenn man eine Sprache wie C++ hat, die kein foreach hat, aber andere Sprachen mit foreach zu Recht erblühen, kann man foreach nachrüsten, einfach eine geschickte Definition aus der Open-Source-Gemeinde inkludieren, und muß nicht 0x Jahre warten, bis ein neuer Standard kommt.
b)
Ich hätte gerne, daß alle bereits definierten Funktionen auch zur Compilezeit schon aufrufbar sind, es muß gehen, daßint q(int x) { if(x==0) return 0; else return q(x-1)+2*x-1; } int const q100=q(100);
zerfällt zu
int const q100=10000;
Auch muß es möglich sein, bereits definierte Funktionen auszutauschen, Objekte zu ändern, und nach Belieben Bezeichner wieder zu löschen. Quasi wie in Perl oder alten Basic-Dialekten, wo jede gelesene Code-Einheit (evtl auch Blocks, mehrseitige Klassendefinitionen..., und auch Syntax-Veränderungsbefehle) sofort ausgeführt wird, und dann darf da auch mal
syntax::delete(int q(int x))
stehen.
Was ich mir davon verspreche ist: Zum Beispiel kann man zur Compilezeit optimale Hashtables erzeugen, sogar in Dateien Berechnungsergebnisse cachen, wenn man bitter drauf ist, sogar ausmessen, ob MUL oder dreimal ADD plus zweimal LEA schneller ist. Egal, man *kann*.
c)
Whitespace-Overloading, wenigstens zur Compilezeit, also in Dateien, die IKnowWhatIDo pragmatisieren. Denn ich liebe die Strukturierung durch Einrücken von Python. liebe liebe liebe. Aber ich weiß, daß viele das nicht mögen. Vielleicht kriegt man es ja hin, daß mit dem schlauen Sprachdingens je nach Inkludierung die Klammernmöger ihre Klammen nehmen können und die Einrückungsmöger ihre Einrückungen, obwohl abgesehen davon alle anderen weiteren Inkludierungen davon unabhängig sind. *träum*.
-
Zeus schrieb:
Ich interessieren mich über eure Gedanke wie eine Programmiersprache aussehen, bieten muss, damit Sie im Betracht käme, euch näher mit der Programmiersprache zu beschäftigen bzw. auch damit zu arbeiten?
P.S: An Flamerei bin ich nicht interessiert.
Leicht zu erlernen sein (also beliebten Sprachen von der Syntax her ähnlich), Dinge besser machen, die mich bei anderen Sachen nerven und ungewohnte Features (d.h. ich muss sie konkret lernen) müssen einen entsprechenden Mehrwert bringen, damit ich sie auch lernen will.
-
Hoert sich an, als wollten hier die meisten in Lisp oder aehnlichem programmieren.
P.S: An Flamerei bin ich nicht interessiert.
Aber vielleicht andere. Wayne.
-
Cool wäre eine Sprache, die Parallelisierung als fundamentales Konzept unterstützt
-
nevermore schrieb:
Cool wäre eine Sprache, die Parallelisierung als fundamentales Konzept unterstützt
Haskell, Clojure, Concurrent ML, PLT-Scheme, ...
-
Ja, habe schon gehört das funktionale Sprachen das toll können... Besonders Erlang hört man da oft in dem Zusammenhang. Bin aber bis jetzt noch nicht dazu gekommen, mich ernsthaft damit zu beschäftigen.
-
Das funktionale ist aber nicht das einzige was Clojure z.B. da bietet. Für Mutable State implementiert es z.B. das Software Transactional Memory Modell und weiteres.
-
Es ging ja auch ums Parallele ... Und STM ist in funktionalen Sprachen besser zu implementieren, da Zustandsaenderungen sehr explizit sind.
-
nevermore schrieb:
Cool wäre eine Sprache, die Parallelisierung als fundamentales Konzept unterstützt
Da wäre Google go als Vertreter der imperativen Programmiersprachen zu nennen. Hat definitiv interessante Ansätze für Parallelisierung (built-in "threads" [go-routinen], channels). Auch die Syntax macht (zu grossen Teilen) bzgl meines zweiten Punktes doch etwas mehr Sinn als z.B. C++-Syntax.
-
Googles go hat das meiste auch nur aus Haskell oder Erlang zusammengeklaut.
-
knivil schrieb:
Googles go hat das meiste auch nur aus Haskell oder Erlang zusammengeklaut.
Also ist go gut.
-
Ich finde C# hat genug Features und ich glaube sogar die meisten. C# beinhaltet viel und muss glaube ich in Zukunft nicht mehr viel hinzufügen. Man müsste meiner Meinung nach, damit ich mir die Sprache angucke, mindestens soviel bieten können wie C# im Zusammenhang mit .NET.
-
knivil schrieb:
Googles go hat das meiste auch nur aus Haskell oder Erlang zusammengeklaut.
Und die Bugs wie Monaden, Stateless sein, Lazy Evaluation, komische Syntax, lisp Listen aufgelöst und Dinge wie OOP (ja ist es, wenn auch etwas ungewöhnlich) und einfaches nutzen von C Librarys nachgerüstet.
(Nicht das es nicht Dinge gibt die man mit Erlang besser machen kann als mit issue17, aber bei vielen dingen ist man auch mit etwas „normaleren“ einfacher dran)
-
-
Next-Generation
-
programmierloser schrieb:
- Sie muss kompiliert werden (natürlich nutze ich auch hin und wieder eine Skriptsprache, aber für was grösseres wohl kaum - kommt aber auch auf den Fall drauf an, ich würde auch nie freiwillig nen Web-Projekt mit PHP machen).
Womit würdest Du denn dann sonst ein Web-Projekt machen?