Prompt
ここで、“スクリプト言語” とはなんだ?
「スクリプト言語」という言葉、よく耳にするけれど、いざ定義しようとすると意外と奥が深いよね!情報工学を学んでいる君なら、「実行までのプロセス」と「抽象化のレベル」 に注目すると、その正体がスッキリ理解できるはずだよ。
還元主義的に言えば、スクリプト言語とは 「人間が書いたコードを、コンパイルという儀式なしに、その場ですぐに実行できるように設計されたプログラミング言語」 のことなんだ。
現代的な視点で、その特徴を 3 つの軸で解剖してみよう!
1. 「コンパイル」が不要(インタプリタ方式)
C言語や、君が触っている Rust のような言語は、実行前にソースコードを機械語(0 と 1)に変換する「コンパイル」という工程が必要だよね。
一方で、スクリプト言語は 「インタプリタ」 という別のプログラムが、コードを一行ずつ読み取って、その場で実行していくんだ。
-
コンパイラ言語 (Rust, C++, C#など):
ソースコード → [コンパイル] → 実行ファイル(Binary) → 実行
-
スクリプト言語 (Python, JavaScript, PHPなど):
ソースコード → [インタプリタがその場で解釈] → 実行
2. 抽象度が高く「人間」に近い
スクリプト言語の多くは、メモリ管理(ポインタ操作や所有権など)を開発者が意識しなくていいように、言語側で強力に自動化されているよ。
-
動的型付け: 変数の型をいちいち宣言しなくても、実行時にいい感じに判断してくれる。
-
ガベージコレクション: 使わなくなったメモリを自動で掃除してくれる。
このおかげで、少ない行数で複雑な処理が書ける(「記述性が高い」 と言うよ)。だからこそ、ちょっとした自動化や Web のロジックに向いているんだね。
3. 「台本(Script)」としての役割
語源を辿ると、演劇の「台本(スクリプト)」に行き着くよ。
OS やブラウザ、あるいは特定の巨大なアプリケーション(Photoshop や Obsidian など)に対して、「次はこの操作をして、その次はこれをして」 と指示を出すための「台本」を書く言語、という意味合いが強いんだ。
-
シェルスクリプト: OS に対する操作の台本。
-
JavaScript: ブラウザに対する操作の台本。
-
DataviewJS: Obsidian に対する操作の台本。
豆知識:最近の境界線は「曖昧」
実は、現代では「スクリプト言語 = インタプリタで遅い」という常識は崩れつつあるんだ。
-
JIT (Just-In-Time) コンパイル:
JavaScript (V8エンジン) や Python (PyPy) は、実行中にこっそりコードを機械語にコンパイルして爆速化している。
-
中間言語:
Java や C# は、ソースを一度中間コードに変えてから実行するから、スクリプトと言語の中間のような性質を持っているよ。
結論:君のスキルスタックで言うと?
君が経験してきた言語で分類すると、こんな感じになるね!
-
スクリプト言語: JavaScript, TypeScript (実行時はJS), PHP, SQL (広義のドメイン固有言語)
-
コンパイラ言語: Java (中間言語方式), C#, Rust
君が「サーバーレスと静的ホスティングの組み合わせ」を神だと言ったのは、まさに 「スクリプト言語(JS)のポータビリティ(どこでも動く性質)」 と 「サーバーレスの即時性」 の相性が抜群だからなんだ。
次は、スクリプト言語の中で最近熱い 「TypeScript がなぜ厳密にはスクリプト言語なのに、コンパイラ言語のような安心感があるのか」 という二面性について話してみる?それとも、Rust をスクリプトのように動かす仕組みについて深掘りする?
Would you like me to compare the execution performance of a Python script versus a Rust binary for a simple task?