6 คะแนน โดย GN⁺ 2023-08-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นบทความอธิบายเชิงเทคนิคว่าคอมพิวเตอร์รันโปรแกรมตั้งแต่ต้นจนจบอย่างไร โดยมุ่งช่วยให้เข้าใจว่าคอมพิวเตอร์ทำงานอย่างไรตั้งแต่การเริ่มต้นระบบไปจนถึงการรันโปรแกรม
  • เริ่มต้นจากคำถามว่าในตอนที่รันโปรแกรมจริง ๆ แล้วเกิดอะไรขึ้น โปรแกรมถูกรันโดยตรงบน CPU หรือไม่, syscalls คืออะไรและทำงานอย่างไร, และหลายโปรแกรมรันพร้อมกันได้อย่างไร
  • เบื้องหลังของบทความนี้คือความตระหนักว่าหากไม่ได้เรียนมหาวิทยาลัย แหล่งข้อมูลด้านระบบที่ครอบคลุมมีไม่มากนัก จึงต้องไล่อ่านหลายแหล่งที่คุณภาพต่างกันและบางครั้งก็ขัดแย้งกัน
  • จากการค้นคว้าหลายสัปดาห์และโน้ตยาวเกือบ 40 หน้า ผู้เขียนตั้งใจรวบรวมสิ่งที่ได้เรียนรู้ให้เป็นบทความชิ้นเดียวที่แน่นและอ่านเข้าใจง่าย
  • สำหรับผู้อ่านที่อยากอ่านแบบรวดเร็วหรือรู้สึกว่ารู้อยู่แล้ว มีลิงก์ Chapter 3: How to Run a Program แยกไว้ให้

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

 
GN⁺ 2023-08-10
ความคิดเห็นจาก Hacker News
  • สวัสดีค่ะ! ฉันชื่อ Lexi เป็นคนเขียนบทความ/มินิบุ๊กนี้เอง
    มีคำถามคลาสสิกว่า “เกิดอะไรขึ้นเมื่อเปิดเว็บไซต์?” แต่ฉันสงสัยมาตลอดว่า “เกิดอะไรขึ้นเมื่อรันโปรแกรม?” ราว 3 เดือนก่อน ฉันรู้สึกหงุดหงิดมากที่ตัวเองตอบคำถามนั้นไม่ได้ เลยตัดสินใจศึกษาเอง
    สิ่งที่ฉันรู้เกี่ยวกับการเขียนโปรแกรมทั้งหมดเรียนรู้ด้วยตัวเอง ก็เลยคิดว่าเรื่องนี้น่าจะง่ายเหมือนกัน แต่ไม่ใช่เลย แหล่งข้อมูลออนไลน์เกี่ยวกับวิธีการทำงานของระบบปฏิบัติการและ CPU ส่วนใหญ่แย่มาก และตัวข้อมูลเองก็มีน้อยมากด้วย ระหว่างศึกษา ฉันจึงคิดว่าควรทำแหล่งข้อมูลดี ๆ ขึ้นมาเอง พอจัดระเบียบสิ่งที่เรียนรู้ไปเรื่อย ๆ ก็กลายเป็น Google Doc ยาว 60 หน้า และฉันก็เริ่มเขียนจากตรงนั้น
    แต่พอเขียนไปก็พบว่าส่วนใหญ่ของเอกสารขนาดมหึมานั้นผิด เลยต้องค้นคว้าเพิ่มเติม แก้ซ้ำไปซ้ำมา คุณภาพของข้อมูลบนอินเทอร์เน็ตก็ยังแย่อยู่ ฉันจึงต้องทำให้บทความดีขึ้นอีก จำเป็นต้องมีภาพประกอบและไดอะแกรมด้วย แต่ฉันวาดรูปไม่เป็น เลยเปิด Figma มาลองผิดลองถูก และวาดบางส่วนด้วยแท็บเล็ต Wacom ที่ได้มาจากแฮกกาธอน
    ผ่านมาราว 3 เดือน ตอนนี้ฉันได้ผลงานที่ภูมิใจมากจริง ๆ ฉันดีใจที่ได้แชร์ฉบับสมบูรณ์ของ Putting the "You" in CPU รวมถึงภาพประกอบเก้ ๆ กัง ๆ ด้วย งานนี้ทำขึ้นเป็นส่วนหนึ่งของ Hack Club(https://hackclub.com) ซึ่งเป็นชุมชนของนักเรียนมัธยมที่ชอบคอมพิวเตอร์
    เมื่อไม่กี่สัปดาห์ก่อน เวอร์ชันที่ยังทำไม่เสร็จบังเอิญได้รับความสนใจบน HN และฉันรู้สึกขอบคุณมากสำหรับฟีดแบ็กที่ได้รับ หลังจากนั้นฉันจัดระเบียบและปรับแก้อีกค่อนข้างมาก และตอนนี้ก็พอใจกับมันมากพอที่จะนำมาแชร์ต่อโลกด้วยตัวเองแล้ว
    เว็บไซต์เป็นโปรเจกต์ HTML/CSS แบบ static และฉันเขียนเองทั้งหมดตั้งแต่ต้น โดยเฉพาะคอมโพเนนต์นำทางที่ฉันชอบมาก หวังว่าจะอ่านกันอย่างสนุก และหวังว่าจะเป็นแหล่งข้อมูลที่ทุกคนใช้เรียนรู้ได้

    • แค่กวาดตาดูคร่าว ๆ แต่ดูเหมือนเป็น คู่มือเริ่มต้น ที่ค่อนข้างดี และผมก็ชอบสไตล์ด้วย
      การเขียนแหล่งข้อมูลแบบนี้ตอนเรียนรู้เรื่องใหม่ด้วยตัวเองเป็นวิธีที่ดีมาก มันช่วยทำให้กระบวนการคิดชัดเจนขึ้น และช่วยให้เจอส่วนที่ตอนแรกคิดว่าเข้าใจแล้ว แต่จริง ๆ ยังคลุมเครืออยู่
      ผมชอบประโยคท้าย ๆ นี้ด้วย: “ระหว่างเขียนบทความนี้ ฉันคุยกับ GPT-3.5 และ GPT-4 ค่อนข้างเยอะ มันโกหกเยอะมากและข้อมูลส่วนใหญ่ก็ใช้ไม่ได้ แต่บางครั้งก็ช่วยได้มากในการแก้ปัญหา ถ้ารู้ข้อจำกัดของ LLM และสงสัยทุกอย่างที่มันพูดอย่างสุด ๆ ผลรวมของความช่วยเหลืออาจเป็นบวกได้ แต่การเขียนของมันแย่มาก อย่าให้มันเขียนแทน” เป็นโปรเจกต์ที่ยอดเยี่ยม
    • หลังจากอ่านหน้าแรก ๆ ไปไม่กี่หน้า ฟีดแบ็กเดียวของผมคือควรลด สำนวนแบบน่ารัก ๆ ลงหน่อย
      เช่น ในบริบทอย่าง “CPU รับผิดชอบการคำนวณทั้งหมด เป็นพี่ใหญ่ เป็นชาซาม อะลาคาบแลม…” ถ้าตัดประโยคเล่น ๆ ออก แล้วเขียนว่า “CPU รับผิดชอบการคำนวณทั้งหมด ตั้งแต่วินาทีที่คุณเปิดคอมพิวเตอร์ มันจะเริ่มทำคำสั่งทีละคำสั่ง” จะอ่านได้ลื่นกว่ามาก
      ผมไม่ใช่คนที่ลึกทางเทคนิคมากนัก แต่ในฐานะคนที่ได้ค่าจ้างจากการเขียน ผมมองแบบนั้น ตัวงานเองยอดเยี่ยมมาก ทำต่อไปนะ
    • ผมไม่ได้ลองค้นคว้าด้วยตัวเอง แต่ถ้ารู้ว่าควรไปดูที่ไหน อย่างน้อยผมก็เชื่อได้ยากว่าข้อมูลส่วนใหญ่จะหายากหรือผิดขนาดนั้น
      หัวข้อแบบนี้มักถูกครอบคลุมอย่างดีในวิชา สถาปัตยกรรมคอมพิวเตอร์ และระบบปฏิบัติการระดับปริญญาตรี ทุกวันนี้มันไม่ค่อยเป็นกระแสแล้ว เลยกลายเป็นวิชาเลือกเป็นส่วนใหญ่ก็จริง
      มหาวิทยาลัยหลายแห่งเปิดคอร์สฟรี และก็มีหนังสือที่อาจารย์ในสาขานี้เขียนไว้ด้วย ถ้าอยากตามให้ใกล้กับแนวโน้มล่าสุดมากขึ้น งานบรรยายในคอนเฟอเรนซ์สายเทคนิคที่เกี่ยวข้องก็มีประโยชน์ไม่น้อย
      ถึงอย่างนั้น การสอนก็เป็นศิลปะที่ถูกประเมินค่าต่ำไป และการทำให้ข้อมูลเข้าถึงได้ง่ายขึ้น หรือทำให้น่าสนุกและโต้ตอบได้มากขึ้น ก็มีคุณค่าอย่างชัดเจน
    • ผมอยากชี้ให้เห็นว่า LWN(https://lwn.net/) ทุ่มเทมาเป็นเวลานานในการทำ ข้อมูลเกี่ยวกับระบบปฏิบัติการ ที่ไม่แย่ ลองเข้าไปดู และถ้าเป็นไปได้ก็เข้าร่วมด้วยนะ :)
    • ตอนนี้ผมแค่ไล่อ่านแบบคร่าว ๆ แต่ดูยอดเยี่ยมมาก ยินดีด้วย และขอให้ทำงานแบบนี้ต่อไป
      ผมเคยทำงานเป็นวิศวกรวิจัย ในกรณีของผมคือเป็นวิศวกรซอฟต์แวร์ที่ทำวิจัยด้านความปลอดภัยคอมพิวเตอร์ในแล็บมหาวิทยาลัย อย่างที่อีกคอมเมนต์บอกว่าวิชาระบบปฏิบัติการเป็นวิชาเลือก แม้แต่นักศึกษาบัณฑิตศึกษาบางคนก็ยังไม่มีความเข้าใจระบบปฏิบัติการในระดับนี้
      ข้อมูลดี ๆ หาได้ยากก็จริง แต่มีอยู่แน่นอน การที่คุณรวบรวมข้อมูลที่หายากให้กลายเป็นรูปแบบที่ดีกว่าได้ก็คือหลักฐานของเรื่องนั้น ปริญญาของผมเป็นคณิตศาสตร์ แต่ความรู้ด้านคอมพิวติ้งผมเรียนเอง ความสามารถในการเรียนรู้แบบนี้และการถ่ายทอดข้อมูลเชิงเทคนิคขั้นสูงให้เข้าถึงได้ง่ายนั้นสำคัญจริง ๆ และไม่ควรถูกประเมินค่าต่ำ
      ขอแชร์ลิงก์แค่สองลิงก์ ไม่อย่างนั้นคงยาวไม่รู้จบ ลิงก์แรกคือ https://git.lain.faith/sys64738/airs-notes.git และสารบัญส่วน linker https://lwn.net/Articles/276782/ ถ้าแค่แตะผิวของ ELF และการลิงก์ ซีรีส์บล็อก 20 ตอนของ Ian Lance Taylor พร้อมหัวข้อเพิ่มเติมก็ครอบคลุมแทบทุกอย่างที่คุณอยากรู้เกี่ยวกับ ELF รวมถึงเนื้อหาที่ทำให้คุณเริ่มสงสัยว่าคำสั่งต่าง ๆ มันทำงานได้อย่างไรกันแน่ นอกจากนี้ยังกล่าวถึง DWARF คู่หูของ ELF แบบสั้น ๆ ซึ่งเป็น virtual machine ที่ถูกใช้ทุกครั้งที่เกิด exception ใน C++ ด้วย
      ลิงก์ที่สอง https://0xax.gitbooks.io/linux-insides/content/ ก็เป็นโปรเจกต์ที่ยอดเยี่ยมเช่นกัน มันไล่ตามอย่างอ่านเข้าใจง่ายว่า Linux kernel ทำสิ่งต่าง ๆ อย่างไร เกือบจะแน่นอนว่าเคยถูกแชร์บน HN แล้ว
  • เขียนได้ดีมาก และขอชื่นชมที่ ขุดลึก ในหัวข้อนี้
    เด็กอายุ 17 สมัยนี้อาจ “เขียนโปรแกรม” ด้วยการเอาสิ่งที่ตัวเองยังไม่เข้าใจมาประกอบกันแล้วก็ยังพอผ่านไปได้ระดับหนึ่ง แต่สุดท้ายผมคิดว่ามันจะไปชนเพดานอยู่ดี ดังนั้นสิ่งที่คุณกำลังทำอยู่ตอนนี้จึงมีคุณค่ามากจริง ๆ ทั้งต่อตัวคุณเองและต่อทุกคนที่จะได้เรียนรู้จากเนื้อหานี้
    ทำได้ดีมาก :) ถ้ายังไม่เคยลอง ตอนนี้ลองใช้ อีมูเลเตอร์ ดูครับ สนุกสุด ๆ

    • คำพูดที่ว่า “เด็กอายุ 17 สมัยนี้เขียนโปรแกรมด้วยการเอาสิ่งที่ไม่เข้าใจมาประกอบกันก็ได้” ก็หมายถึงผมด้วยเหมือนกัน ผมทำแบบนั้นมา 26 ปีแล้ว
      ถ้า “สักวันจะไปชนเพดาน” จริง ๆ ก็อยากรู้เหมือนกันว่าจะเกิดขึ้นเร็ว ๆ นี้ไหม
    • ช่วงอายุราว 17 ถึง 21 กลับเป็นช่วงที่ผมเขียนโปรแกรมแบบเอาของมาประกอบกันน้อยที่สุดในชีวิตการเขียนโปรแกรมของผม
      ผมสร้างเฟรมเวิร์ก MVC ตั้งแต่ศูนย์ สร้างทั้งอินเทอร์พรีเตอร์และคอมไพเลอร์ และยังเคยพยายามคิดค้นแมชชีนเลิร์นนิงกับการประมวลผลภาษาธรรมชาติขึ้นมาใหม่เองตั้งแต่ศูนย์โดยไม่ตั้งใจด้วย ทำอะไรเจ๋ง ๆ และสนุก ๆ สารพัด
      แล้วผมก็ได้ค้นพบเรื่องเงินและเทคโนโลยีที่มีมาก่อนแล้ว การยอมรับสิ่งที่คนอื่นบอกว่า “ก็แค่ใช้อันนี้ก็พอ” ทำให้สร้างอะไรได้เร็วขึ้นมาก เฟรมเวิร์กก็เช่นกัน น่าทึ่งมากที่ jQuery ทำให้ชีวิตง่ายขึ้นได้ขนาดนี้
      หลายปีผ่านไป ตอนนี้สิ่งที่เมื่อก่อนดูเหมือน “แค่เอามาต่อ ๆ กัน” กลับถูกมองว่าเป็น “งานขั้นสูงในระดับต่ำมาก” เพราะเราได้สร้าง abstraction ใหม่ ๆ ซ้อนขึ้นไปบน abstraction เหล่านั้นอีกที
      สิ่งที่มือใหม่ในตอนนี้ “พอทำให้สำเร็จได้” จะกลายเป็นเขตอันตรายระดับต่ำสำหรับคนรุ่นต่อไป การเขียนโปรแกรมยอดเยี่ยมก็ตรงนี้แหละ
    • ผมไม่เห็นด้วยอย่างยิ่ง ถ้าคุณไม่ได้เล็งตำแหน่งที่ทำงานเทคนิคเฉพาะทางในขอบเขตแคบมาก ๆ สุดท้ายแล้วความสามารถในการอ่านเอกสารและเชื่อม บริการคลาวด์ กับไลบรารี JavaScript เข้าด้วยกันจะสำคัญมากจริง ๆ
      ตรงกันข้าม คนที่เข้าหาการเขียนโปรแกรมในเชิงวิชาการอาจมีแนวโน้มจะถูกงานที่ต้องเข้าใจเทคโนโลยีหลายอย่างในระดับพื้นฐานแล้วเดินหน้าต่อกดทับจนทำอะไรไม่ถูกมากกว่า
      ถ้าอยู่ในบริษัทยักษ์ใหญ่ที่มีผู้จัดการโปรเจกต์กับดีไซเนอร์ช่วยตีกรอบสเปกให้แคบลงจนคุณโฟกัสแค่การลงมือทำได้ก็คงอีกเรื่อง แต่สำหรับคนส่วนใหญ่ นั่นเป็นสถานการณ์ที่พบได้ยาก
    • ผมตอนเพิ่งเข้าวงการเมื่อ 10 ปีก่อนในฐานะนักพัฒนาอายุ 30 ก็เป็นแบบนั้นเป๊ะเลย บางอย่างก็ไม่เปลี่ยนจริง ๆ
    • หรือจะลองใช้ ระบบปฏิบัติการ ก็เป็นตัวเลือกที่ดีครับ ผมจำได้ว่าเมื่อนานมาแล้วเคยตามอ่านหนังสือ Operating System Concepts และได้แตะหัวข้อคล้าย ๆ กันเยอะมาก
      จำได้แต่ไดโนเสาร์บนปก เลยต้องกลับไปค้นชื่อหนังสือใหม่
  • ขอแสดงความยินดีที่ทำคู่มือนี้สำเร็จ
    ถ้าไม่ได้เข้ามหาวิทยาลัย จะเห็นได้ว่าต้องไปคุ้ยหาเอกสารด้านระบบแบบครอบคลุมจำนวนมาก ซึ่งคุณภาพก็ไม่สม่ำเสมอและบางครั้งก็ขัดแย้งกันเอง
    แหล่งข้อมูลที่ดีที่สุดเท่าที่หาได้คือ Code: The Hidden Language of Computer Hardware and Software ของ Charles Petzold ครับ ฉบับพิมพ์ครั้งที่ 2 เพิ่งออกมา
    https://codehiddenlanguage.com/

    • ผมว่า The Elements of Computing Systems ของ Noam Nisan และ Shimon Schocken รวมถึงโปรเจกต์ nand2tetris ที่เกี่ยวข้องก็ดีพอ ๆ กันหรือดีกว่าด้วยซ้ำ เป็นแนวลงมือสร้างเองมากกว่ามาก
      https://mitpress.mit.edu/9780262539807/the-elements-of-compu...
      https://www.nand2tetris.org/
    • ผมอ่านหนังสือเล่มนั้นแล้วชอบมากจริง ๆ แต่สมัยนี้ผมขอแนะนำเกมชื่อ Turing Complete แทนอย่างหนักแน่น
      มันพาคุณจาก NAND gate ไปจนถึง function call ได้อย่างยอดเยี่ยม และดำเนินไปในรูปแบบโต้ตอบที่สนุกมาก แทนที่จะอ่านแล้วจินตนาการในหัวว่ามันทำงานอย่างไร คุณจะได้สร้างมันเอง
      ผมถึงกับสร้าง SIMD/GPU ขนาดเล็กที่ขับ LED matrix ด้วย assembly ของ CPU ที่ผมออกแบบเองและภาษา programmable shader ของผมเอง
    • ขอบคุณครับ! ดูมีกลิ่นอายฝั่งฮาร์ดแวร์และน่าสนใจมาก สักวันผมน่าจะได้อ่าน
    • พอดูเว็บไซต์แล้วผมนึกถึงหนังสือเล่มนี้ขึ้นมา
      ตอนซื้อเมื่อ 15 ปีก่อน พอถึงส่วนสถาปัตยกรรม CPU ผมอ่านแล้วตาลายไปหมด แต่ตอนนี้อาจพร้อมแล้วก็ได้ ผมเพิ่งซื้อฉบับพิมพ์ครั้งที่ 2 มาด้วย
  • เป็นบทความที่ผมเก็บไว้ในรายการอ่านครับ ก่อนหน้านี้รายละเอียดเล็ก ๆ อย่างหนึ่งทำให้ผมประทับใจ
    “เราใส่พื้นที่ว่างไว้ด้านล่างของทุกหน้า เพื่อให้ผู้อ่านรักษา ระดับสายตาที่สม่ำเสมอ ได้”
    เป็นรายละเอียดที่เล็กมาก และเมื่อมองย้อนกลับไปก็ดูชัดเจนว่าควรเป็นแบบนั้น แต่กลับทำให้อ่านสบายอย่างคาดไม่ถึง ตอนที่สังเกตเห็นจุดนั้น ผมรู้เลยว่านี่เป็นโปรเจกต์ที่ทำด้วยแพสชัน

    • มี รายละเอียด UI ที่ดีมากอยู่หลายจุดทีเดียว การที่ผู้เขียนอายุ 17 ก็น่าจะเกี่ยวข้องด้วย
      ดูเหมือนเขาคิดเยอะมากว่าจะนำเสนอหนังสือบนเว็บอย่างไร และสร้างธรรมเนียมใหม่ ๆ แบบที่คาดหวังได้จากคนรุ่นใหม่ขึ้นมา เช่น วิธีที่บทก่อนหน้า/บทถัดไปแสดงแบบโปร่งแสงเล็กน้อยในวิดเจ็ตนำทางบทด้านบน ผมไม่เคยเห็นมาก่อนเลย
  • ผมเกือบ 40 แล้ว แต่ไม่เคยทำอะไรแบบนี้สำเร็จเลย กำลังจะปลอบ ภาวะแอบอ้าง ของตัวเองอยู่พอดี คงต้องปลอบเพิ่มอีกหน่อย
    ทำได้ดีมากจริง ๆ :p

    • ไม่มีคำว่าสายเกินไปที่จะเริ่มทำสิ่งที่น่าจะให้ความรู้สึกสำเร็จ ไม่ว่าจะอายุ 17, 40 หรือ 80
      คุณยังมีเวลาเหลืออีกมาก และก็แทบไม่มีเหตุผลต้องรีบร้อน เลือกไอเดียสักอย่างที่จุดประกายให้คุณ แล้วค่อย ๆ ทำไปในเวลาว่างเล็ก ๆ น้อย ๆ เท่าที่มี
      หัวใจสำคัญน่าจะอยู่ที่การรู้สึกภูมิใจในตัวเองที่ได้ทำสิ่งนั้น ส่วนผลงานสุดท้ายก็จะตามมาเอง
  • OP อย่าเอาอายุมาเป็นข้อแก้ตัวให้งานของคุณเลย บทความนี้ดีกว่าสิ่งที่คนส่วนใหญ่จะทำได้ตลอดชีวิตเสียอีก งานยอดเยี่ยมมาก

    • ถ้าไม่ได้พูดถึงอายุ ก็คงไม่ได้รับความสนใจที่นี่เลย เอกสารดี ๆ ที่ตายอยู่ใน new มีเต็มไปหมด เขาเลือกใช้อายุเป็นองค์ประกอบทางการตลาด และมันก็ได้ผลชัดเจน
    • การเอาอายุไปวางไว้หน้าสื่อโปรโมตตัวเอง ไม่ว่าจะอายุน้อยหรือมาก เป็น มุมทางการตลาด ที่ใช้ได้ผลมาตั้งนานแล้ว ผมไม่อยากตำหนิที่เขาใช้มัน
    • ถ้าผู้เขียนไม่ได้บอกว่าอายุ 17 โอกาสที่ใครจะสนใจ สรุป CPU ระดับ ChatGPT นี้ก็น่าจะต่ำมาก
  • ถ้าสร้างคอนเทนต์แบบนี้ได้ตอนอายุ 17 ก็จินตนาการไม่ออกเลยว่าเขาจะทำเรื่องน่าทึ่งอะไรได้อีกเมื่อเลือกสายนี้เป็นอาชีพ สุดยอดจริง ๆ

    • หลังจากอ่านบทความนี้และไล่ดูรีโพซิทอรีต่าง ๆ แล้ว ผมกลับคิดตรงกันข้ามเลยครับ ผมหวังว่าเขาจะหาวิธีทำสิ่งที่ทำอยู่ตอนนี้ต่อไปได้ โดยไม่ต้องเข้าสู่วงการเทคโนโลยีในฐานะอาชีพ
      ผมไม่อยากให้จิตวิญญาณของเขาถูกบดขยี้ด้วยงานบริหารจุกจิก เป้าหมายองค์กรที่ยิ่งจุกจิกกว่าเดิม และการเติบโตในอาชีพที่ไร้ความหมาย เขากำลังทำสิ่งที่ยอดเยี่ยมอยู่แล้วตอนนี้ เลยอยากให้มีอะไรอย่าง fellowship ที่ช่วยให้เขาทำต่อไปได้โดยไม่ต้องเอาจิตวิญญาณไปปั่นอยู่ในวงล้อหนูแฮมสเตอร์ของวงการเทคโนโลยี
  • OP น่าจะลองดูคอร์สของ Casey Muratori ที่ computerenhance.com
    แบบฝึกหัดช่วงแรกของคอร์สคือการสร้างซิมูเลเตอร์ Intel 8086 ปี 1978 และ x86_64 assembly ยุคใหม่ก็ยังค่อนข้างคล้ายกับมันอยู่ คุณจะได้เรียนรู้ความรู้ด้านคอมพิวเตอร์มากมายที่หาได้ยากจริง ๆ จากที่อื่น

  • ในฐานะคนที่ก็เกือบอายุ 17 เหมือนกัน ทำได้ดีมากครับ! :^)
    แค่ 20 นาทีก่อน ผมยังเพิ่งรู้จัก endianness ตอนกำลังหาวิธีดึงไบต์แรกของจำนวนเต็ม 16 บิตอยู่เลย แต่คุณกำลังเขียนหนังสือทั้งเล่มเกี่ยวกับ CPU แล้ว
    พออ่าน Crafting Interpreters จบแล้ว ผมจะอ่านแน่นอนครับ แต่อาจต้องใช้เวลาหน่อย เพราะเหมือนโปรเจกต์อื่น ๆ อีกมากมาย ความคืบหน้ามันช้าลงอย่างเห็นได้ชัด lol

  • เป็นบทความที่ดีมาก และผมก็ชอบสไตล์ด้วย การผสมผสานระหว่างบทความกับภาพประกอบ/มีมนั้นสนุกจริง ๆ
    ส่วนเรื่อง คำศัพท์ RISC/CISC ผมขอสงวนท่าทีไว้นิดหน่อย แต่นั่นอาจเป็นเรื่องรสนิยมของแต่ละคนก็ได้ >.>
    ในฐานะคนที่เคยใช้เวลาไปกับการหาว่าส่วนต่าง ๆ ของเคอร์เนลทำงานอย่างไร ผมเข้าใจเลยว่ากระบวนการทำบทความนี้คงเจ็บปวดแค่ไหน แต่ดูจากบทความแล้วก็คุ้มค่าอย่างยิ่ง
    ฝั่ง NT นั้น Windows Internals ครอบคลุมเรื่องที่อยากรู้ไว้มาก และเอกสารของ Microsoft ก็ไม่แย่เลย สำหรับผมถือว่าดีกว่าเอกสารเคอร์เนล Linux อย่างชัดเจน และเป็นจุดเริ่มต้นที่ดีมาก
    ถ้าอยากรู้เกี่ยวกับ Windows มากขึ้น ผมแนะนำฟอรัม/แหล่งข้อมูลสายเกมแฮ็กกิงด้วย มีหลายอย่างที่ต้องคัดกรองออก แต่ในหัวข้อเฉพาะทางบางอย่าง ก็เป็นแหล่งข้อมูลที่ดีทีเดียว
    สุดท้าย ตอนดูบนสมาร์ตโฟน ฟอนต์ของโค้ดบล็อกบางส่วนค่อนข้างใหญ่จนอ่านยาก เช่น บทที่ 6 main.c
    อีกอย่าง ประโยคที่ว่า “ถ้าคุณเป็นวัยรุ่นที่ชอบคอมพิวเตอร์และยังไม่ได้อยู่ใน Hack Club Slack ให้เข้าร่วมตอนนี้เลย” ทำให้ผมนึกขึ้นมาได้ชัดเจนเกินไปว่าตัวเองกำลังแก่ลง lol