Lịch sử của JavaScript: ECMAScript, TC39 và hơn thế nữa

JavaScript là một ngôn ngữ sống liên tục bổ sung các tính năng mới. Những gì tôi muốn làm trong bài viết này là chia nhỏ quy trình đó và hiển thị các bước cần thiết cho một tính năng mới để đi từ một ý tưởng đơn giản đến một phần của đặc tả chính thức. Để làm điều đó, chúng tôi sẽ cần bao gồm ba điều: ECMA, ECMAScript và TC39.

Lưu ý rằng tôi đã ghi lại một phiên bản video của bài viết này, nếu bạn muốn xem nó:

Hãy để chính chúng ta trở lại năm 1995. Trò chơi nặng ký cổ điển đình đám đã ra rạp, Nicolas Cage đã giành được một giải Oscar và các trang web trông giống như thế này. Bây giờ, tỷ lệ cược là cách bạn đã xem trang web này với Netscape Navigator.

Vào thời điểm đó, Netscape Navigator là trình duyệt web phổ biến nhất với gần 80% thị phần. Người sáng lập Netscape, công ty đứng sau Netscape Navigator, là Mark Andreessen. Ông có một tầm nhìn cho tương lai của web và nó không chỉ là một cách để chia sẻ và phân phối tài liệu. Ông đã hình dung ra một nền tảng năng động hơn với khả năng tương tác phía máy khách - một loại keoauge langauge, dễ sử dụng bởi cả nhà thiết kế và nhà phát triển.

Đây là nơi Brendan Eich đi vào bức tranh. Anh được Netscape tuyển dụng với mục tiêu nhúng ngôn ngữ lập trình Scheme vào Netscape Navigator. Nhưng trước khi có thể bắt đầu, Netscape đã hợp tác với Sun microsystems để cung cấp ngôn ngữ lập trình sắp tới và Java của họ có sẵn trong trình duyệt. Bây giờ điều này đặt ra câu hỏi, nếu If Java đã là một ngôn ngữ phù hợp, tại sao lại mang Brendan để tạo ra một ngôn ngữ khác?

Chà, nếu bạn nhớ lại mục tiêu của Netscape, họ muốn có một ngôn ngữ kịch bản đủ đơn giản để các nhà thiết kế và nghiệp dư sử dụng - Java là một điều đó. Vì vậy, ý tưởng đã trở thành Java có thể được sử dụng bởi các chuyên gia và Hồi Mocha, vốn là tên ban đầu của JavaScript, sẽ được sử dụng bởi mọi người khác.

Do sự hợp tác này giữa các ngôn ngữ, Netscape đã quyết định rằng Mocha cần phải khen ngợi Java và nên có một cú pháp tương đối giống nhau. Sau đó, chỉ trong 10 ngày, Brendan đã tạo ra phiên bản Mocha đầu tiên vẫn có một số chức năng từ Scheme, hướng đối tượng của SmallTalk và cú pháp của Java. Cuối cùng, tên Mocha đã đổi thành LiveScript và sau đó LiveScript đổi thành JavaScript như một mánh khóe tiếp thị để thúc đẩy sự cường điệu của Java. Vì vậy, tại thời điểm này, JavaScript được bán trên thị trường như một ngôn ngữ kịch bản cho trình duyệt - có thể truy cập được cho cả người nghiệp dư và nhà thiết kế trong khi Java là công cụ chuyên nghiệp để xây dựng các thành phần web phong phú.

Bây giờ, điều quan trọng là phải hiểu bối cảnh khi những sự kiện này xảy ra. Bên cạnh Nicolas Cage giành giải Oscar, Microsoft cũng đang làm việc trên Internet Explorer. Vì JavaScript về cơ bản đã thay đổi trải nghiệm người dùng trên web, nếu bạn là một trình duyệt cạnh tranh, bạn không có lựa chọn nào khác ngoài việc đưa ra triển khai JavaScript của riêng mình kể từ khi nó chưa được chuẩn hóa. Vì vậy, đó chính xác là những gì Microsoft đã làm và họ gọi nó là JScript.

Điều này dẫn đến một vấn đề khá nổi tiếng trong lịch sử internet. JScript điền vào trường hợp sử dụng giống như JavaScript, nhưng cách triển khai của nó là khác nhau. Điều này có nghĩa là bạn không thể xây dựng một trang web và mong đợi nó hoạt động trên cả Internet Explorer và Nestscape Navigator. Trên thực tế, hai cách triển khai khác nhau đến mức mà Best Best được xem trong Netscape, và Được xem tốt nhất trong các logo Internet Explorer, đã trở nên phổ biến đối với hầu hết các công ty không thể đủ khả năng để xây dựng cho cả hai triển khai.

Đây là nơi Ecma đi vào hình ảnh. Ecma International là một hiệp hội công nghiệp được thành lập vào năm 1961, dành riêng cho việc tiêu chuẩn hóa hệ thống thông tin và truyền thông. Vào tháng 11 năm 1996, Netscape đã gửi JavaScript cho Ecma để xây dựng một đặc tả tiêu chuẩn.

Bằng cách này, nó đã mang lại cho những người triển khai khác tiếng nói trong sự phát triển của ngôn ngữ và, lý tưởng nhất, nó sẽ giữ cho các triển khai khác nhất quán trên các trình duyệt. Vì vậy, hãy để Lặn đi sâu vào cách Ecma hoạt động.

Mỗi đặc điểm kỹ thuật mới đi kèm với một tiêu chuẩn và một ủy ban. Trong trường hợp JavaScript, tiêu chuẩn là ECMA-262 và ủy ban hoạt động trên tiêu chuẩn ECMA-262 là TC39. Nếu bạn tra cứu tiêu chuẩn ECMA262, bạn sẽ nhận thấy rằng thuật ngữ JavaScript JavaScript không bao giờ được sử dụng. Thay vào đó, họ sử dụng thuật ngữ EcmaScript 'để nói về ngôn ngữ chính thức. Lý do cho điều này là do Oracle sở hữu nhãn hiệu cho thuật ngữ JavaScript JavaScript, vì vậy để tránh các vấn đề pháp lý, Ecma đã sử dụng thuật ngữ EcmaScript để thay thế.

Trong thế giới thực, ECMAScript thường được sử dụng để chỉ tiêu chuẩn chính thức, EMCA-262, trong khi JavaScript được sử dụng khi nói về ngôn ngữ trong thực tế. Như đã đề cập trước đó, ủy ban giám sát sự phát triển của tiêu chuẩn Ecma262 là TC39, viết tắt của Ủy ban Kỹ thuật 39.

TC39 được tạo thành từ các thành viên của nhóm Cameron, những người thường là nhà cung cấp trình duyệt và các công ty lớn, những người đã đầu tư rất nhiều vào web như Facebook và PayPal. Để tham dự các cuộc họp, các thành viên của nhóm Cameron (một lần nữa, các công ty lớn và nhà cung cấp trình duyệt) sẽ cử đại biểu của nhóm Cameron đến đại diện cho công ty hoặc trình duyệt nói trên. Nó ủng hộ những đại biểu chịu trách nhiệm tạo, phê duyệt hoặc từ chối các đề xuất ngôn ngữ.

Khi một đề xuất mới được tạo ra, đề xuất đó phải trải qua các giai đoạn nhất định trước khi nó trở thành một phần của đặc tả chính thức. Điều quan trọng cần ghi nhớ là để bất kỳ đề xuất nào chuyển từ giai đoạn này sang giai đoạn khác, phải đạt được sự đồng thuận giữa TC39. Điều này có nghĩa là phần lớn phải đồng ý trong khi không ai hoàn toàn không đồng ý đủ để phủ quyết một đề xuất cụ thể.

Mỗi đề xuất mới bắt đầu ở Giai đoạn 0. Giai đoạn này được gọi là giai đoạn Strawman. Các đề xuất của Giai đoạn 0 là các đề xuất của người được dự kiến ​​sẽ được trình bày trước ủy ban bởi một nhà vô địch TC39 hoặc, đã được trình bày trước ủy ban và không bị từ chối dứt khoát, nhưng chưa đạt được bất kỳ tiêu chí nào để vào giai đoạn 1. yêu cầu duy nhất để trở thành đề xuất Giai đoạn 0 là tài liệu phải được xem xét tại cuộc họp TC39. Điều quan trọng cần lưu ý là sử dụng tính năng Giai đoạn 0 trong cơ sở mã của bạn là tốt, nhưng ngay cả khi nó tiếp tục trở thành một phần của thông số chính thức, thì nó sẽ gần như chắc chắn trải qua một vài lần lặp lại trước đó.

Giai đoạn tiếp theo trong sự trưởng thành của một đề xuất mới là Giai đoạn 1. Để tiến tới Giai đoạn 1, một nhà vô địch chính thức của Cameron, một phần của TC39 phải được xác định và chịu trách nhiệm về đề xuất này. Ngoài ra, đề xuất cần mô tả vấn đề mà nó giải quyết, có các ví dụ minh họa về việc sử dụng, API cấp cao và xác định bất kỳ mối quan tâm tiềm ẩn và thách thức triển khai nào. Bằng cách chấp nhận đề xuất cho giai đoạn 1, ủy ban cho biết họ sẵn sàng dành nguồn lực để xem xét đề xuất sâu hơn.

Giai đoạn tiếp theo là Giai đoạn 2. Tại thời điểm này, nhiều khả năng tính năng này cuối cùng sẽ trở thành một phần của thông số kỹ thuật chính thức. Để đưa nó đến giai đoạn 2, đề xuất phải, bằng ngôn ngữ chính thức, phải có mô tả về cú pháp và ngữ nghĩa của tính năng mới. Nói cách khác, một bản nháp hoặc phiên bản đầu tiên của những gì sẽ có trong đặc tả chính thức được viết. Đây là giai đoạn để thực sự khóa tất cả các khía cạnh của tính năng. Những thay đổi trong tương lai vẫn có thể xảy ra, nhưng chúng chỉ nên là những thay đổi nhỏ, gia tăng.

Tiếp theo là Giai đoạn 3. Tại thời điểm này, đề xuất hầu hết đã kết thúc và bây giờ nó chỉ cần phản hồi từ người thực hiện và người dùng để tiến xa hơn. Để chuyển sang Giai đoạn 3, văn bản đặc tả phải được hoàn thành và ít nhất hai triển khai tuân thủ thông số kỹ thuật phải được tạo.

Giai đoạn cuối cùng là Giai đoạn 4. Tại thời điểm này, đề xuất đã sẵn sàng để được đưa vào thông số kỹ thuật chính thức. Để đến Giai đoạn 4, các bài kiểm tra phải được viết, hai triển khai tuân thủ thông số kỹ thuật phải vượt qua các bài kiểm tra đó, các thành viên cần có kinh nghiệm thực tế quan trọng với tính năng mới và trình chỉnh sửa thông số EcmaScript phải đăng xuất trên văn bản cụ thể. Về cơ bản một khi một đề xuất được đưa đến giai đoạn 4, nó sẵn sàng dừng lại là một đề xuất và đi vào đặc tả chính thức. Điều này mang đến điều cuối cùng bạn cần biết về toàn bộ quá trình này và đó là lịch phát hành của TC39.

Kể từ năm 2016, một phiên bản mới của ECMAScript được phát hành hàng năm với bất kỳ tính năng nào đã sẵn sàng tại thời điểm đó. Điều đó có nghĩa là bất kỳ đề xuất Giai đoạn 4 nào tồn tại khi phát hành mới xảy ra, sẽ được đưa vào bản phát hành cho năm đó. Do chu kỳ phát hành hàng năm này, các tính năng mới sẽ ngày càng gia tăng và dễ áp ​​dụng hơn.

Đây là một phần trong khóa học tylermcginnis.com của tôi.