Hãy cho bạn một ví dụ thực tế.
Khoảng 15 năm trước tôi đã làm việc về việc chuyển một hệ thống lớn được viết bằng C từ Unix sang Windows, đó là khoảng 3 triệu dòng mã. Để cung cấp cho bạn một số ý tưởng về quy mô, phải mất 24 giờ để biên dịch trên một số hệ thống unix của chúng tôi (RS6000), các cửa sổ có thể biên dịch hệ thống trong khoảng 4 giờ.
(Chúng tôi cũng có 2 triệu dòng mã bằng ngôn ngữ được dịch riêng, nhưng quyết định không sử dụng ngôn ngữ của chúng tôi cho các hệ thống xây dựng vì nó không bao giờ được thiết kế để xử lý tệp. .)
Vào thời điểm hệ thống xây dựng được viết bằng hỗn hợp các tập lệnh shell và tạo các tệp, chúng không thể di chuyển được tới windows - do đó chúng tôi quyết định viết hệ thống xây dựng của riêng mình.
Chúng tôi có thể đã sử dụng C, tuy nhiên chúng tôi quyết định sử dụng python, có vài lý do. (Chúng tôi cũng viết lại hệ thống kiểm soát mã nguồn của chúng tôi bằng python cùng một lúc, điều này rất được nâng cấp với hệ thống xây dựng, vì vậy các tệp đối tượng để kiểm tra trong các mô-đun có thể được chia sẻ bởi các nhà phát triển.)
Hầu hết các mã của chúng tôi có thể được xây dựng với một vài quy tắc đơn giản (chỉ vài nghìn dòng python cho tất cả các nền tảng, Windows, VMS và 6 phiên bản Unix) được đưa ra từ các quy ước đặt tên của các tệp.
Vào thời điểm RegEx không chuẩn lắm giữa các hệ thống C trên các nền tảng khác nhau, Python đã tích hợp sẵn trong RegEx.
Một vài mô-đun cần các bước xây dựng tùy chỉnh, Python cho phép các tệp lớp được tải động. Chúng tôi đã cho phép một lớp tùy chỉnh được sử dụng để xây dựng một mô-đun (lib), dựa trên việc có tệp python có tên ma thuật trong thư mục. Đây là lý do giết người để sử dụng trăn.
Chúng tôi đã xem xét Java, nhưng nó không được vận chuyển trên tất cả các nền tảng tại thời điểm đó.
(Giao diện người dùng cho hệ thống kiểm soát mã nguồn của chúng tôi đã sử dụng trình duyệt web vì nó có thể di động trên tất cả các nền tảng. Đây là 6 tháng trước khi chúng tôi có kết nối internet. Chúng tôi phải tải xuống trình duyệt qua X25!)