- 50 năm đổi mới của Microsoft bắt đầu từ mã Altair BASIC
- Sản phẩm đầu tiên tồn tại trước cả Office, Windows 95, Xbox và AI
- Chính đoạn mã này đã mở ra kỷ nguyên máy tính cá nhân và trở thành nền tảng cho sự phát triển của Microsoft
Đoạn mã tuyệt nhất tôi từng viết
- Năm 1975, Bill Gates và Paul Allen thành lập Microsoft với tầm nhìn “một chiếc máy tính trên mọi bàn làm việc và trong mọi ngôi nhà”
- Việc Microsoft bước sang tuổi 50 có công rất lớn của những nhà lãnh đạo xuất sắc như Steve Ballmer, Satya Nadella cùng vô số nhân viên
- Đón cột mốc mang tính biểu tượng này, Gates vừa vui mừng vừa có chút nuối tiếc
- Ông cảm thấy như mới hôm qua mình còn ngồi lập trình trước chiếc PDP-10 ở Harvard
- Khởi đầu của Microsoft đến từ trang bìa tạp chí Popular Electronics năm 1975, nơi Gates nhìn thấy máy tính Altair 8800
- Altair là một PC dạng kit do công ty điện tử nhỏ MITS tạo ra, và vào thời điểm đó đây là một sản phẩm mang tính đột phá
- Ngay khoảnh khắc nhìn thấy cuốn tạp chí, Gates và Allen nhận ra cuộc cách mạng PC đang đến gần và quyết định tham gia vào làn sóng đó
Lý do quyết định viết mã BASIC
- Từ thời còn là học sinh, cả hai đã say mê máy tính tại trường Lakeside
- Họ bị ấn tượng bởi việc Altair có thể mang đến cơ hội lập trình cho cả người bình thường
- Gates và Allen đã chủ động đề xuất với MITS rằng họ đã phát triển ngôn ngữ BASIC cho Altair
- Nhưng thực tế đó là phần mềm còn chưa hề tồn tại, nên họ phải tự tay tạo ra nó
Khái niệm cơ bản của ngôn ngữ BASIC
- BASIC là ngôn ngữ lập trình dành cho người mới bắt đầu, do hai giáo sư tại Dartmouth tạo ra vào năm 1964
- Nó được thiết kế để ngay cả người hoàn toàn không có kinh nghiệm máy tính cũng có thể tự tạo chương trình chỉ sau một thời gian học ngắn
- Ví dụ: chương trình tính số dư sổ séc, trò chơi cờ ca-rô
- Đây là ngôn ngữ lập trình đầu tiên mà Gates và Allen học, và đến nay vẫn còn được sử dụng
- BASIC là ngôn ngữ để ra lệnh cho máy tính giống như tiếng Anh, cho phép thực thi lệnh, giải toán và thực hiện các chức năng
Cách để máy tính hiểu được BASIC
- Vấn đề là máy tính không thể tự hiểu BASIC
- Gates và Allen quyết định tạo ra một interpreter có thể dịch và thực thi mã BASIC từng dòng một thành lệnh máy tính
- Cách này có ưu điểm là cung cấp phản hồi theo thời gian thực, giúp người mới nhanh chóng sửa lỗi
- Họ cũng cân nhắc cách dùng compiler để dịch toàn bộ chương trình cùng lúc, nhưng đánh giá phương pháp interpreter phù hợp hơn với người mới
Bắt đầu phát triển
- Khi đó họ không có chip Intel 8080 dùng trong Altair, nên Paul đã phát triển một chương trình mô phỏng con chip này trên chiếc PDP-10 của Harvard
- Gates viết phần mã chính của interpreter, còn người bạn Monte Davidoff phụ trách mô-đun tính toán
- Trong hai tháng, ba người làm việc ngày đêm để hoàn thành phần mềm vốn chưa từng tồn tại ngoài thực tế
Vượt qua giới hạn bộ nhớ
- Thời đó bộ nhớ máy tính rất đắt đỏ, và việc thêm bộ nhớ cho Altair đôi khi còn tốn hơn cả giá chiếc PC
- Mục tiêu là triển khai interpreter BASIC trong phạm vi 4KB
- Nhờ vậy người dùng vẫn còn đủ bộ nhớ để chạy các chương trình của riêng mình
- Gates đã đạt được mục tiêu này bằng nhiều kỹ thuật tối ưu bộ nhớ khác nhau
- Ví dụ: cấu trúc dữ liệu nén, thuật toán hiệu quả
Sự ra đời của Microsoft
- Sau vô số đêm thức trắng, họ đã trình diễn interpreter BASIC hoàn chỉnh cho Ed Roberts, lãnh đạo của MITS
- Buổi trình diễn thành công và MITS đã mua giấy phép cho phần mềm này
- Thành công đó biến Altair BASIC thành sản phẩm đầu tiên của Microsoft, đồng thời cái tên Micro-Soft cũng ra đời (sau này dấu gạch nối được bỏ đi)
- Chỉ riêng đoạn mã này đã trở thành điểm khởi đầu cho mọi đổi mới của Microsoft trong suốt 50 năm tiếp theo
- Có thể xem câu chuyện chi tiết hơn trong hồi ký Source Code
Tải mã nguồn
- Bạn có thể trực tiếp xem mã nguồn gốc của Altair BASIC, nơi khởi đầu của Microsoft
- Đây là một tư liệu lịch sử cho thấy lập trình đã phát triển đến mức nào trong 50 năm qua, và Gates vẫn cảm thấy rất tự hào về đoạn mã này
Tải mã nguồn (PDF)
2 bình luận
Mã nguồn BASIC cho 6502 mà Microsoft cung cấp theo hình thức OEM (Apple II, Commodore, ...) đã được khôi phục(?) về trạng thái có thể build được.
https://github.com/mist64/msbasic
Cũng có khá nhiều trường hợp tự làm trực tiếp một 6502 SBC rồi port MSBASIC lên đó.
https://github.com/beneater/msbasic
Chỉ trầm trồ thôi cũng hay, nhưng có khi tự mình lao vào sẽ còn thú vị hơn… ;)
Ý kiến trên Hacker News