Page 1
どうして言語は一つにならないの?
〜相対化して学ぶプログラミング言語論
Is there a "Best" programming language?
A comparative look at How they work
pixiv Inc.
USAMI Kenta
2025-07-25 #techramen25conf
1 旭川リサーチセンター - TechRAMEN 2025 Conference
公開日:
by USAMI Kenta@tadsan
に旭川リサーチセンターで開催された『TechRAMEN 2025 Conference』発表しました。
どうして言語は一つにならないの?
〜相対化して学ぶプログラミング言語論
Is there a "Best" programming language?
A comparative look at How they work
pixiv Inc.
USAMI Kenta
2025-07-25 #techramen25conf
1 旭川リサーチセンター - TechRAMEN 2025 Conference
お前誰よ
• うさみけんた (@tadsan) / Zonu.EXE / にゃんだーすわん
• ピクシブ株式会社 Platform Div > WebTechnology Team PHPer
• 2012年末から現職、APIとかCIとかいろいろなところを見つめてきました
• 最近チームが再編されてインフラっぽい仕事もしてます
• Emacs PHP Modeを開発しています (2017年-)
• プログラミング言語にちょっとこだわりのある素人 (spcamp2010)
2
出身地は札幌と旭川の間
3
PHPカンファレンス
4
昨年のTechRAMEN
5
プログラミング言語史
6
あした後日祭やります
7
今回のお題
8
9
会社の飲み会で
同僚に言われました
10
Q. えっと tadsanが
やってる言語って
なんだっけ?
11
」
、
「
僕はプログラミング
言語が趣味みたいな
人間なので
いっぱいやってます
12
僕はプログラミング
言語が趣味みたいな
人間なので
いっぱいやってます
13
A. 外部でよく発表
してるのはPHP
14
」
「
Q. なんで言語っていっぱい
あるの? そのうち
一個にならない?
15
」
「
A. いい質問ですね!
16
」
「
特に初心者は
覚えることが多い
17
Web開発は多言語を要求しがち
• バックエンド言語どれか
• JavaScript(Node.js), Ruby, Python, Java, C#, PHP, ...etc.
• フロントエンド
• HTML, JavaScript, TypeScript, CSS, ...etc.
• その他
• SQL, 正規表現, シェルスクリプト ...etc.
18
どれか1つにならんか
と願いたくなる
気持ちはわかる
19
言語を1個だけ覚えたら
なんでも作れる!
20
ゲームも作れるし
システム開発もできる
21
そうなったら
いいのにな…
22
ところで
23
言語 #とは
24
」
「
自然言語
人間が日常的に使う
25
」
「
人工言語
人間が目的をもって
設計した言語
26
」
「
Q.
(自然言語)何言語
知っていますか?
27
日本語 英語 中国語 韓国語
ドイツ語 フランス語 タイ語
ヒンディー語 マレー語…
28
、
、
、
、
、
、
言語って
結構いっぱいある
29
日本人は結構
何か国語 母国語
って言っちゃいがち
30
」
「
」
「
国≠言語
31
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
国際SILという団体に
よる言語調査
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
国際SILという団体に
よる言語調査
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
国際SILという団体に
よる言語調査
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
国際SILという団体に
よる言語調査
エスノローグ調べ
公用語
(手話を除く)
1
日本 13
(事実上)
インド 22 717
EU加盟国 24 153
32
Q.
(自然言語)何言語
しゃべれますか?
33
私は日本語しか
しゃべれません
\(^o^)/
34
世界にプログラミング
言語は何種類あるで
しょうか
35
151種類!
36
…と断言してくれるオーキ
ド博士がいてくれたらよ
かったのですが… そのよう
に明快な回答は出せない
37
(計算機言語)何言語
言えますか?
38
GitHubの言語検出
39
GitHubの言語検出 594
39
コンピュータ言語
• 人工的に作られた言語のうち、コンピュータで処理することを
前提に設計された言語
• データ記述言語 (HTML, XML, JSON, Markdown, ...etc.)
• 問い合わせ言語 (SQL, SPARQL, …etc.)
• スタイルシート言語 (CSS, XSL, …etc.)
• プログラミング言語 (C言語, JavaScript, Ruby, Python, ...etc.)
40
このトークでは言語の種類
を厳密には区別しない…
41
が、分類する必要性が生じ
ている時点で統一無理そう
という予感がしてくる
42
プログラムで全てを司る
• 汎用のプログラミング言語、だいたい何でも書ける
• データも記述できる
• 問い合わせもできる
• スタイルシートも埋め込める
• もちろんプログラムも書ける (それはそう)
43
データ記述言語もなんでもできる
• 例: GitHub Actions (YAML)
• GitHubで処理させることをYAMLで記述する
• 制御構造を持っていて、ほかのActionsを呼び出せる
• 構文としてはYAMLだが、これって独自のプログラミング言語では?
44
データと処理の世界を往復する
• Lispという言語はプログラムをS式というリスト形式で記述する
• 関数は (format “string”) のような形式で記述する
• マクロという言語機能によって、コンパイル過程でプログラムを生成できる
• データとプログラムが同じ構造をとっている (同図像性)
• eval という機能でリストをプログラムとして実行できる
• Julia, Elixirなどの言語はS式ではないが、この性質を受け継いでいる
45
46
46
46
46
eval
• evaluation (評価)
• プログラムの実行中に文字列やリスト形式のプログラムを実行することで、
柔軟な実行時処理を実現できる
• 非常に強力だが、多用しすぎると処理が追いにくい意味不明なプログラムに
なりがち
• 現代となっては(Lisp以外の世界では)使うなという風評になっている
47
なんでもできる
は
難しい
48
プログラムで全てを司る
• 汎用のプログラミング言語、だいたい何でも書ける
• 良いことも、悪いことも、なんでも記述できる
• 意図しない記述で無限ループに陥るとか
• 「大いなる力には大いなる責任が伴う」
• LispやRubyなどはこういう考えが前提にありそう
49
式言語 (expression language)
• ユーザーに計算式やロジックなどを入力させたいケースがある
• 汎用のプログラミング言語よりもシンプルな計算式や数学関数だけを持つ
「式言語」を提供することで、プログラミング
• プログラミング言語そのものを入力させると
任意コード実行(ACE: Arbitrary Code Execution)が成立しうる
• 悪意がなくても、うっかりで停止しないプログラムを書けてしまう
50
Excel数式
• スプレッドシートのセルに数式を書くと、計算結果が画面に表示される
• 基本的には「命令」は書けなかった (過去形)
• 近年はExcelではPythonプログラムを書けたり、
Google SpreadsheetsではJavaScriptを書けるようになった
51
Write once, run anywhereの夢
• Javaは「一度書けばどこでも動く」マルチプラットフォーム性を謳っていた
• 汎用的なライブラリなどは共通化できるが、アプリケーションとしては
環境固有の実装が必要
• 現代でもReact Native(JavaScript), Flutter(Dart), KMP(Kotlin
Multiplatform) などマルチプラットフォームの環境は多い
• WebAssembly(WASM)
52
プログラミング言語の
パラダイム
53
なんちゃら型、なんちゃら指向
• 一般に普及しているプログラムは「手順」を順番に記述する (手続型)
• C言語(手続き型)→C++, Java, C#(オブジェクト指向)
• どれもC言語を発展させたような言語と捉えられる(互換性はない)が、
それぞれのアプローチは非常に違っている
• 関数を基本的な単位とするパラダイム (関数型)
54
PHPはどこでも65点がとれる言語
• 「現代におけるプロダクト開発とPHPを選定するワケ #phpkansai」
• By @potato4d (PHPカンファレンス関西2017)
• 小難しいことを考えずに簡単にWebアプリを書ける(HTML+α)の言語
• なんだかんだいってWEB+DB連携がさくっとできる言語ランタイムとして
の存在感は健在
• 求められているのは素晴らしい言語ではなく簡単に使える言語
55
関連リンクがありません。
