Nói một cách rất đơn giản, điều làm nên một nền tảng đa chương trình là khả năng của bạn để lấy các nguồn từ một môi trường, biên dịch chúng trong một môi trường khác và để sản phẩm hoàn thành hoạt động như mong đợi.
Nói một cách đơn giản hơn, nó có sự chồng chéo hoàn toàn giữa những gì chương trình dự kiến sẽ có sẵn và những gì môi trường mục tiêu của bạn cung cấp. Khi bạn thực hiện bất kỳ thao tác nào trùng lặp dưới 100%, chẳng hạn như sử dụng thư viện dành riêng cho môi trường hoặc tính năng ngôn ngữ với hành vi không xác định, bạn đã gắn chương trình của mình với (các) môi trường có thể cung cấp các tính năng không chồng lấp.
("Nền tảng" là một từ hơi khó hiểu. Mọi người có thể nói về Windows và Unix như các nền tảng hoặc Linux, OS X, BSD và Solaris như các nền tảng mặc dù tất cả đều là Unix. kiến trúc phần cứng và mọi thứ trở nên mơ hồ hơn. Đã nói rằng, tôi sẽ bắt đầu sử dụng từ này.)
May mắn thay, có các tiêu chuẩn để giảm bớt vấn đề này:
Ngôn ngữ. Bạn đang viết C ++, lần đầu tiên được ISO chuẩn hóa vào năm 1998. Bất kỳ chương trình nào bạn viết phù hợp với tiêu chuẩn đó đều có thể được biên dịch và chạy với kết quả mong đợi trên bất kỳ nền tảng nào có trình biên dịch và thời gian chạy phù hợp. Không có giới hạn về kích thước hoặc độ tinh vi của chương trình miễn là nó không đi lệch khỏi tiêu chuẩn. Nếu một chương trình có thể đáp ứng tiêu chuẩn không chạy như mong đợi trên một nền tảng nhất định, việc triển khai ngôn ngữ trên nền tảng đó sẽ bị nghi ngờ. Nhiều ngôn ngữ có các bộ kiểm tra được thiết kế cẩn thận có thể được sử dụng để xác minh sự phù hợp.
Java được đề cập đặc biệt bởi vì nó không chỉ chuẩn hóa một ngôn ngữ, mà còn chuẩn hóa mã đối tượng, giúp các chương trình của nó có thể chạy được ở bất cứ đâu mà không cần biên dịch lại. Điều này được thực hiện bằng cách đẩy điểm phù hợp xuống một lớp bổ sung vào một máy ảo tùy chỉnh nền tảng (hoặc thậm chí phần cứng) có khả năng chạy mã đối tượng.
API. Các cuộc gọi bạn thực hiện để chương trình của bạn thực hiện một số điều nhất định cũng có thể được tiêu chuẩn hóa. Giống như các ngôn ngữ, các API và thư viện triển khai chúng có thể được thiết lập để hoạt động như người gọi mong đợi bằng cách sử dụng triển khai cơ bản phù hợp với một nền tảng cụ thể. Một API như vậy là các tiêu chuẩn POSIX của IEEE , phát sinh như một cách để ngăn chặn sự phân mảnh đang xảy ra trong Unix trong những năm 1980. (Lúc đó tôi đang ở đó; khía cạnh của nó không vui chút nào quá khứ. POSIX đã được áp dụng rộng rãi và vẫn được sử dụng rộng rãi gần 30 năm sau.
Tôi đã thực hiện rất nhiều dự án tuân thủ các tiêu chuẩn vì tôi biết chúng sẽ phải chạy trên nhiều nền tảng. Những gì tôi nhận được cho những rắc rối của mình là mã hoạt động ở mọi nơi tôi dự định chạy nó và làm tôi ngạc nhiên về một số nơi tôi không có.