Der Quellcode der Programmiersprache V ist jetzt verfügbar.

Übersetzt in einen offenen Compiler für die Sprache V.V ist eine kompilierte Sprache mit statischer Typisierung, die sich darauf konzentriert, die Wartung der Entwicklung zu vereinfachen und eine sehr hohe Kompilierungsgeschwindigkeit zu gewährleisten. Der Code des Compilers, der Bibliotheken und der zugehörigen Werkzeuge ein unter der MIT-Lizenz.

ähnelt in vielerlei Hinsicht der Programmiersprache Go und leiht sich einige Konstruktionen aus Oberon, Rust und Swift. Die Sprache ist maximal vereinfacht, und laut dem Entwickler reicht eine Lernzeit von etwa 30 Minuten aus, um die grundlegenden Konzepte zu verstehen. Dokumentation.Trotzdem bleibt die Sprache leistungsstark genug, um die gleichen Aufgaben zu erfüllen wie andere Programmiersprachen (z. B. stehen Bibliotheken für 2D/3D-Grafik, GUI-Entwicklung und Webanwendungen zur Verfügung).

Die Schaffung einer neuen Programmiersprache wurde durch den Wunsch inspiriert, die charakteristischen Merkmale der Go-Sprache zu kombinieren: die Einfachheit der Syntax, die Geschwindigkeit der Kompilierung, die einfache Parallelisierung von Operationen, Portabilität sowie Wartbarkeit des Codes, mit der Leistung von C/C++, der Sicherheit von Rust und der Generierung von Maschinencode zur Kompilierungszeit von Zig. Zudem wollte ich einen kompakten und schnellen Compiler entwickeln, der ohne externe Abhängigkeiten arbeitet, die globale Sichtbarkeit (globale Variablen) vermeidet und die Möglichkeit zur "heißen" Neu kompilierung des Codes bietet.

Im Vergleich zu C++ ist die neue Sprache deutlich einfacher, ermöglicht eine Geschwindigkeit der Kompilierung von bis zu 400 Mal und nutzt Praktiken für sicheres Programmieren. Sie ist frei von Problemen mit undefiniertem Verhalten und bietet eingebaute Werkzeuge zur Parallelisierung von Operationen. Im Vergleich zu Python ist die Sprache V schneller, einfacher, sicherer und leichter zu pflegen. Im Vergleich zu Go gibt es in V keine globalen Variablen, keinen Null-Wert; alle Variablenwerte müssen immer definiert sein, alle Objekte sind standardmäßig unveränderlich, es wird nur eine Art von Zuweisungen unterstützt („a := 0“), der Runtime und die Größe der finalen Ausgabedateien sind erheblich kompakter, es gibt volle Portabilität mit C, keinen Garbage Collector, schnellere Serialisierung und die Möglichkeit der String-Interpolation („println(‘$foo: $bar.baz’)“).

fn main() {
areas := [‘game’, ‘web’, ‘tools’, ‘science’, ‘systems’, ‘GUI’, ‘mobile’]
a := 10
if true {
a := 20
}
for area in areas {
println(‘Hello, $area developers!’)
}
}

Projektmerkmale:

  • Ein kompakter und schneller Compiler, der zusammen mit der Standardbibliothek etwa 400 KB benötigt. Die hohe Kompiliergeschwindigkeit wird durch die direkte Maschinenkode-Generierung und Modularität erreicht. Die Kompiliergeschwindigkeit beträgt etwa 1,2 Millionen Zeilen Code pro Sekunde auf einem CPU-Kern (es wird darauf hingewiesen, dass während der Ausführung V C verwenden kann, wodurch die Geschwindigkeit auf 100.000 Zeilen pro Sekunde sinkt). Der Selbstbau des Compilers, der ebenfalls in V geschrieben ist (es gibt auch eine Referenzversion in Go), dauert etwa 0,4 Sekunden. Bis Ende des Jahres wird mit der Fertigstellung zusätzlicher Optimierungen gerechnet, die die Bauzeit des Compilers auf 0,15 Sekunden reduzieren sollen. Laut den Tests des Entwicklers benötigt der Selbstbau von Go 512 MB Speicherplatz und dauert etwa anderthalb Minuten, Rust benötigt 30 GB und 45 Minuten, GCC – 8 GB und 50 Minuten, Clang – 90 GB und 25 Minuten.
    Swift – 70 GB und 90 Minuten;
  • Programme werden in ausführbare Dateien ohne externe Abhängigkeiten kompiliert. Die Größe der ausführbaren Datei eines einfachen HTTP-Servers nach der Erstellung beträgt nur 65 KB;
  • Die Leistung kompilierter Anwendungen ist auf dem Niveau von Programmbauten in C;
  • Nahtlose Interaktion mit C-Code ohne zusätzliche Overheads. Funktionen in C können aus V-Code aufgerufen werden und umgekehrt, V-Code kann in allen Sprachen aufgerufen werden, die mit C kompatibel sind;
  • Unterstützung für die Übersetzung von C/C++-Projekten in die V-Sprache. Zum Übersetzen wird der Parser von Clang verwendet. Nicht alle Funktionen des C-Standards werden derzeit unterstützt, aber die aktuellen Möglichkeiten des Transformators sind bereits ausreichend für Übertragung die V-Sprache für das Spiel DOOM. Der C++-Translater befindet sich noch in der Anfangsphase der Entwicklung;
  • Eingebaute Unterstützung für Serialisierung, unabhängig von der Laufzeit;
  • Minimierung von Speicherallokationsoperationen;
  • Sicherheitsgarantie: Keine NULL-Werte, keine globalen Variablen, keine undefinierten Werte und keine Überschreibung von Variablen. Eingebaute Mittel zur Überprüfung von Pufferüberläufen. Unterstützung von generischen Funktionen. Standardmäßig unveränderliche Objekte und Strukturen;
  • Möglichkeit der "heißen" Neuladen von Code (Reflexion von Änderungen im Code zur Laufzeit ohne Neukompilierung);
  • Ressourcen für Multithreading. Ähnlich wie in der Programmiersprache Go wird zur Erstellung eines neuen Ausführungs-threads die Konstruktion „run foo()“ verwendet (analog zu „go foo()“). Zukünftig ist die Unterstützung von Goroutines und einem Thread-Scheduler geplant;
  • Unterstützung von Betriebssystemen wie Windows, macOS, Linux und *BSD. Bis Ende des Jahres ist die Unterstützung von Android und iOS geplant;
  • Speicherverwaltung zur Kompilierzeit (ähnlich wie in Rust), ohne Verwendung von Garbage Collection;
  • Verfügbarkeit eines plattformübergreifenden Toolkits für die Grafikdarstellung, das für das Rendering GDI+/Cocoa und OpenGL verwendet. Geplant ist die Unterstützung von DirectX, Vulkan und Metal APIs. Es gibt Ressourcen für die Arbeit mit 3D-Objekten, Skelettanimation und Kamerasteuerung;
  • Eine Bibliothek zur Erstellung von grafischen Benutzeroberflächen mit nativen Designelementen für jedes Betriebssystem. In Windows wird WinAPI/GDI+ verwendet, in macOS – Cocoa, in Linux – ein eigener Widget-Satz. Die Bibliothek wird bereits bei der Entwicklung eingesetzt Volt – einem Client für Slack, Skype, Gmail, Twitter und Facebook;

    Es wird die Entwicklung einer ähnlichen Anwendung wie Delphi für das Design von Benutzeroberflächen geplant, inklusive einem deklarativen API, das vergleichbar mit SwiftUI und React Native ist, sowie die Unterstützung für die Erstellung von mobilen Anwendungen für iOS und Android;

    Der Quellcode der Programmiersprache V ist jetzt verfügbar.
  • Es gibt ein integriertes Web-Framework, das zur Erstellung der Webseite, des Forums und des Entwicklerblogs des Projekts verwendet wird. Die Vorcompilierung von HTML-Vorlagen wird unterstützt, ohne dass diese bei jedem Request verarbeitet werden müssen;
  • Unterstützung für Cross-Compilation. Um eine ausführbare Datei für Windows zu erstellen, genügt es, „v -os windows“ auszuführen, und für Linux „v -os linux“ (Cross-Compilation für macOS wird später erwartet). Die Cross-Compilation funktioniert auch für grafische Anwendungen;
  • Ein integrierter Abhängigkeitsmanager, Paketmanager und Build-Tool. Um das Programm zu kompilieren, reicht es, „v .“ auszuführen, ohne make oder externe Tools nutzen zu müssen. Zum Installieren zusätzlicher Bibliotheken genügt es, beispielsweise „v get sqlite“ auszuführen;
  • Plugins für die Entwicklung in der Sprache V in den Editoren vorhanden VS Code und Vim.

Entwicklung wurde von der Gemeinschaft mit Skepsis aufgenommen, da der veröffentlichte Code gezeigt hat, dass noch nicht alle angekündigten Funktionen umgesetzt sind und zur Umsetzung aller Pläne eine sehr große Menge an Arbeit erforderlich ist.
Außerdem war im Repository ursprünglich ist auf GitHub verfügbar nicht funktionierender Code, der Probleme beim Build und bei der Ausführung aufweist. Es wird angenommen, dass der Autor noch nicht den Punkt erreicht hat, an dem man das Pareto-Prinzip, gemäß dem 20 % des Aufwands 80 % des Ergebnisses liefern, während die restlichen 80 % des Aufwands nur 20 % des Ergebnisses bringen, bemerkt.

In der Fehlerverfolgung des Projekts V wurden inzwischen etwa 10 Nachrichten mit Demonstrationen niedriger Codequalität entfernt, zum Beispiel wird auf die Verwendung von C-Inserts und die Nutzung von Funktionen in der Bibliothek hingewiesen, die das Verzeichnis mit dem Befehl rm über einen Aufruf von os.system(«rm -rf $path») löschen. Der Autor des Projekts äußerte, dass er lediglich die Nachrichten entfernt hat, die veröffentlicht wurden von einem Troll (während die Änderungen, die die Berechtigung zur Kritik bestätigen, in der Versionshistorie geblieben sind. in Die Unterstützung für 32-Bit-Bibliotheken in Ubuntu 19.10+ wird aus Ubuntu 18.04 übernommen.).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster