4

C++ のような静的型チェック機能を備え、Python のような最新の構文を使用し、GIL を持たない言語はありますか?

私は、各変数の型を明示的に宣言する機能を備えた Python 3 が「ほぼ存在する」と信じていますが、GIL は私を悲しくさせます。

Java は素晴らしいですが、かさばる JRE を使わずに、もっと「埋め込み可能」なものが必要です。

更新: .NET 関連または非オープン ソースは禁止されています。

Update2:開発速度を犠牲にしてより安全なコードを記述するには、明示的かつ厳密な型指定が必要です。コードは非常に広範囲に計算され、マルチコアサーバーで実行されるため、GIL は重要です。そのため、複数の CPU を効果的に使用する必要があります。

Update3:ターゲット プラットフォームは x86 上の Linux (Debian) です。

4

5 に答える 5

4

ブー

Boo はオブジェクト指向の静的に型付けされたプログラミング言語であり、Unicode、国際化、および Web アプリケーションに対する Common Language Infrastructure のサポートを利用しようとする一方で、Python にヒントを得た構文を使用し、言語とコンパイラの拡張性に特に重点を置いています。注目すべき機能には、型推論、ジェネレーター、マルチメソッド、オプションのダック タイピング、マクロ、真のクロージャー、カリー化、ファーストクラス関数などがあります。Boo は 2003 年から積極的に開発されています。

シトン

Cython は、Python 言語の C 拡張機能を Python 自体と同じくらい簡単に作成できる言語です。Cython はよく知られている Pyrex に基づいていますが、より最先端の機能と最適化をサポートしています。

Cython 言語は Python 言語に非常に似ていますが、Cython はさらに、C 関数の呼び出しと、変数とクラス属性での C 型の宣言をサポートしています。これにより、コンパイラは Cython コードから非常に効率的な C コードを生成できます。

于 2010-08-18T12:29:49.587 に答える
4

ML ファミリのすべてが機能する可能性があります。Ocaml は始めるのに最適な場所ですが、私が最後に見た停止世界の GC があります。Haskell は、革新的な同時実行モデルのラボとして有名です。Python の内包表記は Haskell から来ており、非常に基本的なアイデアの便利な構文となっています。そして、Erlang は強力に動的に型付けされ、書くのが楽しく、他の誰よりも優れた並行性を実現します。

于 2010-08-18T12:41:05.127 に答える
3

Adaは、強く型付けされ、コンパイルされた言語であり、最新の読みやすい構文と、マルチコアコンピューティングの実証済みの信頼性を備えています。Adaは、ソフトウェアがすべてのコストで機能しなければならない大規模で重要なリアルタイムシステムで使用するために設計されました。

「Adaは、未割り当てメモリへのアクセス、バッファオーバーフローエラー、オフバイワンエラー、アレイアクセスエラー、およびその他の検出可能なバグから保護するためのランタイムチェックをサポートしています。これらのチェックは、ランタイム効率のために無効にすることができますが、多くの場合、プログラムの検証に役立つ機能も含まれています。これらの理由から、Adaは重要なシステムで広く使用されており、異常が発生すると、偶発的な死亡や負傷などの非常に深刻な結果を招く可能性があります。Adaが使用されるシステムの例には次のものがあります。アビオニクス、兵器システム(熱核兵器を含む)、および宇宙船。」(上記のリンク先のウィキペディアの記事からの引用)。

AdaはGCC/GNATの一部として無料で入手でき、Debianで簡単に「apt-getinstall」できるはずです。また、 http://libre.adacore.com/libre/で、最新のコンパイラとライブラリ(コミュニティでサポートされているGPLライセンスのパッケージと商用でサポートされているパッケージの両方)を見つけることができます。

Adaは、JVMで使用するためにJavaバイトコードにコンパイルするか、ベアメタルまたは組み込みで使用するためにバイナリにコンパイルすることができます。

于 2010-08-19T06:35:36.087 に答える
2

GOはあなたの要件に合うと思います。

これは私の個人的な感覚ですが、goコードはpythonコードと非常によく似ています。

それはまだ古典的なコンパイルアプローチを持っていますが、グーグルは確かにいくつかのインタプリタを開発します。

グーグルサイトから:

Goは、システムプログラミングを念頭に置いて設計された汎用言語です。強く型付けされ、ガベージコレクションされ、並行プログラミングを明示的にサポートします。プログラムはパッケージから構築され、そのプロパティにより依存関係を効率的に管理できます。既存の実装では、従来のコンパイル/リンクモデルを使用して実行可能なバイナリを生成します。

于 2010-08-18T12:25:20.520 に答える
2

更新された仕様を読んだ後:

開発速度を犠牲にしてより安全なコードを書くには、明示的かつ強力な型付けが必要です。コードは非常に広範囲に計算され、マルチコアサーバーで実行されるため、GIL は重要です。そのため、複数の CPU を効果的に使用する必要があります。

「広範なコンピューティング」とは正確にはどういう意味ですか? 問題のドメインは? この問題領域で働く他の人々は何を使用していますか? この仕様に真剣に取り組んでいる場合は、マルチスレッドと数値計算用の十分にテストされたライブラリに関連して C++ を使用する以外に、多くのことを行うことはできません。

私の $0.02

rbo

于 2010-08-18T13:03:00.723 に答える