Apa dasar historis menggunakan Javascript dalam pemrograman web?

9

Saya berasal dari latar belakang biologi ilmiah di mana kami juga banyak menggunakan Python.

Sekarang saya sudah mulai dengan pengembangan Web, saya secara konsisten mendapati diri saya bertanya-tanya mengapa JavaScript adalah bahasa sisi-klien utama di Web.

Apakah dominasi JavaScript adalah kecelakaan historis atau sesuatu yang lain? Juga, saya ingin tahu apakah ada rintangan untuk mengintegrasikan Python ke skrip sisi klien?

rd108
sumber
Apakah ini memerlukan perhatian moderator berdasarkan meta.programmers.stackexchange.com/questions/363/… ?
Rein Henrichs
@Rein - Anda bisa vote to closejika Anda merasa ini di luar topik. Jika orang lain merasakan hal yang sama, baik mereka, atau moderator, akan mengikuti petunjuk Anda.
jmort253
@ jmort253 (Mungkin saya harus pindah ke meta) Tidak ada konsensus di utas terkait dan saya ambivalen. :(
Rein Henrichs
@Rein - Proses pemikiran dalam komentar tidak apa-apa (karena berfungsi sebagai rambu-rambu, mengapa atau mengapa tidak, masyarakat memutuskan untuk mengambil tindakan pada sebuah posting. Jika tidak ada kesepakatan, maka lakukan apa yang menurut Anda terbaik. :) Secara pribadi, saya pikir informasi historis ini dapat membantu orang lain memahami masa depan JavaScript sebagai bahasa dan mengapa penting untuk memahami dan mengadopsi bahasa ini.
jmort253

Jawaban:

16

JavaScript adalah bahasa scripting pertama yang dibuat tersedia di browser Web populer, sehingga diimplementasikan hampir secara universal. Menjadi satu-satunya bahasa pemrograman yang tersedia di semua browser populer, tidak ada pilihan selain menjadikannya bahasa pemrograman sisi klien yang dominan.

Internet Explorer menerapkan JavaScript dengan cara yang memungkinkan mesin scripting pluggable (datang dengan VBScript dan JScript). Jika Anda lebih suka (seperti yang saya lakukan) menulis kode dalam PerlScript atau PythonScript, Anda bisa, tetapi semua klien Anda harus menginstal bahasa skrip itu, dan mereka harus menggunakan IE. Anda dapat melakukan ini untuk proyek-proyek internal, tetapi tidak mungkin itu akan berhasil di Internet.

Gabe
sumber
Hal lain yang menurut saya menarik adalah proyek untuk menulis kompiler python-ke-javascript, misalnya Pyjamas pyjs.org .
rd108
"Piyama adalah Platform Pengembangan Aplikasi Internet Kaya (RIA) untuk Web dan Desktop. Ini berisi kompiler Python-ke-Javascript, kerangka kerja AJAX dan API Set Widget. Piyama memulai kehidupan sebagai port Python dari Google Web Toolkit, yang Kompiler Java-to-Javascript. Baca FAQ dan daftar fitur. "
rd108
Ada banyak kompiler sesuatu-ke-javascript. CoffeeScript, TypeScript, ClojureScript, LispyScript, dll.
Florian Margaine
7

JavaScript pada awalnya dibuat oleh Brendan Eich. Ini pertama kali dikirim dengan rilis beta Netscape Navigator 2.0 pada September 1995 sebagai LiveScript tetapi diganti namanya menjadi JavaScript dalam pengumuman bersama dengan Sun Microsystems pada Desember 1995. Baru kemudian (pada 1996) JavaScript diserahkan ke Ecma International dan akhirnya menjadi ECMAScript standar.

Dominasi pasar saat ini sebagian besar disebabkan oleh kelembaman historis.

Sumber: http://en.wikipedia.org/wiki/JavaScript#History

Rein Henrichs
sumber
2

Tidak yakin, tapi ini adalah bahasa scripting yang ringan, di sisi klien. Saya pikir asalnya terletak dengan browser Netscape awal (meskipun saya bisa saja salah). Memang, namanya diubah sebelum dirilis untuk memasukkan kata "java" meskipun tidak ada hubungannya dengan java. Itu adalah taktik cepat untuk mendapatkan popularitas pada saat itu.

Michael Giovanni Pumo
sumber
1

Saya yakin itu ada hubungannya dengan sejarah.

Tetapi saya juga yakin saya tidak ingin situs web dapat menjalankan bahasa pemrograman berfitur lengkap seperti python di browser saya. Implikasi keamanan akan membuat saya takut jauh dari situs seperti itu (atau saya harus sangat yakin sandbox browser kedap udara).

Martin York
sumber
Itu tidak masuk akal. TI bergantung pada lingkungan untuk memutuskan API mana yang tersedia untuk bahasa pemrograman. Tentu saja, jika Python dikirimkan dalam browser, ia akan memiliki akses ke API yang sama dengan yang dimiliki Javascript sekarang (seperti DOM), jadi itu tidak akan memiliki cara untuk membuat kerusakan.
Andrea
@ Andrea - Anda dapat berargumen bahwa suatu bahasa sama banyaknya dengan perpustakaan standarnya dengan sintaks dan semantiknya. Javascript tidak memiliki pustaka standar untuk file I / O, dan itu disengaja, untuk alasan keamanan. Python memiliki pustaka standar untuk file I / O, dan untuk banyak hal lain yang mungkin dianggap masalah keamanan. Larang ini dan bisa dibilang Anda tidak berurusan dengan Python lagi. Dahulu kala, Python memiliki kotak pasir - saya ingat ada di sana sekitar versi 1.5 - tetapi dijatuhkan IIRC karena tidak cukup digunakan, dan jauh dari kedap udara.
Steve314
Pustaka standar untuk I / O dalam Javascript sedang ditulis. Tentu saja ini tidak tersedia di browser. Saya hanya mengatakan bahwa jika Python diimplementasikan di browser, perpustakaan yang tidak aman tidak akan tersedia. Dan mungkin Anda tidak akan melewatkannya, karena mereka tidak dimaksudkan untuk digunakan di situs web.
Andrea
-2

"Apakah dominasi JavaScript adalah kecelakaan historis atau sesuatu yang lain?"

Saya pribadi berpendapat bahwa kesuksesan JS adalah masalah desain sebanyak yang telah dan akan terus membenci untuk mengakuinya dan bukan hanya kecelakaan atau hanya karena fakta bahwa itu adalah anak pertama di taman bermain.

Meskipun dinamai untuk menarik pengembang Java dan sintaksisnya seperti sintaksis berbasis Java C juga untuk menarik pengembang Java, Brendan Eich membuat salah satu keputusan paling buruk dalam sejarah www yang terutama menarik dari Skema untuk mekanik bahasa aktual inspirasi, yang merupakan sesuatu yang tampaknya tidak disukai banyak pengembang Java (yang menurut saya sangat lucu).

JavaScript menggunakan pewarisan prototypal yang sangat fleksibel / granular untuk OOP, ia memiliki penutup, tipe 100% dinamis, fungsi itu sendiri adalah kelas satu yang memungkinkannya untuk diedarkan seperti objek atau tipe data lain dan digunakan kembali dalam konteks yang berbeda dan bahkan diterapkan pada objek dengan cepat seolah-olah mereka telah dinyatakan sebagai anggota objek yang sebenarnya dari awal. Praktis berteriak untuk digunakan untuk arsitektur berbasis acara yang perlu menormalkan satu ton sampah milik atau menangani masalah UI yang sangat non-linear.

Pada akhir awal web, itu adalah satu-satunya bahasa yang pernah secara serius melakukan tugas normalisasi browser melalui perang browser yang sebenarnya di mana Netscape dan IE mencoba melakukan hal-hal yang berbeda dengan sengaja, diikuti oleh browser yang lebih dari 10 tahun. gencatan senjata di mana IE hanya melakukan hal-hal yang berbeda karena MS malas dan mengakar sendiri ke dalam beberapa praktik anti-persaingan yang benar-benar bodoh yang mengakibatkan stagnansi browser, dan sekarang dunia di mana browser akhirnya mulai menyepakati spesifikasi umum yang sama dalam hal HTML, CSS dan DOM API dengan IE hanya 2-3 tahun di belakang perkembangan terakhir daripada 10 karena Google dan Mozilla menghancurkan kompiler JIT yang membuat angka kinerja IE terlihat begitu menyedihkan. MS akhirnya dipermalukan untuk memodernisasi browser mereka dengan benar.IE9 adalah yang pertama untuk benar-benar serius meningkatkan dukungan DOM API ke tingkat yang Netscape dukung kembali di tahun 2000an.

JS telah memiliki kompetisi dalam bentuk Java Applets dan Adobe's ActionScript for Flash. Itu saja di bagian depan pesaing serius. MS mencoba mendorong VB tetapi gagal total karena ... yah ... VB. Juga, milik. Sebenarnya ada lebih banyak situs Flash daripada yang disadari kebanyakan orang. Anda tidak dapat menemukan hal-hal konyol dengan mesin pencari. Applet melakukan hal mereka sendiri, dan itu jelek. Sangat jelek. JS adalah satu-satunya bahasa yang benar-benar menangani masalah bekerja dalam konteks beberapa browser oleh orang-orang yang tidak sepakat tentang siapa yang mengatur spesifikasi yang seharusnya cocok dengan mereka.

Dalam beberapa tahun terakhir JS telah meledak menjadi domain aplikasi yang jauh lebih luas. Dalam kombinasi dengan teknologi web lainnya, ini pada dasarnya dirancang untuk mengetuk semua solusi lainnya di bagian depan seluler karena + teknologi web adalah satu-satunya pilihan realistis saat ini jika Anda benar-benar ingin menulis satu aplikasi dan membuatnya bekerja pada semuanya.

Jadi tidak, dan ya saya penggemar berat, tapi saya pikir itu tidak menabrak semua pesaing lain di sisi klien secara tidak sengaja karena menjadi populer di luar browser bisa dianggap sebagai kecelakaan sekarang. Sebelum JS, tidak ada banyak bahasa seperti Skema di luar sana yang tidak terutama akademis. Itu memberi JS beberapa keuntungan yang kuat dan kebutuhan unik dari sisi klien memungkinkan keuntungan tersebut perlahan menjadi jernih.

Erik Reppen
sumber
Anda menyebutkan Skema dua kali tanpa pernah mengatakan bagaimana JS berhubungan dengan Skema. Tentu saja Anda tidak berpikir JS memiliki makro, ekspresi-S, rekursi ekor, kelanjutan, atau fitur-fitur pembeda lain dari Skema - kan?
Gabe
@ Gabe. Periksa blok teks ke-4. Penutupan, pengetikan dinamis, dan fungsi kelas satu cukup utama. Faktanya JS menggunakan sintaksis c-like akan melarang penggunaan macro Skema. Ini bukan salinan fitur-demi-fitur dari Skema, tetapi jelas dipengaruhi oleh Skema tersebut.
mike30
Jadi penutupan dan pengetikan dinamis membuat bahasa mirip Skema? Apakah itu berarti C # seperti Skema? Bagaimana dengan Ruby, Python, dan Perl? Dan mengapa Skema daripada Lisp atau bahasa sejenis lainnya?
Gabe
@ Gabe Saya bukan pakar Skema tetapi pada wikipedia-ing biasa saya akan mengatakan kombinasi dari lingkup leksikal, fungsi kelas satu, dan penutupan adalah tiga yang menempatkan JS lebih dekat ke Skema daripada ke Jawa. Kalau tidak, saya hanya mengambil kata Brendan Eich di atasnya dan menganggap fungsi kelas satu yang tepat adalah yang utama.
Erik Reppen
OK, jadi JS memiliki penutup (yang saya percaya menyiratkan fungsi kelas satu dan pelingkupan leksikal) dan pengetikan dinamis, seperti Skema. Karena C # memiliki penutup, pengetikan dinamis, dan bentuk ekspresi S yang terbatas, apakah itu berarti C # lebih mirip Skema daripada JS?
Gabe