DEV Community

Gophernment
Gophernment

Posted on

REPL — วิธีคุยกับคอมพิวเตอร์ที่ LISP สอนโลก

คุณเคยนึกไหมว่าก่อนที่จะมี >>> ใน Python,
ก่อน node console,
ก่อน Chrome DevTools —

การคุยกับคอมพิวเตอร์มันเป็นยังไง?

คำตอบคือ... คุณไม่ได้คุยกับมัน คุณเขียนโปรแกรมทั้งก้อนบน punch card, ยัดเข้าเครื่อง, รอ output ออกมา, แล้วค่อยรู้ว่ามี bug หรือเปล่า

REPL เปลี่ยนทั้งหมดนั้น

READ → EVAL → PRINT → LOOP

REPL ย่อมาจาก Read-Eval-Print Loop — วงจรง่าย ๆ สี่ขั้นตอน:

1. READ   — อ่านสิ่งที่คุณพิมพ์
2. EVAL   — ประมวลผลมัน
3. PRINT  — แสดงผลลัพธ์
4. LOOP   — กลับไปรอ input ถัดไป
Enter fullscreen mode Exit fullscreen mode

วงจรนี้เกิดจาก LISP ในทศวรรษ 1960s — read, eval, และ print คือ primitive function สามตัวของภาษา

เวลาเราเฉลิมฉลอง LISP เรามักพูดถึง garbage collection, lambda, macro — แต่ REPL ต่างออกไป

REPL ไม่ใช่ "feature"... มันคือ วิธีคิด

ก่อน REPL: ยุคที่คอมพิวเตอร์ไม่คุยกับคุณ

ลองนึกภาพ programmer ปี 1965:

  1. เขียนโค้ดบนกระดาษ
  2. เจาะ punch card
  3. ยื่นให้ operator
  4. รอคิว (อาจเป็นชั่วโมง หรือเป็นวัน)
  5. เครื่องรัน
  6. ได้ output
  7. เจอ bug — กลับไปข้อ 1

นี่คือ batch processing — ทั้งวงการเป็นแบบนี้

ลองเทียบกับวันนี้: คุณพิมพ์ 2 + 2 → enter → 4 ปรากฏในเสี้ยววินาที

REPL ทำให้วงจร feedback จาก "เป็นวัน" เหลือ "เป็นวินาที"

นี่คือการเปลี่ยน paradigm ที่ใหญ่กว่า feature ใด ๆ ที่ LISP คิด — มันเปลี่ยนวิธีที่มนุษย์ interact กับคอมพิวเตอร์ จาก "สั่งแล้วรอ" เป็น "สนทนา"

กำเนิดในห้องแล็บ AI ของ MIT

read-eval-print loop ไม่ได้เกิดจาก philosophy หรือ manifesto — มันเกิดจากความจำเป็น

AI researchers ที่ MIT กำลังเขียนโปรแกรมที่ต้องลองผิดลองถูกตลอดเวลา เขียนโปรแกรมทั้งก้อนไม่ได้ — เพราะยังไม่รู้ด้วยซ้ำว่าอยากให้มันทำอะไร

พวกเขาต้องการ ทดลองทีละ expression — เห็นผลลัพธ์ทันที แล้วปรับสมมติฐาน

LISP — ด้วยความที่ทุกอย่างเป็น expression, ทุก expression ให้ผลลัพธ์ — เหมาะกับวิธีนี้อย่างเป็นธรรมชาติ

คำว่า "read-eval-print loop" ปรากฏครั้งแรกใน MACLISP Reference Manual (1974, David Moon)
แต่หลักการนี้ถูกใช้จริงมาตั้งแต่ LISP I system ในปี 1960 (LISP 1.5 Programmer's Manual ปี 1962 คือฉบับที่สมบูรณ์และแพร่หลายที่สุดในยุคนั้น)

ทำไม REPL ถึงสำคัญกว่า "แค่ console"

REPL ไม่ใช่แค่ terminal ที่พิมพ์คำสั่งได้ มันเปลี่ยนวิธีที่เรา:

วิธีเก่า วิธี REPL
อ่าน documentation → ท่องจำ → เขียน ทดลอง → ดูผล → เข้าใจ
รอ compile ทั้งโปรเจกต์ ทดสอบทีละฟังก์ชัน
กลัวผิด เพราะแก้ยาก ผิดได้เร็ว แก้ได้เร็ว
code คือ artifacts สำเร็จรูป code คือ conversation

นี่คือรากฐานของ exploratory programming — ปรัชญาที่บอกว่าเราไม่จำเป็นต้องรู้ทุกอย่างก่อนเริ่มเขียน เราเรียนรู้ระหว่างเขียนได้

การเดินทางของ REPL — จากห้องแล็บ AI มาถึงมือคุณ

1960s — LISP

REPL ตัวแรกของโลก — read, eval, print ในวงจรอนันต์

1990–1991 — Python

Guido van Rossum เริ่มพัฒนา Python ปลายปี 1989 เปิดตัวสู่สาธารณะครั้งแรกในเดือนกุมภาพันธ์ 1991 — REPL (>>>) เป็นส่วนหนึ่งของภาษามาตั้งแต่แรก โดยเอาไอเดียมาจาก LISP และ ABC language (ภาษาที่ Guido ช่วยพัฒนาก่อนหน้านี้)

สิ่งที่ Python เพิ่ม: readability — REPL ที่อ่านง่าย, error message ที่มนุษย์เข้าใจ, และ philosophy "มาเพื่อให้คนเขียน, ไม่ใช่ให้ compiler อ่าน"

1995 — Ruby IRB

Matz สร้าง IRB (Interactive Ruby) — สำหรับคนที่อยากลอง Ruby แบบ real-time (Ruby มี DNA LISP — Matz บอกว่า "Ruby was a Lisp originally, in theory")

2006 — Firebug

Joe Hewitt สร้าง Firebug extension สำหรับ Firefox — เป็นครั้งแรกที่ browser มี interactive console แบบ REPL: inspect DOM, ทดลอง JavaScript, ดู network request — ทั้งหมดใน browser โดยไม่ต้องเปิด terminal แยก วงการ frontend dev เปลี่ยนไปตลอดกาล

2009 — Node.js REPL

Ryan Dahl ให้ JavaScript มี REPL นอก browser — frontend dev สามารถลอง JS แบบ interactive โดยไม่ต้องเปิด browser เลย

2011 — Chrome DevTools Console

ทีม Chrome ของ Google ต่อยอดจาก WebKit Inspector (ต้นแบบของ Safari) สร้าง DevTools ที่มี Console ในตัว — แนวคิด interactive debugging ใน browser ที่ Firebug บุกเบิกไว้ กลายเป็น standard ในทุก browser หลังจากนั้น

2014 — IPython / Jupyter Notebook

Fernando Pérez ต่อยอด REPL ของ Python ให้เป็น notebook — ผสมโค้ด, ผลลัพธ์, markdown, กราฟ ในหน้าเดียว นี่คือ REPL เวอร์ชันที่สมบูรณ์แบบที่สุดสำหรับ data science

2015 — Rust Playground

Rust — ภาษาที่ compile ช้าเป็นชั่วโมง — มี playground ออนไลน์ที่ทำตัวเป็น REPL: เขียน → รัน → เห็นผล → ปรับ → รันใหม่ — ทั้งหมดใน browser

สิ่งที่ REPL สอนเรา

  1. Feedback loop ที่สั้นที่สุดคืออาวุธที่ทรงพลังที่สุด — programmer ที่ทดลองเร็ว เรียนรู้เร็วกว่า programmer ที่รอ compile

  2. ภาษาไม่ควร "ถูกต้องตั้งแต่ compile" ควร "เรียนรู้ระหว่างเขียน" — REPL ทำให้ภาษากลายเป็นเครื่องมือคิด ไม่ใช่แค่เครื่องมือผลิต

  3. Simple ideas win — read → eval → print → loop — 4 คำ, 4 ขั้นตอน, เปลี่ยนวิธีมนุษย์เขียนโค้ดไปตลอดกาล


อ่านเพิ่ม


📅 สิงหาคม 2026 | ⚠️ ตรวจสอบข้อมูล ณ วันที่เขียน

Top comments (1)

Collapse
 
algorhymer profile image
algorhymer

Chaidh na REPLan Albannach agus Frangach fhàgail a-mach 😢😢😢