3 คะแนน โดย GN⁺ 2025-05-27 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Hacker News เดิมทีถูกพัฒนาด้วย Arc ซึ่งเป็น ภาษาในตระกูล Lisp แต่ในช่วงไม่กี่เดือนที่ผ่านมาได้ย้ายไปใช้ SBCL(Steel Bank Common Lisp)
  • เป้าหมายหลักของการย้ายครั้งนี้คือ เพิ่มประสิทธิภาพ และเตรียมความพร้อมสำหรับการรองรับมัลติคอร์
  • โครงสร้างมีความเป็นระบบมากขึ้นจากการพัฒนา Lilt ตัวแปลง Arc-to-JS และ Clarc ตัวแปลง Arc-to-Common Lisp
  • การเปิดเผยซอร์สโค้ดของ Clarc ทำได้ค่อนข้างง่าย แต่โค้ดเบสทั้งหมดของ HN นั้นเปิดเผยได้ยากด้วย เหตุผลด้านความปลอดภัย
  • ด้วยสถาปัตยกรรมใหม่ HN จึง เปลี่ยนผ่านได้อย่างราบรื่น และประสบการณ์ใช้งานของผู้ใช้ก็ดีขึ้น

ภาพรวม

  • เดิมที Hacker News ถูกพัฒนาโดย Paul Graham ด้วย Arc ซึ่งเป็นภาษาในตระกูล Lisp
  • Arc ถูกสร้างขึ้นบน Racket แต่ในช่วงไม่กี่เดือนที่ผ่านมาได้ย้ายไปใช้ SBCL(Steel Bank Common Lisp)
  • เหตุผลก็คือเพื่อ ปรับปรุงประสิทธิภาพ

การเปลี่ยนแปลงด้านประสิทธิภาพและความสามารถ

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

วิธีการพัฒนาและโครงสร้าง

  • มีทั้ง Lilt ที่แปลง Arc เป็น JS และ Clarc ที่แปลง Arc เป็น Common Lisp
  • มีการออกแบบโครงสร้างชั้นล่างของ Arc เดิมใหม่ โดยแบ่ง Arc ออกเป็นหลายชั้นเพื่อพัฒนา
    • arc0 เขียนด้วยภาษาระบบ (Racket, JS, CL)
    • arc1 เขียนอยู่บน arc0 และ arc2 เขียนอยู่บน arc1
    • ฟังก์ชันทั้งหมดถูกพัฒนาในชั้นบน (arc2) ส่วนชั้นล่างถูกทำให้เหลือน้อยที่สุด
  • ด้วยโครงสร้างนี้ การ นำ Arc ไปสร้างใหม่ บนรันไทม์ที่หลากหลายจึงทำได้ง่ายขึ้น

ประเด็นเกี่ยวกับการเปิดเผยซอร์สโค้ด

  • การ เปิดซอร์ส ของ Clarc (อิมพลีเมนเทชัน Common Lisp ของ Arc) ทำได้ค่อนข้างง่าย
    • สามารถทำได้โดยพอร์ต Arc รุ่นเดิมมาบน Clarc
    • มีแอปตัวอย่าง HN เวอร์ชันแรก ๆ รวมอยู่แล้ว และไม่มีส่วนที่เป็น HN หรือ YC-specific
  • แต่ โค้ดเบสทั้งหมดของ HN มี กลไกด้านความปลอดภัย หลายอย่างฝังอยู่เพื่อป้องกันการนำไปใช้ในทางที่ผิด
    • หากโค้ดถูกเปิดเผย ก็มีความเสี่ยงที่ส่วนนี้จะถูกทำให้ไร้ประสิทธิภาพ
    • งานแยกส่วนที่เกี่ยวกับความปลอดภัยออกมาถือเป็นภาระที่มาก

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

 
ilotoki0804 2025-05-30

ชักสงสัยเหมือนกันว่า GeekNews ทำงานอยู่บนเทคโนโลยีอะไร 555

 
GN⁺ 2025-05-27
ความเห็นบน Hacker News
  • มีความเห็นว่า Hacker News เป็นตัวอย่างที่สมบูรณ์แบบของการนำปรัชญา "Worse is better" มาใช้กับ social engineering โดยช่วงปลายยุค 90 Slashdot มีฟีเจอร์ที่หลากหลายและครบครันกว่ามาก แต่ปัจจัยความสำเร็จของ HN คือการโฟกัสอย่างสุดขั้วและระบบกลั่นกรองที่แข็งแกร่ง

    • มีการอุทานเชิงขำ ๆ ว่าในที่สุดระบบ Lisp ก็กลายมาเป็นตัวแทนของแนวคิด "Worse is better"
    • ชี้ให้เห็นถึงความย้อนแย้งที่แพลตฟอร์มนี้ทำงานอยู่บนเทคโนโลยีให้น้อยที่สุดเท่าที่จะเป็นไปได้ และการดูแล HN ก็พึ่งพาการแทรกแซงของมนุษย์ โดยมีการรับรู้ตามสัญชาตญาณว่า 'เทคโนโลยีเยอะขึ้นไม่ได้ช่วยทุกคนเสมอไป'
    • HN มีฟีเจอร์น้อย แต่ก็ทำให้ตั้งคำถามว่าเราจำเป็นต้องมีฟีเจอร์มากกว่านี้จริงหรือไม่ และกลับได้รับคำชมในทางบวกว่าเป็นความมินิมอลเพราะมีฟีเจอร์น้อย จนนึกถึงคำว่า 'less is more'
    • มีความเห็นว่าการที่ HN ไม่จำเป็นต้องทำกำไรนั้นช่วยได้มาก
    • มีการอ้างถึงคำคมของ Antoine de Saint-Exupéry ว่าความสมบูรณ์แบบไม่ได้เกิดขึ้นเมื่อไม่มีอะไรให้เพิ่มอีก แต่เกิดขึ้นเมื่อไม่มีอะไรให้ตัดออกอีกแล้ว
  • มีการชี้แจงว่า Hacker News ไม่ได้ถูกเขียนใหม่ทั้งหมดด้วย Common Lisp แต่เป็น Arc Runtime ที่ถูกนำมาเขียนใหม่บน Common Lisp

    • และมีเสียงชื่นชมว่านี่แหละคือสิ่งที่ Lisp ทำได้ดีที่สุด
  • มีการแชร์ข้อมูลพื้นหลังว่า Arc ถูกสร้างบน Racket และเดิมเริ่มต้นบน MzScheme (ตอนแรกเป็นแกนหลักของ PLT Scheme ก่อนจะเปลี่ยนชื่อเป็น Racket ในภายหลัง) แล้วจึงย้ายไปยัง Racket จากผลงานของนักพัฒนาชื่อ kogir

    • มีความเห็นว่าน่าสงสัยมาโดยตลอดว่า MzScheme เป็นส่วนแกนหลักแบบ non-GUI ของ PLT Scheme (ปัจจุบันคือ Racket) และจากประวัติการเขียนในเมลลิงลิสต์เก่า ๆ ของ pg ดูเหมือนว่าเขาเริ่มพัฒนา Arc บน Scheme48 ก่อนจะย้ายไป PLT
    • มีการตั้งคำถามอย่างขำ ๆ ว่าพวกเรากำลังวนครบทุก Lisp implementation กันอยู่หรือเปล่า พร้อมเปรียบเทียบว่าเป็นเวอร์ชันประหลาดของเรือ Theseus
    • มีคนสงสัยว่า MzScheme, PLT Scheme และ Racket แทบจะเป็นสิ่งเดียวกันไม่ใช่หรือ
  • มีความเห็นว่าเหมือนได้ยินว่า Dang ก็มีส่วนร่วมกับ codebase ด้วย และน่าจะมีคนอื่น ๆ อีกที่ทุ่มเทให้ HN มาอย่างยาวนาน ประกอบกับประสบการณ์ส่วนตัวที่มองว่า HN เป็นชุมชนอินเทอร์เน็ตที่อยู่กับตัวเองมานานที่สุดและยังสนุกที่สุด ทำให้ถึงจะเป็นแค่ผู้ร่วมใช้งานธรรมดาก็อยากช่วยเหลือ Dang หรืออย่างน้อยก็เลี้ยงกาแฟสักแก้ว

    • แต่ก็มีการเตือนว่า Hacker News (เดิมชื่อ Startup News) ทำหน้าที่เสมือนฝ่ายการตลาดของ Y Combinator ซึ่งเป็นบริษัทลงทุนที่ประสบความสำเร็จมากที่สุดแห่งหนึ่งของโลก และ Paul Graham ผู้ก่อตั้ง HN กับผู้เขียนต้นฉบับก็น่าจะเป็นมหาเศรษฐีระดับอย่างน้อยร้อยล้านแล้ว ถึงอย่างนั้น HN ก็ยังคงพยายามพึ่งพาตนเองทางการเงินต่อไปและรับเงินบริจาคด้วย
  • หลังจากเห็นคำอธิบายว่า Clarc เร็วกว่ามากและรองรับ multicore ได้ดีกว่า ก็มีคนแสดงความตกใจที่ HN ก่อนหน้านี้รันอยู่บน single core มาตลอด

    • มีการอธิบายว่า CPU สมัยใหม่เร็วมาก ถึงขั้น 4chan ก็เคยรองรับผู้ใช้ 4 ล้านคนด้วย PHP spaghetti code อายุ 10 ปีจำนวน 10,000 บรรทัดบนเซิร์ฟเวอร์เครื่องเดียว หากมีอย่างน้อยคุณภาพโค้ดขั้นต่ำพร้อมการทำ profiling และ optimization ก็สามารถรองรับทราฟฟิกมหาศาลได้ด้วย CPU เพียงเศษเสี้ยวของจำนวนคอร์จริง ๆ โดยคอขวดส่วนใหญ่มักเป็นดิสก์และ network I/O และกรณีของ HN ก็ยิ่งง่ายกว่าเพราะเสิร์ฟแค่ข้อความ
    • มีคอมเมนต์ติดตลกว่า ทุกครั้งที่นักพัฒนาตระหนักได้ว่าซอฟต์แวร์สมัยใหม่นั้นเทอะทะและช้าแค่ไหน จะมีนางฟ้าได้ปีกเพิ่มอีกหนึ่งคู่
    • มีคนช็อกกับความจริงที่ว่า HN รันอยู่บนหนึ่งโปรเซส หนึ่งคอร์ และหนึ่งเซิร์ฟเวอร์จริง ๆ พร้อมแนบ การสนทนา HN ที่เกี่ยวข้อง
    • มีคำแนะนำเชิงปฏิบัติว่า หากใช้ CPU รุ่นใหม่ได้อย่างเต็มประสิทธิภาพ ก็รองรับงานปริมาณมากได้จริงก่อนจะต้องไป scale-out
    • มีการให้ลิงก์ไปยังการสนทนาเก่าเพิ่มเติม ลิงก์1, ลิงก์2, ลิงก์3, ลิงก์4
  • ในฐานะผู้ดูแลเว็บไซต์ที่สร้างจากโค้ด Arc แบบโอเพนซอร์ส มีการบอกว่าอยากใช้ Clarc อย่างมาก

    • มีคนถามว่าเว็บไซต์นั้นคือเว็บอะไร
  • มีเสียงชื่นชมว่า sbcl (Steel Bank Common Lisp) เป็นของจริงสำหรับงาน production พร้อมคาดเดาว่าฝั่ง Racket อาจไม่ได้แก้บั๊กเพราะไม่ได้มองว่า Arc จะถูกนำไปใช้จริงใน production และให้ความเห็นว่าไม่ค่อยเคยได้ยินโปรเจกต์อื่นที่ใช้ Racket ใน production เท่าไรนัก พร้อมแชร์ความชื่นชอบต่อ Armed Bear (ด้วย ecosystem ไลบรารี JVM ที่แข็งแกร่ง) และแนบลิงก์ Armed Bear Common Lisp

    • อีกความเห็นหนึ่งแชร์ประสบการณ์ว่าชุมชน Racket เป็นมิตรอย่างมากมาโดยตลอด และแก้บั๊กทุกตัวที่มีการร้องขอได้ดีเสมอ
  • มีการทักท้วงความแปลกทางภาษาของประโยค "HN runs on top of SBCL since a few months" พร้อมเสนอว่าอังกฤษที่ถูกต้องควรเป็น "HN has been running on top of SBCL for a few months now."

    • มีคำอธิบายว่า "since" ควรใช้กับจุดเวลา (at a point in time) แต่ "a few months" เป็นช่วงเวลา (length of time) จึงฟังแปลกกว่า โดย "since a few months ago" หรือ "as of a few months ago" จะเป็นธรรมชาติกว่า นอกจากนี้ยังวิเคราะห์ว่าบรรทัดแรกยังมีการปะปนของ tense ด้วยจึงยิ่งสังเกตได้ชัด
  • มีคนสงสัยว่า Paul Graham หรือ Robert Morris ยังมีส่วนร่วมในการพัฒนาอยู่หรือไม่ เพราะอ่านบทความทั้งชิ้นแล้วไม่เห็นมีพูดถึง และอยากดูว่า Arc เพิ่มอะไรเข้าไปใน CL (Common Lisp) บ้าง พร้อมให้ลิงก์ arclanguage.org

    • มีคำตอบว่าทั้งสองคนออกจากโปรเจกต์ไปนานแล้ว
  • มีการประเมินในเชิงบวกว่า Common Lisp ใช้งานได้จริงกว่ามากเมื่อเทียบกับ Racket และ SBCL ก็ให้ความรู้สึกราวกับเวทมนตร์