06/10/2026 · VietTechies · Biên tập

JavaScript không được thiết kế qua nhiều năm họp hành của các ủy ban.
Brendan Eich xây prototype đầu tiên trong 10 ngày.
Đó là tháng 5/1995.
Netscape cần một ngôn ngữ kịch bản cho trình duyệt.
Web đang bùng nổ.
Java đang có đà phát triển rất mạnh.
Và ban lãnh đạo muốn một ngôn ngữ mà developer có thể viết trực tiếp trong trang Web.
Eich gần như không có thời gian.
Thứ ra đời từ deadline đó cuối cùng lại chạy trong gần như mọi trình duyệt lớn trên thế giới.
Ông gia nhập Netscape với kỳ vọng đưa Scheme vào trình duyệt
Eich từng viết rằng một lý do ông vào Netscape là lời hứa được đưa ngôn ngữ kiểu Scheme vào trình duyệt.
Scheme có thiết kế thanh thoát và mạnh mẽ.
Nhưng khi ông tới, tình hình đã đổi.
Java của Sun đang thu hút sự chú ý khổng lồ.
Netscape đang đàm phán với Sun.
Trình duyệt vẫn cần ngôn ngữ kịch bản nhẹ — dễ và nhanh viết hơn Java, nhưng đủ quen để developer Web chấp nhận.
Ràng buộc về chiến lược và quan hệ giữa các bên quan trọng gần ngang ràng buộc kỹ thuật.
Ngôn ngữ không được trông quá hàn lâm.
Cú pháp cần quen với lập trình viên đến từ C và Java.
Trong khi đó, Eich muốn giữ những ý tưởng linh hoạt hơn ở bên dưới.
Rồi tới prototype 10 ngày
Sau này Eich viết rất thẳng:
“I wrote JavaScript in ten days.”
Engine prototype được làm trong tháng 5/1995.
Ban đầu ngôn ngữ có tên Mocha.
Nó được thiết kế để chạy trực tiếp trong Netscape Navigator và thông dịch code nhúng trong trang Web.
Dù deadline cực ngắn, prototype đã chứa nhiều ý tưởng định hình JavaScript hàng chục năm sau.
First-class function.
Đối tượng dựa trên prototype.
Kiểu động.
Quản lý bộ nhớ tự động.
Và cú pháp chịu áp lực phải trông giống Java/C.
Cái tên đổi liên tục vì thị trường cũng đang đổi liên tục
Mocha không giữ tên ban đầu.
Nó trở thành LiveScript.
Rồi cuối năm 1995, Netscape và Sun công bố JavaScript.
Tên mới chủ ý gắn ngôn ngữ với làn sóng quan tâm đến Java.
Quyết định tiếp thị này tạo ra nhầm lẫn kéo dài tới tận hôm nay.
JavaScript không phải phiên bản nhỏ của Java.
Hai ngôn ngữ có hệ kiểu, mô hình đối tượng và lịch sử thiết kế rất khác nhau.
Tên của chúng trở thành hàng xóm trước khi bản thân language có liên hệ đáng kể.
Thiết kế gấp để lại nợ kỹ thuật
Eich chưa bao giờ giả vờ rằng 10 ngày là đủ để thiết kế một ngôn ngữ hoàn hảo.
Ông công khai nhiều quyết định mà nếu làm lại sẽ chọn khác.
Một số điểm khó dùng của JavaScript tồn tại vì prototype trở thành sản phẩm trước khi có cơ hội làm lại từ đầu.
Cơ chế tự chèn dấu chấm phẩy.
Những phép chuyển đổi dễ gây nhầm lẫn.
Hành vi lịch sử kỳ lạ quanh kiểu dữ liệu và đối tượng.
Sau đó, yêu cầu tương thích khiến nhiều hành vi rất khó loại bỏ.
Khi hàng triệu trang Web đã phụ thuộc vào một thứ, kể cả sai sót cũng trở thành một phần của nền tảng.
Nhưng những điểm chưa hoàn hảo lại làm lộ ra điều lớn hơn
JavaScript thành công vì giúp lập trình trang Web mà developer không phải biên dịch rồi phân phối một ứng dụng riêng.
Một đoạn code nhỏ đi cùng page.
Trình duyệt đã có sẵn trên máy người dùng.
Ngôn ngữ có thể phản hồi cú nhấp chuột, đổi nội dung, kiểm tra biểu mẫu rồi sau này vận hành cả ứng dụng.
Web không còn chỉ là tập hợp tài liệu.
Nó trở thành nền tảng phần mềm.
Chuyển biến đó không xảy ra vì JavaScript hoàn hảo về lý thuyết.
Nó xảy ra vì JavaScript xuất hiện đúng nơi developer cần nó.
Chuẩn hóa tới sau khi đã được sử dụng
Thành công tạo thêm vấn đề khác.
Các hãng trình duyệt khác cần bản triển khai tương thích.
Microsoft phát hành JScript.
Netscape thúc đẩy chuẩn hóa qua Ecma.
Ngôn ngữ được chuẩn hóa mang tên ECMAScript.
Từ đó, JavaScript phải phát triển dưới một ràng buộc rất khó:
Cải thiện ngôn ngữ nhưng không phá vỡ Web.
Điều đó khó hơn nhiều so với thiết kế một ngôn ngữ gọn gàng từ đầu.
Câu chuyện “10 ngày” thường bị hiểu sai
Mọi người hay kể nó như bằng chứng sản phẩm lớn có thể làm trong chớp mắt.
Đó không phải bài học đúng.
Eich đã có nhiều năm kinh nghiệm về ngôn ngữ lập trình và compiler trước Netscape.
Ông làm trong công ty có trình duyệt tăng trưởng cực nhanh, dưới áp lực thị trường đặc biệt mạnh, với ràng buộc rõ và kênh phân phối gần như tức thì.
Prototype mất 10 ngày.
Kiến thức đứng sau prototype mất lâu hơn rất nhiều.
Và chính ngôn ngữ đã cần hàng chục năm sửa chữa, chuẩn hóa và phát triển.
Tốc độ mạnh nhất khi vòng phản hồi cực ngắn
Điểm quan trọng không chỉ là Eich làm nhanh.
Prototype có thể lập tức nhúng vào browser thật và đưa cho developer thật dùng.
Vòng phản hồi rất ngắn.
Build.
Tích hợp.
Test.
Phát hành.
Quan sát.
Môi trường đó làm prototype còn thô có giá trị đặc biệt.
Nhiều team hiện nay làm ngược lại.
Họ dành nhiều tháng trau chuốt kiến trúc trước khi sản phẩm tới tay người dùng.
Câu chuyện ra đời của JavaScript gợi một chiến lược khác:
Khi thị trường thay đổi nhanh, một prototype đủ tốt trong đúng kênh phân phối có thể đáng giá hơn thiết kế hoàn hảo đến quá muộn.
Nhưng prototype có thể trở thành lâu dài nhanh hơn bạn nghĩ
Có một bài học thứ hai khó chịu hơn.
Nếu prototype thành công, người khác xây dựng dựa trên nó.
Rồi tính tương thích trở thành cam kết.
Rồi những góc cạnh chưa hoàn thiện trở thành thứ người khác phụ thuộc vào.
Thứ bạn nghĩ sẽ viết lại có thể biến thành hạ tầng.
JavaScript là một trong những ví dụ rõ nhất của lịch sử phần mềm.
Prototype 10 ngày không ở lại làm prototype.
Nó trở thành một phần môi trường vận hành của Web hiện đại.
Bạn đang xây thứ gì hôm nay với suy nghĩ “chỉ là prototype tạm”, nhưng rất có thể nó sẽ thành hạ tầng trước khi bạn kịp viết lại?
Đọc bằng ngôn ngữ khác: English · Español · Deutsch · Français · Português (Brasil) · Tiếng Việt
Nguồn
- Brendan Eich — New JavaScript Engine Module Owner
- Brendan Eich — các ghi chép lịch sử JavaScript
- Computer History Museum — dòng thời gian năm 1995: JavaScript được phát triển
- Ecma International — JavaScript Language Design and Implementation in Tandem
- Mozilla Foundation — thông tin nền về Brendan Eich và JavaScript
- Ảnh chân dung trong ảnh đại diện — Brendan Eich, ảnh Darcy Padilla, CC BY-SA 3.0 qua Wikimedia Commons. Bản phái sinh đã biên tập tiếp tục theo cùng giấy phép.
