Tiga Kebohongan Besar tentang JavaScript

Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel " Tiga Kebohongan Besar Tentang JavaScript " oleh Richard Kenneth. Artikel ini ditulis pada Mei 2016, tetapi relevansinya, menurut saya, belum hilang. Saya seorang programmer pemula, jadi kesalahan dalam hal "pemahaman" adalah mungkin. Jadi ...

Tiga Kebohongan Besar tentang JavaScript


Ada dua jenis kebohongan: kebohongan yang kita katakan pada orang lain dan kebohongan yang kita katakan pada diri kita sendiri untuk membenarkannya
Ada tiga kebohongan besar yang diceritakan para penggemar JavaScript berulang kali.

Terletak # 1


JavaScript adalah bahasa pemrograman yang paling banyak disalahpahami di dunia.
Orang tidak tahu bagaimana menggunakannya dengan benar, dan karena itu mereka terus-menerus masuk ke semua jenis masalah. Dan ini bohong, karena dalam JavaScript tidak ada yang bisa dipahami.

Ini adalah bahasa pemrograman imperatif / prosedural biasa dengan sejumlah kecil fungsi pemrograman (FP) dan fungsi "berorientasi objek" yang kontroversial yang disebut prototipe objek. Dan apa yang istimewa dari itu?

Pada dasarnya, semua masalah yang muncul ketika menggunakan JavaScript adalah kesalahan hanya orang-orang yang menggunakannya: mereka bodoh, mereka malas, mereka terbiasa dengan bagaimana pemrograman dilakukan dalam Java atau Python. Apa yang tidak mereka ketahui? Pemrograman fungsional?

Lalu, mengapa orang tidak salah ketika menggunakan bahasa FP lainnya, seperti C #, Clojure, Dart, Elm, Erlang, F #, Julia, Haskell, Scala dan Skema ? Pemrograman fungsional adalah paradigma yang cukup dipahami dalam industri TI. Jadi apa yang membuat JavaScript sangat bermasalah dalam hal ini?

Mungkin orang tidak memiliki pengetahuan tentang prototipe objek. Dalam hal ini, baca “Apa yang Bukan Prototipe Obyek JavaScript ? Prototipe, tentu saja, tidak cocok untuk pengembangan perangkat lunak. Mereka bukan abstraksi pemrograman tingkat tinggi. Prototipe sebagian besar tabel hash dibedakan, tingkat yang cukup rendah dan ini yang saya sebut "blok bangunan" untuk pemrograman berorientasi objek nyata (OOP berbasis kelas). Orang mungkin tidak mengerti bagaimana cara menggunakan prototipe objek, tetapi mengapa Anda perlu belajar bagaimana "meletakkan batu bata"? Ini tidak sepadan dengan usaha Anda.

Ya saya mengerti. Prototipe sangat fleksibel. Mereka tidak memiliki semua "ritual" di mana AKI klasik berdiri. Dalam hal ini, mereka menyenangkan untuk digunakan. Tetapi mereka tidak skala dengan baik untuk aplikasi besar, dan karena itu orang kembali ke kelas. Jika prototipe adalah teknik yang sangat berguna, Anda akan melihatnya diadaptasi di mana-mana, karena prototipe dapat dimodelkan dalam bahasa berbasis kelas, seperti halnya kelas dapat dimodelkan dalam bahasa berbasis prototipe. Dan ini adalah sesuatu yang tidak bisa dipahami oleh programmer JavaScript .

Terletak # 2


Pemrograman asinkron adalah kekuatan utama dari JavaScript. Baiklah, mari kita pahami mengapa pemrograman asinkron bahkan ada dalam JavaScript .

Untuk mengembangkan antarmuka pengguna grafis (GUI), loop acara adalah - de rigueur (hal yang biasa) , baik pada Windows , atau X Window , atau Cocoa OS X , atau browser web. Semuanya menangani acara input pengguna secara tidak sinkron. Apakah ini berarti bahwa pemrograman asinkron juga merupakan kekuatan C ++ atau Objective-C ? Perulangan acara (dengan pustaka asinkron) juga telah digunakan dalam Python dan Perl dan Tcl . Lalu, saya kira mereka semua memiliki kekuatan pemrograman asinkron? (Saya tertawa ketika orang menggunakan kata “ asynchronicity ” yang tidak ada ( asynchronous adalah kata sifat yang menggambarkan objek atau peristiwa yang tidak terkoordinasi dalam waktu ).

JavaScript juga menggunakan loop acara dan pemrosesan asinkron untuk mendukung antarmuka pengguna browser web. Apakah itu membuatnya menjadi bahasa yang hebat?

Dan sekarang, model komputasi ini telah membuat Node.js cukup populer di sisi server, di mana ia digunakan untuk pengembangan non-GUI, mis. untuk konkurensi kinerja tinggi. Node jelas berguna untuk banyak aplikasi, tetapi tidak mungkin untuk mengambil alih dunia konkurensi. Peristiwa terbaru menunjukkan keterbatasan Node.js. Dan ya, ini harus meyakinkan semua orang untuk hanya menggunakan JavaScript.
Siklus peristiwa telah digambarkan sebagai “paralelisme orang miskin.
Pendukung Node ingin menunjukkan contoh yang sama dari perusahaan besar (PayPal, Netflix, Walmart, Uber, dll.) Berulang kali. Apa untuk setiap contoh Node.js yang dapat dibandingkan dalam jawabannya? - Ratusan contoh Jawa ? Java telah membuktikan dirinya berkali-kali untuk pengembangan usaha. Itulah sebabnya ini adalah standar industri. Node.js belum membuktikan sendiri. Kami tidak benar-benar tahu berapa banyak perusahaan yang mencoba menggunakan Node.js dan akhirnya mengabaikannya. Kami tidak tahu berapa tingkat keberhasilan sebenarnya dari proyek Node.js. Untuk perusahaan, memilih Node.js masih berisiko.
Saya yakin memprediksi bahwa Go akan menggantikan Node di masa depan segera setelah ia tumbuh ekosistem kerangka dan paket. Lintasannya tidak bisa dipungkiri.
Bahasa seperti Go dan Erlang / Elixir dapat dengan mudah mengungguli Node di sebagian besar skenario konkurensi. Bahkan model loop event / asynchronous tidak berkelanjutan dalam jangka panjang. Kita harus tertarik menggunakan bahasa pemrograman paralel nyata jika sasaran kita adalah kinerja maksimum. Mengapa berkompromi dengan JavaScript .

Terletak # 3


JavaScript adalah bahasa pemrograman paling populer di dunia.

Benarkah ini? Ada perbedaan besar antara bahasa yang banyak digunakan secara default dan bahasa yang banyak digunakan.
Ingatlah bahwa di bidang lain apa pun selain Internet, pengembang bukan sandera dari satu bahasa. Kami mengabaikan fakta ini dengan risiko kami sendiri.

JavaScript adalah satu-satunya bahasa asli untuk browser web, jadi ini adalah cara paling langsung untuk menulis aplikasi browser. Namun, sebagian besar pengembang membenci bahasa ini dan jika mereka benar-benar memiliki pilihan yang lebih baik, mereka akan membuatnya. Anda dapat memverifikasi ini sendiri jika Anda mencari di Internet (forum, jejaring sosial, situs web, dll.) Untuk pendapat orang tentang JavaScript . Ada banyak daftar panjang WAT dan WTF tentang JavaScript yang tidak akan Anda temukan untuk bahasa lain selain PHP . Yang kami tahu dengan pasti adalah bahwa web itu sangat populer, bukan JavaScript .

Sebagian besar indeks peringkat bahasa utama tidak menunjukkan bahwa JavaScript adalah bahasa pemrograman yang paling populer. Bahkan posisi kedua, ketiga, atau keempat. Menurut IEEE Spectrum (American Journal) - ini adalah tempat # 8 , PYPL # 5 , TIOBE # 7 , CodeEval # 6 . Redmonk (sebuah perusahaan analitik) menggunakan statistik Github , yang menunjukkan angka yang sangat tinggi untuk JavaScript , tepatnya karena aplikasi web yang ditulis dalam bahasa apa pun harus memiliki setidaknya beberapa JavaScript untuk bekerja di browser; tidak ada opsi. Oleh karena itu, Redmonk tidak dapat memberikan peringkat obyektif dari anomali JavaScript ; jika tidak, bahasa yang paling populer adalah Java .

Jajak pendapat pengguna, misalnya, dari StackOverflow, juga mengandung bias serupa dalam pemilihan. Bagaimana kita dapat mengatakan bahwa JavaScript adalah bahasa populer ketika kita tidak punya pilihan selain menggunakannya sendiri? (Untungnya, penerjemah tersedia untuk kami).

Kita harus ingat bahwa untuk area lain (misalnya, server jaringan, game dan grafik, ponsel, desktop, dll.). Ada beragam pilihan bahasa pemrograman. Aplikasi web sangat unik. (Setidaknya sampai rilis WebAssembly akhirnya terjadi.)

Benar


Biarkan saya menjadi sangat jelas: JavaScript bukan bahasa pemrograman yang baik untuk pengembangan perangkat lunak . JavaScript dirancang untuk menjadi bahasa skrip yang ringan dan segar untuk browser web. Dengan demikian, itu dibuat menjadi fleksibel dan sangat pemaaf, dengan mengetik yang lemah. Ia bahkan tidak memiliki tipe integer yang tepat atau tipe array yang tepat. Bahasa apa ini !?

Lemah mengetik, ini adalah kelemahan utama bahasa pemrograman yang digunakan perangkat lunak. Meskipun ini membuat penulisan skrip sederhana cepat untuk peramban web menjadi sangat mudah, ia juga bekerja melawan Anda ketika Anda menulis aplikasi besar yang membutuhkan keamanan dan keandalan. Inilah sebabnya mengapa sebagian besar bahasa utama biasanya sangat diketik (jangan dikacaukan dengan yang diketik secara statis). Dan itu sangat, sangat penting!

Lemahnya tipifikasi dan paksaan sewenang-wenang yang dihasilkan menunjukkan kurangnya disiplin linguistik. Ini menjelaskan sebagian besar daftar WATs dan WTFs.

dihasilkan oleh JavaScript. (Selanjutnya, penulis memberikan tautan ke sumber daya online, di mana daftar kutil JavaScript disediakan).

Source: https://habr.com/ru/post/id445170/


All Articles