2010-09-11 12 views
7

Pekala, sanırım bu soruya birçok kez sorulmuştur.Programlama dilleri ve derleyici tasarımı oluşturma. İlişkili mi?

Bugün başlanmasına gerek kalmadan bir programlama dili oluşturmak istiyorum, ancak 2-3 yıl içinde. Ben çok iyi bir programcı değilim, ama gelişiyorum. Sormak istediğim, bir dili nasıl oluşturduğunu ve bir derleyiciyi yazmayı ne kadar yakından ilgilendiriyor?

Derleyici, bir dili bir formdan diğerine çevirdiğinden, sanırım her biri belirli bir metin parçası için bir derleyici yazmakla ilgilidir. Derleyici tasarımını öğrenirsek, kendi programlama dilimi yazabilir miyim?

cevap

4

Derleyicileri uygulama hakkında hiçbir şey bilmeden bir programlama dili tasarlayabilirsiniz ve bunun tersi de geçerlidir. Dil tasarımcısı, dil için bir şartname yazabilir ve bir derleyici uygulayıcısı bunu alabilir ve derleyiciyi oluşturabilir. Ancak, bu kişisel bir proje ise, muhtemelen her ikisini de nasıl yapacağınızı öğrenmek zorunda kalacaksınız. Herhangi bir derleyicinin bulunmadığı bir programlama dili tamamen teoriktir ve bir programlama dilinin yazmadan ve gerçek programları yürütmeden ne kadar iyi olduğunu anlamak zordur. sizin için derleyici uygulamak için istekli biri bulsak bile, o kişi için denemek için yeni bir fikir var her zaman beklemek zorunda istemeyebilirsiniz, bu yüzden kendiniz yapmak nasıl bilmek isteyecektir. bir derleyici uygulamak

oldukça gelişmiş programlama projesi, bu nedenle sadece bir programcı olarak başlarken eğer, önünüzde dik bir öğrenme eğrisi vardır. Aslında, diliniz için uygun bir derleyici altyapısı olmasa da, LLVM derslerine ve örneklerine bakarak başlamak isteyebilirsiniz.

2

Naruto, ne tür bir "Dil" oluşturmak istediğinize bağlıdır. Eğer basit, öğrenmesi gereken bir dilse ve dilbilgisini, vb. Vb. Seçerseniz, programlama hakkında çok şey bilmeniz gerekmeyecektir. AMA, eğer ciddi biriyle başa çıkacaksanız, en az bir bilgisayar programlama dilini, sadece onu kullanmak için değil, aynı zamanda OO, generics, lambda gibi birkaç kavramına ulaşmaya çalışmak için de çalışmalısınız. ifadeler, vb.

İnan bana, bu bir ay görevi değil, ciddi bir yolculuktur. Neyse, size iyi şanslar dilerim;)

+0

Ben basit, sadece-için-öğrenme dilini geliştirmek istiyoruz. –

2

. Yürütülebilir bir formda yorumlamak/derlemek için bir yolunuz olmadıkça bir diliniz yoktur.

1

"Derleyici" ile ne demek istediğine bağlı. Derleyiciler/çevirmenler genellikle iki büyük parçadan oluşur: kendi dilinizde bir metin okuyan ve bunun dışında bir iç yapı (AST) ve AST'yi okuyan ve makineye çeviren bir kod oluşturma/yorum bölümü oluşturan bir ayrıştırıcı parçası. veya bayt kodları. Diliniz için bir ayrıştırıcıyı nasıl yazacağınızı bilmeniz gerekse de, en azından erken aşamalarda kod üretimi daha az önemlidir. Dilinizi sadece C'ye çevirerek başlayabilir ve oradan nereye gittiğinizi görebilirsiniz.

+0

Yapmayı düşündüğüm şey buydu. Derleyicileri aldım: ilkeleri, teknikleri ve araçları Aho, Lam, Sethi ve Ullman. Oradan ne kadar uzaklaştığımı görelim. –