Cơ sở lịch sử của việc sử dụng Javascript trong lập trình web là gì?


9

Tôi đến từ một nền tảng sinh học khoa học nơi chúng tôi cũng sử dụng Python rất nhiều.

Bây giờ tôi đã bắt đầu bắt đầu với phát triển Web, tôi luôn thấy mình tự hỏi tại sao JavaScript lại là ngôn ngữ phía máy khách chính trên Web.

Là ưu thế của JavaScript là một tai nạn lịch sử hay cái gì khác? Ngoài ra, tôi tò mò liệu có bất kỳ trở ngại nào trong việc tích hợp Python vào kịch bản phía máy khách không?


Điều này có cần sự chú ý của người điều hành dựa trên meta.programmers.stackexchange.com/questions/363/ không?
Rein Henrichs

@Rein - Bạn có thể vote to closenếu bạn cảm thấy điều này không đúng chủ đề. Nếu những người khác cảm thấy như vậy, họ hoặc người điều hành sẽ đi theo sự dẫn dắt của bạn.
jmort253

@ jmort253 (Có lẽ tôi nên chuyển sang meta) Không có sự đồng thuận trong chuỗi liên kết và tôi không rõ ràng. :(
Rein Henrichs

@Rein - Quá trình suy nghĩ trong các bình luận là ổn (vì nó đóng vai trò là một biển chỉ dẫn, tại sao hoặc tại sao không, cộng đồng quyết định hành động trên một bài đăng. Nếu không có thỏa thuận, hãy làm những gì bạn nghĩ là tốt nhất. :) Cá nhân, tôi nghĩ rằng thông tin lịch sử này có thể giúp người khác hiểu về tương lai của JavaScript như một ngôn ngữ và tại sao điều quan trọng là phải hiểu và chấp nhận ngôn ngữ này.
jmort253

Câu trả lời:


16

JavaScript là ngôn ngữ kịch bản đầu tiên được cung cấp trong một trình duyệt Web phổ biến, vì vậy nó được triển khai gần như phổ biến. Là ngôn ngữ lập trình duy nhất có sẵn trong tất cả các trình duyệt phổ biến, không có lựa chọn nào khác ngoài ngôn ngữ lập trình phía khách hàng chiếm ưu thế.

Internet Explorer đã triển khai JavaScript theo cách cho phép các công cụ kịch bản có thể cắm được (nó đi kèm với VBScript và JScript). Nếu bạn thích (như tôi đã làm) để viết mã của mình bằng PerlScript hoặc PythonScript, bạn có thể, nhưng tất cả các máy khách của bạn phải cài đặt ngôn ngữ script đó và họ phải sử dụng IE. Bạn có thể làm điều này cho các dự án nội bộ, nhưng không có cách nào nó sẽ hoạt động trên Internet.


Một thứ khác mà tôi thấy thú vị là các dự án viết trình biên dịch python-to-javascript, ví dụ Pyjama pyjs.org .
lần thứ

"Pyjama là Nền tảng phát triển ứng dụng Internet phong phú (RIA) cho cả Web và máy tính để bàn. Nó chứa trình biên dịch Python-to-Javascript, khung AJAX và API bộ widget. Pyjama bắt đầu cuộc sống như một cổng Python của Bộ công cụ web của Google, Trình biên dịch Java-Javascript. Đọc Câu hỏi thường gặp và danh sách các tính năng. "
lần thứ

Có rất nhiều trình biên dịch javascript. CoffeeScript, TypeScript, ClojureScript, LispyScript, v.v.
Florian Margaine

7

JavaScript ban đầu được tạo bởi Brendan Eich. Nó được phát hành lần đầu tiên với phiên bản beta của Netscape Navigator 2.0 vào tháng 9 năm 1995 dưới dạng LiveScript nhưng được đổi tên thành JavaScript trong một thông báo chung với Sun microsystems vào tháng 12 năm 1995. Chỉ sau đó (vào năm 1996), JavaScript đã được gửi tới Ecma International và cuối cùng trở thành ECMAScript được chuẩn hóa.

Sự thống trị thị trường hiện tại của nó phần lớn là do quán tính lịch sử.

Nguồn: http://en.wikipedia.org/wiki/JavaScript#History


2

Không chắc chắn, nhưng đó là một ngôn ngữ kịch bản khách hàng nhẹ. Tôi nghĩ nguồn gốc của nó nằm với các trình duyệt Netscape đời đầu (mặc dù tôi có thể sai). Thật vậy, tên của nó đã được thay đổi trước khi phát hành để bao gồm từ "java" mặc dù nó không liên quan gì đến java. Đó là một chiến thuật nhanh chóng để có được sự nổi tiếng vào thời điểm đó.


1

Tôi chắc chắn rằng nó có rất nhiều liên quan đến lịch sử.

Nhưng tôi cũng chắc chắn rằng tôi không muốn các trang web có thể chạy các ngôn ngữ lập trình đầy đủ tính năng như python trên trình duyệt của tôi. Ý nghĩa bảo mật sẽ khiến tôi sợ hãi khỏi bất kỳ trang web nào như thế (hoặc tôi sẽ phải rất chắc chắn rằng hộp cát của trình duyệt đã kín gió).


Điều đó không có ý nghĩa. CNTT tùy thuộc vào môi trường để quyết định API nào có sẵn cho ngôn ngữ lập trình. Tất nhiên, nếu Python được vận chuyển trong các trình duyệt, nó sẽ có quyền truy cập vào cùng API mà Javascript hiện có (như DOM), vì vậy nó sẽ không có cách nào để tạo ra bất kỳ thiệt hại nào.
Andrea

@Andrea - bạn có thể lập luận rằng một ngôn ngữ có nhiều thư viện chuẩn như cú pháp và ngữ nghĩa của nó. Javascript không có thư viện chuẩn cho I / O tệp và đó là cố ý, vì lý do bảo mật. Python có các thư viện chuẩn cho I / O tệp và cho rất nhiều thứ khác có thể được coi là vấn đề bảo mật. Không cho phép những điều này và được cho là bạn không còn giao dịch với Python nữa. Cách đây rất lâu, Python có một hộp cát - tôi nhớ nó tồn tại ở đó xung quanh phiên bản 1.5 - nhưng đã bị IIRC bỏ rơi vì nó không được sử dụng đủ và cách xa không khí.
Steve314

Các thư viện chuẩn cho I / O trong Javascript đang được viết. Tất nhiên những thứ này không có sẵn trong trình duyệt. Tôi chỉ nói rằng nếu Python được triển khai trong trình duyệt thì các thư viện không an toàn sẽ không khả dụng. Và có lẽ bạn sẽ không bỏ lỡ chúng, vì chúng không được sử dụng trên một trang web.
Andrea

-2

"Là ưu thế của JavaScript là một tai nạn lịch sử hay cái gì khác?"

Cá nhân tôi cho rằng thành công của JS là vấn đề thiết kế cũng như nhiều người đã và sẽ tiếp tục không muốn thừa nhận nó và không chỉ là một tai nạn hay chỉ đơn thuần là do đó là đứa trẻ đầu tiên trên sân chơi.

Mặc dù được đặt tên để thu hút các nhà phát triển Java và được cú pháp như cú pháp dựa trên C của Java cũng để thu hút các nhà phát triển Java, Brendan Eich đã đưa ra một trong những quyết định tồi tệ nhất trong lịch sử của www, chủ yếu rút ra từ Đề án cho cơ chế ngôn ngữ thực tế nguồn cảm hứng, đó là điều mà các nhà phát triển Java dường như không thích lắm (điều mà tôi thấy rất thú vị).

JavaScript sử dụng tính kế thừa nguyên mẫu rất linh hoạt / dạng hạt cho OOP, nó có các bao đóng, các kiểu là 100% động, bản thân các hàm là hạng nhất cho phép chúng được truyền xung quanh như bất kỳ đối tượng hoặc kiểu dữ liệu nào khác và được sử dụng lại trong các ngữ cảnh khác nhau và thậm chí được áp dụng cho các đối tượng một cách nhanh chóng như thể chúng đã được tuyên bố là thành viên đối tượng thực tế ngay từ đầu. Nó thực sự được hét lên để được sử dụng cho các kiến ​​trúc hướng sự kiện cần bình thường hóa một tấn rác độc quyền hoặc xử lý các vấn đề UI phi tuyến tính cao.

Vào cuối buổi bình minh của web, đây là ngôn ngữ duy nhất thực hiện nghiêm túc nhiệm vụ bình thường hóa các trình duyệt thông qua một cuộc chiến trình duyệt thực tế trong đó Netscape và IE đã cố gắng làm những việc khác nhau theo mục đích, sau hơn 10 năm trình duyệt Giả sử IE chỉ làm khác đi vì MS lười biếng và tự vướng vào một số thực tiễn chống cạnh tranh ngu ngốc chính đáng dẫn đến sự trì trệ của trình duyệt, và bây giờ là một thế giới nơi các trình duyệt cuối cùng bắt đầu đồng ý về cùng một thông số chung về HTML, CSS và API API với IE chỉ chậm hơn 2-3 năm so với những phát triển mới nhất thay vì 10 do Google và Mozilla tung ra các trình biên dịch JIT khiến cho số hiệu năng của IE trông rất thảm hại, cuối cùng MS đã xấu hổ trong việc hiện đại hóa các trình duyệt chết tiệt của chúng.IE9 là người đầu tiên thực sự nâng cấp nghiêm túc hỗ trợ API DOM lên các mức mà Netscape đã hỗ trợ từ năm 2000.

JS đã có sự cạnh tranh dưới dạng Applet Java và ActionScript cho Flash của Adobe. Đó là về nó trên mặt trận nghiêm túc. MS đã cố gắng đẩy VB nhưng thất bại thảm hại vì ... à ... VB. Ngoài ra, độc quyền. Thực tế đã có rất nhiều trang Flash hơn hầu hết mọi người nhận ra. Bạn không thể tìm thấy những điều ngớ ngẩn với công cụ tìm kiếm. Applet đã làm việc riêng của họ, và nó thật xấu xí. Thật xấu xí. JS là ngôn ngữ duy nhất thực sự giải quyết vấn đề hoạt động trong bối cảnh nhiều trình duyệt bởi những người không đồng ý về việc ai đang đặt thông số kỹ thuật mà họ phải phù hợp với.

Trong những năm gần đây, JS đã bùng nổ vào một miền ứng dụng rộng lớn hơn nhiều. Kết hợp với các công nghệ web khác, về cơ bản, nó sẽ vượt qua tất cả các giải pháp khác trên mặt trận di động vì công nghệ web thực sự là lựa chọn thực tế duy nhất ngay bây giờ nếu bạn thực sự muốn viết một ứng dụng và ứng dụng này hoạt động trên mọi thứ.

Vì vậy, không, và vâng, tôi là một fan hâm mộ lớn, nhưng tôi không nghĩ rằng nó đã chặn tất cả các ứng cử viên khác ở phía khách hàng một cách tình cờ, ngoài việc nó trở nên phổ biến bùng nổ bên ngoài trình duyệt có thể được coi là một tai nạn. Trước JS, không có nhiều ngôn ngữ giống như Scheme ngoài kia chủ yếu mang tính học thuật. Điều đó mang lại cho JS một số lợi thế mạnh mẽ và các nhu cầu độc đáo của phía khách hàng khiến cho những lợi thế đó có thể dần trở nên rõ ràng.


Bạn đề cập đến Đề án hai lần mà không bao giờ nói rằng JS liên quan đến Lược đồ như thế nào. Chắc chắn bạn không nghĩ rằng JS có macro, biểu thức S, đệ quy đuôi, tiếp tục hoặc bất kỳ tính năng phân biệt nào khác của Scheme - bạn có hiểu không?
Gabe

@Gabe. Kiểm tra khối văn bản thứ 4. Đóng, gõ động, và các chức năng hạng nhất là khá lớn. Thực tế JS sử dụng cú pháp giống như c sẽ không cho phép sử dụng macro Scheme. Đây không phải là bản sao theo từng tính năng của Scheme nhưng chắc chắn nó bị ảnh hưởng bởi nó.
mike30

Vì vậy, đóng cửa và gõ động làm cho một ngôn ngữ giống như Scheme? Điều đó có nghĩa là C # giống như Scheme? Còn Ruby, Python và Perl thì sao? Và tại sao Scheme chứ không phải Lisp hoặc bất kỳ ngôn ngữ tương tự nào khác?
Gabe

@Gabe Tôi không phải là chuyên gia về Scheme nhưng trên wikipedia thông thường, tôi muốn nói rằng sự kết hợp của phạm vi từ vựng, các hàm hạng nhất và các bao đóng là ba thứ đặt JS gần với Scheme hơn rất nhiều so với Java. Mặt khác, tôi chỉ dùng từ của Brendan Eich và cho rằng các chức năng hạng nhất phù hợp là điểm nổi bật chính.
Erik Reppen

OK, vì vậy, JS có các bao đóng (mà tôi tin rằng hàm ý các hàm hạng nhất và phạm vi từ vựng) và kiểu gõ động, như Scheme. Vì C # có các bao đóng, gõ động và một dạng biểu thức S giới hạn, điều đó có nghĩa là C # thậm chí giống Scheme hơn so với JS?
Gabe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.