programlama dillerinin...
Post on 04-Nov-2019
42 Views
Preview:
TRANSCRIPT
Programlama Dillerinin Prensipleri
• Giriş• Belli Başlı Programlama Dillerinin Evrimi• Söz Dizimi ve Anlam Bilimini Tanımlama• Söz Dizimi ve Sözcük Analizi• İsim, Tür,Bağlama Kavramları• Veri Yapıları• İfadeler ve Atama Cümleleri• İfade Seviyesi Kontrol Yapıları• Altprogramlar.• Programı uygulama• Abstract veri türleri ve enkapsülasyon• Object- Oriented Programlama Desteği• Altprogramlar • Hata Yakalama• Fonksiyonel Programlama Dilleri• Mantıksal Programlama Dilleri
ResulKARA
PROGRAMLAMADİLLERİNİNPRENSİPLERİ
Bölüm1- Başlangıç
Kaynak:Concepts ofProgrammingLanguages by RobertW.Sebesta
Bölüm 1 Konular
• Programlama Dilleri Kavramı’nın Çalışılma Sebepleri
• Programlama Alanları• Dil Değerlendirme Kriterleri• Dil Tasarımını Etkileyen Faktörler• Dil Sınıfları• Dil Tasarımının Artıları Eksileri• Uygulama Yöntemleri• Programlama Ortamı
ResulKARA
Programlama Dilleri Kavramının Çalışılma Sebepleri• Fikirleri ifade etme yeteneği arttı
– Programcılar için, yazılım geliştirme sürecinde çeşitli kısıtlar vardır. Yazılım geliştirdikleri dilde denetim yapıları, veri yapıları ve kullanabilecekleri soyutlamalara sınırlamalar getirilir; Dolayısıyla, yapabilecekleri algoritma biçimleri de aynı şekilde sınırlıdır. Daha geniş bir programlama dili özellikleri farkındalığı, yazılım geliştirmedeki bu kısıtlamaları azaltabilir. Programcılar yeni dil yapılarını öğrenerek yazılım geliştirme düşünce süreçlerini genişletebilirler.
• Uygun dili seçmede gelişmiş bilgi birikimi– Pek çok profesyonel programcı, bilgisayar bilimlerinde çok az resmi
eğitime sahiptir; programlama becerilerini kendi başlarına ya da kurum içi eğitim programlarıyla geliştirdiler. Bu eğitim, kuruluşun mevcut projeleri ile doğrudan ilgili olan bir veya iki dile sınırlar. Birçok diğer programcı yıllar önce örgün eğitim gördü. Öğrendikleri diller daha sonraları kullanılmadı. Yeni dillerde olan pek çok özellik o dönemlerde pek bilinmiyordu. Yeni bir proje için bir dil seçileceğinde çoğu programcı, proje için uygun olmasa bile bildiği dili kullanır. Oysa diller hakkında bilgisi olsaydı en uygun dili seçebilirlerdi.
ResulKARA
Programlama Dilleri Kavramının Çalışılma Sebepleri• Artan yeni diller öğrenme yeteneği
– Bilgisayar programlama sürekli bir evrimleşme halindedir. Bu da sürekli öğrenmenin şart olduğu anlamına gelir. Yeni bir programlama dili öğrenme süreci, özellikle yalnızca bir veya iki dilde rahat olan ve genel olarak programlama dili kavramlarını hiç incelemiş biri için uzun ve zor olabilir. Dillerin temel kavramlarını tam olarak anladıktan sonra, bu kavramların öğrenilen dilin tasarımına nasıl entegre edildiğini görmek çok daha kolaylaşır. Uygulamanın öneminin daha iyi anlaşılması
• Uygulamanın öneminin daha iyi anlaşılması– Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen
uygulama konularına dokunmak ilginç ve gereklidir. Bazı durumlarda, uygulama konularının anlaşılması, dillerin neden böyle tasarlandığının anlaşılmasına yol açar. Bu bilgi bir dili daha akıllıca kullanabilme yeteneğine yol açar. Programlama dili yapıları ve bu seçeneklerin sonuçları arasındaki tercihleri anlayarak daha iyi programcılar olabiliriz.
ResulKARA
Programlama Dilleri Kavramının Çalışılma Sebepleri• Bilinen dillerin daha iyi kullanılması
– Yeni dillerin çoğu büyük ve karmaşıktır. Bir programcı bildiği dilin sadece belirli kısımlarına hakimdir. Programlama dilleri kavramları incelenerek, daha önce kullanılan dillerin bilinmeyen ve kullanılmayan kısımları öğrenilebilir.
• Bilişim sistemlerindeki gelişmeler– Belli bir dil popüler hale geldiğinde bile genel olarak
sektörde en iyi dil olmadığına dair kanılar vardır. Bazı durumlarda, popüler diller bile kısmi olarak kullanılabilir. Dilleri seçen kişiler programlama kavramlarına yeterince aşina olmayabilirler. Bu dersi okuyan bir mühendis, bu kavramlara aşina olacaktır.
ResulKARA
Programlama Alanları• Bilgisayarlar, nükleer enerji santrallerini kontrol etmekten, cep telefonlarında video
ve oyun oynamaya kadar çok sayıda farklı alana uygulanmıştır. Bilgisayar kullanımındaki bu büyük çeşitlilik nedeniyle, çok farklı hedefleri olan programlama dilleri geliştirildi.
• Bilimsel uygulamalar– Tipik olarak, ilk bilimsel uygulamalarda basit veri yapıları kullanıldı, ancak çok
sayıda kayan noktalı (floating-point) aritmetik hesaplama gerektirdi. En yaygın veri yapıları diziler ve matrislerdir; en yaygın kontrol yapıları döngüler ve seçimler
– İlk ve örnek dil: Fortran• İş uygulamaları
– Raporlar oluşturma, ondalık sayıları ve karakterleri kullanma, verileri saklama özelliğine sahiptir
– İlk ve örnek dil: COBOL• Yapay zeka
– Sayılar yerine semboller, diziler yerine bağlı listeler kullanılır– İlk ve örnek dil: LISP
• Sistem programlama– İşletim sistemi ve destek programları yazmaya sistem prog. denir. – Yaygın dil: C
• Web yazılımı– Biçimlendirme için kullanılan dil: HTML– Dinamik içerik oluşturmak için betik dilleri: Javascript, Asp, php
• Mobil YazılımResulKARA
DilDeğerlendirmeKriterleri
• Okunabilirlik:Programlarınokunabilmeveanlaşılabilmekolaylığı
• Yazılabilirlik:Programlaroluşturmadadilinkolaykullanılabilirliği
• Güvenilirlik:Şartlarauyumsağlama• Maliyet:Toplam,nihaimaliyet
ResulKARA
DeğerlendirmeKriterleri:Okunabilirlik• Genelbasitlik
– Yönetilebilirözellikveyapılarkümesi– Azözellikçeşitliliği(aynıişlemiyapma)– Minimumoperatöraşırıyüklemesi(overloading)
• Ortogonallik– Nispetenküçükilkelyapılarkümesinispetenküçüksayıdayollabirleştirilebilir– Hermuhtemelkombinasyongeçerlidir
• Kontrolifadeleri– İyibilinenkontrolyapılarınınvarlığı(ör:while ifadesi)
• Veritürleriveyapıları– Veriyapılarıtanımlayabilmekiçinyeterliimkanlarınvarlığı
• Sözdizimindedikkatedilecekler– Belirteçbiçimleri:esnekbileşimler– Birleşikifadeleroluşturmayöntemleriveözelkelimeler– Şekilveanlam:kendibaşınatanımlayıcıyapılar,anlamlıanahtarkelimelerResulKARA
DeğerlendirmeKriteri:Yazılabilirlik• BasitlikveOrtogonallik
– Dahaazyapı,azsayıdaprimitive(temel)vebunlarıbirleştirenazsayıdakuralkümesi
• Soyutlamadesteği– Detaylarıngözardıedilmesineizinverenkarmaşıkyapıveişlemleri
tanımlamavekullanmayetisi• İfadeedilebilirlik
– İşlemleritanımlamanındahapratik/elverişliyolları– Örnek:for ifadesininpekçokmoderndildeiçerilmesi
ResulKARA
DeğerlendirmeKriteri:Güvenilirlik
• Türkontrolü(type checking)– Türhatalarınıtestetme
• İstisnaidurumidaresi(exception handling)– Run-timehatalarıyakalayıpdüzelticiölçütlerbelirlemek
• Çakışma(aliasing)– Hafızanınaynılokasyonunu işaretedenikiyadadahafazlametodunvarlığı
• Okunabilirlikveyazılabilirlik– Biralgoritmanın“doğal”yollarlaifadesinidesteklemeyenbirdil
mecburen“doğalolmayan”yaklaşımlarkullanırvebudaazalangüvenilirliğigetirir
ResulKARA
DeğerlendirmeKriteri:Maliyet
• Programcılarıdilinkullanımıkonusundaeğitme• Programlaryazma(belliuygulamalarayakınlık)• Programlarınderlenmesi(compiling)• Programlarınyürütülmesi(executing)• Diluygulamasistemi:ücretsizderleyicikullanılabilirliği
• Güvenilirlik:zayıfgüvenlikyüksekmaliyetgetirir• Programlarıkorumak,sürekliliğinisağlamak
ResulKARA
DeğerlendirmeKriterleri:Diğerleri
• Taşınabilirlik(Portability)– Programlarınbiruygulamadandiğerinetaşınabilmekolaylığı
• Genellik– Genişçerçevedekiuygulamalarauygulanabilirlik
• İyitanımlanma– Bütünlükvedilinresmitanımınınhassasiyeti
ResulKARA
DilTasarımınıEtkileyenFaktörler
• BilgisayarMimarisi– Dilleryaygınbilgisayarmimarisinegöregeliştirilirler(von Neumann mimarisinegöre)
• Programlamametodolojileri– Yeniyazılımgeliştirmemetodolojileri(ör,nesneyedayalıyazılımgeliştirme)yeniprogramlamaparadigmalarına(stillere)dolayısıylayeniprogramlamadillerinegötürür
ResulKARA
BilgisayarMimarilerininEtkisi• İyibilinenbilgisayarmimarisi:Von Neumann• İmperatif diller(hesaplamayı,programyadamakinenin
konfigürasyonunudeğiştirenifadeleryoluylatanımlayanprogramlamastili),baskın,von Neumann bilgisayarlaryüzünden– Veriveprogramlarhafızadasaklanır– HafızaCPU’danayrı– TalimatlarveverilerhafızadanCPU’yadoğruiletilir– İmperatif dillerintemeli
• Hafızahücrelerideğişkenlerolarakmodellenir• Aktarım(piping)atamaifadeleriolarakmodellenir• İterasyon (yineleme)verimlidir
ResulKARA
ProgramlamaMetodolojilerininEtkileri
• 1950’lerve1960’larınilkyılları:basituygulamalar;makineninverimineduyulanendişe
• 1960’larınsonyılları:İnsanverimiönemliolur;okunabilirlik,dahaiyikontrolyapıları– Yapılanmışprogramlama– Yukarıdanaşağıyatasarımveadımadımgeliştirme/iyileştirme
• 1970’lerinsonyılları:SüreceDayalıdanNesneyeDayalıya– Verisoyutlaması
• 1980’lerinortaları:NesneyeDayalıProgramlama– Verisoyutlaması+miras(inheritance)+çokbiçimlilik(polymorphism)
ResulKARA
DilSınıfları• İmperatif
– Değişkenler,atamaifadeleriveyinelemetemelözellikleridir– Örnekler:C,Pascal
• Fonksiyonel– Hesaplamalarıverilenparametrelerefonksiyonlarıuygulayarakyapanaraç
• Mantık– Kuraltabanlı(kurallarbellibirsırayagörebelirtilmez)– Örnek:Prolog
• Nesneyedayalı– Verisoyutlama,miras,geçbağlama(late-binding)– Örnekler:Java,C++
• Biçimleme(Markup)– Yeni;programlamadanziyadewebdökümanlarının genelplanını/biçimini
belirlemedekullanılır– Örnekler:XHTML,XML
ResulKARA
DilTasarımınınArtılarıEksileri• Güvenilirlik– Yürütmemaliyeti
– Çelişkilikriter– Örnek:Javauygundizinlemeiçintümkaynaklardandizielemanlarının
kontroledilmişolmasınıtalepedervebudaartanyürütmemaliyetiniberaberindegetirir
• Okunabilirlik– Yazılabilirlik– Diğerçelişkilikriter– Örnek:APLsıkıştırılmış/yoğunbirprogramdayazılabilecekkarmaşık
hesaplamalaryapmayaelverişli,pekçokgüçlüoperatör(veçoksayıdayenisembol)sunarancakzayıfokunabilirlikmaliyetidebunutakipeder
• Yazılabilirlik(esneklik)– Güvenilirlik– Birdiğerçelişkilikriter– Örnek:C++işaretçileri(pointers)güçlüveoldukçaesnektirlerama
kullanımlarıgüvenlideğildirResulKARA
UygulamaYöntemleri
• Derleme– Programlarmakinedilineçevrilir
• Safyorumlama– Programlaryorumlayıcıolarakbilinendiğerbirprogramtarafındanyorumlanırlar
• MelezUygulamaSistemleri– Derleyicilervesafyorumlayıcılararasındakiuzlaşma
ResulKARA
BilgisayarınKatmanlıYapısıİşletimsistemivediluygulamalarıbilgisayarınmakinearayüzüetrafındakatmanlaşmıştır
ResulKARA
Derleme• Yüksekseviyeprogramı(kaynakdili)makinekodunaçevir(makinedili)• Yavaşçeviri,hızlıyürütme• Derlemesürecininbirkaçfazıvardır:
– Sözcük(lexical)analiz:kaynakprogramdakikarakterlerisözcükbirimlerinedönüştürür
– Sözdizimi(syntax)analizi:sözcükbirimlerini,programınsözdizimselyapısınıgösterengramerağaçlarına(parse trees)dönüştürür
– Anlam(semantic)analizi:arakodüretir– Kodüretme:makinekoduüretilir
ResulKARA
EkDerlemeTerminolojileri
• Yükmodülü(yürütülebilirgörüntü):kullanıcıvesistemkoduberaber
• Bağlamaveyükleme:sistemprogramlarınıtoplamaveonlarıkullanıcıprogramlarınabağlamasüreci
ResulKARA
MakineKodununYürütülmesi
• Yakala-yürüt-dön(von Neumann Mimarisiiçin)
Program sayıcısını başlangıç durumuna getir
repeat sureklidon
sayac tarafindan isretlenen deyimleri getir
sayaci artir
komutu coz
komutu calistir
end repeat
ResulKARA
Von Neumann Darboğazı
• Bilgisayarınhızınıbilgisayarınhafızasıylaişlemcisiarasındakibağlantıhızıbelirler
• Programkomutlarıçoğunluklabağlantıhızındandahahızlıyürütülür;böylecebağlantıhızıbirdarboğazasebepolur
• Von Neumann darboğazıbilgisayarınhızınısınırlayantemelfaktördür.
ResulKARA
SafYorumlama• Buyaklaşımlaprogramlartercüman(interpreter)denilenbaşkabirprogram
tarafındanyorumlanırvehiçbirçeviriolmaz• Tercümanınprogramı,getirme-yürütmedöngüsü,makinetalimatlarıyerineüst
düzeydilprogramifadeleriileilgilenenbirmakineninbiryazılımsimülasyonuileyapar.Buyazılımsimülasyonunasanalmakinedenir.
• Kaynakdüzeyindehataayıklamanınkolayuygulanması avantajınasahiptir• Derlemesistemlerinegöre10ila100katdahayavaşyürütmezamanıvardır• Buyavaşlığınbirincilkaynağı,makinedilitalimatlarındançokdahakarmaşıkolan
üstdüzeydiltablolarınınçözülmesidir• Diğerbirdezavantajdahafazlaalangerektirmesidir.Kaynakprogramaekolarak,
semboltablosuyorumlamasırasındamevcutolmalıdır.• 1960'larınbazıdillerinilkversiyonları(APL,SNOBOLveLISP)buyöntemikullanmış
ancak1980'lerdebuyaklaşımnadirenüstdüzeydillerdekullanılmıştır.• GünümüzdeJavaScript vePHPgibibazıWebbetikdillerindesafyorumlama
kullanılmaktadır
ResulKARA
MelezUygulamaSistemleri• Derleyicilervesafyorumlayıcılararasındakibiruzlaşı• Biryüksekseviyedilprogramı,kolayçeviriyeimkansağlayanaraseviyebir
dileçevrilir• Safyorumlamadandahahızlı• Örnekler
– Perl programlarıhatalarıyorumlamadanönceyakalamakiçinkısmenderlenmiştir
– Java’nınilkuygulamalarımelezdi;araform,byte kodu,run-timesistemivebyte kodçeviricisi(bunlarhepbirlikteJavaSanalMakinesiolarakbilinir)olanherhangibirmakineyetaşınabilirliksağlar
ResulKARA
Just-in-Time(TamZamanında)UygulamaSistemi• TamZamanında(JIT)uygulamasistemiilkolarakprogramlarıbir
aradileçevirir.• Ardındanyürütmesırasında,aradilmakinekodunaderler• Makinekodusürümü,sonrakiçağrılariçinsaklanır.• JITsistemleriJavaprogramlarıiçinyaygınolarak
kullanılmaktadır.• Ayrıca,.NETdillerininhepsibirJITsistemiilegerçekleştirilir.
Bazenbiruygulayıcı,birdiliçinhemderlenmişhemdeyorumlananuygulamalarısağlayabilir. Budurumlarda,tercümanprogramlarıgeliştirmekvehataayıklamakiçinkullanılır. Ardından,(göreceliolarak)hataiçermeyendurumaulaşıldıktansonra,programlaryürütmehızınıartırmakiçinderlenir.
ResulKARA
Preprocessors->Önİşlemciler
• Birönişlemci,birprogramderlenmedenhemenöncebirprogramıişleyenbirprogramdır
• Önişlemci talimatlarıprogramlarayerleştirilmiştir• Önişlemci aslındabirmakrogenişleticisidir• Önişlemci talimatları,başkabirdosyadakikodunprogramkodunadahiledileceğinibelirtmekiçinkullanılır
• Örneğin,Cönişlemci talimatları:include,define– #include "myLib.h"– #define max(A, B) ((A) > (B) ? (A) : (B))
ResulKARA
ProgramlamaOrtamı• Yazılımgeliştirmedekullanılanaraçlarıntoplamınaprogramlamaortamı
denir• UNIX
– 1970'lerinortalarındailkkeztaşınabilirbirçokluprogramlamaortamıdır– Çeşitlidillerdeyazılımüretimivebakımıiçinçokçeşitligüçlüdestekaraçlarısunar.– UNIXşuanUNIXüzerindeçalışanbirgrafikkullanıcıarabirimi(GUI)aracılığıylasıklıkla
kullanılmaktadır.UNIXGUI'lerin örnekleri:• Solaris MasaüstüOrtamı(CDE),GNOMEveKDE'dir.BuGUI'ler,UNIX'eolanarayüzü,WindowsveMacintoshsistemlerine
benzemektedir.
• Borland JBuilder– Javageliştirmeiçinentegrebirderleyici,editör,hataayıklayıcıvedosyasistemisunanbirprogramlamaortamıolup,
dörtsisteminhepsinebirgrafikarayüz aracılığıylaerişilmektedir.– JBuilder,Javayazılımıoluşturmakiçinkarmaşıkvegüçlübirsistemdir.
• MicrosoftVisualStudio.NET– Büyük,karmaşıkbirgörselortam– C#,VisualBasic.NET,Jscript,J#veyaC++programlarındakullanılır
• NetBeans– öncelikleJavauygulamasıgeliştirmeiçinkullanılanbirgeliştirmeortamıolmaklabirlikteJavaScript,Ruby vePHP'yi de
desteklemektedir– HemVisualStudio hemdeNetBeans,geliştirmeortamlarınındışındageliştirmeçerçevesidesunarlar
ResulKARA
Özet• Programlamadilleriniçalışmayadeğer;çünkü
– Farklıyapılarkullanmakapasitemiziartırır– Dilleridahaakılcıolarakseçmemizisağlar– Yenidilöğrenmemizikolaylaştırır
• Programlamadillerinideğerlendirmedeenönemlikriterler:– Okunabilirlik,yazılabilirlik,güvenilirlik,maliyet
• Diltasarımınıetkileyenenbüyüketmenlermakinemimarisiveyazılımgeliştirmemetodolojileridir
• Programlamadilleriniuygulamanıntemelyöntemleriderleme,safyorumlamavemelezuygulamadır
ResulKARA
top related