4

パフォーマンス コンピューティング用の C ライクな言語に興味を持つようになりました。次の属性を持つ代替プログラミング言語をいくつかお勧めできますか:

  • ハードウェアの近くにある必要があります (ビット操作、ポインター、または参照などの別の安全な方法)
  • マネージド コードなし (jvm/.net 言語なし)
  • (Cのように)本当に高速でなければなりません
  • ASM レベル以上である必要があります (はい、ASM 上のマクロ言語に興味があります)
  • あいまいで、あまり普及していない可能性があります

私は主にあまり知られていない言語に興味があります。

4

12 に答える 12

12

アセンブリ言語D プログラミング言語はどうでしょうか。

于 2009-03-17T13:31:08.290 に答える
9

Forthについて知らず、単に視野を広げることに興味がある場合は、Forthを参照してください。Forth について読むと、C はレベルが高いと感じます。

于 2009-03-17T13:32:14.043 に答える
6

あなたの質問では、C ではないことを明示的に述べていないので、C をお勧めします。C は、箇条書きの 3 つの要望を満たし、言語のさまざまなバージョンについて心配する必要はありません (それぞれ異なる種類のアセンブラ)。

于 2009-03-17T13:35:08.310 に答える
6

複数の種類 (MSVC、glibc など) があり、さまざまなプラットフォーム (モバイル デバイス、Windows、Linux など) やデバイスで動作し、クロス プラットフォームで記述できるため (さまざまなプロセッサ アーキテクチャ) や、ハイエンド グラフィックス (DirectX など) にも対応しています。

プラットフォーム リソースへの「まともな」アクセスが得られ (条件は異なります)、それを磨くのと同じくらい高速であり、ASM よりも書くのが少し簡単です (IMHO)。物事を少し簡単にするための、かなりまともな範囲のサポート ツールとコード分析ツールもあります。

また、C と C++ はかなり前から存在しているため、(今日でも) 優れた熱狂的なコミュニティがあります。

于 2009-03-17T13:35:10.387 に答える
1

テーマによるバリエーション

FORTRANは C よりも古く、数値計算の主要なプレーヤーの 1 つです。1990 年 (言語が大幅に近代化されたとき) まで、言語には (チェックされているかどうかに関係なく) ポインターの形式はありませんでした。この欠如は、メモリを動的に管理する方法がないことを意味していました。また、コンパイラにとってエイリアシング解析が容易になりました。これは、Fortran コードを高速にする要因の 1 つです。

ALGOLは最初の構造化プログラミング言語です。プログラマーの成功は限定的でしたが、言語設計者には強い影響を与えました。

Adaは、強力な型システムと優れたモジュール性を備えた命令型言語であるため、強力な保証要件を備えた低レベルのプログラミングに適しています (軍事および航空電子工学のアプリケーションを念頭に置いて米国政府が後援しました)。Modula-2Modula-3などのPascalに触発されました。

低レベルの命令型プログラミングの主流からさらに進んで、FORTHがあります。FORTH は、メモリが非常に少ないデバイス用にコンパイルでき、さらに解釈することもできます。マイクロコントローラーを含むローエンドの組み込みシステムで多くの用途があります。この言語は、HP 電卓で有名になった逆ポーランド記法に基づいています (実際、HP 電卓の言語は FORTH の影響を強く受けています)。多くの実装には変数がありません。すべてのデータは 1 つ以上のスタックに保持されます。

余談ですが、難解な言語の祖先であるINTERCALについて触れておきます。

あなたの心を吹き飛ばすもの

難解な言語は有益な場合があり、かなりの数の言語がマシンの近くで機能します (通常は仮想マシンですが、原理的には、十分に夢中になれば実際のコンピューターに実装できます)。ブレインファック(チューリング マシンと C の間の一種の中間段階) や、多くの単一命令言語、またはbefunge (メモリが2次元配列だったら?)を見ることができます。

Cycloneは C によく似ています。構文は同じで、Cyclone にはポインター、タグなしの構造体と共用体、goto ステートメント、および手動のメモリ管理があります。それでも安全な言語です。ダングリング ポインターやバッファ オーバーフローはあり得ません。また、パターン マッチング、例外、ポリモーフィズム、抽象型、およびオプションの自動メモリ管理 (ガベージ コレクションだけでなく領域も含む) などの高レベルの機能にアクセスできます。サイクロンは便利で有益です。C の頑固な人にとっては、安全な言語を作るものを発見する良い方法になる可能性があります。Cyclone は C にコンパイルできるため、C コンパイラがあればどこでもプログラムを実行できます。

別の方向に進んで、実際にハードウェアを設計していなくてもハードウェアに近づきたい場合は、LustreEsterelなどの同期言語を見てください。これらの言語は、原子力発電所、航空機、鉄道信号などの高保証リアルタイム システムのプログラミングに使用されます。これらの言語は、チューリングの完全性を放棄し、プログラマーがプログラムの実行速度と必要なメモリ量を正確に知ることができるという保証を獲得します。C言語が機械に近いと思っているなら、実際に機械に近い言語を見つけるとショックを受けるかもしれません。

于 2010-07-09T21:11:39.800 に答える
1

OpenCLは面白いかもしれません。これは、OpenGL シェーダー言語 (拡張機能を備えた C のサブセット) に似ていますが、汎用の並列配列コンピューティング用です。

于 2009-03-17T13:56:54.827 に答える
1

アセンブリはハードウェアに最も近いため、最速です

于 2009-03-17T13:31:14.093 に答える
0

チップメーカーに就職してマイクロコードを書き始めない限り、アセンブリ言語に近づくことはできません!!!

Windows を使用している場合は、Microsoft MASM (マクロ アセンブラー) を入手して、すぐに起動して実行できると思います。かなり前から使っていますが、悪くない商品です。

于 2009-03-17T13:39:47.723 に答える
0

私の質問に答えるのは少し難しいようですが、2 つの言語を見つけました。

  • パイレックス
  • ヴァラ

すべての制約を満たすわけではありませんが、パフォーマンス コンピューティングには優れており、どちらも C に変換されます。

于 2009-03-17T13:43:57.027 に答える