V プログラミング言語オープンソース

翻訳済み オープンコンパイラのカテゴリーに入る 言語 V。 V は、静的に型付けされたマシンコンパイル言語であり、開発の保守を容易にし、コンパイルを非常に高速にすることに重点を置いています。 コンパイラ コード、ライブラリ、および関連ツール 開いている MITライセンスの下で。

V の構文は Go に非常に似ており、Oberon、Rust、Swift からいくつかの構造を借用しています。 言語は可能な限り単純化されており、開発者によれば、基本を学ぶには 30 分の学習で十分です。 ドキュメンテーション。 同時に、この言語は依然として非常に強力であり、他のプログラミング言語を使用する場合と同じタスクを実行するために使用できます (たとえば、ライブラリは 2D/3D グラフィックス、GUI および Web アプリケーションの作成に使用できます)。

新しい言語の作成は、Go 言語の構文の単純さ、コンパイル速度、操作の並列化の容易さ、コードの移植性と保守性、および C/C++ のパフォーマンス、Rust のセキュリティ、およびZig コンパイル段階でのマシンコードの生成。 また、外部依存関係なしで動作し、グローバル スコープ (グローバル変数) を取り除き、コードを「ホット」リロードする機能を提供できる、コンパクトで高速なコンパイラーを入手したいと考えていました。

C++ と比較して、新しい言語は大幅に単純で、コンパイル速度が速く (最大 400 倍)、安全なプログラミング技術を実践し、未定義の動作に関する問題がなく、操作を並列化するための組み込みツールを提供します。 Python と比較すると、V はより高速で、よりシンプルで、より安全で、より保守しやすいです。 Go と比較すると、V にはグローバル変数も null もありません。すべての変数値は常に定義する必要があり、すべてのオブジェクトはデフォルトで不変であり、0 種類の代入 (「a := XNUMX」) のみがサポートされており、大幅にコンパクトです。実行時間と結果として生成される実行可能ファイルのサイズ、C からの直接移植性の存在、ガベージ コレクターの不在、高速なシリアル化、文字列の補間機能 (“println('$foo: $bar.baz')”)。

fn main() {
分野 := ['ゲーム', 'ウェブ', 'ツール', '科学', 'システム', 'GUI', 'モバイル'] a := 10
真であれば {
へ:= 20
}
エリア内のエリアの場合 {
println('こんにちは、$area 開発者の皆さん!')
}
}

プロジェクトの特徴:

  • コンパクトで高速なコンパイラ。標準ライブラリと合わせると約 400 KB を消費します。 マシンコードの直接生成とモジュール化により、高いコンパイル速度が実現されます。 コンパイル速度は、1.2 つの CPU コアで 100 秒あたり約 0.4 万行のコードです (操作中、V は C を使用できますが、その後、速度は 0.15 秒あたり 512 行に低下することに注意してください)。 コンパイラの自己アセンブリも V 言語で書かれており (Go のリファレンス バージョンもあります)、約 30 秒かかります。 年末までに追加の最適化作業が完了する予定で、これによりコンパイラのビルド時間は 45 秒に短縮されます。 開発者が実施したテストから判断すると、Go の自己アセンブリには 8 MB のディスク容量が必要で 50 分半で実行されます。Rust は 90 GB で 25 分、GCC - XNUMX GB で XNUMX 分、Clang - XNUMX GB が必要です。 XNUMX分、
    Swift - 70 GB および 90 分。

  • プログラムは、外部依存関係なしで実行可能ファイルにコンパイルされます。 アセンブリ後の単純な http サーバーの実行可能ファイルのサイズはわずか 65 KB です。
  • コンパイルされたアプリケーションのパフォーマンスは、C プログラムのアセンブリのレベルです。
  • 追加のオーバーヘッドなしで C コードとシームレスに対話できる機能。 C 言語の関数は V 言語のコードから呼び出すことができ、その逆も同様で、V 言語のコードは C と互換性のある任意の言語で呼び出すことができます。
  • C/C++ プロジェクトを V 言語の表現に変換するためのサポート。変換には Clang のパーサーが使用されます。 C 標準のすべての機能がまだサポートされているわけではありませんが、トランスレータの現在の機能はすでに十分な機能を備えています。 翻訳 V ゲーム『DOOM』の言語で。 C++ トランスレーターはまだ開発の初期段階にあります。
  • ランタイムに縛られない組み込みのシリアル化サポート。
  • メモリ割り当て操作を最小限に抑える。
  • 安全性の確保: NULL、グローバル変数、未定義の値、変数の再定義はありません。 バッファオーバーランチェック機能を内蔵。 汎用関数 (Generic) のサポート。 デフォルトでは変更できないオブジェクトと構造。
  • 「ホット」コードのリロードの可能性 (再コンパイルせずにその場でコードの変更を反映)。
  • マルチスレッドを確保するためのツール。 Go 言語と同様に、「run foo()」のような構造は、新しい実行スレッドを開始するために使用されます (「go foo()」と同様)。 将来的には、ゴルーチンとスレッド スケジューラのサポートが計画されています。
  • Windows、macOS、Linux、*BSD オペレーティング システムのサポート。 年末までに Android と iOS のサポートを追加する予定です。
  • ガベージ コレクターを使用せずに、(Rust と同様に) コンパイル時にメモリ管理を行います。
  • レンダリングに GDI+/Cocoa および OpenGL を使用した、グラフィックス出力用のマルチプラットフォーム ツールキットの利用可能 (DirectX、Vulkan、および Metal API のサポートが予定されています)。 3D オブジェクト、骨格アニメーション、カメラ制御を操作するためのツールがあります。
  • 各 OS にネイティブな設計要素を使用してグラフィカル インターフェイスを生成するためのライブラリが利用可能です。 Windows は WinAPI/GDI+ を使用し、macOS は Cocoa を使用し、Linux は独自のウィジェットのセットを使用します。 ライブラリはすでに開発で使用されています ボルト — Slack、Skype、Gmail、Twitter、Facebook のクライアント。

    計画では、Delphi のようなインターフェイス設計アプリケーションを作成し、SwiftUI や React Native に似た宣言型 API を提供し、iOS および Android 用のモバイル アプリケーション作成のサポートを提供する予定です。

    V プログラミング言語オープンソース

  • プロジェクト開発者向けの Web サイト、フォーラム、ブログの作成に使用される組み込み Web フレームワークの利用可能。 HTML テンプレートのプリコンパイルはサポートされており、リクエストごとにテンプレートを処理する必要はありません。
  • クロスコンパイルのサポート。 Windows の実行可能ファイルをビルドするには、「v -os windows」を実行し、Linux の場合は「v -os linux」を実行します (macOS のクロスコンパイルのサポートは後で予定されています)。 クロスコンパイルはグラフィカル アプリケーションでも機能します。
  • 組み込みの依存関係マネージャー、パッケージ マネージャー、およびビルド ツール。 プログラムをビルドするには、make や外部ユーティリティを使用せずに、「v.」を実行するだけです。 追加のライブラリをインストールするには、たとえば「v get sqlite」を実行するだけです。
  • エディターでの V 言語での開発用のプラグインの利用可能 VSコード и 活力.

開発 認識された とのコミュニティ 懐疑論公開されたコードでは、宣言されたすべての機能がまだ実装されておらず、すべての計画を実装するには非常に多くの作業が必要であることが示されているためです。
さらに、当初リポジトリには 置いた アセンブリと実行に問題がある壊れたコード。 作者はまだ気づき始める段階に達していないものと思われる パレートの法則、それによると、20% の努力が 80% の結果を生み出し、残りの 80% の努力は 20% の結果しか生み出しません。

一方、プロジェクト V のバグ トラッカーでは約 10 件の投稿が削除されました。 デモンストレーション たとえば、低品質のコードは、C インサートの使用と、os.system("rm -rf $path") の呼び出しを通じて rm コマンドのディレクトリを削除する関数のライブラリでの使用を示します。 プロジェクトの作成者 彼はメッセージを削除しただけだと 公開 トロル (批判の正当性を確認する変更を加え、 泊まった в 編集履歴).

出所: オープンネット.ru

コメントを追加します