HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Micron – Cのパワーを持つOberon

Show HN: Micron – Oberon with the Power of C (github.com)

37 pointsby Rochus11 コメント

要約

Micronは、Oberonのシンプルさとモジュール構造にCの低レベル機能と相互運用性を組み合わせた、軽量で静的型付けのモジュラーシステムプログラミング言語です。この言語は、ブートコード、デバイスドライバ、OSカーネル、通常のアプリケーションなど、同じ言語で開発できるように設計されており、ガベージコレクタを必要としません。言語レベルの概念により、モジュール間の依存関係が安全に管理されます。

全文翻訳

私はMicron(「MicroOberon」の略)を開発しました。これは、Oberonのシンプルさと明示的なモジュール構造に、Cの低レベル機能と相互運用性を組み合わせた、軽量で静的型付けのモジュラーシステムプログラミング言語です。

Micronは私の最初の言語設計ではありません。私はまずOberon+を構築しました。これは近代化され統一されたOberonであり、Wirthのデザインが実際に何を提供し、どこで失敗するのかを実装し、実際のシステムをそれに移植することによって理解するためでした。Oberon+に移植されたシステムには、2013年のProject Oberon Systemや、Oberon System 3のさまざまなバージョンが含まれていました。その後、Luonという、管理されたアプリケーションプログラミングのためのより高レベルな言語で逆の方向を探求しました。Micronは、この経験と、システムプログラミングにおける私の30年にわたるC/C++の経験の統合です。

Micronの目標は、ガベージコレクタを必要とせず、マシンアクセスを個別の、チェックされていないシステム方言(例えば、LONGINTで操作されるOberonのSYSTEM.ADR/GET/PUTなど)を経由せずに、ブートコード、デバイスドライバ、オペレーティングシステムカーネル、および通常のアプリケーションに同じ言語を使用することです。この言語は、明示的なメモリレイアウト、符号付きおよび符号なし整数型、ポインタ操作、およびラッパーなしでのCへの直接呼び出しをサポートします。その中心的な設計選択の1つは、言語レベルです。各モジュールはレベルを宣言し、それによって必要とする機能を定義します。これは、スタックもヒープも必要としないコードから、ガベージコレクションされたオブジェクトまで多岐にわたります。モジュールは、同じレベルまたはそれ以下のレベルのモジュールのみをインポートできます。例えば、レベル1で宣言されたカーネルモジュールは、インポートを通じてヒープ割り当てへの依存を誤って取得することはできません。その他の機能には、ジェネリックモジュール、構造インターフェース、コンパイル時プロシージャが含まれます。Cではプリプロセッサを必要とする多くのことが、型付けされた言語機能を通じて表現されます。

動作するコンパイラ、インタプリタ、IDE、および無料の教科書(http://software.rochus-keller.ch/micron-textbook.pdf)があります。この本は、言語の仕組みと設計の理由の両方を説明しています。そのシステムプログラミングセクションでは、WirthとGutknechtのProject OberonオペレーティングシステムをMicronに移植するプロセスを、クロスコンパイルされ、エミュレートされたRISC-Vマシンで実行される単一の実行可能ファイルにリンクする手順を説明しています。

例には、Smalltalk-80 VM、Scheme 9、およびオリジナルのP4 Pascalコンパイラの移植も含まれています。コンパイラとインタプリタは言語仕様を実装しています。ネイティブバックエンドとツールはまだ開発中であり、現在のネイティブコード生成は最適化よりもシンプルさを優先しています。

詳細については、https://github.com/rochus-keller/Micron/blob/master/Readme.m... を参照してください。