2 คะแนน โดย GN⁺ 2025-02-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สรุปข้อโต้แย้งของ Jonathan Blow

    • การส่งต่อข้อมูลระหว่างรุ่นถูกเจือจางลง
    • การปฏิบัติจริงสำคัญกว่าทฤษฎีต่อการคงอยู่ของเทคโนโลยี
    • ซอฟต์แวร์เป็นสิ่งที่ขับเคลื่อนโลก
    • นามธรรมส่งเสริมความไม่รู้เกี่ยวกับการเขียนโปรแกรมระดับล่าง
    • หากลืมความรู้ระดับล่าง เราจะไม่สามารถบำรุงรักษาซอฟต์แวร์สำคัญได้ และอารยธรรมจะล่มสลาย
  • คำวิจารณ์และข้อโต้แย้งกลับ

    • ข้อโต้แย้งของ Blow มีข้อผิดพลาดและความเข้าใจคลาดเคลื่อนอยู่มาก
    • ความถูกต้องของข้อมูลเป็นสิ่งสำคัญ และข้อมูลของ Blow ก็ผิดพลาดในหลายด้าน
    • ตัวชี้วัด "Five nines" (เวลาพร้อมใช้งาน 99.999%) ยังคงถูกใช้อยู่
    • ซอฟต์แวร์ที่แข็งแกร่งยังคงมีอยู่ และความก้าวหน้าทางเทคโนโลยีก็ยังดำเนินต่อไป
    • ข้ออ้างที่ว่านามธรรมจะนำไปสู่การสูญเสียความสามารถนั้นเป็นการกล่าวเกินจริง
  • ความก้าวหน้าทางเทคโนโลยีและนามธรรม

    • โปรแกรมเมอร์จำนวนมากไม่ต้องการจัดการกับการจัดการหน่วยความจำและพอยน์เตอร์
    • ยังคงมีคนจำนวนมากที่เขียนโค้ด C และแอสเซมบลี
    • ภาษาใหม่อย่าง Rust ให้ความสำคัญกับความแข็งแกร่ง
    • นามธรรมมีส่วนช่วยในการพัฒนาเทคโนโลยีใหม่
  • ข้อถกเถียงเรื่องผลิตภาพของ Facebook

    • ผลิตภัณฑ์ที่แท้จริงของ Facebook คือแพลตฟอร์มส่งโฆษณา
    • โปรแกรมเมอร์จำนวนมากมีส่วนช่วยปรับปรุงระบบโฆษณา
  • การเปรียบเทียบอดีตกับปัจจุบัน

    • สภาพแวดล้อมการพัฒนาซอฟต์แวร์ในอดีตกับปัจจุบันแตกต่างกันอย่างมาก
    • คอมพิวเตอร์สมัยใหม่มีความแข็งแกร่งกว่ายุคก่อนมาก
    • เมื่อความคาดหวังของผู้ใช้สูงขึ้น ความซับซ้อนของซอฟต์แวร์ก็เพิ่มขึ้นตาม
  • นามธรรมและการสูญเสียความรู้

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

    • ข้อโต้แย้งของ Blow มีส่วนที่สมเหตุสมผลอยู่บ้าง แต่หลายส่วนก็เกินจริงและคลาดเคลื่อน
    • ความซับซ้อนของซอฟต์แวร์และนามธรรมเป็นปัญหาที่แก้ไขได้
    • ปัญหาที่ใหญ่กว่าของโลกดิจิทัลคือความเป็นส่วนตัวและเสรีภาพ

1 ความคิดเห็น

 
GN⁺ 2025-02-10
ความเห็นจาก Hacker News
  • ผมสอนวิชาระบบที่ Montana State และบ่อยครั้งนักศึกษาตอนเริ่มเรียนยังไม่เข้าใจด้วยซ้ำว่าระบบไฟล์คืออะไร

    • แม้ผมจะไม่เห็นด้วยกับความเห็นของ Blow ทั้งหมด แต่ก็คิดว่าเราจำเป็นต้องมีการสอนสไตล์ NAND-to-Tetris สำหรับนักเรียนมัธยมปลายไปจนถึงนักเรียนสายเทคนิค
    • ใช้โมเดลแบบ "โบราณ" อย่าง Little Man Computer และอีมูเลเตอร์ MIPS แบบง่าย ๆ เพื่อช่วยให้นักศึกษาเข้าใจที่มาของเทคโนโลยี
    • เวลาเห็นหนังสือสถาปัตยกรรม 64 บิตสมัยใหม่แล้วอดขำไม่ได้
    • การเชื่อมโยงเทคโนโลยีเข้ากับรากฐานของมันเป็นปัญหาที่ยาก
  • เห็นด้วยกับความเห็นของคุณ ผมดูบรรยายของ Blow แล้วและคิดว่าคำวิจารณ์นั้นสำคัญ

    • ตอนที่ Blow บอกว่า "วาดพิกเซลลงบนหน้าจอไม่ได้" ผมคิดว่าเขาพูดถูก
    • ผมเป็นโปรแกรมเมอร์เกมเอนจินในบริษัทเกมขนาดกลาง และตอนนี้การจ้างคนมาทำงานโค้ดกราฟิกยากขึ้นมาก
    • DX12 ต้องการอะไรจากโปรแกรมเมอร์มากกว่ารุ่นก่อนหน้าอย่าง DX11 และ Microsoft เองก็ยอมรับว่าการเรียน DX12 นั้นยากมากหากไม่มีประสบการณ์กับกราฟิก API มาก่อน
    • API พวกนี้มีไว้สำหรับนักพัฒนาที่ต้องการก้าวข้ามข้อจำกัดของการ์ดจอและทำ optimization ระดับล่าง แต่ตอนนี้มันกลายเป็นมาตรฐานอุตสาหกรรมไปแล้ว ทำให้สอนคนที่ยังไม่มีประสบการณ์ได้ยาก
    • ถ้าไม่มีอะไรเปลี่ยน แหล่งคนที่จ้างได้ก็จะยิ่งหดลงเรื่อย ๆ
  • เวลาเว็บดีเวลอปเปอร์รุ่นเก่าบ่นเรื่อง abstraction เขาหมายถึงพวก React developer

    • เวลา Python developer บ่นเรื่อง abstraction เขาหมายถึงเว็บดีเวลอปเปอร์รุ่นเก่า
    • เวลา C++ application developer บ่นเรื่อง abstraction เขาหมายถึง Python developer
    • เวลา firmware developer บ่นเรื่อง abstraction เขาหมายถึง application developer
    • เวลา electrical engineer บ่นเรื่อง abstraction เขาหมายถึง firmware developer
    • การตั้งเส้นแบ่งของ "abstraction ที่มากเกินไป" จากความรู้ส่วนตัวของแต่ละคน แล้วเรียกทุกอย่างหลังจากนั้นว่า "การทำลายอารยธรรม" เป็นมุมมองที่ค่อนข้างเฉพาะตัว
  • สิ่งอย่าง JavaScript ฝั่งเซิร์ฟเวอร์และ React ทำให้เว็บกลายเป็นความวุ่นวายแบบการพัฒนาซอฟต์แวร์

    • เด็กจำนวนมากไม่รู้ว่า HTML ถูกเรนเดอร์ในเบราว์เซอร์ และคิดว่า React คือสิ่งที่ถูกเรนเดอร์ในเบราว์เซอร์
    • การที่ CEO ของ Vercel คิดว่า React คือ Linux kernel ของการพัฒนานั้นเป็นเรื่องไร้สาระ
  • Blow มักชี้ประเด็นที่ยอดเยี่ยมเกี่ยวกับการพัฒนาได้บ่อยมาก แต่ก็มักพลาดแก่นสำคัญเช่นกัน

    • เขามีผลงานยอดเยี่ยมและมีแนวคิดที่ควรค่าแก่การรับฟัง แต่บางครั้งก็พูดเรื่องเหลวไหล
    • ผมคิดว่าเรื่องอารยธรรมล่มสลายก็เป็นหนึ่งในเรื่องเหลวไหลแบบนั้น และขอบคุณสำหรับคำโต้แย้งที่ OP นำมาให้
    • จะไม่พูดถึง Casey Muratori ละกัน เขาพยายามจะเป็นแบบ Blow แต่แม้แต่ส่วนที่ดีเขาก็ยังทำได้ไม่ถึง
  • สภาพแวดล้อมซอฟต์แวร์สมัยใหม่มีปัญหามากมาย และผมคิดว่า abstraction ที่มากเกินไปเป็นหนึ่งในปัญหา

    • แต่อีกสุดขั้วหนึ่งก็แย่เหมือนกัน และผู้คนมักโรแมนติไซส์อดีตมากเกินไป
    • ไม่ใช่แค่ปัญหาแครชและรีบูตเท่านั้น แม้แต่ระบบที่พยายามรักษาความเข้ากันได้ก็ยังมีปัญหาความไม่สอดคล้อง
    • แม้บนระบบสมัยใหม่ที่เชื่อถือได้น้อยที่สุดอย่าง Windows 11 คอมพิวเตอร์ของผมก็ยังเชื่อถือได้กว่าคอมพิวเตอร์เครื่องไหนก็ตามก่อนปี 2010
    • และยังรันซอฟต์แวร์ที่เขียนสำหรับ Windows 95 ได้ด้วย
  • การทำให้เรียบง่ายไม่ใช่ abstraction เสมอไป และ abstraction ก็ไม่ใช่การทำให้เรียบง่ายเสมอไป

    • การแสวงหาความเรียบง่ายมักเป็นแรงจูงใจให้เกิด abstraction
    • ผมไม่คิดว่า abstraction ฆ่าซอฟต์แวร์หรืออารยธรรม แต่ abstraction ที่ผิดพลาดทำลายความยืดหยุ่นและการเข้าถึง
    • ยกตัวอย่างได้จาก syntactic sugar ในแทบทุกภาษา
    • ปัญหาไม่ใช่ว่าองค์ประกอบบางอย่างทำให้คนพลาดมากขึ้น แต่เป็นการใช้เครื่องมือให้ดีเพื่อแก้ปัญหาที่ซับซ้อนนั้นยาก
  • มี abstraction ที่ผิดพลาดอยู่มาก และเพราะ "ศาสนาแห่งความเร็ว" กับความทะนงตัวในวงการเทคโนโลยี หลายอย่างจึงจบตั้งแต่การลองครั้งแรก

    • พอได้กลายเป็นส่วนหนึ่งของโปรเจกต์ยอดนิยม คนอื่นก็พากันเลียนแบบ
    • ทำแบบนี้ซ้ำไป 10-20 ปี ก็เกิดความยุ่งเหยิงขนาดมหึมา
    • ผมชอบบรรยายของ Jonathan Blow และกลับมาดูปีละครั้ง
    • เขาพูดเรื่องที่ไม่ใช่ข้อถกเถียงนัก แต่ก็รู้ว่านักพัฒนาจำนวนมากไม่ได้พยายามอย่างเต็มที่
  • ผู้เขียนอยู่ในคนรุ่นใหม่ และไม่เข้าใจสิ่งที่ Blow พูด

    • ถ้าคุณบอกว่า Figma กำลังทำลายโลกของการออกแบบ นักออกแบบรุ่นใหม่จะคิดว่าทุกอย่างก็ดีอยู่แล้ว
    • เพราะพวกเขาไม่ได้เติบโตมาในสภาพแวดล้อมนั้น จึงมีโอกาสน้อยกว่าจะได้เรียนรู้สิ่งที่เทียบเท่ากับวัฒนธรรมและประสบการณ์นั้น
  • ผมไม่เห็นด้วยกับคำกล่าวที่ว่า "ถ้าลืมของระดับล่าง อารยธรรมจะพัง"

    • การใช้ระบบระดับล่างเพื่อจำลองกระบวนการระดับสูงมีความซับซ้อนมากเกินไป
    • ความซับซ้อนคือปัญหา และเราควรลดความซับซ้อนให้เหลือน้อยที่สุด พร้อมหลีกเลี่ยงความซับซ้อนที่เกิดขึ้นโดยไม่จำเป็น