Kendi yazılım dilime nasıl derleyici yapabilirim?

Bende bu söylediğin şeyden bahsediyorum işte. Fakat konuyu önceki arkadaş farklı noktaya çekti. Ben diyorum ki çevirici dediğin şey (compiler) makine diline dönüştürür. Bunun dil ile alakası yok. Python ile derleyici yapamazsın. Derleyici yapabilmen için kodunun karşılığını makine diline çevirmesi gerekiyor.

Eğer sen bir dil oluşturup, bu kodları başka bir programlama dilinin derleyicisinde makine diline çeviriyorsan bu senin yaptığın derleyici olmaz.

Bilal'e anlatır gibi anlattım umarım bu sefer anlamışsınızdır.
Compiler çevirici değil. @Dynamics 'de compiler sadece makine diline derler demiyor. Python ile derleyici yaparsın. Python'ı execute edici olarak kullanmana gerek yok. Algıların mı kapalı? Python ile parseladıktan sonra translation işlemlerini yaparsın. Ayrıca executable üretmek illa öyle olmuyor. Senin mantıkla java ve c# interpreted diller.

Aşağıdaki sayfayı şiddetle incelemeni tavsiye ederim.
Aşağıdaki repoyu da incelemeni şiddetle tavsiye ederim.

Derleyici dediğimiz şey bir otomasyon yazılımı ve bunu hangi programlama diliyle yazdığının bir önemi yok.
Sabahtan beri anlatmaya çalıştığım...
 
Python bunu interpreting esnasında yapıyor, kaynak kod'u çalıştırdığın an eş zamanlı olarak aksi halde derleniyor diyebilirdik.

Derleyici dediğimiz şey bir otomasyon yazılımı ve bunu hangi programlama diliyle yazdığının bir önemi yok.
Hayır derleyici dediğin şey literatür'de programlama dilinde yazılan kodları, makine diline çeviren yazılımlara verilen isimdir. Bunun için senin mikro denetleyicinin anlayacağı komutların karşılıklarını biliyor olman gerekir.

Yani sizin dediğiniz şey (.Net'in sürecinden örnek vereceğim) MSIL olur. CLR süreci bundan sonra gelir.

MSIL'e compiler diyemezsin. Çünkü bu teknik olarak farklı bir şey.
 
Hayır derleyici dediğin şey literatür'de programlama dilinde yazılan kodları, makine diline çeviren yazılımlara verilen isimdir. Bunun için senin mikro denetleyicinin anlayacağı komutların karşılıklarını biliyor olman gerekir.

Yani sizin dediğiniz şey (.Net'in sürecinden örnek vereceğim) MSIL olur. CLR süreci bundan sonra gelir.

MSIL'e compiler diyemezsin. Çünkü bu teknik olarak farklı bir şey.
MSIL compiler değil zaten. Compiler'ın ürettiği sonuç! Aşağıdaki sayfayı okur musun? Çok yorucu olmaya başladı.
 
Hayır derleyici dediğin şey literatür'de programlama dilinde yazılan kodları, makine diline çeviren yazılımlara verilen isimdir. Bunun için senin mikro denetleyicinin anlayacağı komutların karşılıklarını biliyor olman gerekir.

Yani sizin dediğiniz şey (.Net'in sürecinden örnek vereceğim) MSIL olur. CLR süreci bundan sonra gelir.

MSIL'e compiler diyemezsin. Çünkü bu teknik olarak farklı bir şey.

Ya istersem elimle eşlerim makine koduna açarım bir binary editör, elimle yazarım opcode'ları. Derleyiciden öyle bir bahsediyorsunuz ki doğmamış doğrulmamış ebedi ve ezeli, senin yorumuna göre derleyici dediğimiz şey allah çıkıyor.
 
Ya istersem elimle eşlerim makine koduna açarım bir binary editör, elimle yazarım opcode'ları. Derleyiciden öyle bir bahsediyorsunuz ki doğmamış doğrulmamış ebedi ve ezeli, senin yorumuna göre derleyici dediğimiz şey allah çıkıyor.
Tamam dostum yaparsın. Kralsınız.
 
Bende bu söylediğin şeyden bahsediyorum işte. Fakat konuyu önceki arkadaş farklı noktaya çekti. Ben diyorum ki çevirici dediğin şey (compiler) makine diline dönüştürür. Bunun dil ile alakası yok. Python ile derleyici yapamazsın. Derleyici yapabilmen için kodunun karşılığını makine diline çevirmesi gerekiyor.

Eğer sen bir dil oluşturup, bu kodları başka bir programlama dilinin derleyicisinde makine diline çeviriyorsan bu senin yaptığın derleyici olmaz.

Bilal'e anlatır gibi anlattım umarım bu sefer anlamışsınızdır.
Pek tabii Python'da yazdığın bir programla makine kodu üretebilir ve bunu bir çalıştırılabilir dosyaya kaydedebilirsin ve işin güzel tarafı bunu her genel amaçlı programlama dili ile de yapabilirsin. Ancak ek bir bilgi, bu tarz işler için C ya da C++ her zaman öncelikli tercih olur.

Hayır derleyici dediğin şey literatür'de programlama dilinde yazılan kodları, makine diline çeviren yazılımlara verilen isimdir. Bunun için senin mikro denetleyicinin anlayacağı komutların karşılıklarını biliyor olman gerekir.
Öncelikle Compile fiili İnglizcede derleyip, toparlayıp bir şeyler üretmek anlamına geliyor (Bu tanımı anlamak önemli). Eskiden -Eskiden dediğim yüksek seviyeli diller pek yaygın değilken.- Compiling ya da Compiler dendiğinde, akla ilk gelen şey bir makine kodu üretmek olabilirdi. Fakat yüksek seviyeli dillerin yagınlaşmasıyla günümüzde Compiling sadece makine diline doğru bir derleme anlaşılmak zorunda değil. Compiler ve Compiling terimi bir çok durumda kullanılabiliyor. Mesela bir Markdown dosyasını alıp bunu Html'e compile edebilirsin. Bir C# kodunu MSIL'e derleyebilirsin.
 
Son düzenleme:
Hayır derleyici dediğin şey literatür'de programlama dilinde yazılan kodları, makine diline çeviren yazılımlara verilen isimdir. Bunun için senin mikro denetleyicinin anlayacağı komutların karşılıklarını biliyor olman gerekir.

Teknik olarak yanlis. Source code'u farkli baska bir koda da donusturuyor olabilir, illa ki makine koduna cevirim yapmak zorunda degil, ornegin java compiler. Elbette sonunda o kod makine koduna donusecek ama bunu tek adimda yapmak zorunda degilsin ve yine de yaptigin sey compiler olacak teknik olarak.

Ya da kotlin kodunu JVM byte kodu yerine JS koduna compile edip V8 uzerinde calistirabilirsin. O da teknik olarak compiling. Kotlin/JS IR compiler | Kotlin

Bir programlama dilinin compiler'i da ayni programlama diliyle yazilabilir.
 
Bir programlama dilinin compiler'i da ayni programlama diliyle yazilabilir.
İlk aşamada farklı bir dille yazılması gerekmez mi? Daha sonrasında aynı dille yazılabilir elbette ama ilk versiyonunda farklı dil gerekmez mi?

Paylaşılan wikiyi okudum, doğru düşünüyormuşum aşağı yukarı.
 
Son düzenleme:
İlk aşamada farklı bir dille yazılması gerekmez mi? Daha sonrasında aynı dille yazılabilir elbette ama ilk versiyonunda farklı dil gerekmez mi?

Paylaşılan wikiyi okudum, doğru düşünüyormuşum aşağı yukarı.

Evet dogru. Ilk asamada zaten mumkun degil.
Dilin gelisimini kolaylastiriyor eger ayni dille yazilirsa.
 
Bende denedim ama sonunda pes ettim. Bende senden 1 yaş büyüğüm. Heves edip başlamıştım ama sonra bir buga takılıp kalmıştım, bir de üstüne dersler binince. Benim önerim coffescript gibi bir dil yapman. Bence ilgi görür.

Evet :p

C benim için biraz karmaşık. Ve ben 14 yaşındayım. Bence bu bile iyi.

Çok iyi Assembly bilmen gerekiyor. C, C++ sana karmaşık geliyorsa hiç girme bence compiler yapma işine :D.
 
Son düzenleme:

Technopat Haberler

Geri
Yukarı