38

Yeni bir web programcısı olarak (arka plan C, C++ ve Python'da arka planda), ya da herhangi bir javascript deneyimi yaşamadan (ya da benim deneyimlerime göre deneyimleme isteğim) CoffeeScript hakkında bazı öncül araştırmalar yapıyorum ve gerçekten Gördüğüm şeyi beğeniyorum. Fark ettiğim bir küçük küçük nüans, CoffeeScript'in CoffeeScript'te yazılmış olmasıydı ... ... ama bunun nasıl mümkün olduğunu anlamıyorum. Maalesef son üst düzey bilgisayar bilimi derslerimde Derleyiciler yerine Ağ Güvenliği almayı tercih ettim.CoffeeScript, CoffeeScript'te nasıl yazılabilir?

Bu dilde varolan derleyicileri kullanarak yorum yapmak için dilleri dil kullanan insanların sesini duydum, ancak bu ilk uygulama olduğundan bunun nasıl çalışabileceğine dair bilgi alamıyorum.

Benim tahminim bir özüne oluşturmak için başlangıç ​​çerçevesinin bazı belirleyen özen olabilir (bu terim düzgün açıklıyor mu bu davranışı?) dili gömülü bir kabuk yazısıdır?

+4

http: //en.wikipedia.org/wiki/Bootstrapping_ (derleyiciler) –

+3

tüm çalışma zamanı hataları derlenmiş kaynağına işaret edecek beri * gerek *, iyi CoffeeScript kodda Javascript bilmek uyarılmalıdır. –

+0

Yeniden terminoloji: CoffeeScript derleyicisinin orijinal Ruby uygulamasından ** önyükleme ** olduğunu söyleyebilirdiniz. Ayrıca CoffeeScript dilinin ** kendi kendini barındırma ** olduğunu söyleyebiliriz. [Bir dil önyüklemesinin] arasında – Quuxplusone

cevap

46

Bu yeni bir şey değil. C derleyicileri C. Python has been written in Python'da yazılmıştır.

Daha fazla özellik ile, daha yeni bir sürümünü derlemek için Language X için bir derleyici kullanmak mümkündür. Buna bootstrapping denir. Eğer, uni de kaçırmış rağmen, derleyici hakkında daha fazla bilgi edinmek istiyorsanız BTW Bootstrapping a compiler: why?

+0

. Bu gerçekten ilginç, harika bağlantılar için teşekkürler, önyükleme konusunda biraz okuma yapacağım. Ben de okuma SO üzerinde threas "kitap programlama okumak gerekir" ben Matt ile anlaşmak – Hortinstein

+1

bunu kontrol etmek zorunda kalacak ejderha kitabın duymuş. Ancak, Coffeescript'i öğrenmek istiyorsanız, önce Javascript'i öğrenmenizi şiddetle tavsiye ederim. Farklı dil arka planlarından gelen insanlara biraz yabancı gibi görünebilir, ancak konseptleri (işlev ve prototip tabanı gibi) çeşitli yazılım/uygulama çözümleri ve çerçeveleri için kullanışlıdır. Yine, Coffeescript Javascript için derler. Açıkçası, sınıflardaki ve CS'deki farklı görünümlü kavramların altında gizlenmiş olan Javascript'in kavramları büyük bir rol oynamaktadır. Ve derleyicilerin nasıl çalıştığını anlamak için The Dragon Book'u okuyun. – NirmalL

42

Matt'in cevabı mükemmel. Bir itibariyle

CoffeeScript derleyici, özgün versiyonu Ruby yazılmış, ancak Feb 21, v0.5.0 için CoffeeScript geçirilirken

, 2010.

: Bana sadece bazı CoffeeScript özgü bilgi ile ayrıntılı edelim Pratik bir konu olan bootstrap derleyici, sürekli olarak değişen bir dille zorlaşabilir, çünkü derleyici bu değişikliklere uyum sağlamak için yeniden yazılmalıdır. resmi dokümanlardan Bu paragraf size katılan bazı zorlukları fikir verir:

git checkout lib && bin/cake build:full çekirdek dili üzerinde çalışırken çalıştırmak için iyi bir komuttur. lib dizinini yenileyecektir (bir şeyleri kırmış olmanız durumunda), değiştirilmiş derleyicinizi oluşturun, kendini yeniden oluşturmak için kullanın (iyi bir akıl testi) ve daha sonra tüm testleri çalıştırın. Geçerlerse, başarılı bir değişiklik yaptığınız için iyi bir şans var.

lib dizin CoffeeScript derleyici derlenmiş JavaScript (anladınız mı?), Önyükleme sürecinde yararlı aracıya sağlayan içerir. Derleyicinin CoffeeScript kodu hiçbir zaman 'u doğrudan kendi başına çalıştırdığından, dil üzerinde değişiklik yapmayı kolaylaştırır.

+3

bunu daha çok dile getirebilmeyi diliyorum, dil özellikleri verdiğiniz için teşekkür ederim. – Hortinstein