Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
🐬の推し本紹介2025: 『コーディングを支える技術 ――成り立ちから学ぶプログラミング作法』
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kent OHASHI
December 19, 2025
Programming
0
76
🐬の推し本紹介2025: 『コーディングを支える技術 ――成り立ちから学ぶプログラミング作法』
Kent OHASHI
December 19, 2025
Tweet
Share
More Decks by Kent OHASHI
See All by Kent OHASHI
Property-Based Testing with test.check and clojure.spec
lagenorhynque
0
22
KotlinでミニマルなResult実装による関数型エラーハンドリング
lagenorhynque
0
32
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
1
310
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
lagenorhynque
1
160
純LISPから考える関数型言語のプリミティブ: Clojure, Elixir, Haskell, Scala
lagenorhynque
1
190
From Scala/Clojure to Kotlin
lagenorhynque
0
88
TDD with RDD: Clojure/LispのREPLで変わる開発体験
lagenorhynque
0
110
🐬の推し本紹介2024: 『脱・日本語なまり 英語(+α)実践音声学』
lagenorhynque
1
150
do Notation Equivalents in JVM languages: Scala, Kotlin, Clojure
lagenorhynque
0
110
Other Decks in Programming
See All in Programming
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
1k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
浮動小数の比較について
kishikawakatsumi
0
130
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
290
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
350
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
22
7.6k
AI & Enginnering
codelynx
0
140
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
110
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
220
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
1
160
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
460
The World Runs on Bad Software
bkeepers
PRO
72
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Why Our Code Smells
bkeepers
PRO
340
58k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
🐬の推し本紹介2025 『コーディングを支える技術 ― ― 成り立ちから学ぶプログラミング作法』 1
法学部出身のIT エンジニア イルカ🐬が好き プログラミング、語学、法学、数学が好き lagénorhynque 🐬カマイルカ 2
🐬が新人プログラマによく推薦する技術書 3
『コーディングを支える技術 ― ― 成り立ちから学ぶプログラミング作法』 4
🐬< 「成り立ちから学ぶ」とは 5
2 種類の比較の視点 共時的(synchronique) / 同時代的な「横」の比較 英語 vs フランス語 日本法 vs
アメリカ法 通時的(diachronique) / 歴史的な「縦」の比較 古代の日本語 vs 現代の日本語 近世の法令 vs 現代の法令 ※ synchronique vs diachronique: 言語学者フェルディナン・ド・ソシュールによる区別 6
例: 自然言語( 英語) を通時的に探る 7
人間が目的のために生み出したツールについて、 共時/ 通時的な比較から類似点や相違点を探り、 「なぜ」そのように設計されているのか学ぶことで、 効果的な活用/ 応用や発展の可能性が見えてくる。 8
この本の構成 1. 言語を深く効率的に学ぶには 2. プログラミング言語を俯瞰する 3. 文法の誕生 4. 処理の流れのコントロール 5.
関数 6. エラー処理 9
7. 名前とスコープ 8. 型 9. コンテナと文字列 10. 並行処理 11. オブジェクトとクラス
12. 継承によるコードの再利用 10
内容紹介: プログラムでの数式表現 書籍「第3 章 文法の誕生」より 11
数学での数式 例えば、 ※ と呼ばれる 1 + 2 × 3 中置記法(infix
notation) 12
これは通常、 を意味する。 1 + (2 × 3) 13
1. 現代の多くのプログラミング言語の場合 と書くと の意味で扱われる。 + よりも * のほうが が高い、という ルール(
文法) が に組み込まれているため。 1 + 2 * 3 1 + (2 * 3) 演算子 優先順位 言語処理系 14
ツリー🎄形式で図示すると + 1 * 2 3 ※ と呼ばれ、 によりコードから変換して得られる表現 抽象構文木(abstract
syntax tree, AST) パーサー(parser, 構文解析器) 15
2. という古い言語(1950 年代〜) の場合 ※ と呼ばれる 演算子の優先順位のルールは不要 括弧は不要 ( 演算子ごとに受け付ける
の個数が決まっていて曖昧さがないため) FORTH 1 2 3 * + 後置記法(postfix notation), 逆ポーランド記法(reverse Polish notation) 被演算子(operand) 16
で数式を評価してみると FORTH on browser > 1 2 3 * +
. ( 数式。ここで . は結果を取り出す操作) 7 ( 評価結果) 17
というデータ構造を用いて 1 1 2 1 2 3 1 6 7
1 2 3 * + 2 3 * + 3 * + * + + ( 終端) 2 3 1 6 * + stack push push push pop & push pop & push と計算することができる。 ※ と呼ばれ、 現代のプログラミング言語の処理系でも使われることがある仕組み スタック(stack) スタックマシン(stack machine) 18
3. という( 同じく) 古い言語の場合 ※ と呼ばれる 演算子の優先順位のルールは不要 括弧は省略できない ( 演算子ごとに受け付ける被演算子の個数が不定なため)
LISP (+ 1 (* 2 3)) 前置記法(prefix notation), ポーランド記法(Polish notation) 19
で数式を評価してみると LISP on browser > (+ 1 (* 2 3))
; 数式 7 ; 評価結果 20
多くのプログラミング言語での関数呼び出しの記法 と同等であり、抽象構文木(AST) に素直に対応する。 + 1 * 2 3 ※ プログラムのコード表現と抽象構文木が近いため、
コードのプログラム的な変換( ) が容易に実現できる add(1, multiply(2, 3)) 構文マクロ(syntactic macro) 21
これらの例では、文法を考える際に ルールを設けず機械的に扱いやすくする ルールを加えて人間に分かりやすくする という設計判断の違いがあることが見えてくる。 22
Further Reading 『コーディングを支える技術 ― ― 成り立ちから学 ぶプログラミング作法』 『7 つの言語 7
つの世界』 『リーダブルコード ― より良いコードを書くため のシンプルで実践的なテクニック』 『プロダクティブ・プログラマ ― プログラマのた めの生産性向上術』 『英語の「なぜ? 」に答える はじめての英語史』 23