Javascript bilmeden Coffeescript kullanmak ne kadar riskli? [kapalı]


15

Web geliştirmeyi öğrenmeye çalışan oldukça deneyimli bir programcıyım. Grafikler için svg veya canvas kullanan bir istemci tarafı web uygulaması geliştirmeye çalışıyorum. Coffeescript'te uygulama kodunu yazmaya karar verdim. Javascript veya Coffeescript bilmiyorum.

Coffeescript Web geliştirme Javascript bilmek ne kadar gerekli? Javascript'i anlamamı gerektiren bir sorun yaşıyorum mu? Coffeescript'ten Javascript API'leriyle mutlu bir şekilde çalışabilir miyim?

Edit : Kolayca bir hafta içinde Javascript temellerini öğrenmek. Javascript'in çok fazla gizli keskin kenarı olduğu anlaşılıyor. StackOverflow hakkındaki en garip dil ​​özelliği sorusunda Javascript en yaygın dillerden biridir. Sıradışı bir nesnesi ve sınıf modeli var. Açık olmayan ad kapsam belirleme kuralları vardır. Gerçekten bir dili bilmem bir haftadan fazla sürüyor.

Web geliştirmeyi öğrenmek için küçük ve basit bir proje üzerinde çalışacağım. Javascript veya Coffeescript kullanmak daha iyi olur mu? Ben uzun vadede Coffeescript tercih edeceğini düşünüyorum ama ben Coffeescript kullanmak için Javascript kapsamlı bir anlayışa ihtiyacım olacak eğer Javascript ile başlamak istiyorum.


CoffeeScript'in sadece JavaScript için derlendiğini unutmayın. CS, JavaScript'in bazı nüanslarını yönetmeyi kolaylaştırırken, bunları yeniden yaşamaz; hala aynı işlevselliğe ve tuhaflıklara tabidir. Örneğin, classCS'deki anahtar kelime büyülü bir şey yapmaz; JavaScripts yerel prototip palet miras mekanizmalarını kullanır. Bu nedenle, JavaScripts'in bazılarının daha belirsiz "özellikleri" hakkında en azından yardımcı bilgiye sahip olmanızı tavsiye ederim.
Michelle Tilley

2
CS, her şeyi kolaylaştıran sihirli bir gümüş mermi değil, farklı bir sözdizimine sahip JS. JS veya CS yazmanız bir stil tercihidir.
Raynos

Yanıtlar:


12

Sanırım kesinlikle gerekli olmayacaktı, ama uzun vadede barikatlara çarpacaksın.

Kaputun altında neler olduğunu ve CoffeeScript derleyicisinin neye dönüştürdüğünü anlamanız gerekir, çünkü tarayıcılar (CoffeeScript'i bir tarayıcı ortamında kullanmaktan bahsettiğimizi varsayarak) yorumlamak gerekir. Bu da , özellikle CoffeeScript'in oldukça yeni olduğunu ve transkripsiyon mekanizmasında bazı pürüzlü kenarlar ve hatalarla karşılaşabileceğimizi düşünmek için hata ayıklamanız gereken şey anlamına gelir . Ayrıca, hata ayıklama için ısmarlama bir hata ayıklama aracı kullanmazsanız, Firebug veya Chrome Geliştirme Araçları'nı veya seçtiğiniz JS konsolunu kullanarak hata ayıklamak için oluşturulan JavaScript kodunu atlamanız gerekir. Bazı durumlarda, JS hatasının doğrudan kaynak CoffeeScript deyimiyle nasıl ilişkili olduğunu görebilirsiniz. Diğerlerinde, transkripsiyon önemsiz olmadığından,

Bu şekilde alın: Java ve C # 'da herhangi bir düşük düzeyli geliştirme yapmadan çok iyi bir yazılım geliştirebilirsiniz. Yine de, hiçbir fikriniz yoksa ve bu dillerin çalışma zamanlarının sizin için arka planda ne yapması gerektiği konusunda eğitimli bir tahmin yapamıyorsanız, neler olduğunu ve neden performans darboğazlarına ve bellek sorunlarına çarptığınızı anlamak için çok kötü bir zamanınız olacak ve tahminin hangi kısmını bozabilirler çünkü mucizeleri çekemezler.

Ek olarak, JavaScript öğrenirseniz, başlangıçta göründüğünden çok daha zor olabileceğini anlayacaksınız ve kısa ve temiz sözdizimi için CoffeeScript'i daha da takdir edeceksiniz :)


1
Veya JavaScript olmadığından CoffeeScript'te rahatsız olacaksınız;). ES5 hoş bir dildir.
Raynos

@Raynos: domuz üzerinde ruj, hala domuz; bir keçi üzerinde tuxido, hala bir keçi, vb ... :) ECMAScript'in bunu öğrendikten sonra aslında çok ilginç bir dil olduğunu kabul ediyorum, ancak her ikisi için de bir yük haline getiren çok fazla tutarsızlık, tuzak ve tuzak var yeni öğrenenler ve hatta ileri düzey programcılar için. Yine de, modern web lingua franca'mız ve zaman içinde gelişiyor ve olgunlaşıyor. CoffeeScript fikrini ECMAScript'in bazı can sıkıcı şeylerini gizlediği için seviyorum, hemen hemen Java için bazı libs (ya da üstünde bir dil) kullanmanın onu katlanılabilir hale getirdiği gibi.
haylem

2
Meh, sadece İyi Parçaları ve gitmen için iyi olanı okuman gerekiyor. Tuzaklardan kaçınmak o kadar da zor değil.
Raynos

@Raynos: Ancak maalesef işe alacak gelişmiş JS geliştiricileri bulmakta zorlanıyorum. Gerçekten iyi olanları bulmak oldukça zordur.
haylem

Ah, katılıyorum, JS topluluğu vasat geliştiricilerle doymuş. Onları nerede bulacağını bilmiyorum. JS sohbet odasından sadece birkaç iyi geliştirici biliyorum . Bence hiç iyi JS geliştiricileri yoktur sırf gerçeği, JS zor olmalı. Bence hiç kimse bunu düzgün bir şekilde öğrenmek için rahatsız etmiyor.
Raynos

4

Sen sor:

Javascript'i anlamamı gerektiren bir sorun yaşıyorum mu?

Kesinlikle, evet diyebilirim. Genel olarak, ilginç bir şey yapıyorsanız, bir noktada en azından aşağıdaki seviyelerde neler olup bittiğini anlamanız gerekir. (Bazen Google + cut + paste sizi kurtarabilir, ancak o adam olmak istemezsiniz.)

Herhangi bir "makul tecrübeli programcı" daha sonra yeni bir dil seçmek sizi çok uzun sürmemelidir. JavaScript oldukça basit bir dildir. Bu konuda zor olan her şey, yürüttüğü ortamdan gelir: yani, farklı fikirleri olan birkaç farklı web tarayıcısı nasıl yapılacağını.

Web'de bulacağınız birçok "nasıl yapılır" bilgisi JavaScript göz önünde bulundurularak yazılır, bu nedenle JavaScript'i nasıl okuyacağınızı ve eşdeğer CoffeeScript'e nasıl çevireceğinizi öğrenirseniz muhtemelen daha kolay bir zamanınız olacaktır.

Dürüst olmak gerekirse, kasten cahil kalmaya çalışmadığınız sürece, muhtemelen JavaScript'i CoffeeScript'te çalışmanın bir yan etkisi olarak öğreneceksiniz. Öyleyse hemen başlayın.


4

" CoffeeScript'in altın kuralı:" Bu sadece JavaScript "olduğundan , en azından JavaScript'e temel bir aşinalık öneririm. Özellikle Douglas Crockford'un küçük kitabı JavaScript: The Good Parts'a bir göz atın . Ayrıca Crockford'un bu konuyla ilgili kendi tanıtım sunumunu da izleyebilirsiniz .

CoffeeScript temel olarak JavaScript'in iyi kısımlarını farklı bir pakette sarar: " CoffeeScript, JavaScript'in altında yatan güzel nesne modeli için minimal bir sözdizimi ortaya koyan bir dili hayal etmek için basit bir düşünce denemesidir. " Tüm ayrıntıları bilmenize gerek yok, JavaScript'in kendisinin sınıf temelli nesne yönelimli bir dil olmadığını anlamaya yetecek kadar . Hiç sınıfı yok. Bunun yerine, " prototipler " kullanır ve bu da diğer OO dillerinden bazı farklılıklar yaratır. Jeremy Ashkenas , JavaScript sözdiziminin kötü kısımlarından bazılarını temizledi, bazı geliştirmeler ekledi ve biraz daha Python -esque yaptı.

JavaScript'in dikkat etmesi gereken bazı "gotchas" dosyaları var. Aksi takdirde, bu harika bir dil ve bugün çok yaygın kullanımda. Başka şeylerin yanı sıra onsuz AJAX veya jQuery olmazdı.

CoffeeScript'inizde bol şanslar!


İyi parçaları satın alın. Cheapskate olma!
Raynos

@Raynos - Yaptım. Değilim! : D Ama uygunsuz arama önerisini sildim. Gösterdiğiniz için teşekkürler!
John Tobler

3

Evet. Yapmazsan dünyanın sonu değil ama evet.

Neden? Öncelikle JavaScript'i öğrenmek gerçekten çok kolay. Kelimenin tam anlamıyla öğrenmek 4 gün sürdü (pek çoğu). Ayrıca, bunun CoffeeScript'ten daha değerli olduğuna inanıyorum. Gerçekten CoffeScript'e bile ihtiyacınız olduğunu düşünmüyorum. Ama yine de iyi bir araç.


3
Yıllardır JavaScript öğreniyorum ve hala gerçekten bildiğimi söyleyemem. Arada bir, beni şaşırtan şeyler keşfediyorum. "Merhaba Dünya" nın nasıl yapılacağını öğrenmek kolay olabilir, ancak örtük tür dönüşüm ve kapanışlarının davranışlarını tahmin etmeyi öğrenmek değildir.
Zach

@Zach JavaScript Aydınlanma kitabı ilginizi çekebilir . Bir gözden geçirme şöyle diyor: "Aslında, gerçekten hiçbir şey eksik bulamadım. JSLint'in neden bir şey hakkında şikayet ettiğini merak ettiyseniz, temel neden muhtemelen bu kitapta bir yerde açıklanacaktır."
Michelle Tilley

1
@Zach kapanmaları o kadar da zor değil, tür dönüşümü bir acı. JS ile ilgili büyük sorun IE'nin eski sürümlerinin ne yaptığını bilmek.
Raynos

@Zach: Javascript'in tamamını bilmediğimi biliyorum. Yakın bile değilim. Ama temelleri ve bazı ara şeyleri öğrenmenin çok kolay olduğunu biliyorum.
Dinamik

0

Değişir.

CoffeeScript JavaScript'i yeterince soyutlarsa, bilmenize gerek kalmazsa (C # soyutlama Ara Dili gibi), o zaman evet, JavaScript öğrenmeden CoffeeScript'te yapmak istediğiniz her şeyi yapabilirsiniz.

Ancak tecrübelerim, JavaScript'ten ne kadar kaçmaya çalışsam da, istemciye geldiğinde, bazen gerçekten ellerimi kirletip saf JavaScript yazmam gerektiğini söylüyor.

Evet, haklısın. JavaScript sözdizimi kolaydır ve zayıf bir şekilde öğrenebilirsiniz, ancak ustalaşmanız yıllar alır.

IMHO, CoffeeScript'i gördüğüm gibi, tüm JavaScript karmaşıklıklarını tamamen sarmak için yeterince olgun değil. Dolayısıyla, doğrudan JavaScript ile öğrenme veya doğrudan çalışma riskim yok.


CoffeeScript çok ince bir soyutlamadır. Doğrudan kahve öğrenebilirsiniz, ancak derlenmiş js hata ayıklama bir ağrı olacaktır. "ellerimi kirlet ve saf javascript yaz". JavaScript kirli değil.
Raynos

1
@Rayons, JavaScript'in kirli olduğunu kastetmedim. :). Bu bir ifadedir, altta yatan katmanları daha derinlere ulaşmanız gerektiği anlamına gelir.
Saeed Neamati

"Biraz Oyun Programlama yapıyorum, en iyi ellerimi kirletip c ++ yazıyorum" veya "Biraz AI yapıyorum, en iyi ellerimi kirletiyorum ve LISP yazıyorum" demek gibi. Tarayıcıda sahip olduğumuz tek daha derin katman NaCl
Raynos

0

Coffeescript belgeleri, eşdeğerini javascript açısından tanımlar. Javascript'i anlamıyorsanız, kahve metnini de anlamazsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.