190 likes | 458 Views
Diller nasıl yazılmıştır ?. İki ana strateji : Yorumlayıcılar - Interpreters ( eski ve az çalışılmıştır) Derleyiciler - Compilers ( yeni, daha yoğun çalşılmıştır ) Yorumlayıcılar programı “ olduğu gibi ” çalıştırır Önişlem- preprocessing - az veya hiç yoktur
E N D
Diller nasıl yazılmıştır? • İki ana strateji: • Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) • Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır) • Yorumlayıcılarprogramı “olduğu gibi” çalıştırır • Önişlem- preprocessing- az veya hiç yoktur • Derleyiciler yoğun bir önişleme yapar • Genelde derleyiciler kullanılır
Bir Derleyicinin Yapısı • Sözcüksel Çözümleme/analiz-Lexical Analysis • Gramer incelemesi veya sözdizimsel analiz- Parsing • Anlamsal analiz-Semantic Analysis • Optimizasyon • Kod üretme-Code Generation İlk üç madde insanların dil anlama yöntemine benzer şekilde anlaşılabilir.
Sözcüksel Analiz • İlk basamak: sözcükleri tanımak. • Harflerin üzerindeki en küçük dil birimidir Bu bir cümledir. • Not • Büyük harf “B” (cümle başı sembolü) • Boşluk “ “ (sözcük ayracı) • Nokta “.” (Cümle sonu sembolü)
Sözcüksel Analiz Detayları • Sözcüksel Analizçok basit değildir. Örneğin: bub irc üml emi dir • Ek olarak programlama dilleri normal dillerden genelde daha şifrelidir: *p->f += -.12345e-5
Sözcüksel Analiz Detayları • Sözcüksel analizciprogram metnini “sözcüklere” (“words”) sembollere(“tokens”) ayırır if x == y then z = 1; else z = 2; • Birimler: if, x, ==, y, then, z, =, 1, ;, else, z, =, 2, ;
Sözdizimsel analiz • Sözcükler anlaşıldıktan sonraki basamakta sıra cümle yapısını anlamaya gelir • Sözdizimsel analiz = Cümlenin şekilsel(diyagramatik) gösterimi • Diyagram bir ağaç yapısıdır
This line is a longer sentence article noun verb article adjective noun subject object sentence Cümlenin Diyagramatik Gösterimi
x == y z = 1 z = 2 relation assign assign predicate then-stmt else-stmt if-then-else Programların Sözdizimsel Analizi • Program ifadelerinin sözdizimsel analizide benzer şekilde yapılır • Örneğin: If x == y then z = 1; else z = 2; • Diyagramı:
Anlamsal Analiz: Semantic Analysis • Cümle yapısı anlaşıldıktan sonra, şimdi “anlamın” ne olduğunu çözmeye çalışabiliriz • Ancak derleyiciler için anlamı çözmek çok zordur • Derleyiciler tutarsızlıkları yakalamak için sınırlı bir analiz yaparlar • Bazıları ise performansı artırmak için daha fazla analiz yapabilirler
İngilizce’de Anlamsal Analiz • Örnek: Jack said Jerry left his assignment at home. Burada “his” kimin için kullanılmıştır? Jack mi Jerry mi? • Daha kötüsü: Jack said Jack left his assignment at home? Bu durumda kaç tane Jack vardır? Hangisi ödevini evde bırakmıştır?
Programlama dilleri bu tür belirsizlikleri önlemek için katı kurallar tanımlarlar Bu C++ kodununçıktısı “4” olur; en içteki tanımlama kullanılmıştır { int Jack = 3; { int Jack = 4; cout << Jack; } } Programlamada Anlamsal Analiz
Daha Fazla Anlamsal Analiz • Derleyiciler değişken bağlamanın(variable bindings) yanında pek çok anlamsal kontrol de yaparlar • Örnek: Jack left her homework at home. • Tip uyuşmazlığı(“type mismatch”):herveJack arasında; bu iki sözcük farklı kişiler olmalı • Jack muhtemelen bir erkek olmalı
Optimizasyon • İngilizce için tam karşılığı olmamakla birlikte redaksiyona(editing) benzemektedir • Programları otomatik olarak değiştirerek • Daha hızlı çalışmasını • Daha az bellek kaplamasını ve • Genel olarak kaynak kullanımında tutumlu davranmayı sağlamaktadır
Optimizasyon Örnekleri X = Y * 0 ifadesiX = 0 şeklinde yazılabilir NO!
Kod üretimi • (Genelde) assembly kodu üretir • Bu daha sonra assembler(çevirici, toplayıcı) tarafından çalıştırılabilir koda çevrilir • Başka bir dile çeviridir • İnsanların yaptığı çeviriyle özdeşleştirilebilir
Sonuçlar • Derleme genelde bu kadar basittir, ama çok gizli tuzaklarla karşılaşılaşmak mümkündür • Örnek: Hatalı programlar nasıl ele alınacaktır? • Dil dizaynının derleyici üzerinde önemli etkisi vardır • Neyin kolay neyin zor derleneceğini belirler • Dersin teması: dil dizaynı yaparken gözönünde bulundurulması gerekenler
Günümüzde Derleyiciler • Genel olarak bütün derleyiciler bu yapıya uygunluk gösterir • FORTRAN’dan bu yana oranlar değişmiştir • Önce: sözcüksel analiz, sözdizimsel analiz daha karmaşıktı ve pahalıydı • Bugün: optimizasyon diğer safhalara göre daha önemlidir; sözcüksel analiz, sözdizimsel analiz daha ucuzdur
Derleyicilerdeki Yönelimler • Optimizasyonu hız için kullanmak çok gerekli değildir. Ancak: • Bilimsel programlarda • İleri işlemcilerde (DSP-Digital Signal Processors, advanced speculative architectures) • Küçük cihazlarda(hız = daha uzun pil ömrü) gerekebilir • Kodun güvenilirliğini artırmak için derlemede ele alınan konular: • Bellek güvenliği • Uyumluluk sorunlarını(concurrency errors) tespit etmek...
Yöenelimler • Derleyiciler • Daha çok ihitiyaç duyulmakta ve daha karmaşıklaşmaktadır • Yeni diller ve yeni mimariler arasındaki farklılıklara bağımlı olarak gelişmektedir • Önemle çalışılan ve sağlıklı bir gelişim sergileyen geliştirilen bir alandır