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-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster