Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
🐬の推し本紹介2025: 『コーディングを支える技術 ――成り立ちから学ぶプログラミング作法』
Search
Kent OHASHI
December 19, 2025
Programming
0
64
🐬の推し本紹介2025: 『コーディングを支える技術 ――成り立ちから学ぶプログラミング作法』
Kent OHASHI
December 19, 2025
Tweet
Share
More Decks by Kent OHASHI
See All by Kent OHASHI
KotlinでミニマルなResult実装による関数型エラーハンドリング
lagenorhynque
0
21
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
1
170
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
lagenorhynque
1
140
純LISPから考える関数型言語のプリミティブ: Clojure, Elixir, Haskell, Scala
lagenorhynque
1
160
From Scala/Clojure to Kotlin
lagenorhynque
0
76
TDD with RDD: Clojure/LispのREPLで変わる開発体験
lagenorhynque
0
100
🐬の推し本紹介2024: 『脱・日本語なまり 英語(+α)実践音声学』
lagenorhynque
1
140
do Notation Equivalents in JVM languages: Scala, Kotlin, Clojure
lagenorhynque
0
100
map関数の内部実装から探るJVM言語のコレクション: Scala, Kotlin, Clojureコレクションの基本的な設計を理解しよう
lagenorhynque
0
100
Other Decks in Programming
See All in Programming
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
160
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
AIエージェントの設計で注意するべきポイント6選
har1101
5
2.4k
チームをチームにするEM
hitode909
0
400
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
190
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
220
Java 25, Nuevas características
czelabueno
0
120
GoLab2025 Recap
kuro_kurorrr
0
780
Navigating Dependency Injection with Metro
l2hyunwoo
1
190
マスタデータ問題、マイクロサービスでどう解くか
kts
0
130
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
120
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Spectacular Lies of Maps
axbom
PRO
1
400
WENDY [Excerpt]
tessaabrams
8
35k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
51
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
41k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
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