Một bài báo nghiên cứu có tiêu đề Build Systems à la Carte đã khơi mào một cuộc thảo luận thú vị trong cộng đồng lập trình viên về bản chất của giáo dục khoa học máy tính và mối quan hệ của nó với phát triển phần mềm thực tế. Bài báo do Simon Peyton Jones (nổi tiếng với Glasgow Haskell Compiler) đồng tác giả, cung cấp một khung hệ thống để hiểu các hệ thống build khác nhau như MAKE, Buck và Bazel.
Tác giả bài báo và thông tin xác thực:
- Andrey Mokhov
- Neil Mitchell (người tạo ra hệ thống xây dựng Shake )
- Simon Peyton Jones ( ACM Fellow , được biết đến với Glasgow Haskell Compiler )
Tính dễ tiếp cận chia rẽ ý kiến về viết lách học thuật
Phản hồi từ cộng đồng đã chia rẽ rõ rệt về điều gì làm cho các bài báo học thuật dễ đọc. Một số lập trình viên khen ngợi phong cách viết dễ tiếp cận của bài báo, lưu ý họ có thể đọc lướt qua và hiểu các khái niệm một cách dễ dàng ngay cả khi không có nền tảng kỹ thuật sâu. Những người khác lại cho rằng tính dễ tiếp cận này xuất phát từ việc bài báo là một bài tổng quan thay vì nghiên cứu tiên tiến, chỉ ra rằng các bài báo khoa học máy tính thực sự phức tạp vẫn khó hiểu như những bài báo trong các lĩnh vực khác.
Cuộc thảo luận đã tiết lộ một sự tương phản thú vị giữa các lĩnh vực khác nhau của khoa học máy tính. Trong khi bài báo về hệ thống build này sử dụng ngôn ngữ hàng ngày và giải thích rõ ràng, các bài báo khoa học máy tính lý thuyết thường đòi hỏi sự cố gắng đáng kể ngay cả với các lập trình viên có kinh nghiệm mới có thể hiểu được.
Khủng hoảng bản sắc Khoa học máy tính và Kỹ thuật phần mềm
Một cuộc tranh luận triết học sâu sắc hơn đã nổi lên về việc liệu phát triển phần mềm hiện đại có nên được gọi là khoa học máy tính hay một cái gì đó khác. Một số thành viên cộng đồng coi thường phần lớn thực tiễn hiện tại như nghề mộc kỹ thuật số, trong khi những người khác ưa thích thuật ngữ đã được thiết lập hơn là kỹ thuật phần mềm.
Khoa học máy tính là một khoa học hình thức với các yếu tố thực nghiệm, dù tôi muốn nghĩ về nó như một nhánh của toán học.
Câu hỏi về bản sắc này cũng chạm đến các phương pháp giáo dục. Hầu hết các lập trình viên học khoa học máy tính ở trường, nhưng chương trình học của họ tập trung nhiều vào các kỹ năng thực tế hơn là nền tảng lý thuyết. Không giống như các lĩnh vực kỹ thuật truyền thống, kỹ thuật phần mềm không xây dựng dựa trên các nguyên lý kỹ thuật chung mà phát triển trực tiếp từ khoa học máy tính và toán học.
Tác động thực tế đến các công cụ Build hiện đại
Ngoài các cuộc thảo luận học thuật, bài báo đã có ảnh hưởng thực tế đến các hệ thống build thực tế. Neil Mitchell, một trong những đồng tác giả, đã tạo ra hệ thống build Shake dựa trên nghiên cứu này. Các hệ thống Buck và Buck2 của Meta cũng có nguồn gốc từ những ý tưởng này, với Buck2 được khen ngợi là phần mềm xuất sắc nhưng tiếc là vẫn còn nhỏ lẻ do các thách thức về hệ sinh thái.
Cộng đồng đã lưu ý đến vấn đề con gà và quả trứng với các hệ thống build mới hơn như Buck2. Mặc dù vượt trội về mặt kỹ thuật so với các công cụ đã được thiết lập như Bazel, chúng gặp khó khăn trong việc được chấp nhận rộng rãi mà không có một hệ sinh thái mạnh mẽ của các công cụ và thư viện hỗ trợ.
Các Hệ Thống Build Được Đề Cập Trong Thảo Luận:
- MAKE (truyền thống, được sử dụng rộng rãi)
- Shake (được tạo ra bởi đồng tác giả Neil Mitchell dựa trên bài báo này)
- Buck/Buck2 (các hệ thống của Meta, hậu duệ của nghiên cứu này)
- Bazel (hệ thống của Google với hệ sinh thái lớn hơn)
- Blaze (tiền thân nội bộ của Google trước Bazel)
Kết luận
Bài báo học thuật này đã làm được nhiều hơn là chỉ giải thích các hệ thống build - nó đã khơi dậy sự suy ngẫm có ý nghĩa về mối quan hệ giữa lý thuyết khoa học máy tính và thực hành phát triển phần mềm. Cuộc thảo luận làm nổi bật những căng thẳng đang diễn ra giữa tính dễ tiếp cận và sự nghiêm ngặt trong viết lách kỹ thuật, cũng như các câu hỏi về cách chúng ta định nghĩa và dạy phát triển phần mềm như một ngành học. Dù chúng ta gọi nó là khoa học máy tính, kỹ thuật phần mềm, hay nghề mộc kỹ thuật số, cộng đồng rõ ràng đánh giá cao nghiên cứu kết nối khoảng cách giữa lý thuyết và thực hành hàng ngày.
Tham khảo: Build Systems à la Carte