見出し画像

コンパイル型言語とスクリプト型言語を新入社員に例えてみた

皆さん、コンパイル型言語とスクリプト型言語についてご存知だと思いますが、具体的にはどの位意識してますか?
今回は、コンパイル型言語とスクリプト型言語を新入社員に例えて説明してみたいと思います。

コンパイル型言語

コンパイル型言語とは、その実装の主体がコンパイラであり、インタプリタではないプログラミング言語である。
この用語はやや曖昧である。
原則として、どの言語もコンパイラやインタプリタで実装できる。
両方のソリューションの組み合わせも一般的である。

スクリプト型言語

スクリプト言語とは、アプリケーションソフトウェアを作成するための簡易的なプログラミング言語の一種を指す。 
スクリプトとは、その簡易的な言語記述方法を指してそう呼ばれるようになった。

コンパイル型言語とスクリプト型言語の違い

上記は、wekipediaからですが、よく分かりません。記述自体も曖昧ですが、ここでは、

コンパイル型言語

ソースコードを記述してそのまま動かすのではなく、ソースコードをコンパイラーによりコンパイルする事により実行形式として配布可能になる言語を指します。
例えば、JAVA,GO等が有名です
Javaの場合は、
1. .javaファイル
2. .classファイル
3..jar or .warファイル
.jarやwarを解凍するとclassファイルが見える。コンパイルは、1->2の部分を指します。

スクリプト型言語

ソースコードを記述してそのまま動かす事ができる言語を指します。コーディングしてファイルを保存したらスグに変更が反映されます。コンパイルという動作が必要ないので、簡単に変更して試すことが可能になります。
別名、Lightweight Language、LLとも呼ばれてます。
例えば、PHP,Javascript,ruby等が有名です

どっちが凄い?

よく比較として、コンパイル型言語とスクリプト型言語の違いの話しが出ます。昔からのプログラマーは、スクリプト言語を馬鹿にした感じもあり、ちゃんとした開発には、コンパイル型言語だろという人もいます。
一時期は、簡単にかけるスクリプト言語であるphp等の影響で、その場で動くことしか考えてないであろうプログラマーさんが大勢いて、イメージは悪かったと思います。
しかし、昨今では、フロント画面の構築でReactやVue等のJSフレームワークが普及してきてます。いや普及というかマスト化してきてます。そのため、スクリプト言語へのイメージの悪さはなくなったのでは無いでしょうか?
又、時代の流れでアジャイル開発中心となってきている流れでは、スクリプト言語がメインになってきている気がします。

コンパイル型言語とスクリプト型言語を新入社員に例えてみた

新入社員A君をコンパイル型言語
新入社員B君をスクリプト型言語
とします。

上司:来月飲み会やるからA君とB君良い店を探してきてくれないか
A君:先ずは予算と場所を確認させて下さい
上司:一人3000円で、会社の近くだね
A君:お店の種類はどうしましょうか?
上司:静かな感じの居酒屋で良いよ
A君:かしこまりました。人数は何人くらいでしょうか?
上司:全員で10人だから、8人くらいじゃない?
A君:かしこまりました。8人の内訳で男性、女性は何名づつででしょうか?
上司:うーん。。面倒だからB君に頼むよ。

コンパイル型のA君は色々と確認が多くて面倒くさがられました。そのため、スクリプト型のB君に白羽の矢が立ちます。

上司:来月飲み会やるからA君とB君良い店を探してきてくれないか
B君:了解です。では予算5000円以内くらいで、会社近辺、人数7から10人くらいで美味しいお店が良いですね!
上司:いいね!頼む!

当日
上司:B君、今日の店はどこだっけ?
B君:あっ沢山ありそうなので当日で良いと思ってました。どっか適当に行きましょうー
上司:。。。
B:すみません、どこも一杯みたいです。

どちらも駄目でしたね。コンパイル型だろうがスクリプト型だろうがポイントはそこではなさそうです。

大事なのは

手続きは面倒ではなく、スピード感もあってエラーやミスが出にくいスタイルが良いという結論に至ります。

議論の中心は型定義

コンパイル型言語とスクリプト型言語の議論の中心は、型定義に思えます。
スクリプト言語では型の宣言なしにプログラミングが可能です。実際の値によって良い感じに動いてくれます。これは良い部分でもあるのですが、バグの温床となってしまってます。
型定義があれば、コンパイル時にエラーを見つけてくれるし、入ってきたデータが想定外の型の場合でもエラーを出してくれるのでバグを発見しやすいです。
フロントのJSでは、TypeScriptを選択する企業が増えてます。TypeScriptは、JavaScriptでありながら型定義ができます。でも、TypeScriptはコンパイラーを通してJavaScriptに変換してるのでコンパイル型ともいます。

最後に

スクリプト言語の様なスピード感があって、コンパイル型の様な型定義が出来るTypeScriptが主流になってきてます。そしてJavaもSpringフレームワーク等の様に手軽さを兼ね備えたコンパイル型に進化してきてます。
言語やフレームワークは時代と共に進化して行きます。
そこで何をプログラミングするかがエンジニア、プログラミングの手腕と言えると思います。
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。

この記事が気に入ったらサポートをしてみませんか?