Genteeプログラミング言語

親愛なるコミュニティ、 Genteeプログラミング言語についてお話したいと思います。 あなたは彼について何も聞いたことがないと思いますが、これは新しいことではありません。 コンパイラの最初の動作バージョンは2008年にリリースされ、2010年の終わりに最新バージョン3がリリースされました。 Genteeはオープンソースプロジェクトであり、MITライセンスの下で 、つまり条件や制限なしで配布されています。 私のほかに、別の人がコンパイラ、ライブラリ、およびすべてのドキュメントに取り組みました。 最初は、言語の歴史について書きたいと思います。 2000年以来、ユーザーが特定のコマンドからスクリプトを作成できるインストーラーに取り組んできました。 つまり、フォーム上のパラメーターからの各コマンドは、いくつかの言語のコードに変換する必要があり、それをバイトコードにコンパイルして実行可能ファイルを作成することができました。 私たちは原始的な言語から始めましたが、最終的には広く使われている言語を作ることに決めました。 基本要件は、高速コンパイラ、Windows APIによる簡単な操作、仮想マシンエンジンの小型化、簡潔で明確な構文、あらゆるプログラミング言語からコンパイラと仮想マシンを使用できることです。 Cでは、バイトコードコンパイラと仮想マシンが作成されました。 Gentee.dll(コンパイラーとVM)は112 KBしか必要とせず、組み込みプログラミング言語を必要とするプロジェクトに含めることができます。 Genteeプログラムは、コンパイル後すぐに実行できます。または、バイトコードと有線仮想マシンを使用して実行可能ファイルを作成できます。



短い言語の説明



Genteeには「C」のような構文があり、このファミリーのあらゆる言語に出会う人なら誰でも理解できます。 この言語には厳密な類型化があり、OOJPではありませんが、型(オブジェクト)の継承があり、多態性をサポートしています。 構文と主な機能については説明しません。公式ドキュメントの「言語の説明」セクションの内容を示し、興味深い点をいくつか説明します。 この場合、Genteeの機能をより完全に把握できると思います。



言語の基本要素






プログラム構造。 プリプロセッサ






タイプと変数






機能操作方法






言語構成






式と演算子






いくつかの興味深い点



私はCでのプログラミングが好きでしたが、ローカル変数でstrのような文字列を定義するだけでは機能せず、関数を終了するときに削除することも考えられないという事実は常に好きではありませんでした。 言語を作成するとき、私はこの問題を修正し、あなたは安全に書くことができます



func myfunc

{

str mystr = "This is a string"

print( mystr ) // , print( "This is a string")

}








これはstrだけでなく、すべての型にも適用されます。 型のdeleteおよびinitメソッドを記述できます。これらのメソッドは、変数の作成および削除時に自動的に呼び出されます。 また、インデックス[i]、foreach演算子での列挙、操作の使用=、+、-、== 、! =、*、Etcによって、任意のタイプを「台無しにする」ことができます。



2番目の興味深い点は、任意のAPIとの統合です。 エクスポートされた関数を含むDLLがあれば、プログラムで簡単に接続して使用できます。

たとえば、次のように書くことができます

import "user32.dll"

{

uint ExitWindowsEx( uint, uint )

uint RegisterWindowMessageA( uint ) -> RegisterWindowMessage

}






そして、ExitWindowsExとRegisterWindowMessageを通常の関数として使用します。 この機能は、言語を他のプラットフォームに移植できないことを意味するものではありません。 Gentee v2にはLinux向けのバージョンがありましたが、残念ながら、これまでさまざまな理由でコンパイラの3番目のバージョンはWindows専用でした。



言語のシンプルさとパワーの妥協点を見つけるのは困難でした。一部の機能はおそらく十分ではありませんが、結果を恥じていません。 たとえば、テキスト関数があります。これは、行を含むコードはないが、コードが散在しているテキスト(PHPコードを使用したHTMLの類似物)がある場合です。 任意のファイルをバイトコードにリンクして、メモリ内で直接アクセスするか、一時的にディスクに書き込むことができます(使用されているDLLファイルに便利です)。 もちろん、マクロと条件付きコンパイルなどを備えたプリプロセッサがあります。



次は?



どの言語も、その実用化の可能性なしには興味がありません。 一方では、Genteeは私たちのプログラムで広く使用されており、ディストリビューションには30以上のライブラリ(ファイル、文字列、ツリー、dbf、sqlite、xml、COM / OLE、HTTP、FTPなど)が含まれ、コンパイラには組み込みオプティマイザが含まれていますGUIプログラムを作成するためのビジュアルスタジオ(ただし、ドキュメントはありません)でも、Genteeユーザーの1人が開発したデバッガーがあります。 一方、この言語には大きな関心はありません。 理由は理解できます。言語に関連するものはすべて純粋な熱意で作成されたため、希望する形式にするのに十分なお金がありません。 Windowsだけでなくバージョンも見たいです。 また、言語自体に新しい機能を追加することも可能です(オプションのパラメーター、言語レベルでのUTF-8およびUnicodeのサポート)。 開発の方法はありますが、現在でもGenteeは他のアプリケーションで使用したり、小さなユーティリティをすばやく作成するための便利なツールとして非常に便利な言語です。



「なぜ別のプログラミング言語が必要なのか」または「なぜ他のプログラミング言語よりも優れているのか」と言う人のために、プログラムのスクリプト言語として使用でき、コンパイラーや仮想マシンを備えた類似の機能を持つ別の言語を教えてください150 KB未満です。



All Articles