Kendi yazılım dilini yazmak

Maalesef, forumda bu soruyu soran hiç kimsenin bunu gerçekleştirebileceğini düşünmüyorum. Kendiniz öğrenmeniz gerekiyor. Burada başkasının sana söylediği bilgiler kalıcı olmaz.

Diğer bir olay da olaya ucundan ufak bir giriş yapan herkes kendi işletim sistemini, oyun motorunu veya yazılım dilini vs. geliştirmek istiyor. Zannediyorum ki daha bir kod bloğunun bilgisayar tarafından nasıl çalıştırıldığını bilmiyorsun. Önce bu olaylara hakim olmanı, sonra etraflıca bir araştırma yapmanı öneririm.
 
Makine dili bilmelisin en başta. Sonrasında oluşturacağın dilin temel kriterlerini belirlemelisin. Mevcut bir dil üzerine mi oluşturacaksın yoksa sıfırdan mı hayata geçireceksin, bellek yönetimi nasıl olacak, program akışı nasıl olacak gibi gibi... Sonrasında Syntax yani kabaca yazım kuralları geliyor.

Bunlara paralel olarak, bir compiler (derleyici) oluşturmalısın. Compiler, yazdığın kodu bilgisayarın anlayacağı bir dile çevirir.

Yapılabilir, ancak %99 ihtimalle senin istediğin şeyle uzaktan yakından alakası olmayacak. Yapsan bile, kullanılabilir olmayacak. Ancak içindeki merakı gidermek istersen diye, buraya bir makale bırakıyorum, İngilizce:



Böyle bir şey söz konusu bile değil. İstersen spagetti adında bir dil oluşturabilirsin mesela.
 
Makine dili bilmelisin en başta. Sonrasında oluşturacağın dilin temel kriterlerini belirlemelisin. Mevcut bir dil üzerine mi oluşturacaksın yoksa sıfırdan mı hayata geçireceksin, bellek yönetimi nasıl olacak, program akışı nasıl olacak gibi gibi... Sonrasında syntax yani kabaca yazım kuralları geliyor.

Bunlara paralel olarak, bir compiler (derleyici) oluşturmalısın. Compiler, yazdığın kodu bilgisayarın anlayacağı bir dile çevirir.

Yapılabilir, ancak %99 ihtimalle senin istediğin şeyle uzaktan yakından alakası olmayacak. Yapsan bile, kullanılabilir olmayacak. Ancak içindeki merakı gidermek istersen diye, buraya bir makale bırakıyorum, İngilizce:


Böyle bir şey söz konusu bile değil. İstersen spagetti adında bir dil oluşturabilirsin mesela.

Spagetti 🤣🤣🤣
Bildiğiniz kaynak var mı arkadaşlar?
 
Öyle bir şey yok aga, isterse yapar. Ne yapamaz? Yapar!
Kardeşim köstek olmayın destek olun (!)

Hemen öncelikle C dilinin nasıl çalıştığına bakalım. C dili önce #include, #ifdef vs. gibi önişlemci komutlarını (preprocessor commands) işleyebilmek için GCC ile birlikte gelen C önişlemcisine kodumuzu sokar. Daha sonrasında ise bu önişlemci, o komutları işleyerek bir C kodu daha çıkartır, ama uzantısı .i şeklindedir ve Basic dili gibi sıralı bir koddur, çünkü koda #include ile dahil edilen header dosyamızın içeriği birebir kopyalanır. Daha sonra da GCC'nin içindeki C derleyicisi aracılığı ile bu .i uzantılı kod, Assembly'e dönüştürülür. Yine GCC ile gelen GNU Assembler ile bu Assembly kodu 1 ve 0'a dönüşerek .o uzantılı obje dosyasına dönüşür. Bu obje dosyası da linker aracılığı ile belirtilen kütüphaneler ile birleşerek (C standart kütüphanesi gibi) çalıştırılır dosya haline geliyor.

Şimdi; bu kadar programı, bu kadar programda olan optimizasyon tekniklerini implemente edebileceksen, bir programlama dili yapabilirsin. Önce C derleyicisi ile başlayabilirsin alıştırma yapmak için.
 
Eğer proglamlama dilinin hedeflerini, syntaxını belirleyebilirsen llvm teknik işi baya kolaylaştırıyor zaten son on yılda çıkan dillerin nerdeyse hepsi llvm tabanlı .llvm kısaca senin programlama dilin ve makine spesifik assembly arasında katman oluşturuyor sen kendi dilini llvm ara katmanına (IR) dönüştüren bir parser yazıyorsun sadece .
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı