3 điểm bởi GN⁺ 2025-05-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • Nếu thực sự đặt tối ưu hóa phần mềm làm ưu tiên, nhiều hệ thống hơn ta nghĩ có thể chạy trên phần cứng cũ
  • Khi tín hiệu giá thị trường tác động lên các tài nguyên tính toán khan hiếm, áp lực tạo ra phần mềm hiệu quả hơn sẽ tăng lên
  • Một ví dụ là xây dựng lại các sản phẩm dựa trên ngôn ngữ thông dịch và microservices thành các codebase native đơn khối
  • Tuy nhiên, nếu không có năng lực tính toán siêu rẻ và có thể mở rộng cao, việc thử nghiệm và tung ra sản phẩm mới mang tính đột phá có thể sẽ hiếm hơn nhiều
  • Chỉ tối ưu hiệu năng thôi là chưa đủ; năng lực tính toán rẻ và có thể mở rộng mới là yếu tố quyết định tần suất thử nghiệm và phát hành sản phẩm

Thí nghiệm tư duy ưu tiên tối ưu hóa

  • Nếu tối ưu hóa phần mềm thực sự là ưu tiên hàng đầu, nhiều hệ thống hơn ta nghĩ có thể vận hành trên phần cứng cũ
  • Khi tín hiệu giá tác động mạnh lên các tài nguyên tính toán khan hiếm, thị trường sẽ đòi hỏi phần mềm hiệu quả hơn

Các cách triển khai khả dĩ và giới hạn

  • Một ví dụ là xây dựng lại các sản phẩm dựa trên ngôn ngữ thông dịch và microservices thành các codebase native đơn khối
  • Tuy vậy, nếu không có năng lực tính toán siêu rẻ và mở rộng cao, sản phẩm mới mang tính đột phá có thể sẽ trở nên hiếm hơn nhiều

1 bình luận

 
GN⁺ 2025-05-14
Ý kiến trên Hacker News
  • Có thể lập luận rằng thị trường mua phần mềm nhiều lỗi và kém hiệu quả cũng tốt như phần mềm hoàn thiện cao, và trong hai loại đó, một loại là phần mềm rẻ nhất có thể tạo ra
    Điều này giống câu chuyện “thị trường chanh”. Thị trường bán mọi sản phẩm như thể chúng đều có chất lượng cao, nhưng âm thầm hạ chất lượng để giảm chi phí biên. Người mua không thể phân biệt chất lượng cao và thấp trước khi mua nên nhu cầu bị làm cho giống nhau một cách giả tạo, nguyên nhân là bất cân xứng thông tin
    Trong AI, chuyện này đã xảy ra và sau này sẽ còn tệ hơn. Người dùng không phân biệt được giữa một ứng dụng học máy tinh vi và việc gọi chu trình vắt của máy giặt là AI. Chính nhãn AI tạo ra mức giá cộng thêm, và người dùng sẽ trả quá nhiều cho máy giặt
    Về bản chất, việc trả quá nhiều vì tin rằng phần mềm tệ hại được thiết kế và viết bởi kỹ sư cùng chuyên gia cũng tương tự. 99% phần mềm do IC1~3 viết, và ở hầu hết công ty công nghệ, một nhân viên QA là cơ chế duy nhất nâng chất lượng lên trên mức “đáp ứng tiêu chí nghiệm thu”. Thỉnh thoảng có một nhóm thực tập sinh tụng câu thần chú “LGTM”, nhưng ngay cả vậy cũng hiếm
    https://www.lg.com/uk/lg-experience/inspiration/lg-ai-wash-e...

    • Tôi từng cố xây một startup phần mềm bằng khác biệt hóa chất lượng và muộn màng nhận ra một điều rất hiển nhiên
      Tôi đã tin chắc rằng nếu sản phẩm tốt hơn thì sẽ thuyết phục được mọi người và tăng trưởng viral, nhưng không phải vậy. Nó có tăng trưởng, nhưng quá chậm nên chỉ sau vài năm đã cạn vốn trước khi đạt điểm hòa vốn
      Điều tôi nhận ra là trong một thị trường cạnh tranh, chi phí thấp, tức chất lượng thấp, chính là lợi thế cạnh tranh. Sản phẩm càng lớn thì áp lực cắt giảm chi phí càng lớn, và vì mọi người muốn đồ rẻ, sẽ có ai đó cắt “chi phí”, tức chất lượng, để làm cho rẻ hơn. Công ty chỉ trả mức tối thiểu cần thiết để sống sót và có lãi
      Công ty trẻ có thể cố tạo ra chất lượng cao hoặc tạm thời tăng chi tiêu, nhưng cuối cùng sẽ hình thành xu hướng trượt về sự tầm thường ổn định. Điều này hơi khác thị trường chanh, và dường như kết cục không phải là sụp đổ thị trường mà là sự tầm thường ở khắp nơi
    • Ở đây cụm “chất lượng cao” đang gánh rất nhiều ý nghĩa. Có hàm ý rằng hiệu năng thấp đồng nghĩa với chất lượng thấp, nhưng những thứ được nhắc đến trong luồng này là có hiệu năng thấp như Teams, Slack, Jira đều có các sản phẩm cạnh tranh nhanh hơn rất nhiều
      Tuy nhiên nếu bảo một người bình thường chọn giữa Slack và Weechat, một client IRC nhanh, họ có khả năng xem phía có UI kiểu terminal, không gọi video, không tích hợp webhook, không avatar hay emoji tùy chỉnh là chất lượng thấp
      Hiệu năng cũng là một tính năng. Một lý do lớn khiến Internet Explorer bị Chrome vượt qua là khi ra mắt Chrome nhanh hơn nhiều, và việc các lập trình viên Python nhanh chóng chuyển sang uv/ruff cũng là nhờ cải thiện hiệu năng. Tuy vậy, khi việc chạy Slack mất 5 giây thay vì 10ms, rất ít người còn bận tâm
    • Tôi nghĩ không hẳn là thị trường chanh. Thị trường chanh cần có bất cân xứng thông tin
      Điều đó đôi khi xảy ra với phần mềm nhiều lỗi, nhưng nhìn chung mọi người muốn trả ít hơn và trong quá trình đó chấp nhận vài lỗi. Cứ nghĩ xem sẽ phải tính phí bao nhiêu nếu áp dụng quy trình trong đó mọi dòng code đều được nhiều kỹ sư rà soát và dành nhiều thời gian cho QA nghiêm ngặt
      Khi sống ở Padova, tôi từng làm phần mềm cho một hiệu sách nhỏ; vì là bạn nên tôi làm nhanh và không lấy nhiều tiền. Nó không hoàn hảo, nhưng có vấn đề thì tôi sửa, vấn đề cũng không nhiều, và bạn tôi hài lòng với thỏa thuận đó. Vì biết mình được tính giá rẻ nên cậu ấy cũng kiên nhẫn
    • Ở các công ty lớn, tôi từng bị buộc phải dùng những cổng HR, quyết toán chi phí, chấm công, bảo hiểm kinh khủng, đến mức tôi nghi ngờ liệu những người trả tiền có từng thật sự nhìn thấy sản phẩm không
      Tôi đã nhiều lần nói rằng nếu đội của chúng tôi nói với khách hàng “dự án đã xong, nhưng nó có nhiều lỗi và ác mộng UI ngang nền tảng back-office này” thì chúng tôi sẽ bị khiển trách, giáng chức hoặc sa thải
    • Thứ thị trường thực sự mua không phải là phần mềm không lỗi, mà là hỗ trợ
      Điều này bao gồm cả những công ty như Google, nơi thiếu hỗ trợ từ con người. Hỗ trợ xuất hiện dưới nhiều dạng: có thông tin như tài liệu, video, blog; có người giúp như “Mẹ ơi, Google dùng như thế này”; có hỗ trợ cho đối tượng sử dụng như hệ điều hành, trình duyệt, định dạng; và cũng có thứ nâng đỡ chính cách tôi làm việc, như Excel
      Cuối cùng là con người thật. Đây là yếu tố số một giúp cả ERP tệ nhất hành tinh vẫn sống sót. Marketing và bán hàng cũng là tín hiệu rằng có hỗ trợ. Với khách hàng doanh nghiệp, nếu họ chỉ thấy kỹ sư thì đó có thể là tín hiệu xấu. Nhà phát triển thường không làm được những việc khác, mà những việc khác đó lại là hỗ trợ quan trọng
      Sản phẩm tốt mà không có hỗ trợ thì cũng chết. Để cạnh tranh với sản phẩm tệ hơn, giảm nhu cầu hỗ trợ như lỗi, vấn đề hiệu năng, nền tảng nhằm giảm chi phí cho đội mình là việc khôn ngoan, nhưng nhất định phải bổ sung hỗ trợ ở những chiều khác. Với nhóm nhỏ, việc dễ nhất là gắn thêm tài nguyên hỗ trợ khan hiếm nhất: con người; sau đó mới cần đến sáng tạo
      Ngoài ra cũng phải truyền đạt tốt điểm mạnh. Có người coi trọng một loại hỗ trợ cụ thể hơn, như “có thể sở hữu mã nguồn vs sản phẩm độc quyền”. Nhiều người thích sản phẩm độc quyền có hỗ trợ hơn là mã nguồn
  • Từ sau năm 1980, thường có thể xem hiệu năng tính toán đã tăng khoảng 1000 lần
    Dù kiểm tra phạm vi mảng động tốn 5% chi phí, thực tế còn ít hơn nhiều, và nếu bật ở mọi nơi thì máy tính cũng chỉ còn nhanh hơn khoảng 950 lần mà thôi
    Nếu quay lại năm 1980 và bảo mọi người chọn giữa “máy tính nhanh hơn 950 lần, không có cả một lớp lớn lỗ hổng an toàn bộ nhớ, và việc gỡ lỗi dễ hơn vài bậc độ lớn” với “máy tính nhanh hơn 1000 lần nhưng phần mềm vẫn đầy lỗi hoặc còn tệ hơn, và gỡ lỗi là ác mộng”, hẳn người ta đã choáng chỉ với mức 950 lần rồi
    Thế nhưng thứ chúng ta chọn là vế sau, và cá nhân tôi cho rằng phe 1000 lần đã làm hỏng phần còn lại

    • Tuy vậy, 1000 lần đó không được dùng cho kiểm tra phạm vi, mà bị lãng phí vào vô số tầng trừu tượng và sự kém hiệu quả
    • Chúng tôi từng để phần mềm của nhà cung cấp vừa nhiều lỗi vừa chậm chạy trên Sparc 20, và nhà cung cấp phản đối quyết liệt, đòi dùng Ultra
      Cuối cùng, khi họ tối ưu để nó chạy hiệu quả trên Sparc 20, công ty có được nền tảng để thành công ở một thị trường rộng hơn. Tối ưu hóa cần được xem là lợi thế cạnh tranh, và trong một số trường hợp có thể là lợi thế cạnh tranh quan trọng nhất
    • Chi phí kiểm tra phạm vi mảng không vận hành đơn giản như vậy. Với một thuật toán xử lý ảnh dùng 2 lệnh cho mỗi pixel, nếu thêm kiểm tra cho mỗi lần truy cập thì chi phí có thể tăng 3–4 lần
      Vì vậy, nếu ép buộc kiểm tra phạm vi, ngôn ngữ đó sẽ mất sức cạnh tranh trong một số tác vụ nhất định
      Trong phần lớn trường hợp thì điều này hoàn toàn không quan trọng và nhỏ hơn 5% rất nhiều. Tôi cho rằng cách chia thành phạm vi an toàn/không an toàn hoặc thông thường/hiệu năng là một giải pháp tốt
    • Tốc độ xung nhịp cao hơn thập niên 80 khoảng 2000 lần, và nếu tính cả SIMD thì thông lượng trên mỗi lệnh cũng có thể cao hơn 80 lần, rồi còn phải nhân với số lõi
      CPU phổ thông gần với mức nhanh hơn máy thập niên 80 1–2 triệu lần. Với vài trăm đô la, bạn vẫn có thể mua một máy văn phòng tân trang thuộc nhóm nhanh hơn 1 triệu lần
      Việc máy tính ngày nay chậm và tạo cảm giác chậm không chỉ đơn giản là vì máy tính chậm, nhưng chuyện đó vẫn đang xảy ra. Một phần nguyên nhân là các ngôn ngữ script liên tục cấp phát bộ nhớ cho những phép toán nhỏ, và do kiểu động nên mỗi biến lại phải lần theo con trỏ; cũng có những người dùng các chương trình cực kỳ kém hiệu quả trong một môi trường vốn đã tệ
      Phần lớn chương trình ngày nay được viết theo cách tác giả muốn làm việc, chứ không phải theo cách người dùng mong muốn. Nhiều người không có khái niệm về tối ưu hóa hoặc trực giác về thứ gì chạy nhanh hơn; họ làm cho nó chạy được rồi nghĩ “chương trình này có tốc độ như vậy”
      Bản thân ý nghĩ rằng cùng một phần mềm có thể trở nên nhanh hơn đã là một lối nghĩ ngách, và ngay cả trên Hacker News cũng không phải ai cũng nghĩ như vậy
    • Chi phí của riêng việc kiểm tra phạm vi là thấp, nhưng chi phí khi dùng ngôn ngữ an toàn nói chung có thể lớn hơn nhiều
      Ngôn ngữ có thu gom rác thường dùng bộ nhớ nhiều hơn vài lần. Chúng không giải phóng ngay bộ nhớ không còn dùng nữa, và ngay từ đầu cũng thường cần cấp phát nhiều hơn
  • Làm việc ở Google và Facebook khiến tôi cảm nhận được phần cứng rẻ đến mức nào, và trong phần lớn trường hợp tối ưu hóa mã có giá trị thấp đến đâu
    Hơn 10 năm trước, Google đã bắt đầu quản lý mức sử dụng tài nguyên trung tâm dữ liệu, và mỗi dự án đều có ngân sách cho các thứ như lõi CPU, dung lượng đĩa cứng, lưu trữ flash, spindle đĩa, bộ nhớ. Các tài nguyên này nhìn chung có thể quy đổi lẫn nhau nên có thể thấy chi phí tương đối
    Khi đó, lưu trữ flash đắt hơn đĩa cứng khoảng 20 lần, nhưng do nút thắt spindle nên xét theo tổng chi phí thì nhiều khi lại rẻ hơn
    Tất cả những thứ này có thể quy đổi thành “mili-SWE”, tức 1/1000 công sức làm việc trong 1 năm của một SWE. Dự án có thể tiết kiệm phần cứng để tuyển thêm người, hoặc tuyển ít người hơn và nhận thêm phần cứng trong ngân sách hiện tại
    Tôi không nhớ chính xác bao nhiêu lõi CPU tương đương 1 SWE, nhưng hình như là hàng nghìn lõi. Nếu dành 1 năm SWE để tối ưu toàn bộ dự án mà không tiết kiệm được 5000 lõi CPU thì đó là lỗ ròng
    Các dự án rất lớn dùng nhiều hơn thế rất nhiều nên tối ưu hóa là hợp lý, nhưng trong nhiều trường hợp, đặc biệt nếu mã đã viết có khả năng sẽ bị thay thế vào một lúc nào đó, tối ưu hóa thường không đáng
    Mặt khác, web có vấn đề chung về khả dụng. Web không nên dùng nhiều tài nguyên như hiện nay. Nếu bạn biết ai từng làm công việc nhập liệu, bạn sẽ biết chuột khá kém hiệu quả. Các terminal dạng văn bản 30–40 năm trước cung cấp giao diện rất hiệu quả trong khi dùng rất ít tài nguyên
    Tôi từng nghĩ một ngày nào đó web sẽ được “giải quyết” theo kiểu có một stack công nghệ được kỳ vọng chung rồi mọi người chuyển sang vấn đề khác, nhưng chuyện đó đã không xảy ra. Vẫn còn “framework của tuần này”, và vẫn có chuyện ngớ ngẩn là tự triển khai lại thanh cuộn trong mã người dùng nhưng không khớp đúng với con lăn chuột. Tôi không biết có thể giải quyết vấn đề này bằng cách nào, hay ngay từ đầu nó có thể được “giải quyết” hay không

    • Tôi cũng từng làm việc ở đó, nhưng hiệu năng được nói ở đây là theo góc nhìn tối ưu mức dùng CPU cho từng dự án
      Google đã dồn nỗ lực khổng lồ vào hai khía cạnh hiệu năng khác là độ trễ và mức sử dụng tổng thể thiết bị. Cả hai đều là chỉ đạo từ trên xuống, hút rất nhiều thời gian và sự chú ý của hàng nghìn kỹ sư, và chi phí nhân sự cũng lớn
      Nhưng nếu thiết bị là ràng buộc, dù từng lõi riêng lẻ rẻ, bạn vẫn không muốn để chúng nhàn rỗi vô cớ. Vì chi phí cơ hội của việc chờ xây trung tâm dữ liệu mới là rất lớn. Nếu mức sử dụng cực kỳ nhạy với độ trễ, việc cắt bớt mili-giây là hợp lý vì chỉ số kinh doanh, chứ không phải vì tiết kiệm chi phí phần cứng
    • Đây là trường hợp tự chọn một công ty như Google, nơi chi phí kỹ thuật cao, biên lợi nhuận đủ dày để chịu được các khoản chi như phần cứng bổ sung, và kỹ sư có nhiều dự án để làm
      Việc đánh giá phải được thực hiện ở chi phí biên. Ngay cả khi chỉ tiết kiệm được vài xu mỗi năm cho mỗi đô la, làm việc đó vẫn tốt hơn là để kỹ sư ngồi không
      Vấn đề là hầu như không ai làm như vậy. Cách ra quyết định không liên quan đến tính toán kinh tế, và phần lớn chỉ bắt chước “thứ Google làm”. Điều đó giải thích được nhiều sự cố chức năng
    • Lập luận này nhiều khả năng đúng với các tổ chức như Google. Vì ở quy mô đó, “một lõi” rẻ hơn trung bình rất nhiều, còn lương thì cao hơn trung bình rất nhiều
      Nhưng các doanh nghiệp thông thường, kể cả doanh nghiệp lớn, cũng không đến mức đó. Đây có vẻ là một ví dụ điển hình cho việc “Facebook/Google/Netflix và những công ty tương tự là một đẳng cấp riêng, và phần lớn thông lệ của họ không áp dụng được cho bạn”
    • Vấn đề đó sẽ không được “giải quyết”. Vì ngay từ đầu nó không phải là vấn đề
      Ta có thể tưởng tượng một vũ trụ song song nơi nhân lực được dồn vào tối ưu hóa, nhưng vũ trụ đó sẽ hoàn toàn khác hiện tại. Dùng thêm một kỹ sư cho tối ưu hóa nghĩa là bớt đi một kỹ sư phát triển tính năng. Để làm gì? Để tiết kiệm vài chu kỳ CPU? Nghe buồn cười
    • Google tạo ra các định dạng nén và tuần tự hóa nhị phân tốt hơn không phải để cho vui, mà vì điều đó giúp tăng lợi nhuận
  • Chỉ nhìn tiêu đề thì tôi đã tưởng Carmack đang phê phán phần mềm không được tối ưu đúng mức và kêu gọi cải thiện hiệu năng trên phần cứng cũ
    Tweet thực tế hoàn toàn không phải cả hai; nó bàn về một thí nghiệm tư duy trong đó tiến bộ phần cứng dừng lại, rồi kết luận rằng “nếu không có điện toán có thể mở rộng với chi phí cực thấp, các sản phẩm mới mang tính đột phá đương nhiên sẽ hiếm hơn rất nhiều”

    • Có vẻ liên quan đến thread hôm qua, và có lẽ người này chưa xem thread đó
      https://news.ycombinator.com/item?id=43967208
      https://threadreaderapp.com/thread/1922015999118680495.html
    • Kết luận rằng “nếu không có điện toán có thể mở rộng với chi phí cực thấp, các sản phẩm mới mang tính đột phá sẽ hiếm hơn nhiều” khá thú vị
      Ngược lại, tôi thấy trong 18 năm sau smartphone, chúng ta không chứng kiến nhiều đổi mới lớn, vì vốn đang dựa vào tiến bộ phần cứng để bán cho người tiêu dùng những sản phẩm về bản chất là giống những gì họ đã có
      Tất nhiên sau tweet đầu tiên thì tôi không đọc được nữa
    • Tôi nghĩ lập luận đó không ổn. Nếu ngừng thêm tính năng một thời gian và tạo ra khoảng thở, các tính năng sẽ quay lại mạnh mẽ
      Sẽ có trì trệ, nhưng không phải trì trệ kéo dài
    • Đó chính là điểm cốt lõi. Mọi người phớt lờ rằng “phình to” không chỉ là lãng phí, mà là mức tăng năng suất của lập trình viên sinh ra từ động cơ kinh tế
      Nếu có thể tuyển người và giúp họ làm việc hiệu quả bằng các ngôn ngữ ít phức tạp hơn, thị trường lao động sẽ rộng ra và chi phí giảm xuống
    • Có thể đằng sau chuyện này là công việc AI hiện tại của Carmack
      Trong nguyên văn, về cơ bản Carmack đang lập luận rằng “lập trình viên giỏi và thông minh thì đắt, và vì còn những việc lớn hơn nên người ta không chi tiền để họ tối ưu mã và hệ thống đến cùng, khiến phần mềm chậm”
      Vì vậy hàm ý là nếu lập trình viên giỏi đột nhiên trở nên rất rẻ, mọi người sẽ mua sức họ để tối ưu, và nhiều phần mềm có thể đột nhiên chạy nhanh hơn. Vậy tại sao lập trình viên giỏi lại có thể đột nhiên trở nên rẻ?
  • Sẽ thật tốt nếu có thể kéo dài tuổi thọ phần cứng thêm 5 năm, 10 năm sau giai đoạn “lỗi thời có chủ đích”
    Khi đó có thể giảm rất nhiều rác thải điện tử, để đất hiếm còn nằm trong lòng đất, và cũng giảm đáng kể phát thải khí nhà kính
    Nhưng các lực lượng thị trường của sản xuất phần mềm không trả chi phí cho những ngoại tác đó. Phát hành nhanh, kiểm thử và lặp lại rẻ hơn nhiều so với việc lập kế hoạch và thiết kế vì hiệu năng. Một số tổ chức trong ngành game đã tìm ra công thức để vừa có hiệu năng tốt vừa bán được nhiều, nhưng nó không lan tỏa đồng đều
    Trong phần mềm doanh nghiệp và tiêu dùng, không có nhiều động lực để đưa tiêu chí hiệu năng vào yêu cầu. Người ta thiết kế theo mức người dùng còn chịu được, và vì phải liên tục tung ra thay đổi và tính năng, họ chừa dư địa càng nhiều càng tốt. Mọi thay đổi đều là một khoản nợ có thể ảnh hưởng đến hiệu năng và sự hài lòng của người dùng, nên họ đảm bảo có đủ ngân sách dự phòng để gánh tỷ lệ lỗi
    Điều này rất khác với cách từng thiết kế và phát triển sau cánh cửa đóng kín “cho đến khi sẵn sàng”

    • Điểm đầu tiên là lý do vì sao về dài hạn mô hình kinh tế tăng trưởng/nợ là không tốt
      Chúng ta nên có một nền kinh tế xoay quanh chăm sóc và bảo trì, và điều chỉnh các nỗ lực vĩ mô quanh lợi ích của toàn nhân loại thay vì của cải được cảm nhận của một số ít người
      Nếu tập trung vào bảo trì xe cũ, tái sử dụng máy tính cũ, v.v., thì các bãi chôn lấp sẽ nhỏ hơn so với mức tăng trưởng
      Tất nhiên cũng có thể có một mô hình lý thuyết trò chơi cho thấy chủ nghĩa bảo tồn là chiến lược khách quan kém hơn
  • Đã hơn 10 năm kể từ khi có thể chạy engine khớp lệnh của toàn bộ sàn giao dịch trên một luồng đơn
    Tôi nghĩ một lớp năng lực tính toán cụ thể, tức xử lý giao dịch được tuần tự hóa nghiêm ngặt, đã không tăng nhanh như các chỉ số khác gợi ý. Thêm 31 lõi không làm engine khớp lệnh nhanh hơn, thậm chí có thể làm nó chậm đi
    Nếu sản phẩm của bạn xử lý dưới vài triệu giao dịch mỗi giây mà vẫn đang tìm một cụm máy, bạn cần lùi lại khoảng 15 bước và bắt đầu lại từ đầu

    • Phần này thật sự làm tôi bực. Các “kiến trúc sư” hệ thống đã quá cố chứng minh giá trị của mình và để lại dấu ấn, đến mức làm nhiều hệ thống trở nên phức tạp quá mức, và kết quả là tung ra cả đống vấn đề mới
      Chỉ với thiết kế ban đầu thôi vẫn đã đáp ứng được 99% use case, và xét năng lực điện toán cục bộ ngày nay thì còn có thể chạy cả thị trường trên một máy duy nhất
    • Tôi thắc mắc liệu có thể khớp lệnh song song bằng log reduction, giống như sắp xếp song song, hay không
      Có phải là ngoài việc sắp xếp theo thời gian và giá thì không có đủ phép tính khác?
    • Điều đó khả thi vì mỗi giao dịch chỉ cần xử lý đơn giản
      Nếu mỗi giao dịch đòi hỏi xử lý phức tạp hơn, hẳn đã không thể xử lý được nhiều giao dịch đến vậy. Tuy nhiên, nếu không phải người trong lĩnh vực đó thì khó tưởng tượng cần loại xử lý phức tạp hơn nào
  • Nói đúng. Đây là vấn đề kinh tế, tức là vấn đề phân bổ tài nguyên
    Đó là lựa chọn giữa việc để ai đó dành thêm thời gian tối ưu hóa phần mềm, hay để họ tạo ra nhiều tính năng hơn. Nếu vế sau tạo ra nhiều tiền mặt hơn thì họ sẽ giao làm việc đó; nếu vế trước trở nên quan trọng với dòng tiền thì họ sẽ giao làm việc đó

    • Đúng là vấn đề kinh tế, nhưng tôi nghĩ khác ở chỗ đây là loại vấn đề kinh tế nào
      Đây là một ví dụ rõ ràng về ngoại tác tiêu cực mà các công ty phần mềm áp đặt lên công chúng. Phần lớn các công ty phần mềm không phải trả chi phí thực của năng lượng, thời gian bị mất và rác thải điện tử phát sinh thêm, nên họ không bận tâm đến tối ưu hóa
    • Nền kinh tế này chuyển nợ tài chính thành rác thải chất đống và nợ kỹ thuật, rồi bắt người khác trả chi phí đó. Về bản chất gần như là trộm cắp
      Trong nhiều trường hợp tối ưu hóa triệt để cũng không có nhiều ý nghĩa, nhưng ý tưởng chỉ thêm server thay vì viết lại là một tình trạng đáng buồn
    • Nói chung, để lập trình viên tối ưu hóa phần mềm thường tốt hơn là thêm tính năng mới chỉ để có thay đổi
      Phần lớn tính năng mới của macOS, Windows, Android tôi không dùng. Thứ tôi muốn là một môi trường hiệu quả để chạy ứng dụng và các cải thiện về bảo mật. Nhiều cải tiến như ứng dụng Settings của macOS cũng không làm tôi hài lòng lắm
      Phần mềm thiết kế cũng tương tự. Tôi không dùng phần lớn tính năng mới mà Adobe đưa vào, và hoàn toàn có thể hài lòng với Illustrator hay Photoshop của 10 năm trước. Thứ tôi muốn là phần mềm bớt phình to
      Với âm thanh và sản xuất nhạc, quy trình làm việc vẫn đang được cải thiện nên tôi muốn có tính năng mới, nhưng không phải bằng cách hy sinh hiệu năng
      Với trình soạn thảo mã, các tính năng của VSCode là đủ. Tôi không cần thêm gì nữa; tôi muốn LSP tốt hơn, nhưng đó không phải phần lõi của trình soạn thảo. Tuy vậy tôi muốn VSCode nhanh hơn và ăn ít bộ nhớ hơn
    • Hiệu quả cũng quan trọng trong đời sống hằng ngày. Ví dụ khi vào bếp lấy đồ ăn vặt, tôi cầm theo rác hoặc bát đĩa để nhân đôi lợi ích của một lần di chuyển
      Tối ưu hóa phần mềm cũng hấp dẫn theo cách tương tự. Nhưng nếu bài toán là “dành vài giờ thời gian kỹ sư đắt đỏ để tối ưu” so với “lắp thêm RAM rẻ tiền”, lựa chọn rẻ hơn sẽ thắng. Đôi khi vấn đề đủ lớn để đáng tối ưu
      Thị trường sẽ quyết định lựa chọn nào đáng theo đuổi. Khi cách ném thêm phần cứng vào gặp quy luật lợi suất giảm dần, người ta sẽ tối ưu phần mềm. Định luật Moore đang chậm lại, nhưng có vẻ chúng ta vẫn chưa tới điểm đó
    • Rốt cuộc là vấn đề nhu cầu. Nếu người tiêu dùng đòi phần mềm hiệu năng cao hơn, họ sẽ trả thêm tiền
      Nhưng thực tế gần như ngược lại. Nếu có mức giá rẻ hơn, họ còn có thể thích cả phiên bản hiệu năng thấp hơn
  • Không hẳn là phản bác Carmack, nhưng có một ví dụ cụ thể mà đôi khi tôi nghĩ tới
    Ứng dụng Electron nằm đâu đó giữa thứ mà người tiêu dùng phải chịu đựng vì vấn đề hiệu năng và thứ bị họ ghét bỏ, nhưng có thể đó là đổi mới duy nhất giúp laptop Linux trở nên thực dụng ở nơi làm việc. Chẳng hạn, việc có thể tham gia cuộc họp MS Teams mà không cần cài đặt thật sự hữu ích
    Vì vậy ai cũng than thở rằng ngày nay không còn gì được code chặt chẽ như Winamp, nhưng lại quên mất ba chữ cái đầu

    • Vì đã có Wine, tôi nghĩ phần mềm chỉ dành cho Windows nhưng có hiệu năng tốt vẫn tốt hơn nhiều so với mớ hỗn độn Electron ngày nay
      Chúng có khả năng khá cao chạy được trên Linux, còn phần mềm Electron thì tệ trên mọi nền tảng
  • Năm 2010, tôi làm lao công và kiêm luôn việc phụ trách IT như một nghề tay trái
    Khi đó tôi nói với công ty rằng laptop trong vòng 5 năm trước, đại khái là các máy từ sau Nehalem, đã đủ hiệu năng cho công việc bảng tính. Việc họ làm về cơ bản chỉ có vậy; 2 lõi, RAM 16GB và SSD SATA 500GB là đủ. Chỉ vài người bên marketing cần máy mạnh hơn một chút, nhưng khác biệt không lớn, và họ tiết kiệm được rất nhiều tiền nhờ không mua laptop cao cấp đời mới nhất
    Giờ tôi không còn làm ở đó, nhưng tôi tin chắc rằng đến hôm nay những chiếc máy đó vẫn phải hoàn toàn đủ tốt cho bảng tính. Quy trình công việc không thay đổi nhiều; thứ thay đổi là phần mềm. Nếu cứ cập nhật liên tục thì tôi không biết giờ chúng có còn “chạy” nổi MS Windows 10 hay 11 không, nhưng khả năng cao năng suất đã giảm mạnh vì sự phình to, và đặc biệt là vì bảng tính chỉ dùng trực tuyến
    Internet ở đó cũng tệ. Các lựa chọn là DSL bất đối xứng khoảng 16Mbit giá 300 đô la mỗi tháng vì bị gắn mác “doanh nghiệp”, hoặc cáp Comcast 120Mbit giá 500 đô la mỗi tháng. 120Mbit cũng chỉ vừa đủ chịu được cho bảng tính chỉ trực tuyến, còn 16Mbit thì chắc chắn thiếu. Tệ hơn nữa là nếu Internet đứt thì việc kinh doanh dừng lại
    Đây chính là bản chất của sự trộm cắp mà bình luận khác nói tới, và tôi hoàn toàn đồng ý. Một chiếc laptop dùng để chỉnh sửa và cập nhật bảng tính trong văn phòng hoàn toàn không có lý do gì phải đòi Internet, hay tài nguyên tính toán/lưu trữ vô lý, hay băng thông lớn
    Không có lời bào chữa nào cho hiệu năng khủng khiếp của máy tính ngày nay ngoài việc đẩy chi phí sang khách hàng, tức là cả cá nhân lẫn doanh nghiệp
    https://news.ycombinator.com/item?id=43971960

  • Thế giới vận hành dựa trên chức năng, chứ không phải phần mềm thanh lịch, nhanh và không có lỗi
    Với người dùng cuối, không có chức năng và có lỗi chẳng khác gì nhau. Việc hiệu năng kém khiến một tác vụ mất 5 phút để hoàn thành, và việc không có chức năng khiến người dùng phải tự làm thủ công việc tương tự trong 5 phút, cũng không có khác biệt đáng kể. Cả hai đều là “chậm”
    Nếu cứ tiếp tục tối đa hóa giá trị cho người dùng cuối, tất yếu sẽ tạo ra phần mềm chậm và nhiều lỗi. Hơn nữa, nếu hỏi người dùng rằng họ có muốn ít chức năng hơn để đổi lấy việc nhanh hơn và ít lỗi hơn không, thì đáng ngạc nhiên là họ nói không. Quan trọng hơn, trong thế giới doanh nghiệp, người mua phần mềm thường không phải là người dùng cuối, và họ muốn nhiều chức năng hơn, còn hiệu năng và sự thanh lịch thì ít quan tâm hơn
    Nếu tập tính năng như nhau, người dùng và người mua sẽ chọn phần mềm nhanh nhất, ít lỗi nhất và thanh lịch nhất. Nhưng chỉ cần thiếu một chức năng là thua. Lý do phải giữ cho phần mềm nhanh và thanh lịch là vì làm vậy sẽ có khả năng cao nhất để tiếp tục thêm chức năng mà không trở thành sản phẩm ít chức năng hơn
    Một giải pháp nhanh và thanh lịch có thể nhận được đánh giá tốt và được khen là dùng thích. Vì vậy điều đó có thể trông như một yếu tố quan trọng. Nhưng rốt cuộc, nếu không làm được việc họ muốn thì họ sẽ không mua. Nếu có chức năng cốt lõi họ cần, họ sẽ chọn một mớ hỗn độn chậm chạp, khó chịu và đầy lỗi

    • Hầu hết bạn bè và người thân không làm kỹ thuật của tôi đều từng có lúc phàn nàn về phần mềm phình to và phức tạp quá mức mà họ buộc phải dùng
      Cũng cần nhớ rằng Microsoft giờ phải vừa đá vừa kéo người dùng đang la hét sang phiên bản Windows tiếp theo. Nếu để người dùng tự quyết, nhiều người có lẽ đã không nâng cấp kể từ Windows XP. Dù các phiên bản sau có nhiều tính năng mới đẹp đẽ
      Tôi đồng ý rằng doanh nghiệp và nhà đầu tư muốn bản thân các chức năng, nhưng người dùng thì chắc chắn không
    • Hoàn toàn ngược lại. Việc công ty nhồi các chức năng người dùng không muốn là để ngừng phiên bản cũ và bán bằng cách ép nâng cấp
      Nếu có thể, chẳng ai còn nâng cấp bất cứ thứ gì nữa. Cứ nhìn Microsoft vất vả thế nào để khiến mọi người nâng cấp là thấy. Tôi chưa từng nghe ai nói họ muốn phiên bản mới của Windows, Office, Slack, Zoom, v.v.
      Đây cũng là lý do mọi thứ như Photoshop bị ép lên cloud. Đại đa số mọi người không muốn các chức năng mới được cung cấp, kể cả người mua doanh nghiệp. Câu trả lời để duy trì doanh thu là khiến mọi người phải mua, bất kể có cung cấp chức năng hay không
    • Tôi đồng ý với sự đánh đổi giữa chức năng và sự thanh lịch
      Tuy nhiên, người dùng hiện tại đã làm được việc họ cần bằng phần mềm rồi, nên chức năng mới có thể giúp họ bỏ đi một phần mềm khác hoặc làm được việc mới. Nhưng nếu đó thật sự là một việc mới cực kỳ quan trọng, có lẽ họ đã tìm phần mềm khác để dùng rồi, nghĩa là đến giờ họ vẫn sống ổn khi không có nó. Vì vậy nếu người dùng hiện tại thật sự suy xét kỹ, tôi nghĩ trước tiên họ sẽ yêu cầu cải thiện hiệu năng, rồi muốn thêm vài cải tiến nhỏ
      Ngược lại, người dùng tiềm năng hoặc chưa biết phần mềm, hoặc cần một chức năng nào đó khác trước khi thấy nó hữu ích. Họ mới là nhóm có lý do hợp lý để tìm chức năng mới
      Vì vậy quyết định “chức năng vs hiệu năng” cũng là tín hiệu cho thấy ưu tiên của nhà phát triển là thêm người dùng mới hay làm hài lòng người dùng hiện tại. Việc dân kỹ thuật thiên về vế sau là điều tự nhiên. Họ đã chơi trò này rồi, và biết rằng họ muốn được ưu tiên trong quãng thời gian thực sự dùng lâu dài, chứ không phải trong lúc bị thu hút về
      Phần mềm nhiều lỗi, chậm nhưng giàu chức năng thống trị thị trường cũng là vì các công ty ưu tiên tăng trưởng trước. Lịch sử đầy những phần mềm đẹp đẽ, thanh lịch mà người dùng nhớ tiếc, nhưng chúng không lan rộng đủ để công ty tồn tại
      Sự đánh đổi là có thật theo cả hai chiều. Phần lớn mọi người dành nhiều thời gian làm người dùng hơn là người dùng tiềm năng. Đây rất có thể là một nguyên nhân lớn của nhận thức phổ biến rằng phần mềm và máy tính ngày nay tệ đến khó tin
    • Diễn đạt chính xác. Những người cho rằng nên dành nhiều thời gian hơn để cải thiện hiệu năng phần mềm dường như không nghĩ xem ai sẽ trả chi phí đó
      Số tiền chi cho RAM và CPU tốt hơn trên máy tính gia đình và văn phòng giúp mọi phần mềm chạy trên đó có thể được phát hành với chi phí thấp hơn và nhiều chức năng hơn