Programlama Dili Geliştirmek

1,282 views
Skip to first unread message

AYDIN ÜNLÜ

unread,
May 30, 2009, 4:55:05 AM5/30/09
to altdotne...@googlegroups.com
Başlığı okuyupta, büyük bir hevesle yeni bir programlama dili geliştirmek istediğimi falan sanmanızı istemem. Sadece ufak bir araştırma yapmak istiyorum.

Şimdi sormak istediğim şudur, bir programlama dili geliştirmek için hangi tür kaynakları araştırmalıyım sizce. Daha önce böyle bir çalışması olan oldumu ? Malum crm tarzı projelerde script dilleri geliştiriliyor.

Benim ilk aklıma gelen mutlaka bir parser geliştirilmesi. Ozaman böyle bir hedefi olan birisi ilk etapta bir parser geliştirmeli. Yada var olan bir parser modelini uygulamalı ki böyle bir şey varmı bilmiyorum ? Birde tabiki işin teknik yanı dısında sosyolojik boyutu var ki, herekesin aklında benzer cagrısımlar yapan keywordler seçilmeli.

Birde mesela .net framework gibi harici bir framework' ü kullanabilen bir dil geliştirmek istersek işin içine ne gibi ekstra durumlar girer. Sanırım bir converter tarzı uygulama gerekecek böyle bir ihtiyacta. Yada javascript gibi bir dil geliştirmek söz konusu olursa bunu çözecek olan browserlara yönelik bir dil nasıl geliştirilir. Bunun icin firefox 'u araştırabilirim aslında.

Konunun aslında cok geniş oldugunun farkındayım, yani bir dil nasıl geliştirilir diye sormak yerine daha spesifik bir konuya odaklanırsam daha net cevaplar alabilirim belki ama bende su anda bir ön arastırma yaptıgım icin sorular biraz geniş kapsamlı oldu =) Fikirleriniz nedir merak ediyorum.

Bende şimdi aöf sınavına gidiyorum aklım burada kalacak ama hadi bakalım =)


--
Mehmet Aydın Ünlü
Etiya - 0 212 356 10 25 - 26
0555  464  41  85
http://aydinunlu.blogspot.com

Tuna Toksoz

unread,
May 30, 2009, 5:08:54 AM5/30/09
to altdotne...@googlegroups.com
Malum crm tarzı projelerde script dilleri geliştiriliyor.
Sanirim bu tip seyler icin DSL kullanilabilir, BOO ile Ayende ve cesitli gelistiriciler gayet rahat DSL gelistirilebildigini soyluyorlar, boo parserin gucunu arkana almis oluyorsun.

Onun disinda Programlama Dilleri ile ilgili bir ders aliyorum, compiler tasarimi falan degil de daha cok syntax, semantics gosterimi, subprogramlar ve implementasyonlari falan uzerine, o kitabi onerebilirim (simdi yanimda degil kitap, ismini sonra soylerim)

Parser kitleri var diye tahmin ediyorum, parser SDK mi diyim o tip seyler.



Tuna Toksöz
Eternal sunshine of the open source mind.

http://devlicio.us/blogs/tuna_toksoz
http://tunatoksoz.com
http://twitter.com/tehlike




2009/5/30 AYDIN ÜNLÜ <aydin...@gmail.com>

Ersin Basaran

unread,
May 30, 2009, 6:17:47 AM5/30/09
to altdotne...@googlegroups.com

Linux’ta Lex ve yacc diye iki program kullaniyorduk. Ama 10 sene falan once. Simdi cok daha gelismis olmali

 

Ersin

Ferhat Celik

unread,
May 30, 2009, 7:14:10 AM5/30/09
to altdotne...@googlegroups.com
eskilerden yine Lua vardı. Baldurs gate gibi diyalogların bol olduğu oyunlarda çokça kullanılan. Lua.net versiyonunu da yaptılar ama şu an ölü durumda sanırsam. 1-2 senedir kimse dokunmamış source'na.

2009/5/30 Ersin Basaran <ersin....@primeart.net>

Linux’ta Lex ve yacc diye iki program kullaniyorduk. Ama 10 sene falan once. Simdi cok daha gelismis olmali

 

Ersin

 

From: altdotne...@googlegroups.com [mailto:altdotne...@googlegroups.com] On Behalf Of Tuna Toksoz
Sent: Saturday, May 30, 2009 12:09 PM
To: altdotne...@googlegroups.com
Subject: Re: Programlama Dili Geliştirmek

 

Malum crm tarzı projelerde script dilleri geliştiriliyor.

cihat altuntas

unread,
May 30, 2009, 11:34:03 AM5/30/09
to altdotne...@googlegroups.com
Daha önce buna benzer birşeyi çalıştığım bir C# Windows Forms projesinde geliştirmiştim. Proje tersanede yapılan gemilerin standartlara uygunluğunu kontrol eden mühendislik hesaplamaları içeren bir projeydi. Haliyle birçok formüller ve kendine has bir Domain olduğu için aynı şeyi tekrar tekrar kod ile yazmaktansa küçük bir dil(DSL) geliştirdik.(Gerçi karar sadece bana kalsa geliştirirmiydim bilmiyorum bknz. YAGNI)

Nelerden faydalandım neler kullandım bahsedek olursam: Öncelikle Art Of Java kitabındaki örnekten "Implementing Language Interpreters in Java" bölümünden oldukça yararlandım diyebilirim eğer böyle birşey yapacaksanız bakmanızı tavsiye ederim. Orada kullanılan ve benimde kullandığım yöntem bu konuda oldukça yaygın olarak kullanılan Recursive Descent Parser algoritmasıydı. Algoritma küçük çaplı diller implemente etmek için uygun ve basit fakat biraz daha büyük çaplı birşey geliştirmek istiyorsanız biraz kodun karmaşıklığının ve geliştirtilmesinin zor olacağını söyleyebilirim.

Tasarım olarak Recursive Descent parser yaklaşımı pek fazla hoşuma gitti diyemem açıkçası. Çünkü dile yeni yapıların eklenmesi biraz zor oluyor.Bu yüzden eğer geliştirilmesi gereken dile daha sonradan çokca ekleme yapılacaksa Reverse Polish notation(Prefix,Infix) a çevirip ardından Interpreter Pattern kullanarak geliştirilmesi çok daha esnek olabilir.

Yazma kısmını geçip biraz daha pratik ve modern çözümlere bakalım.Eğer geliştireceğiniz dil daha büyükse Parser oluşturan modern araçlar kullanmanız daha doğru olabilir.Bunlardan benim kullanmadığım fakat oldukça övülen  ANTLR bir parser generator. geliştirilmek istediğiniz dilin yapısını tanımlayarak sizin için bir parser ve interpreter üretmenizi sağlıyor. Java ve .NET kütüphaneleri mevcut. Daha önce bahsedilen Yacc,ve Lex gibi fakat araştırdığım kadarıyla daha modern gördüğüm kadarıyla.

Ayrıca Visual Studio Extensibility ile de DSL projesi geliştirebiliyorsun bir kitap alıp incelemiştim fakat uygulama imkanım pek olmadı. Ordaki DSL ile ilk başta bahsettiğim bir dil gibi DSL geliştiriliyormu onuda pek anlayamadım.

Son olarak konunun oldukça derin olduğunu belirtip BNF,AST.. gibi kavramları öğrenmenizide tavsiye ederim. Eğer iyice öğrenirseniz bizede öğretmenizi rica ederim :)

2009/5/30 Ferhat Celik <cefe...@gmail.com>

Gökhan Altınören

unread,
May 30, 2009, 2:38:02 PM5/30/09
to altdotne...@googlegroups.com
Derya deniz bir konudur. Kendin okumadan olmaz.

http://www.amazon.com/Definitive-ANTLR-Reference-Domain-Specific-Programmers/dp/0978739256/ref=sr_1_1?ie=UTF8&s=books&qid=1243707465&sr=8-1 (Guzel kitap)
http://www.amazon.com/lex-yacc-Doug-Brown/dp/1565920007/ref=sr_1_1?ie=UTF8&s=books&qid=1243707502&sr=8-1 (Guzel kitap)
C:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Samples\IDE\CSharp\Example.ManagedMyC
Managed Babel
MPLEX / MPPG
GPLEX / GPPG (http://plas.fit.qut.edu.au/gppg/)
http://devhawk.net/2007/12/10/Practical+Parsing+In+F.aspx
http://anonsvn.mono-project.com/viewvc/trunk/mcs/mcs/

http://martinfowler.com/articles/languageWorkbench.html
http://martinfowler.com/articles/mpsAgree.html (*)
http://martinfowler.com/bliki/Oslo.html

Bir ara (*) ile belirtilenin VS uzerinde alternatifini (WPF kullanarak vs.) gelistirme cabalarim olmustu (2010'da daha da kolay, yuzey WPF zaten) ama nefesim yetmedi. Ama arastirmasi bile super faydali olmustu, zamani olana cok tavsiye edilir.

2009/5/30 AYDIN ÜNLÜ <aydin...@gmail.com>

Berke Sokhan

unread,
May 30, 2009, 5:02:58 PM5/30/09
to altdotne...@googlegroups.com
eskilerden yine Lua vardı. Baldurs gate gibi diyalogların bol olduğu oyunlarda çokça kullanılan. Lua.net versiyonunu da yaptılar ama şu an ölü durumda sanırsam.

NOT: Lua çok aktif bir şekilde World of Warcraft add-on ları yapmak için kullanılmakta :)

2009/5/30 Gökhan Altınören <gok...@altinoren.com>



--
Berke SOKHAN

Ferhat Celik

unread,
May 31, 2009, 1:16:46 AM5/31/09
to altdotne...@googlegroups.com
Evet C++ için hala çok güçlü. Ama .net için port edilmis hali cılız ve sahipsiz.

2009/5/30 Berke Sokhan <berke...@gmail.com>

AYDIN ÜNLÜ

unread,
May 31, 2009, 5:23:28 AM5/31/09
to altdotne...@googlegroups.com
Çok çalışmam lazım çookkk =)  Ama bir yerden başlamak lazım, bu noktada da yazdıklarınız yardımcı olacaktır mutlaka, tek tek teşekkürler =)

İlk iş Martin Fowler'ın makalalerini okumak, sonrada diğer kitapların e-booklarını bulurum =)

30 Mayıs 2009 Cumartesi 22:16 tarihinde Ferhat Celik <cefe...@gmail.com> yazdı:



--
Mehmet Aydın Ünlü (Yazılım Uzmanı)

Murat Ozgur KAYMAKCI

unread,
May 31, 2009, 10:28:03 AM5/31/09
to altdotne...@googlegroups.com
grammar, syntax tree gibi konularda yeterli bilgin yoksa bu konuda okutulan yegane kitap olan dragon book 'u öneririm. okuması ağır bir kitap olmakla beraber çok sağlam bir kaynaktır. Bu kitaba alternatif olabilecek ve pdf formatında bedava dağıtılan Basic of Compiler Design kitabını da okuyabilirsin.

*Eğer parser 'ı yazmayı düşünmüyorsan, java ve c# için kullanabileceğin Coca/R 'a bakmanı tavsiye ederim.

2009/5/31 AYDIN ÜNLÜ <aydin...@gmail.com>

Sidar Ok

unread,
Jun 1, 2009, 4:59:05 AM6/1/09
to altdotne...@googlegroups.com
Bununla ilgili bolum var universitelerde biliyorsun :)

Ama amacin nedir, Tuna'nin dedigi gibi bir DSL mi, sadece syntax i degi$ik varolan bi platforma convert edilebilir bi$ey mi (XX.NET) yoksa bildigin executable ureten her$eyiyle bir dil mi ? Hepsinde odaklanacagin yerler cok cok ba$ka.

2009/5/31 Murat Ozgur KAYMAKCI <murat...@gmail.com>



--
Sidar Ok

http://www.sidarok.com
http://www.twitter.com/sidarok

Berker Peksağ

unread,
Jun 1, 2009, 6:40:01 AM6/1/09
to altdotne...@googlegroups.com
Ek olarak, Brainfuck ve Whitespace gibi EPL'lar da incelenebilir :)



Saygılarımla,
Berker PEKSAĞ.


2009/6/1 Sidar Ok <sid...@gmail.com>

AYDIN ÜNLÜ

unread,
Jun 1, 2009, 7:07:22 AM6/1/09
to altdotne...@googlegroups.com
@Sidar,

Aslında amacım ilk etapta var olan bir dile extension yazmak gibi birşey. Fakat bu kafamdaki proje için yeterli olurmu bilmiyorum. Yetersiz oldugu durumda sanırım işler cok daha fazla karışıyor. Şu anda aslında sadece hobi amaçlı kendimi geliştirebilmek adına, ileriye yönelik böyle bir şeyin ön hazırlıgını yapıyorum diyebilirim. 2 haftaya kadar da işlerim baya azalacak ve benimde boş vaktim olacak, bende böyle bir alanda araştırma yapmayı düşündüm.

Aslında yönlendirdiğiniz şeyleri daha inceleme fırsatı bulamadım, bunları biraz araştırdıktan sonra daha net birşeyler söyleyebilirim herhalde.

01 Haziran 2009 Pazartesi 03:40 tarihinde Berker Peksağ <berker...@gmail.com> yazdı:

sanal bilgi kösesi

unread,
Feb 27, 2015, 2:33:55 PM2/27/15
to altdotne...@googlegroups.com, aydin...@gmail.com
YA BEN SİZLER SAYESİNDE HEDEFİME ULAŞTIM AMA LEX VE YACC GÜVENLİ LİNK VERİR MİSİNİZ?(WİN8.1 64 BİT)
30 Mayıs 2009 Cumartesi 11:55:05 UTC+3 tarihinde AYDIN ÜNLÜ yazdı:
Reply all
Reply to author
Forward
0 new messages