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?