2 điểm bởi GN⁺ 2025-02-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tóm tắt lập luận của Jonathan Blow

    • Việc truyền đạt thông tin giữa các thế hệ đang bị pha loãng.
    • Thực hành quan trọng hơn lý thuyết trong việc duy trì công nghệ.
    • Phần mềm đang vận hành thế giới.
    • Trừu tượng hóa khuyến khích sự thiếu hiểu biết về lập trình mức thấp.
    • Nếu quên đi kiến thức mức thấp, chúng ta sẽ không thể duy trì phần mềm quan trọng và nền văn minh sẽ sụp đổ.
  • Phê bình và phản biện

    • Lập luận của Blow chứa nhiều sai sót và hiểu lầm.
    • Tính xác thực của thông tin là quan trọng, và thông tin của Blow sai ở nhiều khía cạnh.
    • Chỉ số "Five nines" (99,999% thời gian hoạt động) vẫn đang được sử dụng.
    • Phần mềm vững chắc vẫn tồn tại và tiến bộ công nghệ vẫn tiếp diễn.
    • Nhận định rằng trừu tượng hóa dẫn đến mất năng lực là một sự phóng đại.
  • Tiến bộ công nghệ và trừu tượng hóa

    • Nhiều lập trình viên không muốn xử lý quản lý bộ nhớ và con trỏ.
    • Vẫn còn nhiều người viết mã C và assembly.
    • Các ngôn ngữ mới như Rust tập trung vào tính vững chắc.
    • Trừu tượng hóa góp phần thúc đẩy sự phát triển của công nghệ mới.
  • Tranh cãi về năng suất của Facebook

    • Sản phẩm thực sự của Facebook là nền tảng phân phối quảng cáo.
    • Nhiều lập trình viên đóng góp vào việc cải thiện hệ thống quảng cáo.
  • So sánh quá khứ và hiện tại

    • Môi trường phát triển phần mềm trong quá khứ và hiện tại rất khác nhau.
    • Máy tính hiện đại vững chắc hơn rất nhiều so với trước đây.
    • Khi kỳ vọng của người dùng tăng lên, độ phức tạp của phần mềm cũng tăng theo.
  • Trừu tượng hóa và sự mất mát tri thức

    • Trừu tượng hóa có thể đẩy nhanh sự mất mát tri thức.
    • Nhưng trừu tượng hóa cũng mang lại cho nhiều người cơ hội thể hiện sự sáng tạo.
    • Điều quan trọng là duy trì nền tảng kỹ năng có thể bảo trì các hệ thống quan trọng.
  • Kết luận

    • Lập luận của Blow có phần hợp lý, nhưng ở nhiều điểm bị phóng đại và hiểu sai.
    • Độ phức tạp của phần mềm và trừu tượng hóa là những vấn đề có thể giải quyết được.
    • Vấn đề lớn hơn của thế giới số là quyền riêng tư và tự do.

1 bình luận

 
GN⁺ 2025-02-10
Ý kiến Hacker News
  • Tôi dạy các lớp về hệ thống tại Montana State, và nhiều sinh viên thường không hiểu hệ thống tệp là gì khi bắt đầu môn học

    • Tôi không hoàn toàn đồng ý với Blow, nhưng nghĩ rằng cần có kiểu giáo dục theo phong cách NAND-to-Tetris dành cho học sinh trung học trở lên và sinh viên kỹ thuật
    • Tôi dùng các mô hình "cổ điển" như Little Man Computer và một trình giả lập MIPS đơn giản để giúp sinh viên hiểu nguồn gốc của công nghệ
    • Nhìn vào các cuốn sách về kiến trúc 64-bit hiện đại mà tôi chỉ biết bật cười
    • Kết nối công nghệ lại từ những nền tảng căn bản là một vấn đề khó
  • Tôi đồng ý với ý kiến của bạn. Tôi đã xem bài nói chuyện của Blow và nghĩ rằng những chỉ trích đó là quan trọng

    • Khi Blow nói rằng "không thể vẽ một pixel lên màn hình", tôi nghĩ ông ấy nói đúng
    • Tôi là lập trình viên engine game tại một công ty game quy mô vừa, và việc tuyển người có thể làm code đồ họa đang ngày càng rất khó
    • DX12 đòi hỏi ở lập trình viên nhiều hơn thế hệ trước (DX11), và Microsoft cũng thừa nhận rằng việc học DX12 là rất khó nếu không có kinh nghiệm trước đó với API đồ họa
    • Các API này dành cho những nhà phát triển muốn vượt qua giới hạn của card đồ họa và triển khai tối ưu hóa ở mức thấp, nhưng giờ chúng đã trở thành tiêu chuẩn ngành nên rất khó dạy cho người chưa có kinh nghiệm
    • Nếu không có thay đổi, nguồn ứng viên sẽ tiếp tục thu hẹp
  • Khi một lập trình viên web kỳ cựu phàn nàn về abstraction, họ đang nhắm vào lập trình viên React

    • Khi một lập trình viên Python phàn nàn về abstraction, họ đang nhắm vào lập trình viên web kỳ cựu
    • Khi một lập trình viên ứng dụng C++ phàn nàn về abstraction, họ đang nhắm vào lập trình viên Python
    • Khi một lập trình viên firmware phàn nàn về abstraction, họ đang nhắm vào lập trình viên ứng dụng
    • Khi một kỹ sư điện phàn nàn về abstraction, họ đang nhắm vào lập trình viên firmware
    • Đặt ranh giới của "abstraction quá mức" dựa trên kiến thức cá nhân, rồi gọi mọi thứ sau đó là "sự hủy diệt của văn minh", là một quan điểm khá đặc biệt
  • Những thứ như JavaScript trên server và React đã biến web thành một mớ hỗn loạn của phát triển phần mềm

    • Nhiều đứa trẻ không biết rằng HTML được render trong trình duyệt và nghĩ rằng React là thứ được render trong trình duyệt
    • Việc CEO của Vercel nghĩ React là Linux kernel của phát triển phần mềm là điều ngớ ngẩn
  • Blow thường chỉ ra những điểm rất hay về phát triển phần mềm, nhưng ông ấy cũng thường bỏ lỡ trọng tâm

    • Ông ấy đã đạt được những thành tựu lớn và có những ý tưởng đáng để lắng nghe, nhưng đôi khi cũng nói những điều vô nghĩa
    • Tôi nghĩ những lời về sự sụp đổ của văn minh là một trong những điều vô nghĩa đó, và cảm ơn phản biện mà OP đã đưa ra
    • Tôi sẽ không nhắc tới Casey Muratori; anh ta cố làm như Blow nhưng thậm chí còn không làm tốt được cả phần hay
  • Môi trường phần mềm hiện đại có rất nhiều vấn đề, và tôi nghĩ abstraction quá mức là một trong số đó

    • Nhưng cực đoan theo hướng ngược lại cũng tệ, và mọi người đang lãng mạn hóa quá khứ quá mức
    • Không chỉ có vấn đề crash và reboot, mà ngay cả những hệ thống theo đuổi tính tương thích cũng từng gặp vấn đề thiếu nhất quán
    • Ngay cả với hệ thống hiện đại kém tin cậy nhất (Windows 11), máy tính của tôi vẫn đáng tin cậy hơn bất kỳ máy nào trước năm 2010
    • Nó thậm chí còn có thể chạy phần mềm viết cho Windows 95
  • Không phải mọi sự đơn giản hóa đều là abstraction. Và không phải mọi abstraction đều là sự đơn giản hóa

    • Việc theo đuổi sự đơn giản hóa thường là động lực tạo ra abstraction
    • Tôi không nghĩ abstraction giết chết phần mềm hay văn minh, nhưng abstraction tồi sẽ cản trở tính linh hoạt và khả năng tiếp cận
    • Có thể lấy syntax sugar trong hầu như mọi ngôn ngữ làm ví dụ
    • Vấn đề không phải là một yếu tố cụ thể khiến ta mắc lỗi nhiều hơn, mà là việc sử dụng công cụ thật tốt để giải quyết các vấn đề phức tạp vốn đã khó
  • Có rất nhiều abstraction tồi. Vì "tôn giáo của tốc độ" trong công nghệ và sự tự mãn, chúng thường dừng lại ngay ở lần thử đầu tiên

    • Một khi trở thành một phần của dự án phổ biến, người khác sẽ bắt chước
    • Lặp lại trong 10-20 năm thì sẽ tạo ra một mớ hỗn loạn khổng lồ
    • Tôi thích các bài nói chuyện của Jonathan Blow và mỗi năm đều xem lại một lần
    • Ông ấy nói những điều không gây tranh cãi, nhưng tôi biết nhiều lập trình viên đơn giản là không nỗ lực hết sức
  • Tác giả thuộc về thế hệ mới hơn và không hiểu điều Blow đang nói

    • Nếu bạn nói Figma đang phá hủy thế giới thiết kế, các nhà thiết kế trẻ sẽ nghĩ mọi thứ đều ổn
    • Vì họ không lớn lên trong môi trường đó, khả năng họ học được những thứ tương đương về văn hóa và trải nghiệm là thấp hơn
  • Tôi phản đối lập luận rằng "quên đi những thứ ở mức thấp thì văn minh sẽ sụp đổ"

    • Có quá nhiều độ phức tạp khi dùng các hệ thống mức thấp để mô hình hóa các quy trình mức cao
    • Độ phức tạp là vấn đề, và chúng ta nên giảm thiểu nó cũng như tránh độ phức tạp ngẫu nhiên