たとえば、私のためにプログラミング言語またはスクリプト言語を作成するために誰かに支払いたいと思ったとします。まさに私が望むものが何であるかを完全に理解するために、彼らはどんな種類の文書を必要とするでしょう。
つまり、問題の新しいプログラミング/スクリプト言語を説明する標準文書はありますか?
たとえば、私のためにプログラミング言語またはスクリプト言語を作成するために誰かに支払いたいと思ったとします。まさに私が望むものが何であるかを完全に理解するために、彼らはどんな種類の文書を必要とするでしょう。
つまり、問題の新しいプログラミング/スクリプト言語を説明する標準文書はありますか?
回答:
あなたが書く必要があるものは、言語仕様と呼ばれます。
言語の文法(できればExtended Backus-Naur-Formで)とそのセマンティクスの説明を含める必要があります。
後者の部分については、自分の言葉で説明を書くことができます(ただし、正確に注意してください)か、形式的な意味論です。
次のものが必要です。
あなたの言語はどう違いますか?その使命は何ですか?機能的ですか?オブジェクト指向ですか?メタ言語ですか?そのユニークな機能は何ですか?存在しない(またはい形で存在する)世界に何を与えるでしょうか?どのように物事を変えたいですか?コンパイルまたは解釈されますか?DSLまたは汎用言語ですか?これがあなたの哲学であり、あなたの言語のデザインについて多くのことを決定します。
次に、紙の上で大まかな構文とセマンティクスをスクラッチします。これがセマンティック定義になります...偽のコードを書くことはあなたの考えを発展させる素晴らしい方法です。この方法の優れた例については、「Cプログラミング言語」をお読みください。それで遊びます。
その後、何らかの方法でトークンと構文を定義する必要があります。次に、プログラムはこれらを処理して、文字列を読み取って構文を処理できるオートマトンにします。YaccとBisonは、それぞれ字句解析と構文解析に正規表現とBNFスタイルの構文を使用します。他の言語用のYaccやBisonのようなツールもあります。
また、禁止事項を理解するには、言語理論/コンパイラの基礎知識が必要です。例には、あいまいな文法、ASTの生成と操作の問題、一般的に自分の人生をシンプルにする方法が含まれます。理論を知ることは非常に重要です。私は次のことを始めることを検討するでしょう:
コンパイラ:原則、手法、およびツール(ドラゴンブック)
Cでの最新のコンパイラ実装またはJavaでの最新のコンパイラ実装
新しい言語を作成する時間の99.9%は完全に不要です。投資収益率はおそらく非常に小さく、時間を無駄にしただけです。
最も可能性が高いのは、影響を受けやすいスクリプト言語としてJavascriptを使用できることです。また、ほとんどの言語で既にパーサーが利用可能です。適切なパーサーが見つかる場合は、他のスクリプト言語も使用できます。これらをプログラムに実装すると、必要な作業がはるかに少なくなり、より大きな利益が得られます。人々は別の言語を学ぶ必要はなく、APIを学ぶだけです。そのはるかに優れたソリューション。
新しい言語を作成することはほとんど常に悪いことです。