Hat diese Sprache ihre Nische | Zukunft?

8

Ich arbeite an einer neuen Sprache, die für die Web-Entwicklung, die Integration in Anwendungen, verteilte Anwendungen, hochzuverlässige Software (aber für eine ferne Zukunft) gedacht ist.

Außerdem ist es Ziel, die Entwicklungskosten auf lange Sicht zu reduzieren - mehr Zeit, um sichereren Code und weniger Unterstützung später zu schreiben. Und schließlich erzwingt es viele Dinge, die echte Teams erzwingen müssen - wie eine plattformübergreifende IDE, ein Codestyle, ein Web-Framework.

Kurz gesagt, die wichtigsten Syntax- / Sprachfunktionen sind:

  1. Open Source, nicht restriktive Lizenzierung. Sicher Crossplatform.

  2. Schmeckt wie C ++ aber einfacher, Pythonic Syntax mit strenger & amp; statische Typprüfung Leichter zu lernen, keine Mehrfachvererbung und andere Dinge, die sowieso keiner kennt: -)

  3. Der LLVM-Bytecode / Kompilierungs-Backend liefert eine Geschwindigkeit nahe C.

  4. Hat beide Speicherbereinigung & amp; Explizite Objektzerstörung.

  5. Reale OS-Threads, native Unterstützung von Multicore-Computern. Multithreading ist Teil der Sprache, keine Bibliothek.

  6. Typen haben auf jeder Plattform die gleiche Breite. int (32), lang (64) e.t.c

  7. Built in Post und Vorbedingungen, behauptet, winzige Unit-Tests. Du schreibst eine Methode - du kannst all diese Dinge auf einen Platz schreiben, also hast du Dinge an einem Ort. Wenn Sie sich Sorgen machen, dass Ihr Klassen-Quellcode damit aufgebläht wird - arbeiten IDEs, um das zu verbergen, was Sie jetzt nicht brauchen.

  8. Java-ähnliche Ausnahmebehandlung (d. h. Sie müssen alle Ausnahmen behandeln)

Ich denke, ich werde Web & amp; Cluster-Funktionen für jetzt ...

Was denkst du? Gibt es ähnliche Sprachen, die ich vermisst habe?

    
BarsMonster 07.09.2010, 14:13
quelle

10 Antworten

5

Auf einige Ihrer Punkte einzeln antworten (ich habe weggelassen, was ich entweder unwichtig oder gut halte):

  

gezielt für Web-Entwicklung

Die meisten Leute benutzen PHP. Nicht weil es die beste verfügbare Sprache ist. Das ist sicher.

  

Einbetten in Anwendungen

Lua .

  

verteilte Anwendungen, hochzuverlässige Software (aber das ist für die ferne Zukunft).

Haben Sie Erlang , sowohl das Design als auch die Referenzimplementierung, sorgfältig studiert?

  

es erzwingt viele Dinge, die echte Teams erzwingen müssen - wie eine plattformübergreifende IDE, ein Codestyle, ein Web-Framework.

Wenn Ihre Sprache erfolgreich ist, werden andere IDEs, andere Code-Stile, andere Web-Frameworks erstellt.

  

Multithreading ist ein Teil der Sprache, keine Bibliothek.

Wirklich gute Sprachen für Multithreading verbieten Nebenwirkungen innerhalb von Threads. Ja, in der Praxis bedeutet das ziemlich viel nur Erlang.

  

Typen haben auf jeder Plattform die gleiche Breite. int (32), lang (64) e.t.c

Seufz ... Es gibt nur eine vernünftige Breite für Ganzzahlen außerhalb von Sprachen auf Maschinenebene wie C: unendlich.

Das Entwerfen Ihrer eigenen Sprache wird Ihnen zweifellos etwas beibringen. Aber das Entwerfen einer guten Sprache ist wie das Entwerfen eines guten Kryptosystems: Viele Amateure versuchen es, aber es braucht einen Experten, um es gut zu machen.

Ich schlage vor, dass Sie hier einige Antworten von Norman Ramsey auf das Design von Programmiersprachen lesen, beginnend mit dieser Thread .

Wenn Sie Interesse an verteilten Anwendungen haben, sollten Sie Erlang unbedingt kennen. Wie bei der sequentiellen Programmierung ist das Minimum eine imperative Sprache und eine funktionale Sprache (idealerweise Lisp / Scheme und Haskell, aber F # ist ein guter Anfang). Ich empfehle auch, mindestens eine Hochsprache zu kennen, die keine Objekte hat, nur damit Sie verstehen, dass Objekte nicht oft das Leben des Programmierers einfacher machen können (weil Objekte sind komplex ).

Was andere Menschen dazu bringen könnte, Ihre Sprache zu lernen ... Gute Tools / Bibliotheken / Frameworks können nicht schaden (FORTRAN, PHP), und eine große Firma, die das Beispiel setzt, kann nicht schaden (Java, C #). Gutes Design scheint kein großer Faktor zu sein (ein ha-ha-einziger ernsthafter Witz besagt, dass das, was eine Sprache erfolgreich macht, { geschweifte Klammern } verwendet, um Blöcke zu begrenzen: C, C ++, Java, C # , php) ...

    
Gilles 07.09.2010, 23:28
quelle
10

Zusammenfassend: Ihre Sprache hat keine wirklichen Verkaufsargumente. Es macht genau das, was ein Dutzend anderer Sprachen bereits getan hat, mit Syntax und Semantik nur leicht aus, je nachdem woher der Programmierer kommt. Dies mag eine gute Sache sein, da es die Sprache einfacher macht, sich anzupassen, aber Sie müssen auch die Leute davon überzeugen, dass es Probleme gibt, um zu wechseln. All diese Dinge müssen neu gebaut und debugged und dokumentiert werden, Werkzeuge müssen programmiert werden, die Leute müssen es lernen und ihre spitzenhäutigen Chefs davon überzeugen, es zu benutzen usw. "Also ist es Sprache X mit ein paar Features von Y und netter Syntax? Aber es wird nicht den Code meiner Anwendung um 15% kürzer und sauberer machen, es wird mich nicht von Boilerplate X usw. befreien - und es wird nicht mit meiner IDE funktionieren. " Der letzte ist wichtig. Werkzeuge sind wichtig. Wenn es keine guten Werkzeuge für eine Sprache gibt, werden nur wenige Menschen zu Recht scheuen.

  

Und schließlich erzwingt es viele Dinge, die echte Teams erzwingen müssen - wie eine plattformübergreifende IDE, ein Codestyle, ein Web-Framework.

Klingt nach einem Nachteil! Wie setzt die Sprache "ein X durchsetzen"? Wie überzeugen Sie Programmierer diesen Codierstil ist der eine wahre Stil? Warum sollte nicht jemand gehen und den Hund ersetzen langsames, kaum gepflegt, stark begrenzte IDE, die Sie mit etwas besser "erzwingen"? Wie könnte ein Web-Framework möglicherweise alle Anwendungen passen? Programmierer möchten selten zu X gezwungen werden, und manchmal haben sie Recht.

Auch deine Sprache wird mit anderen reden müssen. Sie haben fertige Standardlösungen für Multithreading und Webentwicklung im Hinterkopf? Vielleicht solltest du stattdessen mit einem FFI beginnen. Python kann Erweiterungen verwenden, die in C oder C ++ geschrieben sind, dynamische Bibliotheken über ctypes verwenden und mit Cython ist es erstaunlich einfach, jede gegebene C-Bibliothek mit einer Python-Schnittstelle zu umhüllen. Hast du eine Idee, wie viele wichtige Bibliotheken in C geschrieben sind? Wenn Ihre Sprache diese nicht benutzen kann, können die Leute kaum (reale) Sachen damit machen. Denken Sie nur an GUI. Die meisten gängigen GUI-Toolkits sind C oder C ++. Und Java hat Hunderte von Bibliotheken (die anderen JVM-Sprachen profitieren viel von Java-Interop) für viele verschiedene Zwecke.

Schließlich zur Performance: LLVM kann Ihnen native Code-Generierung geben, was ein großes Plus ist (leistungsmäßig, aber auch, weil das Ergebnis standalone ist), aber die LLVM-Optimierer sind ebenfalls begrenzt. Erwarte es nicht, C zu schlagen. Vor allem nicht handgestimmt C kompiliert über ICC auf Intel CPUs;)

    
delnan 07.09.2010 15:20
quelle
8
  

"Gibt es ähnliche?   Sprachen, die ich vermisst habe? "

D ? Im Vergleich zu Ihren Funktionen:

  1. Der Compiler hat eine doppelte Lizenz - GPL und Artistic
  2. Siehe Beispielcode hier .
  3. LDC zielt auf LLVM ab. Support für D-Version 2 ist in Entwicklung.
  4. Integrierte Garbage Collection oder explizite Speicherverwaltung.
  5. core.thread
  6. Typen
  7. Komponententests / Pre- und Post-Verträge
  8. try / catch / abschließend Ausnahmebehandlung plus Umfang Garantien
Corbin March 07.09.2010 15:22
quelle
5

Was Sie uns gegeben haben, ist eine Liste von Funktionen ohne zusammenhängende Philosophie oder Erklärung, wie sie zusammenarbeiten werden. Keine der Funktionen ist einzigartig. Im besten Fall bieten Sie inkrementelle Verbesserungen gegenüber dem, was bereits vorhanden ist. Ich würde erwarten, dass es bereits Sprachen gibt, die sich mit dem, was du gesagt hast, herumschlagen, es ist nur so, dass sie immer noch ziemlich unklar sind, weil sie es nicht geschafft haben.

Sprachen haben Trägheit. Die Menschen müssen neue Sprachen und manchmal neue Werkzeuge lernen. Sie brauchen einen Anreiz, dies zu tun, und eine Verbesserung von 20% in einigen wenigen Funktionen tut nichts.

Was Sie mindestens brauchen, ist eine Killer-App und eine Form von Elevator Pitch. (Der "Elevator Pitch" ist das, was Sie den Hochrangigen über Ihr Projekt erzählen, wenn Sie mit ihnen im Aufzug sind, in der aktuellen US-amerikanischen Wirtschaftssprache.) Sie müssen Ihre Sprache für einen bestimmten Zweck und für Sie offensichtlich lernen müssen in der Lage sein, den Leuten zu erzählen, warum es sich lohnt, etwas zu lernen, bevor sie "nur eine andere Sprache von jemandem denken, der eine Sprache schreiben wollte" und weggehen.

Sie müssen eine Sprachgemeinschaft bilden. Diese Gemeinschaft braucht zunächst eine Lokalisierung: Leute, die in X großen Unternehmen arbeiten, Leute, die Y machen wollen, was auch immer. Entscheiden Sie, was diese Gemeinschaft wahrscheinlich ist, und finden Sie einen wichtigen Grund, um zu wechseln, und einige Gründe zu glauben, dass Ihre Sprache halten kann, was sie verspricht.

    
David Thornley 07.09.2010 15:47
quelle
4

Nein.

Jedes Schlagwort, das Sie in Ihre Feature-Liste aufgenommen haben, ist eine enorme Menge an Arbeit, die spezifiziert, implementiert, dokumentiert und getestet werden muss.

Wie viele Menschen werden die Sprache aktiv entwickeln? Ich schätze, das Web ist voller gescheiterter Programmiersprachenprojekte. (Gleiches gilt für Nicht-Mainstream-Betriebssysteme)

Sehen Sie, was .Net / Visual Studio oder Java / Eclipse erreicht haben. Das sind 1000 Jahre der Spezifikation, Entwicklung, Tests, Dokumentation, Feedback, Fehlerbehebungen, Service Packs.

Während meines letzten Jobs habe ich von jemandem gehört, der sein eigenes Programmier-Framework geschrieben hat, weil es "besser" war. Der resultierende Programmcode (sowohl im Framework als auch in den Anwendungen) ist sicherlich nicht mehr zu pflegen, wenn der ursprüngliche Programmierer beendet ist oder von einem Bus "getroffen" wird, wie es heißt.

Da die Liste wie Java ++ oder Mono ++ klingt, ist es wahrscheinlich besser, ein bestehendes Projekt zu verwenden, selbst wenn es nicht mit einem Namen versehen ist.

    
devio 07.09.2010 14:24
quelle
4

Vielleicht haben Sie einen Schlüsselbegriff verpasst. Leistung .

Wenn diese neue Sprache keine wirklich aussergewöhnlichen Eigenschaften hat (zB: 100% ige Leistungssteigerung gegenüber anderen Webentwicklungssprachen), denke ich, dass es ein weiterer Fisch im Teich sein wird.

Momentan bin ich für die Pflege eines Framework verantwortlich, das von meiner Firma entwickelt wurde. Es ist ein Albtraum. Wenn es nicht eine Mainstream-Community gibt, die an dieser Vollzeit arbeitet, ist es wirklich ein Elefant. Ich schätze nicht die Entscheidung meines Unternehmens, einen eigenen Rahmen (weil es "schneller" sein soll) Tag und Nacht zu entwickeln.

    
pavanlimo 07.09.2010 14:44
quelle
1

Die Sprache schmeckt meiner Meinung nach gut, ich möchte Java nicht für eine einfache Website verwenden, aber ich hätte gerne solche Typen und Dinge. ASP.NET ist ein Problem wegen der Lizenzierung und ich kann mir diese Lizenzen nicht für eine einzelne Website leisten ... Auch die Features sehen gut aus

Erinnere dich an viele Überladungen von Operatoren: Ich denke, das ist das Größte, was PHP eigentlich vermisst. Es erlaubt Klassen, sich mehr wie Grundtypen zu verhalten:)

Wenn du etwas zu testen hast, werde ich dir gerne helfen! Danke

    
Fire-Dragon-DoL 07.09.2010 14:22
quelle
1

Nun, wenn Sie das Rad neu erfinden müssen, können Sie es tun:)

Ich werde Ihnen keine Beispiele für Sprachen oder Sprachfunktionen geben, aber stattdessen gebe ich Ihnen einen Rat:

Unterstützungsrahmen ist das Wichtigste. Menschen neigen dazu, es zu lieben oder zu hassen, je nachdem, wie einfach es ist, guten Code zu schreiben, der seine Arbeit erledigt. Führen Sie daher vor der Freigabe einen Usability-Test durch. Ich meine, fragen Sie einige Leute, wie sie bestimmte Aufgaben erledigen und API entsprechend erstellen. Dann testen Sie Beta-API auf anderen Codern und hören Sie aufmerksam auf ihre Kommentare.

Grüße und viel Glück:)

    
Paweł Dyda 07.09.2010 14:23
quelle
1

Es gibt immer Platz für eine andere Programmiersprache. Abgesehen davon, dass das Design richtig ist, denke ich, dass das größte Problem darin besteht, dass es nur eine weitere Möchtegernsprache ist. Vielleicht möchten Sie sich also Ihr Marketing ansehen, Sie brauchen einen großen Sponsor, der Ihre Sprache in seine Produkte integrieren kann, oder Sie müssen eine Umgebung kreieren, am einfachsten ist das Astroturfing. Viel Glück.

Ссылка

NB: Die Namen G und G ++ sind nicht vergeben. Ach und pass auf die Patenttrolle auf.

Bearbeiten

Hoppla G / G ++ sind genommen ... noch sind noch viele Buchstaben übrig.

    
Jaydee 07.09.2010 15:30
quelle
1

Das klingt eher nach einer "Systemsprache" als nach einer "Webentwicklungssprache". Die wichtigsten Sprachen in dieser Kategorie (außer C ++ / C) sind D und Geh .

Mein Rat an Sie wäre, nicht bei Null anzufangen, sondern die Möglichkeit zu prüfen, Tools oder Bibliotheken für diese Sprachen zu erstellen, und zu sehen, wie weit Sie sie vorantreiben können.

    
cdiggins 10.10.2011 15:50
quelle