Advertisement
  1. Code
  2. Interviews

Haruskah Anda Belajar CoffeeScript?

by
Read Time:48 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Yusuf Samin (you can also view the original English article)

Saya akan membayangkan bahwa saya mewakili sebagian besar komunitas pengembangan web. Saya sangat tertarik oleh CoffeeScript; Saya bahkan telah belajar sintaks dan digunakan dalam beberapa demo. Namun, saya belum belum dibawa terjun dan digunakan dalam sebuah proyek yang nyata. Itu bermuara pada satu pertanyaan ini untuk saya: CoffeeScript adalah sesuatu yang benar-benar bernilai menginvestasikan waktu dan usaha untuk belajar?

Aku tidak yakin, jadi aku menyusun daftar sering diajukan (bersama dengan beberapa saya sendiri), dan meminta beberapa Master di industri - di kedua sisi pagar - dari saran mereka.

Panel

Jeremy Ashkenas - pencipta CoffeeScript.

Brendan Eich

John-David Dalton

  • "Aku dogmatis tinkerer JavaScript, bug fixer & benchmark runner. Saya memiliki gelar sarjana dalam desain pembelajaran Multimedia, istri yang mengagumkan & puppy."
  • @jdalton
  • FuseJS
  • Benchmark.js
  • uxebu Bio

Dave Ward

  • "Aku seorang pengembang perangkat lunak yang berfokus pada ASP.NET, jQuery, dan kegunaan aplikasi web."
  • @encosia

Marco Chomut

  • "Saya komputer ilmuwan Extraordinaire tinggal di Washington, DC area. Saya mengkhususkan diri dalam web dan pengembangan mobile, dan senang bekerja dengan Django dan Android."
  • @pewpewarrows

Trevor Burnham

James Padolsey

  • "Saya, oleh profesi, JS pengembang dengan pengalaman yang luas dalam pengembangan aplikasi front-end mengadopsi teknik JS/HTML5/CSS3 baru dan keren sementara yang mempekerjakan berbagai framework."
  • @padolsey
  • jQuery Cookbook
  • uxebu Bio

Nathan Smith

Ryan Florence

Oscar Godson

Alex MacCaw


1 - mungkin paling umum pertanyaan: jika aku cukup Solid JavaScript pengembang, Apakah ada setiap insentif nyata bagi saya untuk belajar CoffeeScript?

Jeremy Ashkenas

Ya. CoffeeScript bukanlah sebuah bahasa yang seluruhnya baru dan aneh. Itu ada untuk memungkinkan pengembang JavaScript "cukup padat" untuk menulis kode yang sama mereka akan menulis di tempat pertama, dalam cara yang lebih mudah dibaca dan fasih. Ide dasarnya adalah untuk menulis apa yang Anda maksud, bukan menulis dalam batas-batas kecelakaan sejarah. Sebagai contoh, jika saya ingin loop melalui setiap item dalam daftar, di CoffeeScript, aku bisa menulis apa yang saya maksud:

Sedangkan dalam JavaScript, saya sebagian mengaburkan maksud saya, dengan menulis:

CoffeeScript memungkinkan pengembang JavaScript "cukup solid" untuk mencapai yang terakhir hanya dengan menulis former.

Insentif lainnya termasuk
  • Kemampuan untuk menulis kode yang bekerja dalam versi Internet Explorer lama tanpa harus kompromi atau shim
  • Tidak harus khawatir tentang JavaScript perangkap seperti tanda koma dan penyisipan koma otomatis
  • Membersihkan semantik dimana setiap membangun bahasa dapat digunakan sebagai bagian dari suatu ekspresi yang lebih besar
  • dan tambahan fitur lainnya yang tercantum di CoffeeScript.org

James Padolsey

Jika Anda merasa nyaman dalam JavaScript, dan mampu menciptakan ekspresif API yang sesuai dengan Anda, kemudian saya tidak merasa ada insentif yang memadai untuk belajar CoffeeScript. Cakrawala pelebaran dan belajar baru paradigma dan pattern pemrograman selalu baik, tapi jika Anda belajar CoffeeScript sehingga dapat akhirnya menggantikan kebutuhan JavaScript kemudian ada hal lain untuk dipertimbangkan.

John-David Dalton

Jika Anda hebat dengan JS, saya tidak berpikir ada insentif nyata untuk mempelajari CoffeeScript. Hal-hal seperti kecelakaan leadked global, switch pernyataan jatuh-through, dan gotchas JS lain potensi dapat ditangani oleh JS linters/teks-editor dan tidak memerlukan langkah kompilasi / Node.js. Class gula begitu mendasar setiap JS pengembang dapat, jika diperlukan, mensimulasikan itu dalam beberapa baris. Kebetulan aku suka sama dengan gande ==, switch pernyataan jatuh-through dan tahu cara terbaik untuk menulis saya JS.

Harus mematuhi aturan orang lain apa yang mereka rasakan tepat tidak mesh baik dengan saya.

Juga, jangan lupa CoffeeScript bukan tanpa kutil sendiri.

Dave Ward

Terus membuka diri Anda perspektif baru dan teknologi adalah bagian penting dari menjaga sendiri agar tetap relevan di bidangnya.

Benar-benar. Terus membuka diri Anda perspektif baru dan teknologi adalah bagian penting dari menjaga sendiri agar tetap relevan di bidangnya, dan CoffeeScript sudah tentu kandidat besar bagi yang di ruang JavaScript. Bahkan jika Anda akhirnya memutuskan bahwa CoffeeScript tidak menarik bagi Anda, dapat menulis sedikit CoffeeScript harus prasyarat untuk membuat keputusan apa pun.

Nathan Smith

Saya telah menggunakan CoffeeScript selama beberapa bulan sekarang, sebagai bagian dari pekerjaan saya sebagai front-end dev tim Rails. Aku tidak tahu jika saya akan mengatakan ada "insentif" untuk belajar CoffeeScript jika Anda sudah tahu JavaScript. Saya tidak yakin akan ada dorongan kecepatan yang luar biasa yang bisa diperoleh, karena benar-benar tidak ada tool yang "terbaik" untuk pekerjaan, hanya satu yang Anda paling akrab dengan untuk menyelesaikan suatu tugas.

Walaupun saya menikmati nuansa nyaman JavaScript (seperti juga patah-dalam sepasang sepatu), ada juga banyak seperti di CoffeeScript-sintaks "kecuali", misalnya. Saya akan menyamakan menggunakan CoffeeScript untuk memiliki percakapan dengan seorang teman yang mengambil jurusan bahasa Inggris, memperbaiki tata bahasa Anda sekaligus. Itu bagus jika Anda ingin panduan bahwa, tapi kadang-kadang saya hanya ingin "tetap santai" dan berbicara slang, tanpa khawatir tentang apa yang akan diterjemahkan.

Catatan: saya ditangguhkan penghakiman sampai setelah membaca buku Trevor Burnham pada CoffeeScript. Sekarang bahwa saya tahu lebih banyak tentang hal itu, aku baik-baik menggunakan CS ketika saya am di sebuah tim yang sudah menggunakannya, tapi aku masih cenderung lebih suka JS untuk proyek-proyek saya sendiri.

Ryan Florence

Benar-benar. CoffeeScript adalah mempengaruhi keputusan TC-39 (seperti parent-free, class sintaks, arrow sintaks, dll.). Versi masa depan JavaScript akan mungkin terlihat banyak seperti CoffeeScript. Saya memutuskan untuk mempelajarinya setelah mendengarkan Brendan menyebutkan pengaruhnya selama berbicara di TXJS.

Jika ada sesuatu untuk belajar tentang CoffeeScript adalah bahwa hal itu _Just JavaScript™ _. Saya menganggap itu bagian dari komunitas kita dan benar-benar menikmati belajar dan menggunakannya. Ia tidak merasa seperti bahasa yang berbeda ketika Anda menggunakannya.

Brendan Eich

(Membatasi tanggapan saya untuk menanggapi Ryan Florence komentar tentang TC39, kecuali dalam paragraf terakhir saya.)

Pengaruh CoffeeScript pada TC39 dalam praktek ini kebanyakan saya menulis dan mengusulkan strawmen. Tidak ada namun telah terjebak. Aku akan melengkapi kembali parent-free untuk menjadi lebih seperti CoffeeScript bahwa baris akan menjadi lebih penting dalam pernyataan kepala (ini memecahkan kasus-kasus sulit beberapa jahat Waldemar Horwat diidentifikasi, lihat membahas es). Tapi tidak ada struktur blok berbasis indentasi.

Arrow fungsi sintax itu patut dilakukan tetapi itu tidak akan membuatnya. Blok lambdas berada dalam bentuk yang lebih baik tetapi belum "dalam". Sebagai Jeremy mengatakan, "sebagai catatan, saya juga mendukung [block lamda] jika Arrow di JS perlu curlies sebagai pembatas blok. Curlies atau arrow, tidak keduanya."

JS dan CoffeeScript yang secara resmi co-expressive--memiliki yang sama semantik--sangat besar. Ya, ini berarti Anda bisa saja ditulis JS. Tapi masalah produktivitas dan Kecantikan (di mata beberapa beholders); sintaks penting.

Oscar Godson

Di pendek, tidak. Insentif untuk CoffeeScript yang insentif, menurut pendapat saya, untuk pengembang yang tidak sepenuhnya memahami bahasa. Misalnya, untuk... dalam loop dan leaking global dan tidak memahami "this" sepenuhnya. Jika Anda memahami hal-hal yang Anda tidak membuat kesalahan mereka di tempat pertama, dan jika Anda melakukannya, Anda tahu apa masalah segera dan tahu cara untuk memperbaikinya. Memiliki transpiled seluruh bahasa untuk memperbaiki kesalahan umum tampak seperti berlebihan.

Marco Chomut

Karena penasaran profesional, Anda harus selalu mengeksplorasi bahasa baru, teknologi, Perpustakaan dan framework

Ada beberapa pendekatan yang berbeda untuk menjawab pertanyaan ini. Pertama dan terpenting, karena penasaran profesional, Anda harus selalu mengeksplorasi bahasa baru, teknologi, Perpustakaan dan framework. Hal terburuk yang bisa terjadi pada Anda sebagai pengembang akan menjadi terjebak dalam lubang. Jika Anda belajar bahasa COBOL, ColdFusion, atau PHP, dan itulah masih luasnya pengetahuan Anda lima tahun kemudian, Anda hanya meminta untuk menjadi usang. Kemudian lagi, itu adalah sama buruk untuk melompat kapal ke flavor-of-the-month baru setiap kali sesuatu yang agak menarik muncul di pembaca berita Anda atau Twitter feed. Memiliki rasa ingin tahu sehat sambil mempertahankan skeptisisme yang wajar.

Tiba kembali pada topik, jika Anda dan rekan kerja Anda sudah berpengalaman dalam membatasi diri untuk "good parts" JavaScript, dan menyakitkan sadar akan kekhasan yang, dari CoffeeScript mungkin tidak akan menawarkan Anda banyak. Ini adalah pendekatan yang lebih Ruby atau Python-like sintaks untuk bahasa yang melakukan segala sesuatu yang dapat mencegah Anda atau tim Anda dari penembakan diri di kaki. Tetapi ini bukan untuk semua orang.

Trevor Burnham

Jelas saya punya financial stake pertanyaan ini (buku saya dirilis oleh PragProg pada bulan Mei), sehingga Anda dapat mengambil kata-kata saya dengan sebutir garam. Tapi ya, saya pikir bahwa belajar CoffeeScript bernilai waktu. Tidak mengambil banyak usaha untuk belajar; CoffeeScript pada dasarnya adalah jumlah dari beberapa lusin sintaksis gula di atas JavaScript. Dan hadiahnya adalah bahwa Anda mendapatkan untuk menulis kode lebih indah, bila Anda inginkan. Misalnya, beberapa JavaScripters menggunakan CoffeeScript hanya untuk unit test mereka.

Beberapa orang mengeluh tentang harus menggunakan compiler di atas JavaScript, tetapi beberapa kekurangan JavaScript — seperti global creation otomatis ketika var kata kunci dihilangkan (lihat disini) — lebih atau kurang memerlukan penggunaan tool lain, atau modus strict. CoffeeScript adalah salah satu tool, dan mudah yang paling populer.

Alex MacCaw

Program CoffeeScript saya berakhir sebagai sekitar setengah panjang setara sumber ditulis dalam JavaScript.

Benar-benar; Bahkan saya akan mengatakan ada bahkan lebih insentif untuk belajar CoffeeScript jika Anda adalah pengembang JavaScript solid. CoffeeScript pasti memerlukan beberapa profiency JavaScript, ada mendapatkan dari itu. Pengetahuan JavaScript adalah pra-syarat, terutama ketika datang ke debugging.

Namun, untuk pengembang JavaScript yang baik, CoffeeScript menawarkan banyak keuntungan, seperti memperbaiki bug yang umum tentang variabel global, tanda titik koma dan kesetaraan perbandingan. Terus terang, bahkan terbaik JavaScript pengembang membuat kesalahan sederhana semacam ini dari waktu ke waktu.

Keuntungan besar lainnya CoffeeScript menawarkan saya JavaScript adalah sintaksis gula seperti pendek Deklarasi fungsi, comprehensions dan abstraksi kelas sederhana. Program CoffeeScript saya berakhir sebagai sekitar setengah panjang setara sumber ditulis dalam JavaScript, dengan dua kali kejelasan.


2 - Apakah CoffeeScript ditargetkan untuk pengembang JavaScript? atau, apakah itu untuk Devs yang lebih memilih bahasa lain, seperti Ruby dan belum belum belajar seluk-beluk JS?

Jeremy Ashkenas

Ide inti dengan CoffeeScript adalah untuk semantik JavaScript Check di sebagai dibaca dan minim sintaks sebagai kita dapat temukan.

CoffeeScript ditargetkan untuk pengembang JavaScript. Tentu saja meminjam ide dari bahasa pemrograman dinamis lainnya, termasuk Python, Ruby dan Perl. Tetapi pada akhirnya, ide inti dengan CoffeeScript adalah semantik JavaScript Check di sebagai dibaca dan minim sintaks yang seperti yang kita dapat temukan.

John-David Dalton

Sepertinya saya pengembang yang lebih memilih bahasa seperti Ruby condong lebih ke arah CoffeeScript daripada mereka yang tidak. Meskipun, itu umum untuk mencari pengembang memiliki cinta / benci pendapat tentang hal itu dalam setiap grup.

Nathan Smith

Saya pikir CoffeeScript ditujukan pada orang-orang yang mengerti JavaScript, tetapi yang bukan bahasa pilihan mereka. Jika tidak, (jelas) mereka akan memilih untuk hanya menulis JS. Apakah yang tahu seluk-beluk JS ketika mulai dengan CS, hal ini penting jika salah satu untuk mendapatkan hasil maksimal dari menggunakan CS.

Oscar Godson

Saya bekerja di Yammer dengan banyak JavaScript engineer senior; tidak ada yang menggunakannya. Saya melihat bahwa teman-teman yang menggunakannya dan sangat bahagia tentang hal itu adalah orang-orang Rails. Sebagai contoh, di Posterous, mereka menggunakannya tetapi tidak memiliki JavaScript engineer asli. Kami memiliki orang Rails di sini, tetapi mereka hanya melakukan Rails - bukan JavaScript.

Ryan Florence

Saya akan harus menunda untuk Jeremy untuk yang satu, tapi saya pikir itu menarik terutama untuk Rubyists yang menemukan mereka menghabiskan sebagian besar hari mereka di JavaScript. CoffeeScript pengetahuan bukanlah pengganti untuk pengetahuan JavaScript. Cakupan jenis yang berbeda; Selain itu, sintaks yang lebih bersih.

Marco Chomut

Saya pasti akan mengatakan bahwa itu menargetkan kedua pengembang JavaScript yang ada dan mereka yang berasal dari bahasa pemrograman dinamis lainnya yang agak baru untuk dunia front-end web. Saya pribadi menemukannya setelah sudah memiliki jumlah yang layak "raw" JS pengalaman, dan itu menyegarkan untuk bekerja dengan apa yang saya bayangkan zaman modern sisi klien bahasa akan terlihat seperti. Sementara itu pendekatan saya pribadi untuk belajar hal-hal, saya tidak berpikir saya akan memiliki Merpati langsung ke CoffeeScript tanpa pengetahuan sebelumnya dari bahasa itu dibangun di atas apa.

Hal ini penting untuk selalu memiliki setidaknya pemahaman dasar apa pun "black box" abstraksi yang ada dalam toolkit Anda.

Trevor Burnham

Jika Anda seseorang yang suka JavaScript tapi ingin menulis kode lebih ekspresif, CoffeeScript akan menjadi pilihan yang jelas.

CoffeeScript's Tujuannya adalah untuk menginap sedekat mungkin ke JavaScript mendasari sambil meningkatkan pada sintaksis bahasa. Yang membuatnya sangat berbeda dari, katakanlah, Dart, atau GWT, atau sesuatu yang menata ulang kode seperti TameJS. Jadi saya berpikir bahwa jika Anda seseorang yang suka JavaScript tapi ingin menulis kode lebih ekspresif, CoffeeScript akan menjadi pilihan yang jelas.

Jelas ini tidak proporsional populer di dunia Ruby, karena itu dipinjam Ruby-isme banyak seperti postfix jika / kecuali dan memiliki seorang penginjil yang sangat menonjol di dhh, tapi hal ini juga cukup populer di dunia Node.js, yang mengatakan banyak.

Alex MacCaw

Saya telah menggunakan JavaScript bertahun-tahun, dan menulis buku O'Reilly pada aplikasi web JavaScript. Saya kira Anda bisa mengatakan saya telah belajar 'seluk-beluk' bahasa. Yang mengatakan, saya secara pribadi berencana untuk tidak pernah menulis JavaScript biasa lagi, bukan karena aku tidak suka bahasa, tapi karena aku suka menulis CoffeeScript begitu banyak.

CoffeeScript adalah untuk orang yang sangat memahami dan menghormati JavaScript.


3 - ketika Dart diumumkan, itu adalah bertemu dengan segera fitnah oleh sebagian besar masyarakat JS. Meskipun bukan sebuah bahasa yang berbeda, yang sama sebagian benar untuk CoffeeScript. Apakah beberapa pengembang hanya takut belajar hal baru lagi, atau kritik mereka dibenarkan?

Jeremy Ashkenas

Dengan rilis Dart, komunitas pengembangan web menghadapi bahaya Google memaksa bahasa yang baru, tidak standar ke browser web pengiriman.

DART adalah cerita yang berbeda. Dengan rilis Dart, komunitas pengembangan web menghadapi bahaya Google memaksa bahasa yang baru, tidak standar ke browser web pengiriman. Seperti kita tahu baik dari web--setelah Anda mengirimkan sesuatu di browser, ia cenderung untuk berada di sana selamanya. Selain itu, Dart retret dari dinamisme JavaScript, dan bukannya ada sebagai bahasa yang agak statis, mana jenis dapat diperiksa pada waktu kompilasi, tetapi akan terhapus pada saat runtime. Komunitas JavaScript dianggap ini sikap sinis untuk membuat pengembang Java merasa lebih di rumah di Dart, mampu menulis jenis yang muncul sama dengan jenis Java, meskipun mereka diperlakukan sebagai komentar ketika program ini berjalan. Hal ini tidak hanya pengembang JavaScript menjadi waspada terhadap menekan Dart, pelaksana browser juga waspada.

Sekarang, mari kita ambil kasus CoffeeScript. CoffeeScript telah merasakan mengancam untuk jumlah yang mengejutkan pengembang JavaScript, dengan cara yang bahasa lain belum bis. Anda tidak mendengar JS programmer mengkhawatirkan tentang bahasa lain baru seperti Clojure atau Scala, atau bahkan kompilasi untuk JS bahasa seperti GWT atau Objective-J dalam apa pun yang mendekati volume yang sama.

Perhatikan bahwa saya tidak berbicara tentang orang-orang yang hanya memilih untuk terus menggunakan JavaScript--saya terus menggunakan JavaScript untuk banyak proyek juga. Aku bicara tentang menakutkan retorika "Saya tidak akan menggunakan perpustakaan Anda karena Anda menulis dalam CoffeeScript", atau "CoffeeScript membuat Anda lupa bagaimana menulis JavaScript."

CoffeeScript terasa mengancam untuk pengembang JavaScript justru karena begitu dekat dengan JavaScript.

Karena semantik yang sama, setiap program CoffeeScript sepenuhnya interoperable dengan JavaScript, dan sebaliknya. Anda mungkin sudah menggunakan perpustakaan ditulis dalam CoffeeScript tanpa bahkan mengetahui ini (seperti Zombie.js, Riak-JS atau xml2js). Selain itu, CoffeeScript adalah benar-benar digunakan--ini adalah saat ini bahasa paling populer ke 13 di GitHub.

Sebagai pengembang JavaScript, menghadapi hal ini situasi--mana ada alternatif yang sepenuhnya kompatibel untuk JavaScript, dengan profil kinerja yang sama--memaksa Anda untuk menjawab pertanyaan: "kenapa tidak Anda belum mencoba CoffeeScript?" Banyak dari post yang kita lihat adalah pengembang membenarkan mereka jawaban untuk pertanyaan itu sendiri. Jika saya belum mencoba CoffeeScript belum, saya mungkin akan menulis jenis post yang sama.

James Padolsey

Pertempuran sejati adalah menciptakan api yang bersih, intuitif dan maintainable.

DART yang sedikit berbeda. Satu, itu adalah dari Google! yaitu bahwa besar monopoli yang kita harus berhati-hati. Melampaui berbagai isu-isu politik, Dart tampaknya tidak membawa apa-apa ke meja selain sintaks Java-esque yang lain, yang banyak pengembang tidak terlalu suka, termasuk saya sendiri. Saya lebih suka menempel paling ekspresif API/bahasa saya memiliki pembuangan saya. Ketika datang ke CoffeeScript, meskipun, aku berhati-hati karena benar-benar, itu hanya JavaScript, tetapi dengan sintaks yang sama sekali berbeda. JavaScript's cukup lunak bagi saya untuk membuat API dan fungsionalitas yang saya butuhkan. Saya tidak terlalu peduli untuk kenyamanan kecuali jika hal ini benar-benar meningkatkan kemampuan saya untuk menulis kode yang baik. Beberapa fitur yang CoffeeScript, seperti destructuring tugas dan operator eksistensial, benar-benar mengagumkan, tapi jujur, mereka hanya kecil manis, dan fungsi yang sama dapat diperoleh di JavaScript (Lihat JS 1.7 untuk destructuring juga!), meskipun dengan bertele-tele lebih sedikit. Pertempuran sejati adalah menciptakan api yang bersih, intuitif dan maintainable. CoffeeScript tidak akan membantu. Seperti saya katakan, itu adalah pemanis.

John-David Dalton

Saya tidak berpikir itu adalah takut sesuatu yang baru. Bagi saya setidaknya, hal ini lebih tentang tidak ingin over-engineer dan memiliki lebih banyak kontrol atas JS saya.

Dave Ward

Sulit untuk berbicara bagi orang lain, tetapi saya tidak mendapatkan kesan bahwa banyak pengembang JavaScript menghindari CoffeeScript karena mereka menghindari hal-hal baru. Jika ada, saya pikir sebagian besar pengembang yang menyadari CoffeeScript sama sekali mungkin pada akhir adopter awal kurva.

Secara khusus, saya percaya bahwa keengganan terhadap menambahkan CoffeeScript di kompilasi langkah ke dalam pengembangan sisi klien secara obyektif dibenarkan, tidak terkait dengan investasi apapun sebelumnya dalam belajar JavaScript.

Nathan Smith

Dengan teknologi baru berpotensi mengganggu, orang-orang yang telah mempertaruhkan klaim mereka di jalan saat ini melakukan hal yang cenderung untuk pergi melalui lima "Tahapan kesedihan."

Ini adalah pengalaman saya, toh...

  1. Denial-"Aku belum pernah menggunakan CoffeeScript." (atau Dart)
  2. Anger-"Saya berharap orang akan tutup sudah tutup mulut tentang hal itu!"
  3. Bargaining-"Oke, saya kira itu * beberapa * bagian-bagian yang baik."
  4. Depression-"Aku tidak percaya saya harus belajar ini."
  5. Acceptance — * mengangkat bahu * ~ "Menggunakan tool terbaik untuk pekerjaan itu."

Yang mengatakan, ada pembenaran untuk kritik CoffeeScript (dan Dart). Namun, sedangkan CoffeeScript upaya untuk mematuhi "Roh" JavaScript (kode singkat, dll), akhir permainan untuk Dart adalah untuk mendapatkan pengembang menulis bahasa yang sama sekali berbeda sama sekali (sebaiknya diinterpretasikan dalam VM peramban, bukan menjadi precompiled ke JS). DART ini lebih mirip dengan Java daripada JavaScript.

Kritik paling valid terhadap bahasa apapun yang akan mencoba untuk menggantikan JavaScript adalah bahwa JS memiliki dasar terbesar di dunia instalasi runtime bahasa apapun (pada browser desktop, server, dan perangkat mobile). Ini mungkin tidak sempurna, tetapi sejauh distribusi pergi, "hanya bekerja."

Brendan Eich sudah telah menyatakan minatnya dalam melihat aspek CS dilipat kembali ke versi masa depan ECMAScript. Sebaliknya, Dart telah bertemu dengan kritik keras dari tidak hanya pengembang JS, tetapi dari komunitas WebKit.

Oscar Godson

Ya dan tidak. saya cenderung lebih kritis terhadap hal-hal sebelum saya sudah mencoba mereka, tapi aku mencoba CoffeeScript untuk melihat apa semua hype tentang. Itu bagus, tapi itu tidak layak. Mengapa memiliki bahasa yang dikompilasi untuk * hanya * membantu Anda dengan umum JS kutil dan untuk membuat JS lebih "cantik"? Thats what saya pikir tentang hal itu. JavaScript engineer cenderung elitis meskipun, saya setuju dengan itu, tetapi dalam kasus ini saya percaya itu adalah untuk alasan yang baik. Alasannya adalah, jangan menulis bahasa yang sama sekali berbeda untuk memperbaiki beberapa kutil tentang hal itu.

Ryan Florence

[...] Kita sudah begitu bosan dengan fragmentasi.

CoffeeScript dan Dart bahkan tidak sebanding. Dark bertujuan untuk mengganti JavaScript, CoffeeScript adalah tidak lebih dari satu lapisan bagus cat. Anda dapat menggunakan CoffeeScript dan masih "selalu bertaruh pada JS". Saya pikir front-end devs senang belajar hal baru (lingkungan kita selalu rusak, Anda akan suka belajar hal-hal untuk bertahan hidup), mohon begitu bosan dengan fragmentasi. Itu benar-benar dibenarkan panik jika Anda melihat "ActiveX 2.0" datang. CoffeeScript bukanlah ancaman JavaScript.

Marco Chomut

Saya percaya keduanya reaksi dibenarkan sama (walaupun ketika Google yang terlibat, orang selalu cenderung untuk membesar-besarkan pendapat salah satu cara atau yang lain untuk alasan apa pun). CoffeeScript adalah dibayangkan JavaScript dari komunitas Ruby dan Python. DART adalah dibayangkan dari subset dari komunitas Java. Bahasa bias samping, saya jujur tidak percaya bahwa Java-fying bahasa sudah dinamis dan (boleh dibilang) verbose adalah pendekatan yang benar.

Ini mungkin tidak membantu bahwa komunitas JavaScript sudah alergi terhadap ide Dart sebelum bahkan diumumkan, karena set "leaked" korespondensi sekitarnya.

Trevor Burnham

Tentu saja beberapa kritik dari CoffeeScript dibenarkan. Maksudku, "signifikan spasi jahat" satunya timpang, tetapi "ini membagi komunitas" legit. Ada sesuatu yang bisa dikatakan untuk JS menjadi lingua franca. Tapi Anda melihat kesalahan JS sangat umum seperti lupa koma dalam multi-baris objek literal (atau menambahkan tambahan satu di akhir baris terakhir), dan hal itu menyebabkan app Anda menjadi error... jenis tertentu programmer (termasuk saya), tidak harus berurusan dengan itu besar menghirup udara segar.

Saya pikir CoffeeScript dan JS akan hidup berdampingan secara damai di masa mendatang, dan ada akan menjadi pembenci, dan itu baik-baik saja. Itu adalah bagaimana Anda tahu ini adalah bahasa pemrograman yang nyata.

Alex MacCaw

CoffeeScript tidak berniat untuk mengganti JavaScript, atau abstrak menjauh, tetapi bukan untuk meningkatkan itu.

Seperti orang lain telah disebutkan, Dart adalah binatang yang sama sekali berbeda dengan CoffeeScript, dan banyak kritik ditujukan Dart yang mengenai rincian pelaksanaan dan pendekatan Google, daripada hanya keberadaan bahasa lain. Terus terang, CoffeeScript adalah bahasa yang sama sekali berbeda untuk Dart.

Google mengambil agak pendekatan taman berdinding untuk Dart, dan saya mendapatkan kesan mereka benar-benar tidak terlihat di luar batas-batas perusahaan mereka untuk inspirasi. Apakah ini adalah karena beberapa jenis sindrom tidak diciptakan di sini, atau kenyataan bahwa mereka membutuhkan bahasa yang akan menarik bagi pengembang Java mereka, aku tidak yakin. Namun, Dart menyerang saya sebagai sesuatu yang sangat spesifik untuk kebutuhan Google, bukan sesuatu yang dapat diterapkan pada umumnya.

CoffeeScript tidak berniat untuk mengganti JavaScript, atau abstrak menjauh, tetapi bukan untuk meningkatkan itu. Jadi, bukan hanya bahasa yang sama sekali berbeda, namun motif di belakang mereka sangat berbeda. Sehingga sangat sulit untuk membandingkan kritik antara keduanya.


4 - Apakah itu wajar untuk berasumsi bahwa, jika Anda menentang gagasan untuk CoffeeScript, maka Anda mungkin juga terhadap preprocessors CSS, seperti Sass dan kurang? Atau, Apakah Anda melihat perbedaan keduanya tertentu (seperti yang saya lakukan)?

James Padolsey

Saya belum pernah menggunakan Sass atau Less sehingga aku benar-benar tidak bisa komentar. Aku akan mengatakan bahwa ide umum adalah sama dalam bahwa mereka sedang semua sedikit meningkatnya tingkat abstraksi, memungkinkan Anda untuk dengan cepat mendapatkan fungsionalitas tanpa harus ketik verbose alternatif. Aku akan mengatakan bahwa hal yang membuat saya tetap mengambil CoffeeScript sangat berbeda dengan apa akan menjaga aku dari mengambil CSS preprocessor.

John-David Dalton

Saya tidak bekerja keras dengan CSS dan belum pernah menggunakan CSS preprocessor tapi aku bisa mengerti kebutuhan untuk mengelola cluster vendor prefixes. Saya juga tidak nyaman dengan CSS seperti saya dengan JS.

Nathan Smith

Saya tidak berpikir ini merupakan sebuah anggapan yang sepenuhnya akurat. Sementara mungkin ada beberapa orang yang yang melawan semua preprocessing kode client-side, dengan Sass (dan Compass) Anda mendapatkan lapisan di atas CSS yang sangat "dekat logam" dalam hal sintaks. Salah satu manfaat dari Kompas adalah kemampuan untuk menulis satu baris yang berubah menjadi beberapa baris vendor prefixed code. Satu tidak perlu menghafal variasi yang berbeda pada styling sama yang akhirnya menjadi usang ketika standar yang disepakati. Contoh Sass (dengan Kompas):

Itu dibaca bersih, dan agak mirip dengan apa yang mungkin menjadi standar dalam CSS.

CoffeeScript, di sisi lain, menambahkan lapisan sintaksis baru yang berusaha untuk menjadi keberangkatan dari JavaScript, menggabungkan idiom dari bahasa lain yang tidak native untuk JS.

Sass menambahkan variabel, matematika warna, dan banyak hal-hal yang tidak bisa dilakukan dalam CSS sendirian. Padahal, CoffeeScript menyediakan pendekatan alternatif untuk JavaScript apa sudah sempurna mampu melakukan. Saya percaya itu sebabnya kita memiliki diskusi ini — beberapa melihat nilai dalam hal itu. Lainnya tidak.

Oscar Godson

Saya pribadi memiliki apa-apa terhadap CSS preprocessors karena mereka menambahkan fungsionalitas. Saya tidak menggunakannya karena aku murni Anda bisa mengatakan, tapi mereka menghemat waktu dengan mengetik lebih sedikit - terutama untuk orang-orang yang melakukan banyak CSS coding. Mereka juga tidak bertujuan untuk memperbaiki hal-hal yang "patah" - hanya memperpanjang itu. Saya tidak menggunakannya dan tidak melihat diriku pernah menggunakannya untuk hal-hal pribadi tetapi saya tidak menentang untuk menggunakannya.

Ryan Florence

Ada perbedaan. SASS, Less, Stylus dll semua membawa sesuatu untuk CSS yang tidak ada.

Ada perbedaan. SASS, Less, Stylus dll semua membawa sesuatu untuk CSS yang sudah tidak ada: logika--ternyata CSS Anda ke aplikasi. CoffeeScript tidak membawa apa-apa "yang baru" JavaScript dengan cara yang sama, itulah sebabnya hal ini sangat diperdebatkan. Tidak menggunakan CSS preprocessor tidak benar-benar bahkan diperdebatkan untuk apa pun tidak-sepele.

Marco Chomut

CoffeeScript menyediakan sintaks yang bersih...

Aku akan harus setuju dengan jawaban lainnya di sini bahwa CSS "setara" CoffeeScript, seperti SASS atau Less, sering dinilai cukup berbeda. Bagi saya, SASS selalu default pada setiap proyek baru bahwa saya bekerja di, sementara CoffeeScript terus dapat diperdebatkan. CoffeeScript menyediakan sintaks yang bersih, melakukan yang terbaik untuk menjaga seorang pengembang yang terlindung dari bagian yang buruk dari JavaScript, dan memungkinkan Anda untuk menghindari berbasis prototipe warisan dengan struktur kelas built-in. SASS di sisi lain menawarkan sebuah membunuh fitur (sangat diperlukan) untuk CSS yang Anda dinyatakan tidak akan mampu memiliki. Variabel, fungsi, mixins, daftar berjalan dan terus. CoffeeScript benar-benar tidak menawarkan salah satu meta-fitur ini JavaScript, dan benar-benar hanya bermuara sintaksis sugar.

Trevor Burnham

Saya jujur kagum bahwa orang masih menggunakan Sass SCSS.

Sass adalah contoh menarik karena ia pergi melalui perpecahan besar itu sendiri: awalnya, itu adalah alternatif yang sepenuhnya signifikan spasi untuk CSS, dan tentu saja beberapa orang mencintai yang dan lain membencinya. Sekarang datang dalam dua rasa: sintaks "Sass Classic" signifikan spasi, dan CSS superset SCSS. Mereka berdua mengganggu ketat; kompilator "Sass Classic" akan berteriak pada Anda jika Anda menggunakan begitu banyak sebagai tanda titik koma. Kemudian TJ Holowaychuk datang dan menciptakan Stylus, yang memungkinkan Anda menggunakan sintaks spasi-signifikan dan kurung kurawal sintaks... pada file yang sama! Ini adalah solusi yang jauh lebih elegan, dan saya jujur kagum bahwa orang masih menggunakan Sass SCSS.

Yang bukan untuk mengatakan bahwa CoffeeScript harus mulai menerima kurung kurawal (akan ada beberapa kasus yang ambigu). Intinya adalah hanya bahwa CSS preprocessors tidak benar-benar tentang sintaks yang bersih dan terser cara CoffeeScript. (SCSS sintaks lebih populer daripada Sass klasik, mungkin karena desainer dapat tetap menggunakan potongan CSS yang mereka terbiasa tanpa menjalankan mereka melalui konverter.) They're tentang melakukan hal-hal dengan cara yang sama sekali berbeda. CSS bukan benar-benar bahasa; CSS preprocessors (dengan variabel dan fungsi) adalah.

Rebuttle dari Nathan Smith:

CSS * adalah * bahasa. Tidak bukan "bahasa pemrograman yang". Saya melihat titik meskipun, preprocessors memungkinkan untuk deklaratif, fungsional pemrograman.

Alex MacCaw

Yah, saya tidak berpikir ini selalu terjadi. Secara pribadi saya senang Less dan Stylus, sebanyak saya menikmati CoffeeScript. Namun, saya tidak penggemar abstraksi HTML seperti HAML dan Jade. Aku mengevaluasi setiap teknologi independen. Aku tidak untuk atau melawan preprocessors secara umum.


5 - kritik sering CoffeeScript adalah bahwa, jika setiap orang menggunakan itu, kita mungkin mendapatkan ke titik ketika tidak ada mengingat (atau pernah belajar) bagaimana menulis JavaScript yang sebenarnya. Apakah ini kekhawatiran berlaku?

Jeremy Ashkenas

Nope--CoffeeScript mengekspos subset dari JavaScript semantik. Jika Anda belajar bagaimana menulis CoffeeScript, hampir oleh definisi Anda akan tahu bagaimana menulis JavaScript. Belajar tidak nol - sum game. Belajar bahasa atau dialek tidak mencegah Anda mengenal orang lain.

Pada kenyataannya, seperti orang-orang yang merasa nyaman berbicara beberapa bahasa merasa mudah untuk mengambil lebih; programmer yang tahu lebih dari satu dialek JavaScript dapat lebih baik untuk mempelajari konsep-konsep baru dan idiom.

John-David Dalton

Tidak. Seperti itu adalah CoffeeScript mengkompilasi untuk JS jadi pengembang masih harus berurusan dengan JS ketika debugging, untuk sementara waktu, dan masih dapat menggunakan JS melalui embedding sintaks yang didukung.

-http://jashkenas.github.com/coffee-script/#embedded
-https://bugs.webkit.org/show_bug.cgi?id=30933
-https://bugzilla.mozilla.org/show_bug.cgi?id=618650

Dave Ward

Berbagai tool dan framework yang telah telah "menyusun" HTML untuk hampir sepanjang sebagai HTML telah ada

Tidak, saya tidak berpikir itu mungkin.

Berbagai tool dan framework yang telah telah "menyusun" HTML untuk hampir sepanjang sebagai HTML telah ada, namun pengetahuan (dan penghargaan untuk) markup HTML yang dihasilkan hanya meningkatkan selama waktu itu. Dengan kebanyakan abstraksi, Anda pasti menemukan diri berurusan dengan edge kasus-kasus yang memaksa Anda untuk mempelajari lebih mendalam tentang teknologi yang mendasari. Jika ada, sebuah abstraksi sederhana atas sesuatu yang lebih menakutkan sering menyediakan onramp menarik bagi pengembang baru, akhirnya memimpin mereka untuk mempelajari lebih lanjut tentang topik disarikan dari mereka akan sebaliknya telah nyaman dengan.

Nathan Smith

Jika CoffeeScript menjadi "maintstream" kemudian lebih banyak orang akan mengambil minat dalam bahasa JavaScript.

Saya benar-benar berpikir (harapan) mungkin sebaliknya akan benar. Saya berpikir bahwa jika CoffeeScript menjadi "mainstream" kemudian lebih banyak orang akan mengambil minat dalam bahasa JavaScript itu sendiri. Saya telah bertemu beberapa desainer yang tidak peduli tentang JavaScript sama sekali, tapi belajar bagaimana untuk memotong dan menyisipkan potongan jQuery. Tak lama kemudian, mereka mengatakan "Man, aku benar-benar perlu untuk belajar JavaScript."

Sama seperti jQuery dinyalakan minat JS antara desainer dengan yang "membaca seperti CSS" selector, saya berpikir bahwa mungkin CoffeeScript akan bahwa "gateway obat" untuk JS pemahaman yang lebih besar, kecuali untuk Rubyists. Either way, yang sudah tahu JS memiliki leg-up.

Oscar Godson

Apakah Anda pernah ke StackOverflow baru saja? Mencoba mengajukan pertanyaan tentang JavaScript. Saya pernah bertanya tentang melakukan beberapa tanggal parsing (untuk mendapatkan Rabu berikutnya) dan seseorang dikirim saya seluruh jQuery plugin. Itu berakhir dengan sebuah satu kapal dan jQuery plugin mendapat suara terbanyak dibandingkan dengan tepat satu baris jawaban. Hal ini terjadi dengan jQuery mana orang hanya mengambil jQuery dan tidak pernah repot-repot untuk belajar JavaScript. On Twitter saya mendengar seseorang menanyakan tentang cookie session dan seseorang menyarankan mereka menggunakan jQuery dan termasuk $.cookie plugin. Im khawatir bahwa CoffeeScript akan berakhir seperti ini dimana orang akan termasuk ini untuk aplikasi sederhana atau ketika mereka hanya tidak benar-benar ingin mengerti JS.

Ryan Florence

Anda tidak bisa menulis CoffeeScript tanpa mengetahui JavaScript. Anda debug JavaScript. Anda menggunakan libs pihak ketiga JavaScript. Anda tidak bisa jauh dari itu (Cacat besar dalam menggunakan CoffeeScript untuk aplikasi real world). Jadi tidak, ini bukan argumen yang valid untuk melawan CoffeeScript.

Fakta bahwa argumen ini cacat adalah argumen yang solid untuk tidak menggunakan CoffeeScript. Jika Anda tidak bisa istirahat dari JavaScript, apa gunanya?

Marco Chomut

Mirip argumen yang dibuat sekitar waktu jQuery menjadi cukup populer. Aku tidak percaya bahwa itu adalah kekhawatiran berlaku kemudian, dan saya tidak berpikir sekarang. Belajar CoffeeScript juga akan meminta Anda untuk beberapa titik-timang bawah dan belajar mendasari JavaScript. Ini tidak benar-benar sesuatu yang Anda dapat menghindari, sampai hari datang (jika pernah) bahwa browser mengurai dan mengeksekusi Native. Anda akan mengalami kesalahan aneh atau interaksi yang akan memaksa Anda untuk memahami apa itu menerjemahkan ke dalamnya.

Trevor Burnham

Anda tidak boleh menggunakan CoffeeScript tanpa mengetahui JavaScript.

Apa yang Ryan katakan.

Anda tidak boleh menggunakan CoffeeScript tanpa mengetahui JavaScript, meskipun Anda dapat mempelajari keduanya pada waktu yang sama. Maksudku, harus ada satu juta orang di luar sana yang menggunakan JavaScript tanpa benar-benar mengetahui JavaScript. Banyak dari mereka memiliki bahasa utama lainnya, dan mereka tidak pernah benar-benar akan seperti JavaScript sebagai mereka seperti Ruby, atau PHP atau Java, jadi mereka hanya belajar sebanyak yang mereka butuhkan untuk mendapatkan. Itu adalah semacam kerumunan buku saya terutama ditujukan. Seperti "Hei, mari kita belajar ini pinggul bahasa baru, dan sepanjang jalan kita akan mengisi kesenjangan dalam pengetahuan JavaScript kita."

Alex MacCaw

Sebaliknya, itu adalah justru sebaliknya. Saya tidak berpikir ini adalah kekhawatiran berlaku. Seperti orang lain telah menyatakan, pengetahuan JavaScript adalah syarat untuk menulis CoffeeScript. Jadi dengan menulis CoffeeScript saya pikir Anda JavaScript pengetahuan harus, jika ada, tingkatkan.

JavaScript yang dihasilkan oleh kompiler CoffeeScript adalah kedudukan tertinggi, dan dengan browsing melalui itu Anda pasti belajar beberapa trik.

Namun, saya benar-benar setuju bahwa fakta Anda tidak dapat melepaskan dari JavaScript adalah argumen untuk tidak menggunakan CoffeeScript. CoffeeScript adalah subset terkurasi ringan dari bahasa, meningkatkan sintaks itu dan hanya menyajikan bagian' baik'. Dengan kata lain, saya pikir ini merupakan perbaikan.


6 - salah satu argumen mendukung CoffeeScript yang jarang melihat dikemukakan adalah bahwa ia dapat membuat Anda seorang pengembang JavaScript yang lebih baik - terutama jika Anda agak baru untuk bahasa. Mirip dengan Rails, array besar praktek-praktek terbaik dipanggang ke kompilator. Apakah Anda melihat manfaat dalam aspek itu? Menggunakan CoffeeScript untuk menjadi seorang pengembang JavaScript yang lebih baik?

Jeremy Ashkenas

Sejumlah besar pengguna telah melaporkan belajar trik baru dan pattern dari membaca JavaScript mereka yang dikompilasi.

Ya. Sejumlah besar pengguna telah melaporkan belajar trik baru dan pattern dari membaca JavaScript mereka yang dikompilasi.

Tetapi memiliki praktek-praktek terbaik yang dibangun untuk kompilator tidak terutama manfaat bagi pemula - manfaat programmer jangka panjang yang dapat mengambil keuntungan penuh dari memiliki cara yang ringkas, mudah dibaca untuk mengungkapkan maksud mereka JavaScript dalam kode--tanpa harus terus-menerus Perhatikan pola praktik terbaik. Praktik terbaik yang dapat ditegakkan dan dihasilkan oleh kompiler lebih baik daripada praktik terbaik yang harus diingat dan secara manual diketik setiap waktu.

James Padolsey

Satu-satunya masalah yang saya lihat dengan mengambil pendekatan ini adalah bahwa Anda tidak benar-benar belajar JavaScript, dan ada begitu banyak keajaiban terjadi bahwa Anda tidak akan selalu dapat menghargai panjang bahwa Anda mungkin harus pergi ke dalam rangka untuk mendapatkan hal-hal serupa yang dilakukan pada JavaScript. CoffeeScript lebih mudah untuk tugas ini.

Itu akan mengajarkan Anda untuk menjadi programer yang lebih baik, saya pikir, tetapi jika Anda ingin belajar JavaScript, maka belajar, murni.

John-David Dalton

Saya pikir Anda dapat mengambil "itu membuat Anda menjadi pengembang JS yang lebih baik" dan menerapkan bahwa ada JS libs/framework. Saya belajar banyak dari menggali dalam dan memperbaiki masalah dalam libs seperti Dojo, jQuery, MooTools, dan Prototype. Kode yang dihasilkan oleh CoffeeScript extraneously verbose dan mempromosikan mikro-optimasi (yang tidak selalu berguna dan tidak "best practice").

Aku tidak melihat ke CoffeeScript atau JS yang dikompilasi untuk meningkatkan kemampuan JS saya dan akan suka melihat ke berumur pertempuran mengeras JS libs.

Dave Ward

Jika seseorang ingin menjadi seorang pengembang JavaScript yang lebih baik, kurangnya rute jalan memutar. Saya pikir pikiran utama untuk menjadi JavaScript sulit bagi pemula lebih konseptual daripada sintaksis. CoffeeScript tidak mengubah fakta bahwa Anda perlu untuk memahami konsep-konsep seperti closures, pemrograman asynchronous dan continuation passing untuk menulis kode JavaScript yang tidak-biasa.

Nathan Smith

Saya pikir ada beberapa kebenaran ini. Jika Anda secara konsisten Check JavaScript apa output oleh kompiler CoffeeScript, saya pikir ada beberapa wawasan untuk dipetik. Misalnya, menyatakan semua variabel pada awal fungsi, untuk mencegah variable hoisting.

Selain itu, konsep closure diperkenalkan secara otomatis. Ini mungkin tampak frustasi pada awalnya, jika hanya berusaha untuk membuat variabel global, langsung inline (memancarkan sesuatu dari sisi server dalam HTML). Karena ini, CoffeeScript memberlakukan kebiasaan baik, seperti secara eksplisit melampirkan variabel objek global, kalau itu memang apa yang Anda maksud untuk melakukan...

Itu adalah untuk tidak mengatakan pelajaran tersebut tidak dapat belajar selain menggunakan transpiler, tetapi jika seseorang yang baru untuk JavaScript cuba untuk menggunakan CoffeeScript sebagai cara untuk belajar tentang konsep-konsep JS, mungkin tempat yang menarik untuk memulai. Meskipun, untuk pemula JS, membaca buku-buku kanonik seperti "JavaScript: The Good Parts" mungkin akan lebih berguna.

Oscar Godson

Bagaimana Anda belajar atau menjadi lebih baik pada sesuatu yang Anda telah terlindung dari? Jika Anda tidak perlu khawatir tentang global vars leakiing bagaimana Anda tahu kemudian ketika bekerja dengan vanili JS? Seperti memberi seseorang sebuah kamera dengan auto-fokus yang tidak pernah digunakan kamera sebelum dan kemudian mengharapkan mereka untuk mengetahui bagaimana menggunakan kamera film dan menyesuaikan fokus, ISO, dll dengan cara manual.

Ryan Florence

JavaScript tulisan tangan cukup berbeda dari apa yang CoffeeScript keluarkan.

Saya pikir pengembang yang belum berpengalaman dalam JavaScript tidak memiliki sesuatu untuk belajar dari kompiler output. Mengambil? = dan || = operator, CoffeeScript menunjukkan kepada mereka bagaimana untuk memecahkan masalah di JavaScript.

Tetapi mereka juga akan memiliki waktu sulit debugging kode mereka tidak mengerti. Saya tidak berpikir orang-orang ini dapat secara efektif menggunakan CoffeeScript.

JavaScript tulisan tangan cukup berbeda dari apa yang CoffeeScript keluar; Hal ini juga lebih cantik. Saya pikir ada lebih banyak untuk belajar dengan membaca kode sumber dari beberapa leader komunitas dan Perpustakaan JS didirikan daripada kami dari kompilator.

Marco Chomut

Jika, sebagai pengembang, Anda tidak sudah terkena bagian-bagian yang halus JavaScript (baik melalui Douglas Crockford JSLint atau Anton Kovalyov JSHint), kemudian CoffeeScript pasti akan layak kursus kilat dalam subjek. Tapi hanya jika Anda mengambil kesempatan untuk benar-benar mengerti mengapa CS membuat keputusan tertentu dalam bahasa. Jika Anda terburu-buru melalui itu dan hanya mencoba untuk mendorong keluar prototipe kerja secepat mungkin, Anda hanya akan merugikan diri sendiri dalam jangka panjang. Saya sebutkan sebelumnya dalam jawaban sebelumnya, tetapi tidak menyadari beberapa batin kerja black box sangat berbahaya dan kontra-produktif.

Trevor Burnham

Kedengarannya seperti Anda telah menghadiri pembicaraan saya; Saya mengajukan argumen ini sepanjang waktu.

Hal ini menarik yang Anda sebutkan Rails. Banyak orang belajar Ruby dengan belajar Rails. Banyak orang belajar JavaScript dengan belajar jQuery. Tetapi jika Anda belajar dengan cara itu, Anda tidak akan melihat seluruh bahasa. Sebaliknya, Anda bekerja melalui sesuatu pada CoffeeScript, Anda akan melihat tepi. Anda akan mempelajari semua tentang this dan prototype pewarisan dan typeof/instanceof dan iterasi melalui objek key dan nilai array, dan seratus hal lain noobs JS yang menanyakan tentang tentang Stack Overflow setiap hari.

Jadi ya. Saya melihat belajar CoffeeScript sebagai satu jalur untuk menjadi JavaScripter yang berpengetahuan. Tentu saja tidak satu-satunya, tapi satu yang menyenangkan dan bermanfaat.


7 - jelas, jika Anda seorang pengembang Ruby, CoffeeScript yang akan jauh lebih menarik bagi Anda, seperti sintaks yang cukup mirip. Untuk proyek-proyek dunia nyata, dimana pengembang memiliki tenggat waktu, bukanlah CoffeeScript hanyalah sebuah cara untuk mendapatkan pekerjaan yang dilakukan lebih cepat, dengan menyeret bahasa kurang? Apa salah dengan itu, jika ada?

Jeremy Ashkenas

Rubyists beberapa mengatakan bahwa CoffeeScript terlihat seperti Ruby, Pythonistas mengatakan bahwa CoffeeScript tampak seperti Python, dan aku sudah mendengar Haskellers mengatakan bahwa CoffeeScript terlihat seperti Haskell.

Aku takut bahwa ini adalah pertanyaan konyol. Rubyists beberapa mengatakan bahwa CoffeeScript terlihat seperti Ruby, Pythonistas mengatakan bahwa CoffeeScript tampak seperti Python, dan aku sudah mendengar Haskellers mengatakan bahwa CoffeeScript terlihat seperti Haskell. Kebenaran dari masalah ini adalah bahwa CoffeeScript semantik yang hanya JavaScript semantik--ada pasti ada kurang "bahasa menyeret" terlibat.

James Padolsey

Aku takut akan menjadi diterima untuk melupakan kurva pembelajaran penting JavaScript dan cukup istirahat palsu yakin bahwa kode Anda menulis di CoffeeScript bekerja seperti itu akan di bahwa-lain-bahasa-yang-Anda-tahu. Untuk tim dengan deadline saya pasti dapat melihat banding memiliki sebuah lingkungan pengembangan yang lebih bersatu. Ruby dan CoffeeScript adalah perbandingan lucu--jauh lebih daripada JavaScript dan Ruby. Saya pikir pemahaman JavaScript sangat penting, terutama pada tahap awal ini (debugging dapat masih menjadi gangguan).

John-David Dalton

Tergantung pada pengaturan mereka. CoffeeScript, seperti JS libs, memiliki bug dari rilis ke rilis (bahkan beberapa yang mempengaruhi penggunaan cross-browser) yang dapat menyebabkan kode CoffeeScript yang ada menjadi error.

Juga, debugging masih memerlukan menggali melalui raw JS dan mungkin tidak selalu menjadi tugas yang mudah seperti CoffeeScript aplikasi menjadi lebih kompleks.

Tidak seperti libs JS yang dapat hidup di CDNs, permanis di sekitar CoffeeScript harus disusun untuk setiap file JS (kecuali disusun bersama-sama). Hal ini dapat membuat CoffeeScript dihasilkan JS kurang ideal untuk skrip terpisah pihak ketiga. CoffeeScript menambahkan lagi "sesuatu" tim akan harus membiasakan diri dengan dan menjadi mahir dalamnya, yang biaya waktu/uang dan dapat dihindari dengan hanya menggunakan JS (JS lib + linter).

Dave Ward

Sebagai seseorang yang telah menghabiskan cukup banyak waktu di dunia .NET, saya telah melihat bahwa argumen yang digunakan untuk mendukung drag 'n drop pengembangan dan beberapa terutama leaky abstraksi HTML, CSS, dan JavaScript. Pengalaman yang telah meninggalkan aku sangat skeptis tentang nilai jangka panjang fokus pada produktivitas muka dengan mengorbankan pemahaman tumpukan pengembangan Anda.

Nathan Smith

Saya tidak akan mengatakan itu adalah cara untuk menghindari "penyeretan bahasa." Meskipun CoffeeScript dan Ruby mungkin berbagi beberapa pemanis sintaksis, masing-masing memiliki cara sendiri untuk berurusan dengan hal-hal. Sementara CS tidak diragukan lagi akan tampak akrab bagi pengembang Ruby, masih ada kurva belajar.

Jika Anda berada di bawah pistol di deadline, memutuskan untuk menggunakan CoffeeScript mungkin tidak akan membantu Anda mendapatkan pekerjaan yang dilakukan lebih cepat. Seperti dengan setiap bahasa yang baru, Anda perlu untuk menyisihkan waktu untuk mendapatkan akrab dengan itu, membuat kesalahan pemula, dan akhirnya berakhir di tempat mana menjadi sifat kedua.

Saya pikir bahaya Ruby pengembang berharap bahwa CoffeeScript akan menutupi beberapa dirasakan misterius aspek melekat pada JavaScript.

Sementara Anda mungkin berakhir mengetik karakter keseluruhan kurang dalam *.coffee file, Anda masih perlu peduli apa berakhir di *.js file. Yang datang dengan pengalaman, tidak (hanya) dengan sintaks baru.

Ryan Florence

Anda menulis dalam satu bahasa, tetapi debug di yang lain...

Adapun "kurang bahasa yang menyeret" saya menganggap Anda berarti itu adalah seperti Ruby di mana-mana di aplikasi--yang palsu sepenuhnya. Anda menulis dalam satu bahasa, tetapi debug dalam bahasa lain dan juga bukan Ruby, sehingga benar-benar lebih menyeret.

Jika sintaks JavaScript adalah memperlambat anda, maka Anda perlu untuk belajar bagaimana menggunakan editor teks Anda atau belajar bagaimana untuk mengetik. Tidak ada yang lebih cepat tentang CoffeeScript. Memperkenalkan CoffeeScript ke dalam alur kerja Anda benar-benar meningkatkan "menyeret":

Banyak orang mengabaikan debugging masalah tetapi 20% dari hari yang kami menulis bug, 80% lainnya kami memperbaikinya (tidak menyangkal hal itu). Debugging adalah masalah besar.

Anda adalah debugging kode Anda tidak tulis. Anda harus mengetahui apa yang kompilator lakukan, dan kemudian mencari tahu mengapa kode tidak melakukan apa yang Anda inginkan. Maka Anda harus pergi ke CoffeeScript Anda dan mencari tahu bagaimana cara memperbaikinya dalam sintaks yang berbeda. Biasanya itu bukan yang buruk, tetapi ketika menggunakan beberapa fitur pengujian dari CoffeeScript ini bisa benar-benar "machine code" cari. Satu baris dalam CoffeeScript dapat berubah menjadi beberapa baris dari hal-hal gila (Lihat di sini), yang, sekali lagi, Anda tidak menulis, sehingga Anda perlu mencari tahu mengapa tampak seperti itu, dan kemudian mengapa itu rusak.

Ini kembali-dan-sebagainya "menyeret" adalah langkah aneh yang memperlambat Anda karena bukan _kode_ Anda yang dicari. Saya menemukan saya kembali ke melakukan banyak console.log dalam kode saya daripada menggunakan break point dan menonton ekspresi, dll, yang merupakan rasa malu yang total, dan lebih lambat. Tapi itu cara tercepat bagi saya untuk "mengacak" di antara JavaScript yang saya 'm debugging dan CoffeeScript saya tulis.

Trevor Burnham

Dengan CoffeeScript mendapatkan pekerjaan yang dilakukan lebih cepat? Tentu saja beberapa pro JavaScript Ruby terkemuka telah mencapai kesimpulan itu sendiri.

Rubyists pasti mudah untuk menjual pada CoffeeScript daripada, katakanlah, programmer Java. Tetapi pertanyaan paling umum yang saya dapatkan dari Rubyists sepanjang baris "tunggu, mengapa kita membutuhkan suatu bahasa yang terpisah? Mengapa tidak kita hanya menyusun Ruby untuk JS?" Dan saya mencoba untuk menjelaskan kepada mereka yang, Yah, kompilasi "a = b" dari Ruby ke JS akan mengharuskan Anda untuk memeriksa apakah b adalah fungsi, dan apakah lalu jalankan dan mengembalikan nilai... dan mengumpulkan "x = y + 1" akan mengharuskan Anda untuk menjalankan BigDecimal Perpustakaan , karena semua angka Ruby adalah tak terbatas presisi... dan seterusnya. Orang-orang harus belajar bahwa, lihat, ketika Anda di browser, Anda berada di JavaScript rumput dan Anda punya untuk berdamai dengan itu. Ini bisa lebih buruk. Bisa statis diketik.

Akan CoffeeScript mendapatkan pekerjaan yang dilakukan lebih cepat? Tentu saja beberapa pro JavaScript Ruby pro (seperti 37signals' Sam Stephenson, pencipta Prototype.js) telah mencapai kesimpulan itu sendiri. Jelas itu tergantung pada banyak faktor... kadang-kadang apa yang Anda butuhkan adalah perspektif yang segar, dan bahasa baru dapat memberikan itu.

Alex MacCaw

CoffeeScript tidak secara inheren Rubyish.

Itu adalah pertanyaan terkemuka yang cantik, dan saya tidak berpikir bahwa asumsi itu sebenarnya valid. CoffeeScript tidak secara inheren Rubyish, hanya karena tidak inheren Pythonist. Meminjam fitur dari kedua bahasa tetapi akhirnya skema terinspirasi oleh JavaScript. Tujuan CoffeeScript adalah untuk tidak abstrak pergi JavaScript untuk pengembang yang tidak mau belajar itu, seperti RJS sekarang mati. Dengan demikian, itu tidak membantu dengan penyeretan bahasa.


8 - banyak mungkin berpendapat bahwa CoffeeScript memungkinkan untuk lebih indah dan kode Maintainable. Misalnya, membuat class CS adalah jauh lebih intuitif dan mudah dibaca daripada apa kita mungkin menulis dengan Plain JavaScript.

Hal ini tidak mengherankan bahwa banyak akan memilih yang lebih bersih dan lebih pendek:

daripada...

Pertanyaan saya adalah: Apakah CoffeeScript's dibaca saja menjamin penggunaannya?

Jeremy Ashkenas

Anda dapat menulis undreadable kode dalam bahasa apapun.

Anda dapat menulis undreadable kode dalam bahasa apapun... tapi ya--salah satu fokus utama dari CoffeeScript adalah mudah dibaca: mengungkapkan konsep JavaScript dan pattern di sebagai minimal dan dapat dibaca dengan cara seperti kita dapat temukan.

Contoh "class" contoh yang bagus. Jika Anda ingin membuat banyak objek yang berbagi metode public di JavaScript - hal ini tidak mudah untuk melakukannya. Ada banyak cara untuk memecahkan objek "prototype" ketika Anda mencoba untuk mengatur prototype chain. Kau pergi baik menulis terbaca boilerplate setiap kali Anda ingin dua prototype chain bersama-sama, atau menggunakan perpustakaan helper yang menyembunyikan Orientasi objek dasar dari Anda. CoffeeScript's class adalah cara sederhana untuk mendefinisikan fungsi konstruktor Anda bersama dengan prototypal sifat mereka dan chain prototype. Efek samping adalah pembacaan hanya menulis apa yang Anda maksud:

... bukan setengah lusin baris prototype manipulasi kode dalam JavaScript:

James Padolsey

Tentu saja, karena saya telah bekerja lebih dengan JavaScript, itu lebih mudah dibaca daripada CoffeeScript.

Itu bukan JavaScript yang saya akan tulis, tetapi saya mengerti maksud Anda. CoffeeScript dapat memiliki pembacaan besar dan sebagian besar kode CS yang kulihat singkat dan ekspresif, tapi saya tidak berpikir ini selalu diterjemahkan menjadi "lebih intuitif". Tentu saja, karena saya telah bekerja lebih dengan JavaScript, itu lebih mudah dibaca saya dari CoffeeScript. Sekali lagi, ini tampaknya menjadi tentang rasa, dan sangat banyak dipengaruhi oleh bahasa sebelum paparan. seorang Ruby mungkin akan mengerti kode CoffeeScript cepat daripada JavaScript, tetapi itu akan sebaliknya untuk, katakanlah, PHP atau Java pengembang, di mana kata kunci memainkan peran sentral dalam definisi class dan fungsi. Dalam CoffeeScript Anda memiliki sangat minim dan ekspresif operator yang tidak selalu jelas.

John-David Dalton

Tidak. Pengembang memiliki pendapat yang berbeda tentang apa yang mereka anggap dapat dibaca. CoffeeScript serupa dengan JS libs dalam bahwa mereka semua menambahkan pemanis sintaksis dan setiap pengembang/tim memiliki preferensi mereka sendiri (MooTools, jQuery, Dojo, CoffeeScript, CoffeeScript + libs, dan seterusnya).

Dave Ward

Jika Anda ingin sintaksis pemanis di sekitar penataan kode Anda, ada perpustakaan JavaScript untuk membantu dengan itu tanpa memerlukan langkah kompilasi menonjol.

Jika Anda ingin sintaksis pemanis di sekitar penataan kode Anda, ada perpustakaan JavaScript untuk membantu dengan itu tanpa memerlukan langkah kompilasi menonjol.

Mempertimbangkan pertanyaan ini dalam konteks keseluruhan yang lain, pengembang yang belum pahan JavaScript kebutuhan lebih dari analog agak mirip bahasa sisi server mereka pelaksanaan pewarisan klasik. Saya percaya menempatkan kata kunci pseudo "class" di depan seorang pengembang yang berasal dari bahasa berorientasi objek yang khas yang bahkan mungkin berbahaya dalam jangka panjang.

Nathan Smith

"Readability" subyektif. Saya pikir Anda telah menyentuh pada sesuatu dengan contoh "class". Bagi para pengembang yang berasal dari latar belakang pemrograman klasik (C#, Ruby, dll), CoffeeScript mungkin terasa seperti menghirup udara segar. Bagi saya, telah belajar JavaScript sebagai bahasa pertama saya "asli" pemrograman, berpikir dalam istilah class terasa asing.

Menurut pendapat saya, perpaduan sempurna dari CS dan JS akan menjadi var ditambahkan otomatis, dan tidak perlu menulis tidak perlu tanda kurung atau kurung kurawal. Namun, aku bisa melakukan tanpa otomatis mengembalikan pada akhir masing-masing fungsi.

Saya juga tidak penggemar bagaimana CS membajak for in menjadi i++ loop — memerlukan sebaliknya bahwa Anda menulis for of iterate melalui objek (ketika *.length tidak ada).

Oscar Godson

Ini mungkin karena JavaScript bukan bahasa berbasis class. itu prototypal, dan yang takut orang-orang yang tidak digunakan untuk itu. PHP atau Rails pengembang datang ke JS, dan tidak tahu bagaimana menggunakannya dengan benar. Jadi mereka datang dengan hacks untuk membuatnya bekerja dan bahkan terlihat seperti bahasa lain. Ini bukan jawabannya. Jika Anda perlu menggunakan class, Anda dapat menulis lib mini dan membuatnya bersih seperti:

Satu-satunya perbedaan adalah tidak ada tanda kurung. Aku benar-benar seperti Brendan Eich ide JS bebas paran, tapi seperti ide itu sedang dipanggang dalam dan tidak benar-benar mengubah bahasa.

Ryan Florence

Saya meninjau kode pada gerrit dari tim saya setiap hari. Beberapa JavaScript, beberapa CoffeeScript. Saya memiliki waktu sulit mengikuti apa yang mereka coba lakukan dalam sintaks satu vs yang lain. Hal ini mungkin lebih secara lisan dapat dibaca di kali, tapi itu belum membuat lebih dimengerti untuk saya. Ambil contoh baris ini:

Itulah 160 kolom secara lisan dibaca kode langsung dari aplikasi kami tapi saya tak memiliki ide apa yang dilakukannya. Menyenangkan bagian adalah bahwa Anda berakhir debugging hal-hal seperti ini.

Ada beberapa aspek untuk CoffeeScript yang kurang dapat dibaca.

fat arrow => mengikat konteks fungsi, yang terdengar hebat, tapi itu mendorong bersarang mendalam, anti pattern.

Pasangan bahwa dengan spasi signifikan atas beberapa baris kode dan Anda bakal berantakan. Kode tidak terstruktur dengan callback dan banyak if else terjadi sangat sulit untuk mengikuti: ada tidak ada penutupan braket bagi saya untuk menempatkan kursor saya di atas dan melihat mana aku di dengan editor teks saya. Beberapa orang mengatakan, "Tidak menulis kode seperti itu". Saya tidak menulis semua kode yang saya bekerja dengan.

Juga, tidak semua api memiliki fungsi sebagai argumen terakhir untuk signature mereka, sehingga Anda berakhir dengan beberapa koma yang beredar pada awal baris, yang terlihat benar-benar aneh di sebelah sisa CoffeeScript's umumnya menarik dilihat.

Di sisi lain, saya telah memperhatikan bahwa sintaks class hits chord Logis pada orang yang bukan JavaScript ahli tetapi ahli dalam beberapa bahasa lain. Tiba-tiba mereka memahami bahwa mereka dapat menulis kode front-end modular alih-alih chaining jQuery menjadi terlupakan. Saya pribadi tidak menggunakan class, atau menulis JavaScript cara Anda lakukan dalam contoh, tapi saya pikir itu adalah sintaks yang berguna untuk programmer yang baik kurang akrab dengan JavaScript.

Trevor Burnham

Sejauh menyangkut keterbacaan, ada tidak ada pengganti untuk dokumentasi yang baik. Saya melihat sumber beranotasi untuk Backbone.js, dan saya pikir, "Wow." Akan mungkin garis 30% lebih sedikit jika itu ditulis dalam CoffeeScript, tapi itu hanya akan menjadi mudah untuk dipahami.

Saya pikir menang lebih besar di writability. Hal ini tidak hanya lebih sedikit penekanan keystroke (mengetik adalah jarang kemacetan untuk pengkodean); ini adalah kurang untuk berpikir tentang. Node.js idiom yang umum ditulis:

.. .di atas callback. Aku bisa menghemat bahwa sebagai potongan, kurasa, tapi aku punya banyak pukulan melainkan hanya di setara dengan CoffeeScript.

Ini hanya membutuhkan lebih sedikit siklus otak. Dengan cara itu, saya bisa lebih fokus pada inti dari callback.

Alex MacCaw

Tentu saja, itu adalah alasan yang baik untuk belajar CoffeeScript, atau bahasa high level memang apapun. Readability adalah bagian penting untuk mengembangkan, memelihara dan memperluas kode dalam bahasa apapun. CoffeeScript mengambil ini selangkah lebih jauh dengan menggunakan spasi, berarti bahwa kode yang buruk diformat akan hanya gagal untuk dikompilasi.

Tentu saja hal ini dimungkinkan untuk menulis kode jelek dalam bahasa apapun, tapi saya pasti berpikir CoffeeScript telah mewarisi keindahan estetika itu, dalam bahasa dan komunitas; jauh lebih dari JavaScript tradisional.


Argumen penutup

Jeremy Ashkenas

Saya ingin mengajukan keberatan saya umum dengan cara pertanyaan dibingkai. Mereka menciptakan drama palsu yang mana tidak perlu ada. CoffeeScript adalah menyenangkan sedikit bahasa yang mencoba untuk mendorong JavaScript dalam arah tertentu: Bagaimana minimal dan mudah dibaca sintaks yang dapat kita temukan untuk mengekspresikan bagian baik terkenal JavaScript. Jika Anda menikmati itu, itu bagus; Jika Anda tidak, itu bagus serta--JavaScript adalah bahasa yang indah. Karena CoffeeScript dan JavaScript berbagi semantik, mereka akan selalu mendapatkan saja. Secara pribadi, saya menulis banyak dari keduanya.

Pewawancara 's Catatan: benar-benar. Itu tidak pernah niat saya untuk menciptakan perang api, ketika, pada akhirnya, kita sedang berhadapan dengan tool yang berguna. Yang tidak pernah bisa menjadi hal yang buruk! Yang mengatakan, pertanyaan-pertanyaan yang saya berikan adalah orang-orang yang saya temukan untuk menjadi paling sering ditanyakan pada Twitter, blog, dan jaringan sosial. Bahkan jika mereka tidak berdasar, sangat penting untuk mengakui bahwa mereka diminta, dan mendiskusikan mereka. :)

Ryan Florence

Saya pikir CoffeeScript adalah pilihan yang sangat baik untuk hobi dan operasi satu orang. Pada tim, saya akan menyarankan terhadap hal itu jika Anda belum menuruni jalan.

Trevor Burnham

Apayang Ryan katakan. Belajar JavaScript. Ini adalah bahasa yang mengagumkan. Tapi itu tidak bahasa favorit saya, karena ada CoffeeScript.

John-David Dalton

1 untuk catatan Ryan Florence.

Nathan Smith

Saya tidak berpikir siapa pun dapat menyangkal bahwa Jeremy Ashkenas telah menciptakan sesuatu yang luar biasa. Kenyataan kita semua berbicara tentang hal itu bukti untuk itu. Saya akan mendorong siapa saja yang telah digali-di tumit mereka terhadap menggunakan CoffeeScript untuk setidaknya mencobanya. Setelah melakukannya sendiri, aku masih suka JavaScript, tapi setidaknya sekarang saya bisa menghargai mengapa hal itu menarik bagi orang lain.


Lebih lanjut CoffeeScript Resource

  • Rocking Out dengan CoffeeScript
  • Kasus terhadap CoffeeScript

  • Sebuah pertanyaan untuk para pembaca

    Sekarang bahwa beberapa yang terbaik dalam bisnis telah menawarkan sendiri ada pendapat, saya ingin mendengar dari Anda dalam komentar. Sementara sebagian besar pertanyaan-pertanyaan ini datang dari jaringan sosial dan blog post, pertanyaan terakhir ini adalah salah satu bahwa saya adalah pribadi paling tertarik dalam belajar jawaban.

    Salah satu keprihatinan saya hanya dengan menggunakan CoffeeScript adalah bahwa debug JavaScript dihasilkan bisa berpotensi menjadi keprihatinan besar. Apakah Anda menemukan ini menjadi kasus?

    Beritahu saya di bawah ini!

    Advertisement
    Advertisement
    Looking for something to help kick start your next project?
    Envato Market has a range of items for sale to help get you started.