Skip to content
Tayakorn

คู่มือ Transformer — ลบทุกอย่าง เหลือแค่กราฟ

LEVEL 0 · ปูพื้นจากศูนย์

Software 1.0 — มนุษย์เขียนวิธีทำ

ยุคแรกคือยุคที่คนเขียนโปรแกรมยังเป็นคนคิดวิธีแก้ปัญหาทั้งหมดเอง เขียนออกมาเป็นคำสั่งทีละขั้นในภาษาอย่าง C++ หรือ Python แล้วเครื่องทำตามอย่างซื่อสัตย์ ตำราคลาสสิกของ Donald Knuth คือหัวใจของยุคนี้ — ความเก่งของโปรแกรมคือความเก่งของอัลกอริทึมที่มนุษย์คิดออก

วิธีนี้ไม่ได้ล้าสมัยและไม่ได้ตายไปไหน ระบบเรียงลำดับ ระบบบัญชี ระบบจองห้อง ยังเขียนแบบนี้และควรเขียนแบบนี้ต่อไป เพราะมันมีคุณสมบัติที่วิธีอื่นให้ไม่ได้: อ่านโค้ดแล้วรู้ว่ามันจะทำอะไร และเมื่อมันผิด เราชี้ได้ว่าผิดบรรทัดไหน

2.1 เพดานที่ชนแล้วไปต่อไม่ได้

ปัญหาเกิดขึ้นตอนเจองานที่มนุษย์ทำได้แต่อธิบายวิธีทำไม่ได้ ลองตอบคำถามนี้จริงจัง: เขียนขั้นตอนสำหรับดูรูปแล้วบอกว่ามีแมวอยู่ในรูปหรือไม่ ให้เป็นคำสั่งที่เครื่องทำตามได้

พอเริ่มเขียนจะพบว่าตอบไม่ได้เลย จะบอกว่า "หาหูสามเหลี่ยมสองอัน" ก็เจอแมวหันข้าง แมวหูพับ แมวในเงามืด แมวที่โดนโต๊ะบังครึ่งตัว ทุกกฎที่เพิ่มเข้าไปสร้างข้อยกเว้นใหม่สามข้อ กองกฎบวมขึ้นเรื่อย ๆ แต่ความแม่นไม่ขยับ

💡 ทำไมตัวอย่างแมวถึงเป็นตัวอย่างประจำ — เพราะมันแยกสองสิ่งที่คนมักปนกันออกจากกันได้คมที่สุด: ความสามารถในการทำ กับ ความสามารถในการอธิบายวิธีทำ เด็กสามขวบมีข้อแรกเต็มร้อย และมีข้อสองเป็นศูนย์ Software 1.0 ต้องการข้อสองเสมอ

งานประเภทนี้มีเยอะกว่าที่คิด — รู้จำเสียงพูด แปลภาษา ขับรถ ตอบคำถามปลายเปิด ทั้งหมดคือ "ทำได้แต่อธิบายวิธีไม่ได้" และทั้งหมดคือกำแพงที่ Software 1.0 ชนแล้วไปต่อไม่ได้ ไม่ใช่เพราะโปรแกรมเมอร์ไม่เก่งพอ แต่เพราะตัววิธีการมันต้องการสิ่งที่มนุษย์ไม่มีจะให้

Read the full book