3 điểm bởi GN⁺ 2025-05-27 | 2 bình luận | Chia sẻ qua WhatsApp
  • Hacker News trước đây được triển khai bằng Arc, một ngôn ngữ thuộc họ Lisp, nhưng trong vài tháng gần đây đã chuyển sang SBCL(Steel Bank Common Lisp)
  • Mục tiêu chính của lần chuyển đổi này là cải thiện hiệu năng và mở ra khả năng hỗ trợ đa lõi
  • Việc phát triển Lilt, trình chuyển đổi từ Arc sang JS, và Clarc, trình chuyển đổi từ Arc sang Common Lisp, đã giúp cấu trúc trở nên bài bản hơn
  • Việc công khai mã nguồn của Clarc tương đối dễ, nhưng toàn bộ codebase của HN thì khó công khai vì lý do bảo mật
  • Với kiến trúc mới, HN đã chuyển đổi mượt mà, giúp cải thiện trải nghiệm người dùng

Tổng quan

  • Hacker News ban đầu được phát triển bằng Arc, một ngôn ngữ thuộc họ Lisp do Paul Graham tạo ra
  • Arc được triển khai trên Racket, nhưng trong vài tháng gần đây đã chuyển sang SBCL(Steel Bank Common Lisp)
  • Lý do là để cải thiện hiệu năng

Thay đổi về hiệu năng và tính năng

  • Từ góc độ sử dụng thực tế, đã xác nhận có cải thiện hiệu năng, chẳng hạn như việc không còn cần phân trang
  • Trước đây, các luồng bình luận dài cần phải phân trang, nhưng giờ đã chuyển sang cách tải toàn bộ trong một lần
  • Những thay đổi này có được là nhờ Clarc
  • Clarc giúp HN có thể vận hành trơn tru trong môi trường đa lõi
  • Việc phát triển Clarc đã diễn ra trong nhiều năm và gần đây đang tiến đến giai đoạn hoàn thiện

Cách triển khai và cấu trúc

  • Lilt để chuyển Arc sang JS, và Clarc để chuyển Arc sang Common Lisp
  • Cấu trúc bên dưới của bản triển khai Arc hiện tại đã được thiết kế lại, chia Arc thành nhiều tầng để phát triển
    • arc0 được viết bằng ngôn ngữ hệ thống (Racket, JS, CL)
    • arc1 được viết trên arc0, còn arc2 được viết trên arc1
    • Toàn bộ tính năng được triển khai ở tầng trên (arc2), còn các tầng dưới được giữ ở mức tối thiểu
  • Nhờ cấu trúc này, việc tái triển khai Arc trên nhiều runtime khác nhau trở nên dễ dàng hơn

Vấn đề liên quan đến việc công khai mã nguồn

  • Việc mã nguồn mở Clarc (bản triển khai Common Lisp của Arc) tương đối dễ
    • Có thể thực hiện bằng cách port các bản phát hành Arc hiện có sang Clarc
    • Ứng dụng mẫu HN phiên bản đầu đã được bao gồm sẵn, nên không có phần nào đặc thù cho HN hay YC
  • Tuy nhiên, toàn bộ codebase của HN có tích hợp nhiều cơ chế bảo mật để ngăn chặn việc bị lạm dụng
    • Nếu mã nguồn bị công khai, có nguy cơ những phần này sẽ mất tác dụng
    • Việc tách riêng các phần liên quan đến bảo mật là một gánh nặng lớn

2 bình luận

 
ilotoki0804 2025-05-30

Không biết GeekNews chạy trên công nghệ gì nhỉ haha

 
GN⁺ 2025-05-27
Ý kiến Hacker News
  • Có ý kiến cho rằng Hacker News là ví dụ hoàn hảo về việc triết lý "Worse is better" được áp dụng vào kỹ nghệ xã hội; cuối thập niên 90, Slashdot có nhiều tính năng hơn và phong phú hơn rất nhiều, nhưng yếu tố làm nên thành công của HN là sự tập trung cực độ và hệ thống kiểm duyệt mạnh mẽ

    • Một lời cảm thán nửa đùa nửa thật rằng cuối cùng hệ thống Lisp lại trở thành đại diện tiêu biểu của "Worse is better"
    • Chú ý đến sự mỉa mai ở chỗ nền tảng được vận hành trên nền công nghệ tối thiểu nhất có thể, còn đội ngũ vận hành HN thì dựa vào sự can thiệp của con người, phản ánh trực giác rằng 'nhiều công nghệ hơn không phải lúc nào cũng giúp ích cho mọi người'
    • HN có ít tính năng, nhưng điều đó lại đặt ra câu hỏi liệu chúng ta có thật sự cần nhiều tính năng hơn không; nhờ ít tính năng mà nó lại được đánh giá tích cực theo hướng tối giản, gợi nhớ câu 'less is more'
    • Có ý kiến cho rằng việc HN không cần phải tạo ra doanh thu là một lợi thế lớn
    • Nhắc đến câu nói nổi tiếng của Antoine de Saint-Exupéry: sự hoàn hảo đạt được không phải khi không còn gì để thêm vào, mà là khi không còn gì để bớt đi
  • Thực tế không phải toàn bộ Hacker News được viết lại bằng Common Lisp, mà là Arc Runtime được hiện thực lại bằng Common Lisp

    • Đây chính là kiểu việc mà Lisp làm tốt nhất, khiến nhiều người phải trầm trồ
  • Chia sẻ kiến thức nền rằng Arc được hiện thực trên Racket; ban đầu nó bắt đầu từ MzScheme (lúc đầu là phần lõi của PLT Scheme, sau này đổi tên thành Racket), rồi được chuyển sang Racket nhờ đóng góp của một lập trình viên tên kogir

    • Có ý kiến luôn thắc mắc rằng MzScheme là phần cốt lõi (không GUI) của PLT Scheme (nay là Racket), và theo lịch sử bài viết trên mailing list cũ của pg thì Arc ban đầu được phát triển trên Scheme48 rồi mới chuyển sang PLT
    • Có người tự hỏi liệu chúng ta có đang đi một vòng qua mọi implementation của Lisp hay không, ví von vui là một phiên bản 'con tàu Theseus kỳ lạ'
    • Có người thắc mắc liệu MzScheme, PLT Scheme và Racket về bản chất chẳng phải gần như là một hay sao
  • Có ý kiến cho rằng Dang cũng đóng góp vào codebase, và ngoài ra hẳn còn những người khác đã cống hiến rất nhiều năm cho HN; với một số người, cộng đồng HN là cộng đồng internet tồn tại lâu nhất và cũng đem lại nhiều niềm vui nhất cho họ, đến mức dù chỉ là người tham gia bình thường, họ cũng muốn giúp Dang điều gì đó hoặc ít nhất mời ông một ly cà phê

    • Một điểm cần nhớ là Hacker News (trước đây là Startup News) trên thực tế đóng vai trò như bộ phận marketing của Y Combinator, một trong những công ty đầu tư thành công nhất thế giới; đồng thời Paul Graham, người sáng lập HN và tác giả ban đầu, hiện ít nhất cũng đã là tỷ phú; dù vậy, họ vẫn tiếp tục theo đuổi sự tự chủ tài chính và còn nhận quyên góp
  • Sau khi đọc mô tả rằng Clarc nhanh hơn nhiều và hỗ trợ multicore tốt hơn, có người bày tỏ sự ngạc nhiên khi biết HN trước đây chạy hoàn toàn trên single-core

    • Có ý kiến chỉ ra rằng CPU hiện đại cực kỳ nhanh, đến mức 4chan từng phục vụ 4 triệu người dùng chỉ với 10 nghìn dòng mã PHP spaghetti đã 10 năm tuổi và một máy chủ; chỉ cần chất lượng mã tối thiểu cùng profiling và tối ưu hóa hợp lý thì ngay cả một phần rất nhỏ của số lõi CPU cũng có thể xử lý lưu lượng khổng lồ, và nút thắt cổ chai chủ yếu nằm ở disk và network I/O; HN lại chỉ phục vụ văn bản nên càng tương đối dễ hơn
    • Một bình luận dí dỏm rằng mỗi lần một lập trình viên nhận ra phần mềm hiện đại cồng kềnh và chậm chạp đến mức nào thì lại có một thiên thần mọc thêm đôi cánh
    • Có người sốc trước việc HN thực sự từng chạy trên một process, một core, một server, kèm thảo luận HN liên quan
    • Một lời khuyên thực tế rằng nếu tận dụng CPU hiện đại đúng cách thì hiệu năng thật sự rất ấn tượng, và có thể gánh được lượng xử lý lớn trước cả khi cần scale-out
    • Cung cấp nhiều liên kết đến các thảo luận cũ: liên kết 1, liên kết 2, liên kết 3, liên kết 4
  • Với tư cách là người vận hành một website được xây dựng bằng mã nguồn mở Arc, có người tha thiết mong được dùng Clarc

    • Có người hỏi website đó là trang nào
  • Một lời cảm thán rằng sbcl (Steel Bank Common Lisp) thực sự sẵn sàng cho môi trường production; cũng có suy đoán rằng phía Racket có lẽ đã không sửa lỗi vì không xem Arc là thứ để dùng thực chiến; thêm một nhận xét rằng chưa từng nghe đến dự án nào khác dùng Racket trong production, đồng thời chia sẻ sự yêu thích dành cho Armed Bear (nhờ hệ sinh thái thư viện JVM mạnh mẽ) cùng liên kết Armed Bear Common Lisp

    • Một người chia sẻ trải nghiệm rằng cộng đồng Racket lúc nào cũng rất thân thiện và đã sửa rất tốt mọi lỗi mà họ yêu cầu
  • Có người chỉ ra sự gượng gạo về mặt ngôn ngữ trong câu "HN runs on top of SBCL since a few months", và đề xuất tiếng Anh đúng nên là "HN has been running on top of SBCL for a few months now."

    • Giải thích rằng "since" phải đi với một mốc thời gian (at a point in time), trong khi "a few months" là khoảng thời gian (length of time) nên nghe gượng; các cách như "since a few months ago" hoặc "as of a few months ago" sẽ tự nhiên hơn; ngoài ra, đoạn đầu còn trộn lẫn các thì nên điều này càng dễ bị chú ý hơn
  • Có người tò mò liệu Paul Graham hay Robert Morris có còn tham gia phát triển hay không; họ đã đọc lướt toàn bộ bài nhưng không thấy nhắc đến, đồng thời muốn xem Arc bổ sung điều gì lên trên CL (Common Lisp), kèm liên kết arclanguage.org

    • Có câu trả lời rằng hai nhà phát triển này đã rời khỏi dự án từ lâu
  • Một đánh giá tích cực rằng Common Lisp thực tế và hữu dụng hơn Racket rất nhiều, còn SBCL thì đem lại cảm giác gần như ma thuật