Top Banner
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 Resul KARA
34

Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

Nov 04, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 2: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

PROGRAMLAMADİLLERİNİNPRENSİPLERİ

Bölüm1- Başlangıç

Kaynak:Concepts ofProgrammingLanguages by RobertW.Sebesta

Page 3: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 4: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 5: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 6: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 7: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 8: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

DilDeğerlendirmeKriterleri

• Okunabilirlik:Programlarınokunabilmeveanlaşılabilmekolaylığı

• Yazılabilirlik:Programlaroluşturmadadilinkolaykullanılabilirliği

• Güvenilirlik:Şartlarauyumsağlama• Maliyet:Toplam,nihaimaliyet

ResulKARA

Page 9: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 10: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 11: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 12: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 13: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 14: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 15: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 16: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

Von Neumann Mimarisi

ResulKARA

Page 17: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 18: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 19: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 20: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

UygulamaYöntemleri

• Derleme– Programlarmakinedilineçevrilir

• Safyorumlama– Programlaryorumlayıcıolarakbilinendiğerbirprogramtarafındanyorumlanırlar

• MelezUygulamaSistemleri– Derleyicilervesafyorumlayıcılararasındakiuzlaşma

ResulKARA

Page 21: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

BilgisayarınKatmanlıYapısıİşletimsistemivediluygulamalarıbilgisayarınmakinearayüzüetrafındakatmanlaşmıştır

ResulKARA

Page 22: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 23: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

DerlemeSüreci

ResulKARA

Page 24: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 25: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 26: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 27: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 28: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

SafYorumlamaSüreci

ResulKARA

Page 29: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 30: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

MelezUygulamaSüreci

ResulKARA

Page 31: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 32: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 33: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

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

Page 34: Programlama Dillerinin Prensipleriakademik.duzce.edu.tr/Content/Dokumanlar/resulkara/DersNotlari/c73a... · – Programlama dilleri kavramlarını öğrenirken, bu kavramları etkileyen

Ö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