プログラミング言語の翻訳家 コンパイラ

date_range 2023/11/22
日々の活動日記エンジニアインターン
サムネ

こんにちは!

マーケティング部受託プロダクトチームのインターン生、村高歩夢です!


みなさんコンパイラってご存知でしょうか。
コンパイラとはプログラミング言語における翻訳家のことです。

パソコンは突き詰めると電気のonとoffの組み合わせで情報を処理しています。
この"on"と"off"は文字状では"1"と"0"で表しています。この"1"と"0"の組み合わせがプログラミングなのです。
ということは
プログラミング言語というのは結局どの言語も最終的には機械が
読み込める"0"と"1"で表現できるように翻訳されます。
つまり、プログラミング言語を作成しようと思ったらコンパイラが必要なんですね。
まぁ、全部ではないんですけど、今回はそういうことにしておきましょう。

なぜ、コンパイラの記事を書くかって?

オホホホホホホ
察しが悪いですわね。

おっと、危ない危ない
翻訳がしたかったんですよ。

ということでコンパイラですが、翻訳家がコンパイラであって翻訳はコンパイルと言います。
日本語おかしい...
まぁそんなことは置いといて

コンパイラを作成するにはどうすればいいのでしょうか。

1. **言語仕様の定義**:
どのような構文が使われ、それがどのように CSS に変換されるかを定義します。

2. **レキサーの開発**:
ソースコードを読み込み、トークンに分割するプログラムを作成します。
文字ってそれぞれ分解できると思うんです。
例えば、1 + 1 = 2だったら
1と2は数字
+は演算子
というように分けられますよね
プログラミング言語も上記のようにそれぞれの単語を分類して
トークン(上記で言ったら数字や演算子)を付与していきます。

3. **パーサーの開発**:
トークンから抽象構文木(AST)を構築します。
構文解析器とも言います。ちょっとまだというか全然理解できていないんですが、
コードの集合がプログラムとして扱える形に変換することみたいです。
(自分の言葉)
怖いので引用しますね
コンピュータプログラムの機能・処理の一つで、一定の書式や文法に従って記述されたデータを解析し、
プログラムで扱えるようなデータ構造の集合体に変換することをパースという。
そのためのソフトウェアやプログラム部品などのことを「パーサ」(parser)あるいは「パーザ」という。
例えば、コンパイラなどがプログラムのソースコード
機械語の表現に変換するために語彙や構文などの構造を解析することや、
WebブラウザHTMLファイルを表示するためにタグの構造や属性などを
解析して表示可能なデータ構造に変換することなどを指す。
コンパイラを自作するには、いくつかの重要なステップがあります。
以下は、コンパイラ開発の基本的なプロセスを概説したものです。

4. **セマンティック分析**:
ここから先は本当にまだ何も理解できていないのでChatGPTに頼っています。
ASTを走査し、型チェック、変数のスコープ解析、その他のセマンティックなチェックを行います。

5. **中間表現の生成**:
コンパイラの後半部分で使用するための、より抽象度の高いコード(中間コード)を生成します。

6. **最適化**:
中間表現を変換して、実行効率を向上させます。これには、デッドコードの削除やループの最適化などが含まれます。

7. **コード生成**:
最終的なターゲット言語(通常はアセンブリ言語や機械語)へのコードを生成します。

8. **リンク**:
複数のコンパイル済みコードやライブラリを結合して、実行可能なプログラムを作成します。

と、いうことらしいです😂

技術はともかくコンパイラがなぜ必要かみたいなところは理解してもらえたかなと思います。

爆速で理解して簡単なコンパイラでも作れたらいいなと思いまが...
さてさて間に合うのやら





■ガーディアン主力ソリューション→OWLet

■新サービスリリースのお知らせ

WEB業界を変える!育てて成果を上げるサブスク型HPサービス

SCSC (スクスク)

ガーディアンのインターン制度→こちら

村高歩夢の紹介ページこちら

*COMMENT*

    *コメント*

    *ログイン*

    メールアドレス
    パスワード