Seberapa berisiko menggunakan Coffeescript tanpa mengetahui Javascript? [Tutup]

15

Saya seorang programmer berpengalaman yang mencoba mempelajari pengembangan web. Saya mencoba mengembangkan aplikasi web sisi klien yang menggunakan svg atau kanvas untuk grafik. Saya memutuskan untuk menulis kode aplikasi dalam Coffeescript. Saya tidak tahu Javascript atau Coffeescript.

Bagaimana perlu mengetahui pengembangan web Javascript ke Coffeescript? Apakah saya mungkin mengalami masalah yang sulit yang mengharuskan saya untuk memahami Javascript? Bisakah saya bekerja dengan senang hati dengan Javascript API dari Coffeescript?

Sunting : Saya dapat dengan mudah mempelajari dasar-dasar Javascript dalam seminggu. Saya lebih khawatir bahwa Javascript tampaknya memiliki banyak sisi tajam yang tersembunyi. Dalam pertanyaan fitur bahasa yang paling aneh pada StackOverflow Javascript adalah salah satu bahasa yang paling umum. Ini memiliki objek dan model kelas yang tidak biasa. Ini memiliki aturan pelingkupan nama yang tidak jelas. Saya merasa perlu lebih dari seminggu bagi saya untuk benar-benar tahu bahasa.

Saya akan mengerjakan proyek kecil sederhana untuk mempelajari pengembangan web. Apakah saya akan lebih baik menggunakan Javascript atau Coffeescript? Saya pikir dalam jangka panjang saya akan lebih suka Coffeescript tapi saya bersedia untuk mulai dengan Javascript jika itu saya akan membutuhkan pemahaman menyeluruh tentang Javascript untuk menggunakan Coffeescript.

Peter Graham
sumber
Perlu diingat bahwa CoffeeScript hanya mengkompilasi ke JavaScript. Meskipun CS mempermudah pengelolaan beberapa nuansa JavaScript, CS tidak menghidupkannya lagi; masih tunduk pada semua fungsi dan kebiasaan yang sama. Misalnya, classkata kunci dalam CS tidak melakukan apa pun yang ajaib; itu hanya menggunakan mekanisme warisan asli prototipal JavaScripts. Untuk alasan ini, saya akan merekomendasikan memiliki setidaknya pengetahuan tambahan tentang beberapa fitur JavaScripts lebih jelas.
Michelle Tilley
2
CS bukanlah peluru perak ajaib yang membuat segalanya lebih mudah, JS dengan sintaks yang berbeda. Apakah Anda menulis JS atau CS adalah preferensi gaya.
Raynos

Jawaban:

12

Saya kira itu tidak akan mutlak diperlukan, tetapi Anda akan mencapai penghalang jalan dalam jangka panjang jika tidak.

Anda perlu memahami apa yang terjadi di bawah tenda dan apa yang ditranskripkan oleh kompiler CoffeeScript, karena itulah yang dilakukan oleh browser (dengan asumsi kita sedang berbicara tentang menggunakan CoffeeScript di lingkungan browser) perlu menafsirkan. Artinya, Anda juga perlu melakukan debug , terutama mengingat CoffeeScript cukup baru dan kami mungkin masih menemukan beberapa masalah dan bug dalam mekanisme transkripsi. Selain itu, jika tidak menggunakan alat debugging khusus untuk debugging, Anda harus melewati kode JavaScript yang dihasilkan untuk melakukan debug menggunakan Firebug atau Chrome Dev Tools atau konsol JS pilihan Anda. Dalam beberapa kasus Anda akan dapat melihat bagaimana kesalahan JS berhubungan langsung dengan pernyataan CoffeeScript sumber. Di pihak lain, karena transkripsi itu tidak sepele,

Ambillah seperti ini: Anda dapat mengembangkan perangkat lunak dengan sangat baik di Java dan C # tanpa pernah melakukan pengembangan tingkat rendah. Namun Anda akan memiliki waktu yang sangat buruk untuk memahami apa yang terjadi dan mengapa Anda menekan hambatan kinerja dan masalah memori jika Anda tidak memiliki petunjuk dan tidak dapat membuat tebakan yang berpendidikan tentang apa yang perlu dilakukan runtime bahasa ini untuk Anda di latar belakang, dan bagian mana dari tebakan yang mungkin mereka lakukan karena mereka tidak dapat melakukan keajaiban.

Selain itu, jika Anda mempelajari JavaScript, Anda akan menyadari betapa sangat sulitnya hal itu daripada yang terlihat pada awalnya, dan Anda akan lebih menghargai CoffeeScript untuk sintaksnya yang singkat dan bersih :)

haylem
sumber
1
Atau Anda akan terganggu di CoffeeScript karena tidak JavaScript;). ES5 adalah bahasa yang indah.
Raynos
@ Raynos: lipstik pada babi, masih babi; tuxido pada seekor kambing, masih seekor kambing, dll ... :) Saya setuju bahwa ECMAScript sebenarnya adalah bahasa yang sangat menarik setelah Anda mengetahuinya, tetapi ia memiliki terlalu banyak inkonsistensi dan jebakan serta perangkap yang membuatnya menjadi beban bagi keduanya. pelajar baru dan bahkan untuk programmer tingkat lanjut. Tetap saja, ini adalah web modern bahasa kami, dan terus membaik dan semakin matang. Saya suka ide CoffeeScript karena menyembunyikan beberapa hal menjengkelkan ECMAScript, cukup banyak cara yang sama yang menggunakan beberapa lib untuk Java (atau bahkan bahasa di atasnya) membuatnya dapat diterima.
haylem
2
Meh, Anda hanya perlu membaca Bagian Bagus dan baik untuk pergi. Perangkap tidak terlalu sulit untuk dihindari.
Raynos
@ Raynos: Namun saya kesulitan menemukan pengembang JS canggih untuk dipekerjakan, sayangnya. Benar-benar bagus sangat sulit ditemukan.
haylem
Oh saya setuju, komunitas JS dipenuhi dengan pengembang yang biasa-biasa saja. Saya tidak tahu di mana Anda harus menemukannya. Saya hanya tahu beberapa pengembang yang baik dari ruang chat JS. Jadi . Saya kira dengan fakta bahwa tidak ada pengembang JS yang baik, JS pasti sulit. Saya hanya berpikir tidak ada yang mau mempelajarinya dengan benar.
Raynos
4

Anda bertanya:

Apakah saya mungkin mengalami masalah yang sulit yang mengharuskan saya untuk memahami Javascript?

Saya bisa mengatakan, dengan tegas, ya. Secara umum, jika Anda melakukan sesuatu yang menarik, pada titik tertentu Anda setidaknya perlu memahami apa yang terjadi di tingkat di bawah Anda. (Terkadang Google + cut + paste dapat menyelamatkan Anda, tetapi Anda tidak ingin menjadi pria itu.)

Setiap "programmer yang cukup berpengalaman" kemudian mengambil bahasa baru tidak akan memakan waktu lama. JavaScript adalah bahasa yang cukup sederhana. Segala sesuatu yang sulit tentang hal itu berasal dari lingkungan yang dijalankannya: yaitu, beberapa peramban web berbeda dengan gagasan berbeda tentang cara melakukan sesuatu.

Banyak informasi "bagaimana" yang akan Anda temukan di web akan ditulis dengan JavaScript, jadi Anda mungkin akan memiliki waktu yang lebih mudah jika Anda belajar cara membaca JavaScript dan menerjemahkannya ke dalam CoffeeScript yang setara.

Jujur saja, kecuali jika Anda sengaja mencoba untuk tetap bodoh, Anda mungkin akan berakhir dengan mempelajari JavaScript sebagai efek samping dari bekerja di CoffeeScript. Jadi mulailah saja.

benzado
sumber
4

Karena " Aturan emas CoffeeScript adalah: 'Ini hanya JavaScript' ," Saya merekomendasikan setidaknya dasar keakraban dengan JavaScript. Secara khusus, lihat buku kecil Douglas Crockford , JavaScript: The Good Parts . Anda juga dapat menonton presentasi pengantar Crockford yang hebat tentang hal itu.

CoffeeScript pada dasarnya membungkus bagian-bagian yang baik dari JavaScript dalam paket yang berbeda: " CoffeeScript adalah eksperimen pemikiran sederhana untuk membayangkan sebuah bahasa yang memperlihatkan sintaks minimal untuk model objek indah yang mendasari JavaScript. " Anda tidak perlu mengetahui semua detail, cukup untuk memahami bahwa JavaScript, itu sendiri, bukan bahasa berorientasi objek berbasis kelas. Tidak memiliki kelas sama sekali. Sebaliknya, ia menggunakan " prototipe ," dan itu membuat beberapa perbedaan dari bahasa OO lainnya. Jeremy Ashkenas membersihkan beberapa bagian buruk sintaksis JavaScript, menambahkan beberapa penyempurnaan, dan membuatnya sedikit lebih Python -sque.

JavaScript memiliki beberapa "gotcha" terkenal yang harus diwaspadai. Kalau tidak, itu adalah bahasa yang hebat dan sangat umum digunakan, hari ini. Kami tidak akan memiliki AJAX atau jQuery tanpanya, antara lain.

Semoga Sukses dengan CoffeeScript Anda!

John Tobler
sumber
Beli bagian yang bagus. Jangan menjadi pelit!
Raynos
@ Raynos - Saya lakukan. Aku tidak! : D Tapi saya menghapus saran pencarian yang berpotensi tidak pantas. Terima kasih telah menunjukkannya!
John Tobler
3

Iya. Ini bukan akhir dunia jika Anda tidak, tapi ya.

Mengapa? Yah pertama-tama, JavaScript sangat mudah dipelajari. Saya benar-benar butuh 4 hari untuk mempelajarinya (well, sebagian besar). Juga, saya percaya ini lebih berharga daripada CoffeeScript. Saya benar-benar berpikir Anda bahkan tidak perlu CoffeScript. Tapi itu masih alat yang bagus.

Dinamis
sumber
3
Saya sudah belajar JavaScript selama bertahun-tahun, dan saya masih tidak akan mengatakan saya benar-benar mengetahuinya. Sesekali saya menemukan hal-hal tentang hal itu yang mengejutkan saya. Mungkin mudah untuk belajar bagaimana melakukan "Hello World", tetapi belajar untuk memprediksi perilaku konversi tipe implisit dan penutupan tidak.
Zach
@Zach Anda mungkin tertarik dengan buku JavaScript Enlightenment . Satu ulasan berbunyi: "Sebenarnya, saya benar-benar tidak dapat menemukan sesuatu yang hilang. Jika Anda pernah bertanya-tanya mengapa JSLint mengeluh tentang sesuatu, akar penyebabnya kemungkinan akan dijelaskan di suatu tempat dalam buku ini."
Michelle Tilley
1
@ Penutupan Zach tidak terlalu sulit, konversi tipe itu menyusahkan. Masalah besar dengan JS adalah mengetahui apa yang versi IE lakukan.
Raynos
@ Zak: Saya tahu saya tidak tahu semua Javascript. Aku bahkan tidak dekat. Tetapi saya tahu bahwa dasar-dasar dan beberapa hal antara sangat mudah dipelajari.
Dinamis
0

Tergantung.

Jika CoffeeScript abstrak JavaScript cukup, sehingga Anda tidak perlu mengetahuinya (seperti C # abstrak bahasa Intermediate), maka ya, Anda dapat melakukan apa pun yang Anda ingin lakukan dalam CoffeeScript tanpa belajar JavaScript.

Tetapi pengalaman saya mengatakan bahwa tidak peduli berapa banyak saya mencoba melarikan diri dari JavaScript, ketika datang ke klien, saya kadang-kadang benar-benar harus membuat tangan saya kotor dan menulis JavaScript murni.

Ya kamu benar. sementara sintaksis JavaScript mudah dan Anda bisa mempelajarinya dalam waktu yang lemah, tetapi butuh waktu bertahun-tahun untuk menguasainya.

IMHO, seperti yang saya lihat CoffeeScript, itu tidak cukup dewasa untuk membungkus semua seluk-beluk JavaScript sepenuhnya. Jadi, saya tidak mengambil risiko tidak belajar atau bekerja secara langsung dengan JavaScript.

Saeed Neamati
sumber
CoffeeScript adalah abstraksi yang sangat tipis. Anda dapat mempelajari coffeescript secara langsung tetapi men-debug js yang dikompilasi akan menyusahkan. "dapatkan tangan saya kotor dan tuliskan javascript murni". JavaScript tidak kotor.
Raynos
1
@ Rayon, saya tidak bermaksud bahwa JavaScript itu kotor. :) Ini semacam ekspresi yang berarti Anda harus masuk ke lapisan dasar yang lebih dalam.
Saeed Neamati
itu seperti mengatakan "Saya sedang melakukan Pemrograman Game, lebih baik tangan saya kotor dan menulis c ++" atau "Saya melakukan beberapa AI, lebih baik tangan saya kotor dan menulis LISP". Satu-satunya lapisan dasar yang lebih dalam yang kita miliki di browser adalah NaCl
Raynos
0

Dokumentasi coffeescript mendefinisikan coffescript dalam hal javascript yang setara. Jika Anda tidak mengerti javascript, Anda juga tidak akan mengerti skrip kopi.

Sean McMillan
sumber