1 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)

Slides:



Advertisements
Benzer bir sunumlar
Bilgisayar Programlama I
Advertisements

ÖNERMELER VE MANTIK HAZIRLAYAN: AYDIN EREN KORKMAZ
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
Dersin Adı:ALGORİTMA GELİŞTİME TEKNİKLERİ Dersin Kodu:YBS506 Konu:Kontrol Yapıları(if / if-else) 2.HAFTA.
Yrd. Doç. Dr. M. Fatih HOCAOĞLU Mühendislik ve Mimarlık Fakültesi Endüstri Mühendisliği Bölümü.
Problemi Çözme Adımları
KOŞUL İFADELERİ onbirc.com/133.
4 Kontrol Yapıları: 1.Bölüm.
BİL 112 Programlamaya Giriş: C
SQL de Değişken Tanımlama
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Programlamanın Yapı Taşları
KÜMELER.
Recursion (Özyineleme)
Bölüm 3 – Yapısal Programlama
DÖNGÜ İFADELERİ.
NESNEYE YÖNELİK PROGRAMLAMA
Yapısal Program Geliştirme – if, if-else
Derleyici Araçları FLEX & BISON
SÖZDE –KODLAR (pseudo-code)
Alfabemizde 29 harf vardır.Her harfin büyüğü ve küçüğü vardır.
=>SÖZCÜKTE ANLAM<=
SQL de Değişken Tanımlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 2 – Kontrol Yapıları
JAVA İLE PROGRAMLAMAYA GİRİŞ
Koşul İfadeleri ve Akış Kontrolü Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir akış kontrolü oluşturabilmek için koşul ifadelerini.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
CEBİRSEL İFADELER ŞEHİT POLİS İSMAİL ÖZBEK ORTA OKULU BURSA/KESTEL.
Bağlama Duyarlı Diller
Derleyici Teorisine Giriş
Recursion (Özyineleme)
~KOŞUL İFADELERİ~.
Sıralanışı Sözcük ve Sözcüklerin Hazırlayan Şerife TUNCA
=>CÜMLEDE ANLAM<=
=>SÖZCÜK TÜRLERİ<=
C++ Ders Notları 2.Ders (Dilin Yapısı)
C++.
String class String karakterler dizisidir
=> SÖZCÜKTE ANLAM <=
KÜMELER.
ÇOKGENLER.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
BİL 102 BİLGİSAYAR PROGRAMLAMA DERS 1. PROGRAM GELİŞTİRME AŞAMALARI 1- Probleme ilişkin veriler nelerdir? 2- Çözüm yöntemi nasıl olacaktır? 3- Çözüm sonucunda.
KÜMELER ERDİNÇ BAŞAR.
ELEMENTLER VE SEMBOLLERİ
Bugünkü Konular Döngüler ve Akış Diyagramları C de Döngü Tanımlama
flex Sözcüksel Analiz İçin Bir Araç
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Sentaks (Sözdizim) ve Semantik (Anlam)
BISON (YACC) (Yet Another Compiler Compiler)
Bölüm: 0.
SEVGİLİ ÖĞRENCİLERİM;
Sıfatlar.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Bilgisayar Mühendisliği Bölümü
Bilgisayar ile Çeviri Sistemleri
DİL ÇEVRİMİ Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir.
KÜMELER HAZIR MISIN?.
ELEMENTLER VE SEMBOLLERİ
Bilgisayar Programlamasına ve Veri Analizine Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Programlamasına ve Veri Analizine Giriş - VI
Sunum transkripti:

1 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 Derleyiciler yoğun bir önişleme yapar –Genelde derleyiciler kullanılır

2 Bir Derleyicinin Yapısı 1.Sözcüksel Çözümleme/analiz-Lexical Analysis 2.Gramer incelemesi veya sözdizimsel analiz- Parsing 3.Anlamsal analiz-Semantic Analysis 4.Optimizasyon 5.Kod üretme-Code Generation İlk üç madde insanların dil anlama yöntemine benzer şekilde anlaşılabilir.

3 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ü)

4 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 += e-5

5 Sözcüksel Analiz Detayları Sözcüksel analizci program 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, ;

6 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

7 Cümlenin Diyagramatik Gösterimi Thislineisalongersentence verbarticlenounarticleadjectivenoun subjectobject sentence

8 Programların Sözdizimsel Analizi Program ifadelerinin sözdizimsel analizi de benzer şekilde yapılır Örneğin: If x == y then z = 1; else z = 2; Diyagramı: if-then-else xyz =1 2== assignrelationassign predicateelse-stmtthen-stmt

9 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

10 İ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?

11 Programlamada Anlamsal Analiz 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; }

12 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”): her ve Jack arasında; bu iki sözcük farklı kişiler olmalı –Jack muhtemelen bir erkek olmalı

13 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

14 Optimizasyon Örnekleri X = Y * 0 ifadesi X = 0 şeklinde yazılabilir NO!

15 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

16 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

17 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

18 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...

19 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