- 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 ความคิดเห็น
ชักสงสัยเหมือนกันว่า GeekNews ทำงานอยู่บนเทคโนโลยีอะไร 555
ความเห็นบน Hacker News
มีความเห็นว่า Hacker News เป็นตัวอย่างที่สมบูรณ์แบบของการนำปรัชญา "Worse is better" มาใช้กับ social engineering โดยช่วงปลายยุค 90 Slashdot มีฟีเจอร์ที่หลากหลายและครบครันกว่ามาก แต่ปัจจัยความสำเร็จของ HN คือการโฟกัสอย่างสุดขั้วและระบบกลั่นกรองที่แข็งแกร่ง
มีการชี้แจงว่า Hacker News ไม่ได้ถูกเขียนใหม่ทั้งหมดด้วย Common Lisp แต่เป็น Arc Runtime ที่ถูกนำมาเขียนใหม่บน Common Lisp
มีการแชร์ข้อมูลพื้นหลังว่า Arc ถูกสร้างบน Racket และเดิมเริ่มต้นบน MzScheme (ตอนแรกเป็นแกนหลักของ PLT Scheme ก่อนจะเปลี่ยนชื่อเป็น Racket ในภายหลัง) แล้วจึงย้ายไปยัง Racket จากผลงานของนักพัฒนาชื่อ kogir
มีความเห็นว่าเหมือนได้ยินว่า Dang ก็มีส่วนร่วมกับ codebase ด้วย และน่าจะมีคนอื่น ๆ อีกที่ทุ่มเทให้ HN มาอย่างยาวนาน ประกอบกับประสบการณ์ส่วนตัวที่มองว่า HN เป็นชุมชนอินเทอร์เน็ตที่อยู่กับตัวเองมานานที่สุดและยังสนุกที่สุด ทำให้ถึงจะเป็นแค่ผู้ร่วมใช้งานธรรมดาก็อยากช่วยเหลือ Dang หรืออย่างน้อยก็เลี้ยงกาแฟสักแก้ว
หลังจากเห็นคำอธิบายว่า Clarc เร็วกว่ามากและรองรับ multicore ได้ดีกว่า ก็มีคนแสดงความตกใจที่ HN ก่อนหน้านี้รันอยู่บน single core มาตลอด
ในฐานะผู้ดูแลเว็บไซต์ที่สร้างจากโค้ด Arc แบบโอเพนซอร์ส มีการบอกว่าอยากใช้ Clarc อย่างมาก
มีเสียงชื่นชมว่า sbcl (Steel Bank Common Lisp) เป็นของจริงสำหรับงาน production พร้อมคาดเดาว่าฝั่ง Racket อาจไม่ได้แก้บั๊กเพราะไม่ได้มองว่า Arc จะถูกนำไปใช้จริงใน production และให้ความเห็นว่าไม่ค่อยเคยได้ยินโปรเจกต์อื่นที่ใช้ Racket ใน production เท่าไรนัก พร้อมแชร์ความชื่นชอบต่อ Armed Bear (ด้วย ecosystem ไลบรารี JVM ที่แข็งแกร่ง) และแนบลิงก์ Armed Bear Common Lisp
มีการทักท้วงความแปลกทางภาษาของประโยค "HN runs on top of SBCL since a few months" พร้อมเสนอว่าอังกฤษที่ถูกต้องควรเป็น "HN has been running on top of SBCL for a few months now."
มีคนสงสัยว่า Paul Graham หรือ Robert Morris ยังมีส่วนร่วมในการพัฒนาอยู่หรือไม่ เพราะอ่านบทความทั้งชิ้นแล้วไม่เห็นมีพูดถึง และอยากดูว่า Arc เพิ่มอะไรเข้าไปใน CL (Common Lisp) บ้าง พร้อมให้ลิงก์ arclanguage.org
มีการประเมินในเชิงบวกว่า Common Lisp ใช้งานได้จริงกว่ามากเมื่อเทียบกับ Racket และ SBCL ก็ให้ความรู้สึกราวกับเวทมนตร์