00 · The Map
00 · แผนที่
This chapter is the ground floor of the tower — the map every chapter above it assumes you have seen.
บทนี้คือชั้นล่างสุดของหอคอย — แผนที่ที่ทุกบทเหนือขึ้นไปถือว่าคุณเห็นมาแล้ว
Why is "computer science" neither about computers nor a science — and what are the disciplines, really?
ทำไม "วิทยาการคอมพิวเตอร์ (computer science)" จึงไม่ใช่ทั้งเรื่องของคอมพิวเตอร์และไม่ใช่วิทยาศาสตร์ — และสาขาวิชาเหล่านี้คืออะไรกันแน่
In September 1967, three men wrote a letter to the journal Science because colleagues kept telling them their field did not exist. Allen Newell, Alan Perlis, and Herbert Simon were not obscure cranks defending a fad: Perlis had received the first Turing Award ever given, the year before; Newell and Simon would share one in 1975; Simon would add a Nobel Prize in economics in 1978. Their defense fit in a sentence — computer science is "the study of computers and all the phenomena surrounding them" (Newell, Perlis & Simon, 1967).
เดือนกันยายน ปี 1967 ชายสามคนเขียนจดหมายถึงวารสาร Science เพราะเพื่อนร่วมวงการบอกพวกเขาไม่หยุดว่าสาขาวิชาของพวกเขาไม่มีอยู่จริง Allen Newell, Alan Perlis และ Herbert Simon ไม่ใช่พวกเพี้ยนไร้ชื่อที่ออกมาปกป้องกระแสชั่วครู่ Perlis ได้ Turing Award รางวัลแรกที่เคยมอบให้ใคร เมื่อปีก่อนหน้านั้น Newell กับ Simon จะได้รางวัลเดียวกันร่วมกันในปี 1975 Simon จะได้รางวัลโนเบลสาขาเศรษฐศาสตร์เพิ่มอีกในปี 1978 คำแก้ต่างของพวกเขายาวประโยคเดียว — วิทยาการคอมพิวเตอร์ (computer science) คือ "การศึกษาคอมพิวเตอร์และปรากฏการณ์ทั้งหมดที่อยู่รอบตัวมัน" ("the study of computers and all the phenomena surrounding them") (Newell, Perlis & Simon, 1967)
Eighteen years later, the most famous textbook the field ever produced opened by disagreeing with its founders. Abelson and Sussman's Structure and Interpretation of Computer Programs declares in its preface a conviction that "computer science" is not a science, and that its significance has little to do with computers (SICP, 1985). A sharper version of the same jab circulates to this day — computer science is no more about computers than astronomy is about telescopes — usually pinned on Edsger Dijkstra, though the traceable source is Michael Fellows and Ian Parberry in 1993 (Quote Investigator).
สิบแปดปีให้หลัง ตำราที่โด่งดังที่สุดเท่าที่สาขานี้เคยผลิต เปิดเล่มด้วยการเถียงกับผู้ก่อตั้งสาขาของตัวเอง Structure and Interpretation of Computer Programs ของ Abelson และ Sussman ประกาศในคำนำว่าพวกเขาเชื่อว่า "วิทยาการคอมพิวเตอร์" ไม่ใช่วิทยาศาสตร์ และความสำคัญของมันแทบไม่เกี่ยวกับคอมพิวเตอร์ (SICP, 1985) คำแดกดันชุดเดียวกันแต่คมกว่ายังหมุนเวียนอยู่จนถึงวันนี้ — วิทยาการคอมพิวเตอร์ไม่ได้เกี่ยวกับคอมพิวเตอร์ มากไปกว่าที่ดาราศาสตร์เกี่ยวกับกล้องโทรทรรศน์ (computer science is no more about computers than astronomy is about telescopes) — คนมักยกให้เป็นคำของ Edsger Dijkstra แต่ต้นตอที่สืบย้อนได้คือ Michael Fellows และ Ian Parberry ในปี 1993 (Quote Investigator)
So the founders called it a science of computers, and the field's own catechism says it is neither. Both are right, and seeing how both can be right is the work of this chapter — and the organizing idea of this book.
ผู้ก่อตั้งเรียกมันว่าวิทยาศาสตร์ของคอมพิวเตอร์ คำสอนของสาขาเองบอกว่ามันไม่ใช่ทั้งสองอย่าง ทั้งคู่พูดถูก และการเห็นว่าทั้งคู่ถูกพร้อมกันได้อย่างไร คืองานของบทนี้ — และคือแนวคิดที่จัดวางทั้งเล่ม
The first thing to understand is that "computing" is not one discipline wearing five name tags. Each discipline is a different question asked about the same machines. The official map was drawn by the professional computing societies: the CC2005 report (ACM, AIS, and the IEEE Computer Society) fixed the five classical disciplines, and its successor CC2020 — a fifty-member task force from twenty countries, reporting at the end of 2020 — inherited them and welcomed two arrivals. The five ask:
"การคำนวณ (computing)" ไม่ใช่สาขาวิชาเดียวที่สวมป้ายชื่อห้าใบ นี่คือสิ่งแรกที่ต้องเข้าใจ แต่ละสาขาคือ คำถาม คนละคำถามที่ถามกับเครื่องจักรชุดเดียวกัน แผนที่ทางการวาดโดยสมาคมวิชาชีพด้านคอมพิวเตอร์ รายงาน CC2005 (ACM, AIS และ IEEE Computer Society) ตรึงสาขาดั้งเดิมทั้งห้าไว้ และรุ่นต่อมา CC2020 — คณะทำงานห้าสิบคนจากยี่สิบประเทศ รายงานผลปลายปี 2020 — รับห้าสาขานั้นมาต่อ พร้อมต้อนรับผู้มาใหม่อีกสอง ห้าสาขาถามว่า:
Computer science (CS): what can be computed at all, and at what cost? Computer engineering (CE): how does electricity become logic — and where exactly does hardware end and software begin? Software engineering (SE): what happens to a program when it must live for years and be changed by many hands? Information systems (IS): what does computing do inside an organization — to its decisions, records, and power? Information technology (IT): who keeps real systems running for real users, and how? The arrivals are cybersecurity (curricular guidelines: CSEC2017) and data science (ACM competencies, 2021) — younger, and, as we will see, shaped differently from the elder five.
วิทยาการคอมพิวเตอร์ (computer science, CS): อะไรบ้างที่คำนวณได้ และด้วยต้นทุนเท่าไร? วิศวกรรมคอมพิวเตอร์ (CE): ไฟฟ้ากลายเป็นตรรกะได้อย่างไร — และฮาร์ดแวร์จบตรงไหน ซอฟต์แวร์เริ่มตรงไหน? วิศวกรรมซอฟต์แวร์ (SE): เกิดอะไรกับโปรแกรมเมื่อมันต้องอยู่ไปอีกหลายปีและถูกแก้ด้วยมือหลายคู่? ระบบสารสนเทศ (IS): การคำนวณ ทำ อะไรภายในองค์กร — ต่อการตัดสินใจ ต่อบันทึกข้อมูล ต่ออำนาจ? เทคโนโลยีสารสนเทศ (IT): ใครทำให้ระบบจริงเดินอยู่ได้เพื่อผู้ใช้จริง และทำอย่างไร? ผู้มาใหม่สองรายคือ ความมั่นคงปลอดภัยไซเบอร์ (cybersecurity) (ข้อแนะนำหลักสูตร: CSEC2017) และ วิทยาการข้อมูล (data science) (ACM competencies, 2021) — อายุน้อยกว่า และดังที่จะเห็นต่อไป มีรูปทรงต่างจากห้าสาขารุ่นพี่
Watch one artifact — a hospital's patient-records system — and the five become five professions. The computer scientist asks whether the record-matching algorithm scales to ten million patients. The computer engineer asks why the storage controller corrupts writes during power loss. The software engineer asks how to change the billing module without breaking the pharmacy's. The IS specialist asks why nurses route around the system with paper notes. The IT professional is the one paged at 3 a.m. when it goes down. Same machine; five questions.
จ้องสิ่งประดิษฐ์ชิ้นเดียว — ระบบเวชระเบียนผู้ป่วยของโรงพยาบาล — ห้าสาขากลายเป็นห้าอาชีพทันที นักวิทยาการคอมพิวเตอร์ถามว่าอัลกอริทึมจับคู่เวชระเบียนขยายไปรับผู้ป่วยสิบล้านคนไหวไหม วิศวกรคอมพิวเตอร์ถามว่าทำไมตัวควบคุมที่เก็บข้อมูลทำให้การเขียนข้อมูลเสียหายตอนไฟดับ วิศวกรซอฟต์แวร์ถามว่าจะแก้มอดูลเรียกเก็บเงินอย่างไรไม่ให้ระบบของฝ่ายเภสัชกรรมพัง ผู้เชี่ยวชาญด้านระบบสารสนเทศถามว่าทำไมพยาบาลถึงเลี่ยงระบบไปจดใส่กระดาษ ผู้เชี่ยวชาญด้านเทคโนโลยีสารสนเทศคือคนที่ถูกตามตัวตอนตีสามเมื่อระบบล่ม เครื่องเดียวกัน ห้าคำถาม
This book does not walk that map department by department. It makes a different cut — the cut the field itself quietly makes every day. Computing's one great trick, the trick underneath every discipline, is abstraction: build a floor, hide its machinery, and offer the floor above a surface simpler than what it conceals. Electric charge is hidden by the transistor; transistors by logic gates; gates by the processor; the processor by the operating system; the machine's bare instructions by programming languages; single machines by networks; and on upward until a child drags a photo across a screen, commanding billions of switches with one finger and needing to understand none of them. Nobody holds the whole tower in mind at once. That is not a failure of education — it is the design. Dijkstra, in his 1972 Turing Award lecture, put his finger on why the trick works: the purpose of abstracting is not to be vague, but "to create a new semantic level in which one can be absolutely precise" (EWD340). Each floor is not a blurrier view of the one below; it is a new language, exact on its own terms.
หนังสือเล่มนี้ไม่เดินตามแผนที่นั้นทีละแผนก มันตัดคนละมุม — มุมที่สาขานี้เองตัดอย่างเงียบๆ ทุกวัน กลเม็ดใหญ่หนึ่งเดียวของการคำนวณ กลเม็ดที่รองอยู่ใต้ทุกสาขาวิชา คือ นามธรรม (abstraction): สร้างชั้นขึ้นมาหนึ่งชั้น ซ่อนกลไกของมันไว้ ยื่นผิว (surface) ที่ง่ายกว่าสิ่งที่มันปิดบังให้ชั้นบน ประจุไฟฟ้าถูกซ่อนโดยทรานซิสเตอร์ (transistor) ทรานซิสเตอร์ถูกซ่อนโดยเกตตรรกะ (logic gate) เกตถูกซ่อนโดยตัวประมวลผล (processor) ตัวประมวลผลถูกซ่อนโดยระบบปฏิบัติการ (operating system) คำสั่งดิบของเครื่องถูกซ่อนโดยภาษาโปรแกรม (programming language) เครื่องเดี่ยวถูกซ่อนโดยเครือข่าย (network) ไล่ขึ้นไปเรื่อยๆ จนถึงเด็กคนหนึ่งลากรูปถ่ายข้ามหน้าจอ สั่งสวิตช์นับพันล้านตัวด้วยนิ้วเดียว โดยไม่ต้องเข้าใจสวิตช์ตัวไหนเลย ไม่มีใครถือหอคอยทั้งหลังไว้ในหัวพร้อมกัน นั่นไม่ใช่ความล้มเหลวของการศึกษา — มันคือการออกแบบ Dijkstra ชี้จุดว่าทำไมกลเม็ดนี้ได้ผล ในปาฐกถา Turing Award ปี 1972 ของเขา จุดประสงค์ของ abstraction ไม่ใช่เพื่อความคลุมเครือ แต่เพื่อ "สร้างระดับความหมายใหม่ขึ้นมาระดับหนึ่ง ที่ซึ่งเราสามารถแม่นยำได้อย่างสมบูรณ์" ("to create a new semantic level in which one can be absolutely precise") (EWD340) แต่ละชั้นไม่ใช่ภาพพร่ามัวของชั้นล่าง มันคือ ภาษาใหม่ ที่แม่นยำในเงื่อนไขของตัวเอง
The proof that the tower is climbable is that students climb it. In Nisan and Schocken's course-in-a-book The Elements of Computing Systems (nand2tetris.org), learners start with a single logic gate and build — gates, chips, a machine, an assembler, a compiler, an operating system, a game — in one term. One person can build the whole stack only because each floor needs nothing from the floor below except its surface.
หลักฐานว่าหอคอยนี้ปีนได้ คือนักเรียนปีนมันจริง ในตำรา-คอร์สเล่มเดียวของ Nisan และ Schocken ชื่อ The Elements of Computing Systems (nand2tetris.org) ผู้เรียนเริ่มจาก logic gate ตัวเดียว แล้วก่อขึ้นไป — เกต ชิป เครื่องจักร แอสเซมเบลอร์ (assembler) คอมไพเลอร์ ระบบปฏิบัติการ และเกมหนึ่งเกม — ภายในหนึ่งเทอม คนเดียวสร้างชั้นซ้อน (stack) ได้ทั้งกอง เพราะแต่ละชั้นไม่ต้องการอะไรจากชั้นล่าง นอกจากผิวของมัน
But the surfaces are not perfect, and this is the second idea the whole book leans on. Joel Spolsky named it the Law of Leaky Abstractions: "all non-trivial abstractions, to some degree, are leaky" (Spolsky, 2002). Your app promises that a message "was sent," until the network below it disagrees. Two loops, logically identical, run ten times apart in speed because of how memory hardware three floors down caches data. When an abstraction leaks, someone must descend the stairs — and knowing which floor the leak comes from is most of what expertise in computing is. That is why every chapter in this book answers three questions about its floor: what it hides, what surface it offers, and where it leaks.
ผิวเหล่านั้นไม่สมบูรณ์แบบ และนี่คือไอเดียที่สองที่ทั้งเล่มพิงอยู่ Joel Spolsky ตั้งชื่อให้มันว่ากฎว่าด้วย abstraction ที่รั่วเสมอ (the Law of Leaky Abstractions): "abstraction ที่ไม่ธรรมดาทุกตัว รั่วไม่มากก็น้อย" ("all non-trivial abstractions, to some degree, are leaky") (Spolsky, 2002) แอปของคุณสัญญาว่าข้อความ "ถูกส่งแล้ว" จนกระทั่งเครือข่ายชั้นล่างไม่เห็นด้วย ลูปสองลูปที่เหมือนกันทุกประการทางตรรกะ ทำงานเร็วช้าต่างกันสิบเท่า เพราะวิธีที่ฮาร์ดแวร์หน่วยความจำสามชั้นข้างล่างแคช (cache) ข้อมูล เมื่อ abstraction รั่ว ต้องมีคนลงบันไดไปดู — และการรู้ว่ารั่วมาจากชั้น*ไหน* คือเนื้อส่วนใหญ่ของความเชี่ยวชาญในการคำนวณ ด้วยเหตุนี้ทุกบทในเล่มนี้จึงตอบคำถามสามข้อเกี่ยวกับชั้นของตัวเอง: ชั้นนี้ซ่อนอะไร ยื่นผิวแบบไหนขึ้นไป และรั่วตรงไหน
Now the two 1967-versus-1985 claims resolve. Newell, Perlis, and Simon were right: the phenomena are real, and floors like architecture, networks, and machine learning are studied with experiments, like nature. Abelson and Sussman were right too: no floor above the bottom two is about electronics at all — the upper tower is made of pure structure, closer to mathematics than to any machine. Computing is not one kind of knowledge. It is a tower in which physics hardens into engineering, engineering into language, and language into something very much like thought.
ข้อถกเถียงระหว่างปี 1967 กับปี 1985 คลี่คลายได้ตรงนี้ Newell, Perlis และ Simon พูดถูก ปรากฏการณ์เหล่านั้นมีอยู่จริง และชั้นอย่างสถาปัตยกรรม (architecture) เครือข่าย และ machine learning ถูกศึกษาด้วยการทดลอง เหมือนศึกษาธรรมชาติ Abelson กับ Sussman ก็พูดถูก ไม่มีชั้นใดเหนือสองชั้นล่างสุดที่เกี่ยวกับอิเล็กทรอนิกส์แม้แต่น้อย — หอคอยส่วนบนก่อขึ้นจากโครงสร้างล้วนๆ ใกล้คณิตศาสตร์มากกว่าเครื่องจักรใดๆ การคำนวณไม่ใช่ความรู้ชนิดเดียว มันคือหอคอยที่ฟิสิกส์แข็งตัวเป็นวิศวกรรม วิศวกรรมแข็งตัวเป็นภาษา และภาษาแข็งตัวเป็นสิ่งที่ใกล้เคียงความคิดอย่างยิ่ง
How to read this book: there are fifteen floors and a closing chapter, each self-contained, each 900–1,400 words — principles, not surveys. Chapters 01–03 are bedrock (what is computable, what is efficient, what is information); 04–06 build the machine; 07–10 take it to scale; 11–14 walk the edges, where adversaries, learned behavior, and human beings enter. Read in order to climb the tower, or jump to any floor — every chapter names its place in the stack in its first line, and its Connections section tells you which stairs lead where.
วิธีอ่านเล่มนี้: สิบห้าชั้น กับบทปิดอีกหนึ่งบท แต่ละบทจบในตัวเอง ยาวบทละ 900–1,400 คำ — เป็นหลักการ ไม่ใช่การสำรวจภาพรวม บทที่ 01–03 คือชั้นรากฐาน (อะไรคำนวณได้ อะไรมีประสิทธิภาพ อะไรคือสารสนเทศ) 04–06 ประกอบตัวเครื่องขึ้นมา 07–10 พามันไปสู่สเกลใหญ่ 11–14 เดินตามขอบ ที่ซึ่งฝ่ายตรงข้าม พฤติกรรมที่เรียนรู้ได้ และมนุษย์เข้ามาเกี่ยว อ่านตามลำดับถ้าอยากปีนขึ้นไปทั้งหอคอย หรือกระโดดไปชั้นไหนก็ได้ — ทุกบทบอกตำแหน่งของตัวเองในชั้นซ้อนไว้ในบรรทัดแรก และหัวข้อ "เชื่อมโยง" บอกว่าบันไดไหนพาไปที่ไหน
Connections
เชื่อมโยง
Below this chapter: nothing — this is the ground. Every other chapter stands on it. The disciplines map onto the floors unevenly, and that is worth noticing as you read: CS saturates chapters 01–03 and 12, CE owns 04, SE owns 07, IS and IT surface in 08–10, and the two young arrivals — security and data science — turn out not to be floors at all but stairwells, cutting vertically through everything (11 and 12 explain why).
ชั้นล่างของบทนี้: ไม่มี — นี่คือพื้นดิน บทอื่นทั้งหมดยืนอยู่บนมัน สาขาวิชาทาบทับกับชั้นต่างๆ ไม่เท่ากัน และควรสังเกตไว้ขณะอ่าน: CS ครอบคลุมเต็มบทที่ 01–03 และ 12, CE เป็นเจ้าของบทที่ 04, SE เป็นเจ้าของบทที่ 07, IS กับ IT โผล่ในบทที่ 08–10 ส่วนผู้มาใหม่สองรายที่อายุน้อยกว่า — security กับ data science — กลับไม่ใช่ชั้นสักชั้น แต่เป็นช่องบันไดที่ตัดขึ้นลงแนวดิ่งผ่านทุกอย่าง (บทที่ 11 และ 12 อธิบายว่าทำไม)
Open questions
คำถามที่ยังเปิดอยู่
Is computing a science, a branch of engineering, or a new kind of mathematics? The 1967 letter did not settle it, and sixty years on the field still funds all three answers. Will data science and cybersecurity harden into disciplines with their own floors, or dissolve into competencies every computing professional needs — the reading CC2020's competency-first framing quietly favors? And is the tower finished growing? Chapter 12 raises the live possibility that natural language itself is becoming the newest floor — a surface under which everything in this book is hidden.
การคำนวณคือวิทยาศาสตร์ แขนงหนึ่งของวิศวกรรม หรือคณิตศาสตร์แบบใหม่? จดหมายปี 1967 ไม่ได้ฟันธง และหกสิบปีผ่านไป สาขาวิชานี้ยังให้ทุนกับคำตอบทั้งสามแบบ data science กับ cybersecurity จะแข็งตัวเป็นสาขาวิชาที่มีชั้นของตัวเอง หรือจะละลายกลายเป็นสมรรถนะ (competency) ที่มืออาชีพด้านการคำนวณทุกคนต้องมี — การอ่านแบบหลังนี้เองที่กรอบคิดแบบ competency-first ของ CC2020 เอียงไปหาอย่างเงียบๆ? แล้วหอคอยนี้หยุดโตแล้วหรือยัง? บทที่ 12 หยิบความเป็นไปได้ที่ยังเปิดอยู่ขึ้นมา ว่าภาษาธรรมชาติเองกำลังกลายเป็นชั้นใหม่ล่าสุด — ผิวที่ซ่อนทุกอย่างในเล่มนี้ไว้ข้างใต้
Go deeper
อ่านต่อ
- Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2nd ed., Microsoft Press, 2022 — the lower tower, built floor by floor for a general reader; interactive companion at codehiddenlanguage.com.
- Allen Newell, Alan Perlis & Herbert Simon, "Computer Science," Science 157, no. 3795 (1967): 1373–1374 — science.org.
- ACM & IEEE Computer Society, Computing Curricula 2020: Paradigms for Global Computing Education — full report PDF.
- Charles Petzold, Code: The Hidden Language of Computer Hardware and Software, 2nd ed., Microsoft Press, 2022 — หอคอยชั้นล่าง สร้างขึ้นทีละชั้นสำหรับผู้อ่านทั่วไป; มีคู่มือโต้ตอบได้ที่ codehiddenlanguage.com
- Allen Newell, Alan Perlis & Herbert Simon, "Computer Science," Science 157, no. 3795 (1967): 1373–1374 — science.org
- ACM & IEEE Computer Society, Computing Curricula 2020: Paradigms for Global Computing Education — รายงานฉบับเต็ม PDF