Özelleştirilebilir Java Tabanlı Betik Diller için Programlama Dili Alt Yapısı Geliştirme



Benzer belgeler
Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

1.1. Yazılım Geliştirme Süreci

Üst Düzey Programlama

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Üst Düzey Programlama

C# nedir,.net Framework nedir?

Bölüm1. İlk Bilgiler ISBN

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Öğr. Gör. Serkan AKSU 1

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Üst Düzey Programlama

İnternet Programcılığı

Veritabanı Uygulamaları Tasarımı

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

JAVA API v2.0 Belge sürümü: 2.0.2

Bahar. BM 211 Programlama Dilleri 3 1

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Bilgisayarda Programlama. Temel Kavramlar

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

ÖZGÜR YAZILIMLAR İLE J2EE

Internet Programming II

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Java Temel Özellikleri

Üst Düzey Programlama

GÖRSEL PROGRAMLAMA - I

PHP 1. Hafta 1. Sunum

Qt Temelleri. Eren BAŞTÜRK.

Temel Bilgisayar (Basic Computer) Yazılım (Software)

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Yazılım Mühendisliği 1

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

PROGRAMLAMA TEMELLERİ

Exploit Geliştirme Altyapıları. Fatih Özavcı Bilgi Güvenliği Danışmanı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

PHP ile İnternet Programlama

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

4. Bölüm Programlamaya Giriş

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Programlama Dillerinde Kullanılan Veri Tipleri

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Pardus. A. Murat Eren, 25 Mart Pardus Geliştiricisi. Pardus Yenilikleri Sık Sorulan Sorular

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

İŞLETİM SİSTEMLERİ. (Operating Systems)

MATLAB A GİRİŞ. EE-346 Hafta-1 Dr. Ayşe DEMİRHAN

Efe Çiftci Çankaya Üniversitesi Bilgisayar Mühendisliği Bölümü Kasım 2012 CENG 191 Computer Engineering Orientation Özel Sunumu

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Sanal Ortamda Nesnelerin Haptic Kol ile Manipülasyonu. Sevcan AYTEKİN Alpaslan DUYSAK

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

Hızlı ve Güvenli Vale Hizmeti

Bölüm 1. Ön Hazırlıklar ISBN

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

08220 Internet Programcılığı II

GÖMÜLÜ SİSTEMLER. Bilecik Şeyh Edebali Üniversitesi Gömülü Sistemler Ders notları-1

Klavyeden Basit Giriş/Çıkış İşlemleri

BİT in Temel Bileşenleri (Yazılım-1)

Özgür Yazılımlar ile Kablosuz Ağ Denetimi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

Linux İşletim Sistemi Tanıtımı

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

1.PROGRAMLAMAYA GİRİŞ

Sanallaştırma Nedir? Bahadır Demircioğlu. Şubat, 2013

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Kurumsal bilgiye hızlı ve kolay erişim Bütünleşik Belge Yönetimi ve İş Akış Sistemi içinde belgeler, Türkçe ve İngilizce metin arama desteği ile içeri

Mobil Uygulama Geliştirmeye Giriş (ISE 407) Ders Detayları

Üst Düzey Programlama

Mobil Cihazlardan Web Servis Sunumu

TC KİMLİK NO SMS GÖNDERİM XML API

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

İçerik. TBT 1003 Temel Bilgi Teknolojileri

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

Yrd. Doç. Dr. Gökçe BECİT İŞÇİTÜRK. Gökçe BECİT İŞÇİTÜRK 1

Giriş. Prof.Dr. Bahadır AKTUĞ JFM212 Python ile Mühendislik Uygulamaları. *Kaynakça bölümünde verilen kaynaklardan derlenmiştir.

Andorid İşletim Sistemi Uyumlu Ösym Sınavları Uygulaması

Pardus. Erkan Tekman, T. Barış Metin. 18 Mayıs Ulusal Dağıtım Projesi Ulusal Elektronik ve Kriptoloji Enstitüsü. Pardus için 10 Neden

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Lecture 11: Generics

Transkript:

Çanakkale Onsekiz Mart Üniversitesi, Çanakkale, 30 Ocak - 01 Şubat 2008 Özelleştirilebilir Java Tabanlı Betik Diller için Fırat KÜÇÜK 1, İbrahim ŞAHİN 2 1 Sakarya Üniversitesi, Adapazarı Meslek Yüksekokulu, Sakarya 2 Düzce Üniversitesi, Teknik Eğitim Fakültesi, Elektronik ve Bilgisayar Eğitimi Bölümü, Düzce fkucuk@sakarya.edu.tr, ibrahim.sahin@gmail.com Özet: Programlama dilleri, bilişim sektörü başta olmak üzere tüm sektörlerde kullanım bulmakta ve bu sektörlere ait uygulama geliştirme süresini kısaltan daha performanslı programlama dillerine her zaman ihtiyaç duyulmaktadır. Yaptığımız çalışmada uygulama geliştiricilere alışık olduğu dil imlasını kullanma yetisi sağlayan bir dil alt yapısı geliştirilmiştir. Geliştirilen dil alt yapısı, GPL lisansı altında serbestçe ve ücretsiz bir şekilde açık kaynak halde geliştiricilere ve kullanıcılara sunulmaktadır. Anahtar Kelimeler: Programlama Dili Alt Yapısı, Söz dizim Çözümleyici, Özelleştirilebilir Programlama Dili Developıng A Programmıng Language Infrastructure For Customızable Java Based Scrıptıng Languages Abstract: Programming languages has an improving role in IT market. And programming languages that decrease application development duration is needed growingly. In our project, a programming infrastructure that provides the grammar reflects the application developer behaviors. Developed Language Infrastructure is represented to developers in GPL license for distributing it freely and free of charge. Keywords: Programming Language Infrastructure, Language Parser, Customizable Programming Language 1. Giriş Bilgisayar Dilleri kavramı, günümüzde kabına sığamamış cep telefonlarından kol saatlerine kadar tüm işlem birimi (Mikro işlemci, Mikro denetleyici, Sayısal İşaret İşleyici (DSP gibi bulunan elektronik cihazlarda kullanım alanı bulmuştur. Şüphesiz bu yönelim, programlanabilir bir elektronik aygıtın özelleştirilebilme büyüsünden ileri gelmektedir. Programlanabilir bir aygıt, kullanıldığı sistem içindeki bütün girdi, çıktı ve etkileşim birimlerinin muhtemel tüm kullanım kombinasyonlarını kullanabilme yetisine sahiptir. Yüzlerce mikroişlemci yönergesi ve onlarca tümleşik aygıta sahip olan günümüz bilgisayarlarındaki bu kombinasyonlar, uygulama geliştiricilerin hayal gücü ile sınırlıdır. Kasım 1954 de [1] ilk Yüksek Düzeyli Programlama Dili (High-Level Programming Language FORTRAN ın çıkması ile artık bilgisayarlar, daha kolay programlanabilir hale gelmiştir. Bu açılan yeni yüksek düzey programlama çağı ile birlikte artık programlar daha kısa bir süreç neticesinde yazılabilmiştir. Uygulama geliştiricilerin daha az kod ile daha çok iş yapma becerileri bu tarihten itibaren yeni çıkan paradigmalara paralel olarak katlanarak arttı. 405

Özelleştirilebilir Java Tabanlı Betik Diller için FORTRAN dan önce bir çıktı aygıtına bir kelime yazdırmak için kullanılabilecek yegâne yol; işlem birimini, makine dili yönergeleri ile ya da bu makine dili yönergelerine takma isimler verilerek oluşturulmuş Assembly dili sözcükleri ile beslemekti. Bu işlem, FORTRAN gibi bir üst düzey dilin icadı ile PRINT veya WRITE ifadesi kadar sadeleştirilebildi. FOR- TRAN makine diline derleme yaptığından sonuçtaki uygulama Assembly ile yazılan uygulamaya oldukça yakın başarım (performans sergilemekteydi. Artık programlar daha kısa sürede daha az kodlama ile yazılabiliyordu. Bilgisayar dilleri, daha sonraları yalnız programlama kavramı içerisine sıkışıp kalmadı. Grafik Kullanıcı Arabirimi (GUI tanımlama, veritabanı sorgulama gibi daha birçok alanda kullanım bularak uygulama geliştiricilerin daha çok işlem yapabilen programları, daha kısa sürede yazmalarına imkân tanıdı. Bilgisayar Dillerinin alt kolu olan Programlama dilleri ise artık yalnızca uygulama geliştirmek için değil uygulamaları özelleştirmek için de sıkça kullanılır hale geldiler. bir süre içerisinde Power PC platformundan Intel platformuna taşınabildi. [2] Bu aktarımı gerçekleyen en büyük etmen hiç şüphesiz platformlar arası çalışabilen C derleyicileriydi. Çalışmamız, Java Sanal Makinesi üzerinde çalışabilen yeni betik diller geliştirmeye olanak sağlayan ve bunları yorumlayan bir dil alt yapısını kapsamaktadır. Dil alt yapısı ile beraber yine açık kaynak çeşitli araçlar kümesi de sağlanmıştır. Sunulan çalışmanın farklı kollarında dil alt yapısı için tam kapsamlı Javy [3] adında konsept bir dil geliştirilmişti. Gerçekleştirilen bu çalışmada ise Javy ve benzeri dillerin kolayca geliştirilebileceği temel platform sunulmaktadır. Bu platformdan ileride Cezve Dil Alt Yapısı veya kısaca Cezve diye bahsedilecektir. Cezve dil alt yapısı, platforma özel hazırlanmış.g uzantılı tek bir ANTLR [4] imlasını alıp tam teşekküllü bir betik dil oluşturabilmektedir. 2. Dil Alt Yapısı: Cezve Bunların yanında programlama dillerine ait sanal makineler (JVM,.NET Framework, vb ve farklı mikroişlemci platformları arası derlenebilen diller (Örn. C/C++ sayesinde, işlemci mimarilerine kolayca uyarlanabilen uygulamalar yazılmasına imkân tanınmıştır. Hiç şüphesiz bu yaklaşımlar da uygulama geliştirme sürecini olabildiğince kısaltmıştır. Sanal Makineler (Virtual Machines sayesinde sanal makineye özgü yazılmış uygulamalar, sıfır hata ile desteklenen platformlar arası anında taşınabilmektedir. Sanal makine üzerinde çalışmayan uygulamalar ise her platformda çalışan aynı programlama dilini derleyebilen derleyiciler sayesinde, farklı işlemci mimarileri üzerinde de çalışabilir hale gelmektedir. Örnek olarak; 86 milyon satır koda sahip Apple Mac OS X Tiger işletim sistemi, 210 gün gibi Şekil 1. Cezve dil alt yapısı mimarisi Cezve dil alt yapısı, Java Sanal makinesi üzerinde çalışmaktadır. Ve bu dil alt yapısı üzerinde koşan diller de alt yapı olarak Cezve yi 406

Fırat KÜÇÜK, İbrahim ŞAHİN kullanırlar..net CLI çatısının VB.NET, C# gibi dillere ev sahipliği yapması veya Groovy, Rhino, BSH, Jython gibi dillerin Java Sanal Makinesi üzerinde yer bulmaları gibi oluşturduğumuz konsept diller de ara katman olan Cezve üzerinde konumlanırlar. Çalışmamızda oluşturduğumuz dil alt yapısının mevcut sürümünde dayandığı temel nokta ANTLR ayrıştırıcı oluşturucudur. Bunlara ilaveten Cezve, Java Sanal Makinesi ile iletişim kurabilecek birçok yönetici sınıf içermektedir. Yönetici sınıflar imla ile Java sanal makinesi arasında bir köprü niteliğindedir. Bir kaç KB miktarındaki bir BNF imla tanımı dosyasının karmaşık bir dil olma serüveni Cezve nin kullandığı ANTLR kütüphanesinin bu imla dosyasından bir sözcük ayrıştırıcı oluşturması ile başlamaktadır. 2.1 Sözcük Çözümleme Cezve, ANTLR Çözümleyici oluşturucu yardımıyla imla dosyasından Sözcük Çözümleyici (Lexer oluşturur. Sözcük çözümleyici, BNF kurallarının sonlu belirgin otomat (DFA haline dönüşmüş şeklidir. Çözümleyici oluşturulurken Cezve nin genelde belirli bir düzenli ifadeye veya dizgeye karşılık gelmeyen anlamsal sözcükleri de çözümleyiciye eklenir. Bu anlamsal sözcükler, dil alt yapımız tarafından sunulan standart sözcüklerdir. Bu sözcüklerin (token kullanılması halinde çözümleyicide çözümlenen bazı literaller daha sonraki aşamalarda Cezve tarafından kolayca anlaşılır halde olacaklardır. Şekil 2. Sözcük çözümleme Sözcük çözümleyici, bir dizge (string kaynağından verileri anlamsal gruplar şeklinde ayrıştırır. Bu ayrıştırma neticesinde imla sözcükleri (tokens oluşur. İmla sözcükleri Söz dizim ayrıştırıcı tarafından denetleneceklerdir. Örnek bir Javy kodunun şu şekilde olduğunu düşünürsek: if (true { println( true ; } else { println( false ; } Sözcük çözümleyici bu karakter yığınını şu sözcüklere ayrıştırır: if : IF true : CEZVE_LITERAL_BOOLEAN : RIGHT_PARENTHESIS { : LEFT_CURLY_BRACKET println : CEZVE_ATOM_NAME true : CEZVE_LITERAL_STRING : RIGHT_PARENTHESIS ; : SEMICOLON } : RIGHT_CURLY_BRACKET else : ELSE { : LEFT_CURLY_BRACKET println : CEZVE_ATOM_NAME false : CEZVE_LITERAL_STRING : RIGHT_PARENTHESIS ; : SEMICOLON } : RIGHT_CURLY_BRACKET Karakter yığını anlamlı imla sözcüklerine dönüştürülmüştür. Bu sözcüklerden CEZVE ön eki ile başlayanlar ileriki safhalarda Cezve alt 407

Özelleştirilebilir Java Tabanlı Betik Diller için yapısı tarafından anlamlı kabul edilecektir. Diğer sözcükler ise söz dizim çözümleyiciye gönderileceklerdir. Söz dizim çözümleyici de bunların bir kısmını kendi içerisinde yine Cezve standart sözcüklerine dönüştürebilir. 2.2 Söz Dizim Çözümleme (CEZVE_SCRIPT (CEZVE_STATEMENT_IF (CEZVE_SUB_STATEMENT_IF (CEZVE_FRAGMENT_ATOM true (CEZVE_STATEMENT_EXPRESSION (CEZVE_FRAGMENT_ATOM (CEZVE_FRAGMENT_METHOD println (CEZVE_FRAGMENT_METHOD_ ARGUMENTS (CEZVE_FRAGMENT_ EXPRESSION_LIST (CEZVE_FRAGMENT_ATOM true CEZVE_SUB_STATEMENT_IF_END (CEZVE_SUB_STATEMENT_ELSE (CEZVE_STATEMENT_EXPRESSION (CEZVE_FRAGMENT_ATOM (CEZVE_FRAGMENT_METHOD println (CEZVE_FRAGMENT_METHOD_ ARGUMENTS (CEZVE_FRAGMENT_ EXPRESSION_LIST (CEZVE_FRAGMENT_ATOM false CEZVE_SUB_STATEMENT_ELSE_END CEZVE_STATEMENT_IF_END Cezve sistemine giren bir.g imla dosyasından ikinci olarak bir de söz dizim çözümleyici oluşturulur. Söz dizim çözümleyici de temelde bir Sonlu Belirgin Otomat DFA uyarlamasıdır. Sözcük çözümleyicinin çıktıları ile beslenen sözcük çözümleyici, sözcüklerin kurallı birer ifade olup olmadığını denetler. Söz dizim çözümleyici, Cezve dil alt yapısının ağaç ayrıştırıcısı tarafından anlamlı olacak standart sözcükler üretir. Yukarıdaki örnekteki İmla sözcükleri söz dizim çözümleme sonrasında daha anlamlı sözcüklere dönüşür. Lisp tarzı bir ifade ile ağaç ayrıştırıcıya şu sıra düzensel yapı gönderilecektir. Belirli bir ağaç yapısı şeklinde işlenen sözcükler, Cezve dil alt yapısının bütünleşik Ağaç Ayrıştırıcısına gönderilir. 2.3 Ağaç Çözümleme Şekil 3. Ağaç çözümleme yapısı Cezve dil alt yapısının standart sözcükleri halinde anlamsallaştırılan karakter katarı, ağaç çözümleyicinin yönetici sınıfları tarafından işlenirler. Ağacın en sonundaki atom veri tipleri Cezve dil alt yapısının sağladığı AtomManager tarafından tutulur. AtomManager bu ifadeleri ilişkili Java nesnelerine dönüştürecektir. Örnekte adı geçen atom veri tiplerinden ikisi (CEZVE_FRAGMENT_ATOM true ve (CEZVE_FRAGMENT_ATOM false en baştan beri CEZVE_LITERAL_STRING tanımlaması ile ağaç ayrıştırıcıya ulaşır. Ağaç ayrıştırıcı da bu dizgeyi java.lang.string örneğine dönüştürür. Cezve nin dilin temel çatısını oluşturmak için kullandığı belirli başlı yönetici sınıflarını şöyle sıralayabiliriz. 408

Fırat KÜÇÜK, İbrahim ŞAHİN AssignmentManager: Atama İşlemleri AtomManager: Atom ve literallerin nesnelere dönüşüm işlemleri CastManager: Tip dönüşüm işlemleri ClassPathManager: Paket ve çalışma zamanı sınıf işlemleri ExpressionManager: İşlem grubu yönetim işlemleri OperatorManager: İşleç işlemleri StatementManager: Basit ve Bileşik ifade işlemleri TypeManager: Temel tip tanımlamaları Cezve dil alt yapısının ağaç ayrıştırıcısı diğer ağaç adımlarını ilişkili yönetici sınıflara gönderir ve betiğin çalışma zamanında yorumlanmasını sağlar. 3. Sonuç Cezve dil alt yapısı, uygulama geliştiricilere kendi alıştıkları imla ile betik programlar yazabilme imkânını sunmaktadır. Bu kapsamda uç birim, masaüstü ve hatta web tabanlı programlar yapılması da mümkün olmaktadır. Cezve, Web programları için işletim sisteminin standart giriş ve çıkış sistemi üzerinden CGI kipte çalışabilmesinin yanında çok kanallı (multithread web uygulamalarını da desteklemektedir. Cezve dil alt yapısı, barındırdığı ön tanımlı Servlet i kullanarak özelleştirilebilir imla ile yazılan uygulamaları Apache Tomcat gibi uygulama sunucularına taşıyabilmektedir. Bunlara ilaveten Cezve, Java nın temel ilkel tip örtücü sınıflarına müdahale etmektedir. java.lang paketinde tanımlanan belirli başlı ilkel tip örtücü sınıfları ve java.util paketindeki bazı koleksiyon tiplerini projemiz için uyarladık. Bu sayede oluşturulan diller Ördek Tip Denetimi (Duck Typing, İşleç Aşırı Yükleme (Operator Overloading gibi moderrn paradigmaları destekleyebilmektedir. Dil alt yapısının sunduğu işleç sistemi, Python ile örtüşmektedir. Nesne bir işleç işlemine maruz kalıyorsa nesnenin işlece özel metotları çağrılmaktadır. Bu özel metodları da işleçler ile kullanabileceğimiz gibi mevcut nesnelerden kalıtım yolu ile aldığımız alt metodları da kullanabiliriz. Cezve alt sistemi bulara ilaveten Python, PHP ve Perl gibi dillerin bazı işleçlerini de kendi bünyesine katmıştır. Bu manada yeni yapılan diller bu işleç özelliklerini de kendi bünyesine kolayca alabilirler. Cezve dil alt yapısı ve beraberindeki konsept diller şu anda kararlı sürümüne ulaşmamış olmasına rağmen bir çok modern paradigmayı üzerinde barındırmaktadır. Cezve, Şu an CGR Cezve Grammar paketleri üzerinden kolayca dil transferi yapabilmesinin yanında bütünleşik kabuk ve dil yorumlayıcısı ile betik dil dosyalarını anında yorumlayabilme yetisine sahiptir. 4. Kaynaklar [1]. O Reilly Media, Inc., www.oreilly.com/ news/graphics/prog_lang_poster.pdf, History of Programming Languages [2]. Apple World Wide Developper Conference 2006, http://www.apple.com/quicktime/ qtv/wwdc06/ [3]. Javy Programming Language, http://www. javy.org/ [4]. ANTLR - ANother Tool for Language Recognition, http://www.antlr.org/ 409