Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Hafta1. Bölüm Hedefi  Programlama dillerinin tanımı,  Dillerin kuşaklara ayrılması,  Programlama dillerinin sınıflandırılması,

Benzer bir sunumlar


... konulu sunumlar: "PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Hafta1. Bölüm Hedefi  Programlama dillerinin tanımı,  Dillerin kuşaklara ayrılması,  Programlama dillerinin sınıflandırılması,"— Sunum transkripti:

1 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Hafta1

2 Bölüm Hedefi  Programlama dillerinin tanımı,  Dillerin kuşaklara ayrılması,  Programlama dillerinin sınıflandırılması,  Programlama dilleri de ğ erlendirilmesinde kullanılan ölçütler,  Temel programlama paradigmaları.

3 Bilgisayarların Gelişimi

4 Bilgisayar Karmaşık ve tekrarlı işlemleri hızlı ve etkin bir biçimde gerçekleştiren, veriler etkin ve tutarlı bir biçimde hızlı bir şekilde ulaşabilen elektronik cihazlardır.

5 Abaküs Basit toplama ve çarpma işlemleri için kullanılan bir alettir. Boncukların sayılması şeklinde çalışır.

6 Mekanik Bilgisayarlar Blaise Pascal Toplama Makinesi

7 Mekanik Bilgisayarlar 1694’de Gotfried Leibniz sayıları ikili sistemde gösterebilen bir hesap makinesi yaptı.

8 Mekanik Bilgisayarlar  1835’deCharles Babbage Analitik Motor adı verilen bir mekanik hesaplayıcı yaptı. 1ila 20 haneye kadar ondalık sayılarla işlem yapabilen ve aritmetik işlemleri peş peşe yapabilme ve karar verebilme kabiliyeti olan bir makinedir.

9 Mekanik Bilgisayarlar  Charles Babbage’ın geliştirdi ğ i Analitik Motor adı verilen sistem üzerinde ilk çalışmaları yapan Ada Lovelace ilk programcı olarak kabul edilmektedir.  1890’da Herman Hollerith delikli kartların kullanılarak verilerin işlendi ğ i Hollerith Tabulatör(Listeleyici) tasarladı. ABD nüfus Bürosunun veri hesaplamaları böylece 10 yıldan 2.5 yıla düştü.  https://www.youtube.com/watch?v=9ob3nNfuHlg (3:30 sn) https://www.youtube.com/watch?v=9ob3nNfuHlg  https://www.youtube.com/watch?v=fnb7EqfykF4 https://www.youtube.com/watch?v=fnb7EqfykF4

10 Mekanik Bilgisayarlar  1896’da Herman Hollerith ‘Computing Tabulating Recording Company’ isimli bir firma kurdu. Bu firma daha sonra başka iki firma ile birleşerek International Business Machine (IBM) kurdu.

11 Elektrikle Çalışan Mekanik Bilgisayarlar  1941’de Konrad Zuze Z3 isimli elektrik motorları ile çalıştırılan mekanik bir bilgisayar yaptı. Bu (Z1, Z2, Z3 ve Z4 serisi) program kontrollü ilk bilgisayardır.

12 Elektrikle Çalışan Mekanik Bilgisayarlar  1944’de Harvard Üniversitesinde MARK I denilen bir bilgisayar geliştirildi. MARK 1, tamamı elektronik olmayan (Mekanik röleler v.b.) genel amaçlı bir bilgisayardı. Bu makine 23 haneli iki sayıyı 4.5 saniyede çarpabiliyordu ve 2.4m yüksekli ğ inde olup üzerinde 800km uzunlu ğ unda kablo kullanılmıştı.

13 Elektronik Bilgisayarlar  1946’da Pensilvanya Üniversitesinde ENIAC (Elektronics Numerical Integrator and Calculator) geliştirildi.  Anahtar setlerinin, fişlerin ve soketlerin de ğ iştirilmesi esasına göre çalıştı ğ ından ilk genel amaçlı bilgisayardır. 70 bin direnç, 10 bin kondansatör, lamba ve bu elemanların harcadı ğ ı kilowatt enerji ve sadece 20 sayıyı depolama özelli ğ ine sahipti ve 30 tondu.

14 Elektronik Bilgisayarlar  1946’de Dr. Von Neumann ve arkadaşları programı bellekte saklayabilen ilk bilgisayar olan EDVAC (Elektronic Discrete Variable Automatic Computer) geliştirdi bellek gözü bulunmaktaydı ve veriler ile programlar aynı bellekte saklanmaktaydı.  1948’de ilk transistor Bell lâboratuarlarında geliştirildi.  1951’de UNIVAC 1 adlı ilk ticari amaçlı olan bilgisayar geliştirildi. Bütün komutlar ve veriler 0 ve 1 şeklinde depolandı.

15 Elektronik Bilgisayarlar  1958’de Entegre devreler geliştirildi   ENIAC

16 Bilgisayarlar Mimarileri  Von Neumann Mimarisi  Harvard Mimarisi

17 Programlama Programlama Dili

18 Programlama int sum(int[] x) { int sum = 0; int sum = 0; n = 0; n = 0; while (n < x.length) { while (n < x.length) { sum += x[n]; sum += x[n]; } return sum; return sum;}

19 program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i)end. program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i)end.Compilation Derleme

20 Makine Dili  Bir programlama dilinin bilgisayar tarafından anlaşılması için, o dilin sözdiziminin ve anlamının makine diline çevrilmesi gereklidir.  Makine dili, bir bilgisayarın do ğ rudan anladı ğ ı gösterim olup, bilgisayarların ana dili olarak nitelenebilir.

21 Derleme

22 Makine Diline Çevirme

23 Dillerin kuşaklara ayrılması  Düşük düzeyli programlama dilleri  Yüksek düzeyli programlama dilleri

24 Düşük düzeyli programlama dilleri  Dilin özellikleri bilgisayar donanımına ba ğ lıdır  Makine dili ve Asembler dili  Makine dili sadece o ve 1’lerden oluşur ama makinenin ana özelliklerini içerir.  Asembly dilinde ise işlemler, de ğ erler ve bellek yerlerinin yerini isimler ve bazı senboller almıştır. (ADD R1 24)

25 Yüksek düzeyli programlama dilleri  Bu diller bilgisayar donanımına ba ğ lı özellikler taşımaz  Okunabilir bir gösterim vardır  Donanımdan ba ğ ımsızdır.  Program kütüphaneleri sa ğ lanmaktadır.

26 Programlama Dillerinin Gelişimi  Programlama dili tasarım ve gerçekleştirimleri, 1950'li yıllarda tanıtılan ilk yüksek düzeyli diller olan FORTRAN, COBOL ve LISP'den beri sürekli olarak gelişmiştir.  Günümüzde hızla de ğ işen bilgisayar teknolojileri, yeni gereksinimleri ortaya çıkarmaktadır. Bunun sonucu olarak, gelecekte de yeni programlama dillerinin geliştirilmesi kaçınılmazdır.

27 Örnekler FORTRAN COBOL ALGOL PASCAL BASIC ADA JAVA C. C++, C# PROLOG

28 Programlama Dillerinin Sınıflandırılması (Seviyesine göre) Çok Yüksek Seviyeli Programlama Dilleri ( İ nsana en yakın) VISUAL BASIC, Access….(Dekleratif Diller) Yüksek Seviyeli Programlama Dilleri (PASCAL, COBOL) Orta Seviyeli Programlama Dilleri (C, ADA) Alçak Seviyeli Programlama Dilleri (Sembolik Makine Dilleri Makine Dilleri (Bilgisayara en yakın) Dillerdeki seviye yükseldikçe programcının işi daha kolay hale gelirken genel olarak esneklik ve verimlilik azalmaktadır.

29

30 Programlama Dillerinin Sınıflandırılması  Programlama dilleri, her dil grubunu di ğ erlerinden ayırt eden özellik oldu ğ u kabul edilen bir özelli ğ e göre sınıflandırılırlar. Bu sınıflandırmalar birbirini dışlayan sınıflar oluşturmaz ve gruplar birbirleriyle çakışabilirler.

31 Uygulama Alanlarına Göre Sayısal Uygulamalar için programlama dilleri Ticari Uygulamalar için programlama dilleri Yapay Zeka Uygulamaları için programlama dilleri Sistem programlama için programlama dilleri

32 Sayısal Uygulamalara Yönelik Programlama Dilleri Bilgisayarların ilk olarak kullanıldıkları alan sayısal uygulamaların a ğ ırlıklı oldu ğ u bilimsel çalışmalar olmuştur. Bu nedenle ilk geliştirilen programlama dilleri, sayısal programlama özelliklerini vurgulamışlardır.

33

34 Ticari Uygulamalara Yönelik Programlama Dilleri Ticari uygulamalardaki veri işleme, sayısal hesaplamalardan sonra ilk olarak gelişen uygulama alanıdır. COBOL (COmmon Bussiness Oriented Language) : A.B.D. Savunma Bakanlı ğ ı'nın, birçok şirketle birlikte İ ngilizce'ye yakın ve ticari uygulamalara yönelik bir dilin geliştirilmesi çalışmalarını desteklemesi sonucu, 1959 yılında COBOL tanıtılmıştır.

35 Ticari Uygulamalara Yönelik Programlama Dilleri COBOL dili, özellikle yo ğ un miktarda veri işleme kolaylıkları sa ğ layan deyimleri ve yapıları nedeniyle ticari uygulamalar alanında yazılım geliştirmek için popüler olmuştur. COBOL, hiyerarşik veri yapıları gibi birçok yeni kavram içeren ve özellikle raporlama açısından çeşitli olanaklar sa ğ layan bir dildir ve 1962'de yenilenen dil, 1968'de standartlaştırılmış ve 1984'de tekrar yenilenmiştir.

36 Yapay Zeka Uygulamaları İçin Programlama Dilleri LISP : LISP 1950'li yılların sonunda, liste işleme amaçlı fonksiyonel bir dil olarak, John McCarthy tarafından IBM 704 bilgisayarları için geliştirilmiştir. LISP, diferansiyel ve integral hesaplamalarında, sayısal mantık ve yapay zekanın di ğ er alanlarında sembolik hesaplamalar için kullanılmıştır. Sonraki yıllarda, birçok kez yenilenen LISP'ten başka, Scheme (1975) ve ML (1988) de LISP'i izleyen yapay zeka alanındaki fonksiyonel dillere örnektir.

37 Yapay Zeka Uygulamaları İçin Programlama Dilleri PROLOG: Prolog, temel denetim yapısı sembolik mantık kavramlarına dayanan özel amaçlı bir dildir yılında tanıtılmış olan Prolog'un temel uygulama alanı, do ğ al dil işlemedir. Günümüze kadar Prolog, veritabanlarından uzman sistemlere kadar çeşitli uygulama alanlarında kullanılmıştır.

38 Sistem Programlama Dilleri Sistem programlama dillerine en tanınmış örnek C programlama dilidir. Sistem programlaması alanında etkinlik gereksinimi nedeniyle,birleştirici dilleri yaygın olarak kullanılmıştır. 1970'li yılların başında C dilinin geliştirilmesi ile sistem programlama alanında da di ğ er uygulama alanlarında oldu ğ u gibi yüksek düzeyli programlama dillerinin kullanımı yaygınlaşmıştır.

39 Programlama Dillerinin Sınıflandırılması (Uygulama Alanlarına göre)  Bilimsel ve Mühendislik Dilleri:Fortran, PASCAL, C, C++  Veritabanı Programlama Dilleri:DBASE, PARADOX, FOXPRO, SQL  Yapay Zeka Dilleri:LISP, PROLOG  Genel Amaçlı Diller: C, PASCAL…  Sistem Programlama Dilleri:C, Sembolik Makine Dilleri

40 Dil Değerlendirme Ölçütleri  İ fade Gücü (Expression Power)  Veri Türleri ve Yapıları (Data Types and Structures)  Giriş/Çıkış Kolaylı ğ ı (Input/Output Facilities)  Taşınabilirlik (Portability)  Altprogramlama Yetene ğ i (Modularity)  Verimlilik (Efficiency)  Okunabilirlik (Readability)  Esneklik (Flexibility)  Ö ğ renme Kolaylı ğ ı (Pedagogy)  Genellik (Generality)  Yapısallık (Structrulness)  Nesne yönelimlilik (Object Orientation)

41 İfade Gücü  Algoritmayı tasarlayan kişinin niyetlerini açık bir biçimde yansıtabilmesine olanak tanıyan bir dil, ifade gücü yüksek bir dildir.  Bir matematikçi kendi alanındaki sembolleri kullanmak isteyebilir  C ve PASCAL dillerinin ifade gücü yüksektir.

42 Veri Türleri Ve Yapıları  Çeşitli veri türleri (tamsayı, gerçek sayı, karakter…) ve veri yapılarını (dizi, kayıt, stack ve kuyruk..) destekleme yetene ğ i olmalıdır.  C ve PASCAL veri yapısı bakımından oldukça zengin dillerdir.

43 Giriş/Çıkış Kolaylığı  Sıralı, indexli ve rastgele dosyalara erişme, veritabanı kayıtlarını geri alma, güncelleştirme ve sorgulama yetene ğ i olarak tanımlanabilir.  C dili bu bakımdan zayıftır.  Genel olarak veritabanı programları bu bakımdan güçlüdür.

44 Taşınabilirlik  Taşınabilirlik terimi kaynak kod için kullanılır.  Bir programlama dilinde yazılmış kaynak kodun başka sistemlerde de sorunsuz derlenerek çalışabilmesine taşınabilirlik denir.  Seviye düştükçe taşınabilirlik azalır.Taşınabilirli ğ i en az olan diller makine dilleridir.  C dili taşınabilirli ğ i en yüksek dildir.  BASIC derleyicileri arasında büyük farklılıklar oldu ğ undan taşınabilirli ğ i yüksek de ğ ildir.  Hiçbir dil için mükemmel taşınabilirlik mümkün de ğ ildir

45 Altprogramlama Yeteneği  Kaynak programların altprogramlara ayrılarak parçalanabilme özelli ğ idir.  Altprogram kullanmanın faydaları:  Altprogram kodu küçültür  Algılamayı daha kolay hale getirir  Test imkanlarını arttırır  Kaynak kodun güncelleştirilebilirli ğ ini  Ve yeniden kullanılabilirli ğ ini (reusability)  Birden fazla kişinin program için çalışabilirli ğ ini sa ğ lar

46 Verimlilik  Bir dilde yazıldıktan sonra amaç koda dönüştürülmüş programların hızlı çalışabilmesine verimlilik denir.  Verimlilik derleyici, dil seviyesi ve dilin genel yapısına ba ğ lıdır.  C programları hızlı çalışır ve az yer kaplar.  Çalışabilir kodun küçüklü ğ ü ile çalışma hızı arasında do ğ rusal bir ilişki vardır.

47 Okunabilirlik  Kaynak kodun çabuk ve kuvvetli bir biçimde algılanabilmesi anlamına gelir.  Okunabilirlik güncelleştirmeyi kolay kılar  Okunabilirlik birçok kişinin ortak kodlar üzerinde birlikte çalışabilmesine imkan sa ğ lar  OKUNAB İ L İ RL İ K H İ ÇB İ RŞEYE FEDA ED İ LMEMEL İ D İ R

48 Esneklik  Bir programlama dilinin programcıyı kısıtlamamasına esneklik denir.  Esnek bir dilde derleme hataları daha azdır.  Esnek bir dilde birçok işlem hata riskine ra ğ men programcı için serbest bırakılmıştır.( İ yi bir programcı bunu kullanabilir, deneyimsiz ise zararı olabilir)  C esnek bir dildir. Karakter türü ile tamsayı türü karşılıklı olarak birbirine atanabilir.

49 Öğrenme Kolaylığı  Her dilin ö ğ renme zorlu ğ u farklıdır.  Yüksek seviyeli dillerin ö ğ renimi daha kolaydır.  BASIC kolay ö ğ renilebilen  C ise ö ğ renimi kolay olmayan bir dildir  C++, C# ö ğ renimi kolay de ğ ildir ve önkoşullar gerektirebilir

50 Genellik  Bir dilin çok çeşitli uygulamalarda etkin olarak kullanılabilmesine genellik denir.  C, PASCAL, BASIC genel dilleri iken  COBOL, FOXPRO, CLIPPER genelli ğ i olmayan dillerdir.

51 Yapısallık  Yapısal programlamanın etkin olarak kullanıldı ğ ı diller yapısal dillerdir.  Burada bloklar halinde yazım ön plandadır.  Yo ğ un olarak altprogram kullanılmaktadır.  Program akışında atlamaların yapılması okumayı ve algılamayı zorlaştırabilir.  Altprogramlar sayesinde soyutlama söz konusudur.

52 Nesne Yönelimlilik  Veri+program=nesne yapısına uygun olarak çalışan ve programların nesnelerle yapıldı ğ ı dillerdir.  C# tamamen nesne yönelimli bir dildir.  C dilinin nesne yönelimli programlama tekni ğ ini destekleyen uyarlaması C++ dilidir.

53 Dil Seçimini etkileyen Etkenler KarekteristikOkunabilirlikYazılabilirlikGüvenilirlik Sadelik(Simplicity)XXX Kontrol YapısıXXX Veri tip ve yapısıXXX Syntax tasarımXXX Soyutlama deste ğ iXX İ fade gücüXX Type CheckingX Exception handling X Restricted aliasingX

54 Programlama Paradigmaları  Bir paradigma, bir grubun konuya bakış biçimini ve metodunu tanımlayan kavramsal şemadır.  Programlama paradigmaları, bir programcının problemlere çözüm üretmesini önemli derecede etkilerler.  Farklı paradigmalar, farklı programlama stilleri getirir ve programcıların algoritmalara bakış şeklini de ğ iştirirler.

55 Programlama Paradigmaları  Emir Esaslı programlama paradigması  Bildirim Esaslı programlama paradigması  Nesne yönelimli paradigma  Mantık esaslı paradigma

56 Imperative Paradigmayı Destekleyen Diller  Emir Esaslı (Imperative) paradigma'daki programlama dilleri işlem tabanlı olup, bir program, bir dizi işlem olarak görülür.  Programlardaki deyimler, birbirleri ile de ğ işkenler aracılı ğ ı ile iletişim kurar.

57  Imperative diller, yaygın olarak kullanılan ilk dil grubudur ve günümüzde de yo ğ un olarak kullanılmaktadır.  Imperative programlama paradigması, C, FORTRAN, PL/I, Pascal, COBOL, Ada gibi birçok dil tarafından desteklenmektedir.

58 FORTRAN ve Pascal, imperative paradigmayı desteklerler.

59 Bildirim Esaslı Diller  Burada bilgisayara bir işlemi nasıl yapaca ğ ı bildirilir.  Veriler ve sonucu elde etmek için veriye uygulanacak fonksiyonel dönüşümler, paradigmanın temelini oluşturur.  Excel bildirim esaslı bir dil olarak düşünülebilir.

60 Nesneye Yönelik Paradigmayı Destekleyen Diller  Nesneye yönelik programlama paradigmasının temeli SIMULA 67 programlama dilindedir. Nesnelerin sınıf ve alt sınıflara gruplanması, nesneye yönelik programlamanın temel noktasıdır.  Smalltalk ve Eiffel gibi diller nesneye yönelik programlama paradigmasını desteklerler. SIMULA 67, Smalltalk, C++ ve Java

61 Mantık Paradigmayı Destekleyen Diller  Mantık programlama paradigmasında programlama, bir işin nasıl yapılaca ğ ının belirtilmesi yerine, ne yapılması istendi ğ inin belirtilmesi olarak görülür.  Mantık programlama paradigmasını destekleyen diller, belirli bir koşulun varlı ğ ını kontrol ederek ve koşul sa ğ lanıyorsa, uygun bir işlem gerçekleştirerek çalışırlar.  Bu modeldeki dillere en tanınmış örnek, Prolog programlama dilidir. Mantık tabanlı bir dilin çalışması imperative bir dilin çalışmasına benzemekle birlikte, deyimler sıralı olarak işlenmez.

62  Bu dillerin sözdizimi genel olarak şu şekildedir:

63 Paradigma-Yönelik Diller  Bu ba ğ lamda, bazı diller paradigma ba ğ ımsız olup, birden çok paradigmayı destekleyebilirler.  Örne ğ in, C++ hem imperative hem de nesneye yönelik programların geliştirilmesini destekler.

64 C nasıl bir dildir?  C orta seviyeli bir dildir  Sistem programlama dilidir  Algoritmik bir dildir  Taşınabilirli ğ i en yüksek bir dildir  İ fade gücü yüksek bir dildir  Okunabilirli ğ i yüksektir  Çok esnektir  Verimli bir dildir  Atomik bir dildir  Tasarım özellikleri iyi (Güçlü) bir dildir  E ğ itimi zor bir dildir  Yapısal bir dildir

65 Özet  Bu bölümde programlama dillerinin sınıflandırılması çeşitli yönleriyle incelenmiştir.  Programlama dillerinin de ğ erlendirilmesinde kullanılan kriterler açıklanmıştır.  Emir esaslı, nesneye yönelik, fonksiyonel (bildirim esaslı) ve mantık programlama paradigmaları açıklanmıştır.


"PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Hafta1. Bölüm Hedefi  Programlama dillerinin tanımı,  Dillerin kuşaklara ayrılması,  Programlama dillerinin sınıflandırılması," indir ppt

Benzer bir sunumlar


Google Reklamları