Perjalanan kebanyakan orang ke arah belajar ke program bermula dengan satu carian Google lewat malam.
Biasanya ia seperti "Belajar ______"
Tetapi bagaimana mereka memutuskan bahasa mana yang hendak dicari?
“Mereka selalu bergurau tentang Java di Silicon Valley. Saya rasa saya mesti mempelajarinya. "Atau:
“Haskell. Begitu panas sekarang. Haskell. "Atau:
"Go gopher itu sangat comel."
Dan kemudian ada yang lain dari kita. Kami mungkin akan mencari sesuatu seperti:
"Bahasa pengaturcaraan mana yang harus saya pelajari terlebih dahulu?"Hanya sedikit soalan yang sering diajukan sehingga mereka mendapat rawatan infografis sepenuhnya. Tetapi ini salah satunya:

Memutuskan bahasa pengaturcaraan pertama anda boleh menjadi proses yang menyeronokkan - seperti salah satu daripada "watak Quentin Tarantino yang mana anda?" kuiz keperibadian.
Tetapi sebelum anda berlari untuk belajar Ruby kerana anda suka bermain dengan Play-Doh ketika kecil, izinkan saya mengingatkan anda: taruhannya cukup tinggi di sini.
Anda memerlukan latihan selama beratus-ratus jam untuk menjadi lebih cekap dengan bahasa pengaturcaraan pertama anda.
Oleh itu, anda harus mempertimbangkan faktor-faktor berikut:
- pasaran pekerjaan untuk bahasa
- prospek jangka panjang untuk bahasa
- betapa senangnya bahasa itu dipelajari
- projek apa yang boleh anda bina semasa anda belajar (dan berkongsi dengan rakan supaya anda dapat terus bermotivasi)
Setiap tahun membawa bahasa pengaturcaraan baru, dan dengan itu, makalah akademik baru. Dan komik web baru.
Serius. Lihat permata ini dari bulan lalu:

Ketika memilih bahasa pengaturcaraan pertama, tidak ada kekurangan pilihan. Untuk mengecilkannya sedikit, berikut adalah carian Google yang paling biasa berkaitan dengan program pembelajaran, sejak 12 tahun yang lalu:

Java mengalami naik turun.
Python secara beransur-ansur meningkat menjadi pilihan paling popular.
Tetapi tersembunyi di bawah ini adalah Mesin Kecil Yang Bisa, perlahan-lahan menjadi terkenal dalam beberapa tahun kebelakangan. Dan mesin itu adalah JavaScript.
Sebelum saya bercakap mengenai bahasa pengaturcaraan ini, izinkan saya menjelaskan:
- Saya tidak berpendapat bahawa mana-mana satu bahasa secara objektif lebih baik daripada yang lain
- Saya bersetuju bahawa pembangun akhirnya harus belajar lebih daripada satu bahasa
- Saya berpendapat bahawa pertama-tama mereka harus belajar satu bahasa dengan baik. Dan - seperti yang anda dapat meneka dari teks terbalik dalam tajuk utama saya - bahasa itu mestilah JavaScript.
Mari kita mulakan dengan meneroka bagaimana pengaturcaraan diajar di sekolah.
Sains Komputer 101

Universiti secara tradisional mengajar pengaturcaraan di bawah payung sains komputer, yang dengan sendirinya sering dilihat sebagai lanjutan matematik, atau mengikat gelaran kejuruteraan elektrik.
Sudah tentu, seperti yang anda dengar sekarang:
"Pendidikan sains komputer tidak dapat menjadikan siapa pun sebagai pengaturcara pakar daripada mempelajari sikat dan pigmen dapat menjadikan seseorang sebagai pelukis pakar." - Eric S. RaymondSehingga 2016, banyak universiti masih memperlakukan pengaturcaraan seperti sains komputer, dan sains komputer seperti matematik.
Hasilnya, banyak kursus pengaturcaraan pengantar menumpukan pada bahasa tahap rendah abstraksi seperti C, atau bahasa yang berfokus pada matematik seperti MATLAB.
Dan ketua jabatan biasanya mengikuti kursus ini, menunjukkan papan petunjuk bahasa pengaturcaraan tahunan seperti Indeks TIOBE, atau ini dari IEEE:

Sebilangan besar papan peringkat kelihatan hampir sama dengan keadaannya 10 tahun yang lalu.
Tetapi perubahan memang berlaku. Walaupun di akademik.
Pada tahun 2014, Python mengatasi Java sebagai bahasa pengantar yang paling popular di program Sains Komputer AS.

Namun perubahan lain pasti ... akhirnya ... berlaku.
Kerana jika anda melihat bahasa yang sebenarnya digunakan oleh tenaga kerja, ia melukis gambaran yang sangat berbeza:

Lebih separuh daripada semua pembangun menggunakan JavaScript. Sangat penting untuk pembangunan web front-end dan semakin relevan untuk pengembangan back-end. Dan berkembang pesat ke bidang seperti pembangunan permainan dan Internet Perkara.
Catatan pekerjaan juga menyebutkan JavaScript lebih daripada bahasa pengaturcaraan selain Java:

Bukan kebetulan kami membina kurikulum komuniti sumber terbuka kami menggunakan JavaScript. Sejak dua tahun kebelakangan ini, lebih daripada 5,000 orang telah menggunakan Free Code Camp untuk mendapatkan pekerjaan pembangun pertama mereka.
Saya tidak menyokong JavaScript kerana saya mengajarnya. Saya mengajar JavaScript kerana ini adalah jalan paling pasti untuk pekerjaan pemaju pertama.
Tetapi adakah JavaScript sesuai untuk anda? Adakah layak menjadi bahasa pengaturcaraan pertama anda? Mari kita teliti faktor-faktor yang saya nyatakan sebelumnya.
Faktor # 1: Pasaran pekerjaan
Sekiranya anda belajar memprogram semata-mata dari rasa ingin tahu intelektual, jangan ragu untuk mengatasi faktor ini. Tetapi jika anda - seperti kebanyakan orang yang belajar program - ingin menggunakan kemahiran ini untuk mendapatkan pekerjaan, ini adalah pertimbangan penting.
Seperti yang saya sebutkan sebelumnya, Java disebut dalam lebih banyak posting pekerjaan daripada bahasa pengaturcaraan lain. JavaScript hampir kedua.
Tetapi inilah masalahnya mengenai JavaScript: walaupun sudah ada selama 20 tahun, baru-baru ini menjadi alat serius bahawa syarikat seperti Netflix, Walmart, dan PayPal akan membina keseluruhan aplikasi.
Akibatnya, banyak syarikat mengupah pemaju JavaScript, tetapi tidak banyak di pasaran kerja.

Terdapat 2.7 pengembang Java yang bersaing untuk setiap posisi Java yang terbuka. Persaingan untuk pekerjaan PHP dan iOS juga sengit.
Tetapi untuk setiap posisi JavaScript terbuka, hanya ada 0.6 pembangun JavaScript. Ini adalah pasaran penjual untuk pemaju dengan kemahiran JavaScript.
Faktor # 2: Prospek jangka panjang
Projek JavaScript rata-rata menerima permintaan tarikan dua kali lebih banyak daripada projek Java, Python, atau Ruby. Selain itu, JavaScript berkembang lebih pantas daripada bahasa popular lain.

Ekosistem JavaScript juga mendapat keuntungan dari banyak pelaburan wang dan bakat kejuruteraan dari syarikat seperti Google, Microsoft, Facebook, dan Netflix.
Sebagai contoh, TypeScript (superset JavaScript yang ditaip secara statik) mempunyai lebih daripada 100 penyumbang sumber terbuka, yang kebanyakannya adalah pekerja Microsoft dan Google yang dibayar untuk mengerjakannya.
Jenis kerjasama antara syarikat ini sukar didapati dengan Java. Oracle - yang memiliki Java secara efektif melalui pemerolehan Sun Microsystems - sering menuntut syarikat yang berusaha mengembangkannya.
Faktor # 3: Kesukaran untuk belajar

Sebilangan besar pengaturcara akan bersetuju bahawa bahasa skrip peringkat tinggi agak mudah dipelajari. JavaScript tergolong dalam kategori ini, bersama dengan Python dan Ruby.
Walaupun universiti masih mengajar bahasa seperti Java dan C ++ sebagai bahasa pertama, mereka jauh lebih sukar untuk belajar.
Faktor # 4: Projek yang boleh anda bina dengannya
Di sinilah JavaScript benar-benar bersinar. JavaScript berjalan di mana-mana peranti yang mempunyai penyemak imbas, di sana dalam penyemak imbas. Anda boleh membina apa sahaja pada dasarnya dengan JavaScript, dan berkongsi di mana sahaja.
Kerana keberadaan JavaScript, pengasas bersama Stack Overflow Jeff Atwood mencipta undang-undangnya yang kini terkenal:
"Mana-mana aplikasi yang boleh ditulis dalam JavaScript, akan akhirnya ditulis dalam JavaScript."Dan dengan setiap bulan berlalu, Atwood's Law kuat.
Java pernah berjanji untuk lari ke mana-mana juga. Anda mungkin ingat Applet Java. Oracle secara rasmi membunuh mereka awal tahun ini.
Python mengalami masalah yang sama:
"Bagaimana saya dapat memberikan permainan ini yang saya buat kepada rakan saya? Lebih baik lagi, adakah cara untuk meletakkannya di telefon saya sehingga saya dapat menunjukkannya kepada anak-anak di sekolah tanpa mereka perlu memasangnya? Um. " - James Hague dalam Pensiun Python sebagai Bahasa PengajaranSebaliknya, berikut adalah beberapa aplikasi yang dibina oleh ahli komuniti sumber terbuka kami dalam penyemak imbas mereka di CodePen. Anda boleh mengklik dan menggunakan ini langsung di penyemak imbas anda:




Belajar satu bahasa dengan baik. Kemudian belajar yang kedua.
Sekiranya anda terus melompat dari bahasa ke bahasa, anda tidak akan sampai jauh.
Untuk melangkaui asas, anda perlu mempelajari bahasa pertama anda dengan baik. Maka bahasa kedua anda akan menjadi lebih mudah.
Dari sana, anda boleh keluar dan menjadi pembangun yang lebih baik dengan mempelajari banyak bahasa:
- C adalah kaedah terbaik untuk belajar bagaimana komputer sebenarnya berfungsi dari segi pengurusan memori, dan berguna dalam pengkomputeran berprestasi tinggi
- C ++ sangat bagus untuk pengembangan permainan.
- Python hebat untuk sains dan statistik.
- Java penting jika anda ingin bekerja di syarikat teknologi besar.
Tetapi pelajari JavaScript terlebih dahulu.
OK, sekarang saya akan mencuba yang mustahil - saya akan mencuba dan menjangkakan bantahan dari bahagian komen.
Penolakan # 1: Tetapi bukankah JavaScript lambat?
JavaScript adalah - untuk kebanyakan tujuan praktikal - secepat bahasa berprestasi tinggi.
JavaScript (Node.js) adalah urutan besarnya lebih cepat daripada Python, Ruby, dan PHP.
Ini juga secepat bahasa berprestasi tinggi seperti C ++, Java, dan Go.
Berikut adalah hasil penanda aras silang bahasa terkini yang paling komprehensif:

Penolakan # 2: Tetapi JavaScript tidak ditaip secara statik
Seperti Python dan Ruby, JavaScript ditaip secara dinamik, yang mudah. Tetapi anda boleh mendapat masalah. Di sini saya berhasrat untuk exampleArray
menjadi array. Saya menetapkan nilainya, kemudian periksa panjangnya - bermaksud bilangan elemen yang terkandung di dalamnya.
exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2
Tetapi kemudian saya secara tidak sengaja menetapkannya menjadi tali.
exampleArray = “text” -> “text” exampleArray.length -> 4
Kesalahan seperti ini selalu berlaku dalam bahasa yang dinaip secara dinamik. Sebilangan besar pembangun hanya membuat pemeriksaan untuk mengelakkannya, dan menulis ujian dengan sewajarnya.
Sekiranya anda benar-benar mesti menaip statik dalam bahasa pengaturcaraan pertama anda, maka saya tetap mengesyorkan anda belajar JavaScript terlebih dahulu. Kemudian anda boleh mengambil TypeScript dengan cepat.
"Naskhah memiliki kurva pembelajaran, tetapi jika Anda sudah mengetahui JavaScript, itu akan menjadi lancar." - Alex Ewerlöf pada TypeScriptBantahan # 3: Tetapi saya benar-benar mahu membuat aplikasi mudah alih
Saya masih mengesyorkan belajar JavaScript terlebih dahulu.
- JavaScript mempunyai beberapa alat untuk membuat aplikasi mudah alih asli, seperti Angular Cordova dan React Native.
- Agar aplikasi mudah alih anda dapat melakukan sesuatu yang menarik, ia mungkin memerlukan bahagian belakang yang betul, yang anda ingin bina dengan kerangka pembangunan web yang betul, seperti Node.js + Express.js.
Juga, perlu diperhatikan bahawa hari-hari terbaik pengembangan aplikasi mudah alih mungkin berada di belakangnya.
Sebagai permulaan, sama seperti orang menggunakan aplikasi mudah alih, hampir separuh daripada semua pekerjaan pembangun adalah pembangunan web. Bandingkan dengan hanya 8% pekerjaan yang melibatkan pengembangan aplikasi mudah alih.

Visi besar "ada aplikasi untuk itu" belum menjadi kenyataan. Sebaliknya, kebanyakan pemilik telefon pintar telah berhenti memuat turun aplikasi baru.
Pasti - mereka masih menggunakan aplikasi. Sebilangan besar Facebook, Peta Google, dan segelintir yang lain. Oleh itu, banyak permintaan untuk pembangun aplikasi mudah alih tertumpu pada beberapa majikan besar.
Prospek untuk pekerjaan pembangunan mudah alih itu sukar diramalkan. Banyak aspek membangun, mengekalkan, dan menyebarkan aplikasi mudah alih lebih mudah dengan JavaScript. Oleh itu syarikat seperti Facebook dan Google banyak melabur dalam alat yang lebih baik untuk membuatnya menggunakan JavaScript.
Sehingga 2016, hampir semua pembangunan adalah pembangunan web. Semuanya menyentuh platform besar itu "web." Dan gelombang peranti seterusnya yang akan anda bicarakan di sekitar rumah anda, dan kereta yang menjemput anak-anak anda dari sekolah - semuanya juga akan disatukan menggunakan web.
Dan itu bermaksud JavaScript.
Bantahan # 4: Bukankah JavaScript adalah bahasa mainan yang ditulis dalam 10 hari?
JavaScript mempunyai sejarah yang unik.
Anda pasti akan mendengar orang membuat lelucon dengan perbelanjaannya.
Orang juga suka membenci C ++. Dan seperti JavaScript, C ++ telah berjaya di sebalik kebencian ini, dan sekarang juga terdapat di mana-mana.
Oleh itu, jika ada yang memberi anda masa yang sukar untuk belajar JavaScript dan bukannya bahasa elit minggu ini, ingat sahaja kata-kata terkenal lelaki yang mencipta C ++:
"Hanya ada dua jenis bahasa pengaturcaraan: orang-orang itu selalu menyusahkan dan tidak ada yang menggunakan." - Bjarne StroustrupSaya hanya menulis mengenai pengaturcaraan dan teknologi. Sekiranya anda mengikuti saya di Twitter, saya tidak akan membuang masa anda. ?