Programlama dili nedir ?
Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tek tipleştirilmiş yoludur. Programlama dilleri , yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını verinin nasıl depo edileceği ve iletileceği hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.
1.Nesil programlama dilleri
Birinci nesil programlama dilleri ilk bilgisayarlarla birlikte ortaya çıkan programlama ihtiyacını karşılamak üzere geliştirilen ve tamamen geliştirildiği makinenin özelliklerine odaklı makine seviyesi dilleridir.
John von Neumann tarafından geliştirilmiş iki önemli kavram, programlama dillerinin gelişiminde önemli rol oynamıştır. Birinci kavram, programların paylaşımı (Shared Program Technique) adını taşır. Bilgisayar donanımı basittir ve üzerinde çalışacak programların her seferinde yeniden yazılması gerekmez. İkinci kavram ise Kontrol Yapılarının Aktarımı (Conditional Control Transfer) olarak adlandırır. Bu kavramda bilgisayar, kronolojik olarak adımları yerine getirmez. Küçük bloklar (subroutine) ve kodlar üzerindeki dallanmalar ile işlemleri yapması gerektiğini savunur. Bu kavram, aynı zamanda kodu tekrar ve tekrar yazmamak için if deyimi ve for gibi kontrol yapılarının olması gerektiğini belirtir.
Von Neumann tarafından 1949 yılında Short Code adlı bir dil çalışması yapılmıştır. Bu çalışma elektronik devreler için yazılmış ilk programlama dili olarak bilinir. Bu dil programcıların yazdığı ifadeleri, bilgisayarın anladığı 1 ve 0lara çevirir. Bilgisayarın anladığı 1 ve 0lardan oluşan ikili tabandaki sayılar arda arda gelerek programları oluşturur. Bu tür sayılardan oluşan makine dili programları ilk nesil programlar olarak kabul edilir. Bununla ilgili 8086 işlemcisine ait örnek PROGRAM başlığı altında verilmişitir.
Makine Dili
Makine dili , geliştirilen ilk programlama dilidir, öğrenilmesi çok zordur. Bu dildeki komutlar 0 ve 1 rakamlarından oluşur. Daha kolay okunabilmesi için ise 16'lık sayı sistemi ile yazılır derlenme sonrası ikilik sisteme
çevrilir.
16'lık Sayı sistemi ve İKİLİK KOD SİSTEMİ
a.İKİLİ Sayı Sistemi
Her hanede bulunan rakamla (0 veya 1) 2hane sayısı çarpılır.
Çıkan tüm sonuçların toplamı onlu sayı sistemine göre sonucu verir.
0'dan 9'a kadar olan sayıları ikili sisteme göre görebiliriz.Aynı şekilde 255 kadar olan her "8 bit" klavyeden girilen bir harf ya da sembolü ifade eder. İkili sistemdeki her 0 ve 1 rakamı "bit" olarak ifade edilir. 8 haneden oluşan 8 bit ise 1 byte olarak ifade edilir. 8 bit 28 = 256 adet değer demektir. Bunun gibi 1 bit 2 adet değere eşdeğerdir ( Yani 21 = 2 ). 2 bit 4 adet değere denk gelir (Yani 22 = 4). Onlu sistemdeki 0 ve 9 arasındaki sayılar ve harflerde 8 bit 'den oluşurlar ve 1 byte 'lık yer kaplarlar.
1024 byte 1 kilobyte; 1024 kilobyte 1 megabyte ve 1024 megabyte ise 1 gigabyte olarak ifade edilir. Örneğin bir floppy diskin kapasitesi 1,44 megabytedır. Bu 1,44x1024x1024 = 1.509.949 karaktere denk düşer. Bunu şöyle daha kolay ifade ederiz: Her bir sayfası 2000 harften oluşan 750 sayfa uzunluğunda bir döküman bir floppy diske sığmaktadır.
b.16'lık Sayı Sistemi
Bir diğer sayı sistemi de hexadecimal (hex) ya da 16 tabanındaki sayı sistemidir. Hex bilgisayar belleğindeki 8 bit'lik byte'ları göstermek için kullanılan kestirme bir yoldur. Hex sayı sistemine "16 tabanındaki sayı sistemi" denilmesinin nedeni, 16 tane sembolden oluşmasıdır. Sembollerden 10 tanesi rakamlarla (0,1,2,3,4,5,6,7,8,9), geri kalan 6 tanesi ise harflerle (A,B,C,D,E,F) temsil edilir.
MAC (Media Access Control) adresleri yani 2. katman adresleri 48 bit uzunluğunda olup, 12 hex dijitle temsil edilir. IEEE tarafından yönlendirilen ilk 6 hex dijiti, ağ kartını üreten firmayı temsil eder. Mesela 0004AC IBM'e, 000102 3COM'a, 000142 Cisco'ya aittir. Kalan 6 hex dijiti ise arabirim seri numarasını temsil eder. MAC adresleri, ROM'a yazıldıklarından değiştirilemezler.
İkinci Nesil Programlama Dilleri / Çevirici Diller
İkinci Nesil bilgisayarlarda makine dili yerine ASSEMBLY DİLİ gelmiştir. Bu zorlu ve uzun ikili kodların yerini kısa programlama kodları almış ve insanlar tarafından daha anlaşılır olan (human-readable) bu diller assembly ÇEVİRMEN DİLLER olarak bilinir.
Ek olarak ; 1951 yılında Grace Hopper tarafından ilk derleyici olan A0 yazılmıştır. Derleyici (compiler) programlama dili ile yazılan ifadeleri bilgisayarın anlayacağı 1 ve 0lara çeviren bir programdır. Derleyicinin ortaya çıkması, programcıların daha hızlı program yazmasını sağlamıştır.
Üçüncü Nesil Programlama Dilleri / Yapısal Diller
Yapısal programlama amaç problemi alt parçalara bölerek bu parçaların çözümlerinin birleştirilmesidir. Bu yönüyle parçala fethet (Divide and conquere) yaklaşımı olarak kabul edilebilir.
Yapısal programlama ile yazılan, mantıksal bütünlük gösteren bloklara bölünebilir. Bu yolla karmaşık programları ayırarak daha kolay biçimde yazılabilmesini mümkün kılar.
Yapısal programlamaya sahip bir dilde kontrol işlemleri şöyledir :
1.Akış (sequence) bir alt programdan diğerine geçiş işlemi.
2. İki alt programdan birini bir bool mantık işlemine göre çalıştırmak.
3.Bir şart sağlanana kadar bir alt programın çalıştırılması (döngüler , Loop , iteration , for, while )
Yapısal dillere örnek :
.FORTRAN
.ALGOL
.COBOL
.BASIC
.C
.C++
.DELPHI
.JAVA (***)
Dördüncü Nesil Programlama Dilleri / Nesne Yönelimli Programlama
Temel olarak amaç, programcıya olan ihtiyacın en aza indirilmesidir. Dördüncü nesil programlama ifadesinden ilk olarak 1982 yılında James Martinin Application Development without Programmers adlı kitabında bahsedilmiştir.
Başlıcaları tablo güdümlü programlama, kullanıcı arayüzü üreten programlar, rapor üreten programlar, veri yönetimine yönelik programlar olmak üzere bu nesil programlamanın birçok tipi vardır.
Nesne yönelimli programlamayı bu soruna karşı bir çözüm haline getiren başlıca özelliği yazılımda birimselliği (Modularity) Bilgi gizleme (information hiding), veri soyutlama (data abstraction) , çok biçimcilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakını ve aynı yazılım üzerindeki birden fazla kişinin çalışmasını kolaylaştıran kavramlarıda yazılım literatürüne kazandırmıştır.
Nesne yönelimli programlamaya örnek olarak:
SQL
Informix-4GL*
Progress 4GL*
Progress 4GL*
SPSS*
Borland Delphi*
Oracle Forms /Reports*
Beşinci Nesil Programlama Dilleri / Yapay Zeka
Prolog mantıksal ve bildirgesel(dekleratif) bir programlama dilidir. İsmini Programming in Logic kelimelerinden almıştır. Bildirgesel programlama yani prosedürel, tanımlanan bir duruma göre yorumlayıcının çözüm üretmesidir. Prolog kodları bir yorumlayıcı tarafından yorumlanarak sonuç elde edilir; yazılan kod satırı yorumlanır sonuç üretilir ve diğerine geçer. Diğer dillerdekinden farklıdır. Eğer siz yazdığınız program kodlarını tek tek değil de birlikte çalıştırmak isterseniz bunu bir dosyaya yazıp ve kaydettikten sonra prolog yorumlayıcısına yüklemeniz gerekmektedir. İsteğininiz sonucu, dosyanın içindekilerini bir veri tabanı gibi kullanarak size sonucu gönderecektir. Prologda bilgi tabanı çok önemlidir, sonuçlar bu bilgi tabanındaki verilerden elde edilir. Bilgi tabanında kurallar belirlenir ve programın akışı istenilen şekilde düzenlenir; yani tanımlanan bir kuralın bir diğer kural ile ilişkisi bildirilir ve sorgu yapıldığı zaman prolog bunları kullanarak uygun olan sonucu kullanıcıya gönderir. Kurallar mantık çerçevesinde oluşturulur bundan dolayı prolog tamamen mantık tabanlıdır bir dildir. Prologda bu işlemleri yerine getirmek için Karar Motoru denilen bir yapı mevcuttur. Bu motor sayesinde problem çözümü için mantıklı bir çözüm bulunur ve problem çözülür.
Açıkca kodlamanın yerine bildirimsel yöntemle çalışır. Açıkça kodlamanın (imperative) yerine bildirimsel (declaravite) yöntemle çalışan ve özellikle yapay zeka alanında programlama dillerine örnek olarak Merucy ve çıkış yıllarına göre ;
1949: C-10
1954: FORTRAN
1958: LISP
1958: ALGOL
1959: COBOL
1964: BASIC
1970: PASCAL
1972: C
1978: SQL
1983: C++
1987: PERL
1990: HASKELL
1990: PYTHON
1991: JAVA
1993: RUBY
1995: RHP
1995: DELPHI
2000: C#
Ve son olarak Yapay Zeka hakkında düşünceleriniz neler ? lütfen yorumlara bildiriniz. Beğendiyseniz Teşekkür butonunu kullanmayı unutmayınız.
Kaynaklar : https://yapayzeka.ai https://line.do https://www.google.com
/kodlab Programlama kitaplarından bazı parçalar esinlenilmiştir.
Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tek tipleştirilmiş yoludur. Programlama dilleri , yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını verinin nasıl depo edileceği ve iletileceği hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.
1.Nesil programlama dilleri
Birinci nesil programlama dilleri ilk bilgisayarlarla birlikte ortaya çıkan programlama ihtiyacını karşılamak üzere geliştirilen ve tamamen geliştirildiği makinenin özelliklerine odaklı makine seviyesi dilleridir.
John von Neumann tarafından geliştirilmiş iki önemli kavram, programlama dillerinin gelişiminde önemli rol oynamıştır. Birinci kavram, programların paylaşımı (Shared Program Technique) adını taşır. Bilgisayar donanımı basittir ve üzerinde çalışacak programların her seferinde yeniden yazılması gerekmez. İkinci kavram ise Kontrol Yapılarının Aktarımı (Conditional Control Transfer) olarak adlandırır. Bu kavramda bilgisayar, kronolojik olarak adımları yerine getirmez. Küçük bloklar (subroutine) ve kodlar üzerindeki dallanmalar ile işlemleri yapması gerektiğini savunur. Bu kavram, aynı zamanda kodu tekrar ve tekrar yazmamak için if deyimi ve for gibi kontrol yapılarının olması gerektiğini belirtir.
Von Neumann tarafından 1949 yılında Short Code adlı bir dil çalışması yapılmıştır. Bu çalışma elektronik devreler için yazılmış ilk programlama dili olarak bilinir. Bu dil programcıların yazdığı ifadeleri, bilgisayarın anladığı 1 ve 0lara çevirir. Bilgisayarın anladığı 1 ve 0lardan oluşan ikili tabandaki sayılar arda arda gelerek programları oluşturur. Bu tür sayılardan oluşan makine dili programları ilk nesil programlar olarak kabul edilir. Bununla ilgili 8086 işlemcisine ait örnek PROGRAM başlığı altında verilmişitir.
Makine Dili
Makine dili , geliştirilen ilk programlama dilidir, öğrenilmesi çok zordur. Bu dildeki komutlar 0 ve 1 rakamlarından oluşur. Daha kolay okunabilmesi için ise 16'lık sayı sistemi ile yazılır derlenme sonrası ikilik sisteme
çevrilir.
16'lık Sayı sistemi ve İKİLİK KOD SİSTEMİ
a.İKİLİ Sayı Sistemi
Her hanede bulunan rakamla (0 veya 1) 2hane sayısı çarpılır.
Çıkan tüm sonuçların toplamı onlu sayı sistemine göre sonucu verir.
0'dan 9'a kadar olan sayıları ikili sisteme göre görebiliriz.Aynı şekilde 255 kadar olan her "8 bit" klavyeden girilen bir harf ya da sembolü ifade eder. İkili sistemdeki her 0 ve 1 rakamı "bit" olarak ifade edilir. 8 haneden oluşan 8 bit ise 1 byte olarak ifade edilir. 8 bit 28 = 256 adet değer demektir. Bunun gibi 1 bit 2 adet değere eşdeğerdir ( Yani 21 = 2 ). 2 bit 4 adet değere denk gelir (Yani 22 = 4). Onlu sistemdeki 0 ve 9 arasındaki sayılar ve harflerde 8 bit 'den oluşurlar ve 1 byte 'lık yer kaplarlar.
1024 byte 1 kilobyte; 1024 kilobyte 1 megabyte ve 1024 megabyte ise 1 gigabyte olarak ifade edilir. Örneğin bir floppy diskin kapasitesi 1,44 megabytedır. Bu 1,44x1024x1024 = 1.509.949 karaktere denk düşer. Bunu şöyle daha kolay ifade ederiz: Her bir sayfası 2000 harften oluşan 750 sayfa uzunluğunda bir döküman bir floppy diske sığmaktadır.
b.16'lık Sayı Sistemi
Bir diğer sayı sistemi de hexadecimal (hex) ya da 16 tabanındaki sayı sistemidir. Hex bilgisayar belleğindeki 8 bit'lik byte'ları göstermek için kullanılan kestirme bir yoldur. Hex sayı sistemine "16 tabanındaki sayı sistemi" denilmesinin nedeni, 16 tane sembolden oluşmasıdır. Sembollerden 10 tanesi rakamlarla (0,1,2,3,4,5,6,7,8,9), geri kalan 6 tanesi ise harflerle (A,B,C,D,E,F) temsil edilir.
MAC (Media Access Control) adresleri yani 2. katman adresleri 48 bit uzunluğunda olup, 12 hex dijitle temsil edilir. IEEE tarafından yönlendirilen ilk 6 hex dijiti, ağ kartını üreten firmayı temsil eder. Mesela 0004AC IBM'e, 000102 3COM'a, 000142 Cisco'ya aittir. Kalan 6 hex dijiti ise arabirim seri numarasını temsil eder. MAC adresleri, ROM'a yazıldıklarından değiştirilemezler.
İkinci Nesil Programlama Dilleri / Çevirici Diller
İkinci Nesil bilgisayarlarda makine dili yerine ASSEMBLY DİLİ gelmiştir. Bu zorlu ve uzun ikili kodların yerini kısa programlama kodları almış ve insanlar tarafından daha anlaşılır olan (human-readable) bu diller assembly ÇEVİRMEN DİLLER olarak bilinir.
Ek olarak ; 1951 yılında Grace Hopper tarafından ilk derleyici olan A0 yazılmıştır. Derleyici (compiler) programlama dili ile yazılan ifadeleri bilgisayarın anlayacağı 1 ve 0lara çeviren bir programdır. Derleyicinin ortaya çıkması, programcıların daha hızlı program yazmasını sağlamıştır.
Üçüncü Nesil Programlama Dilleri / Yapısal Diller
Yapısal programlama amaç problemi alt parçalara bölerek bu parçaların çözümlerinin birleştirilmesidir. Bu yönüyle parçala fethet (Divide and conquere) yaklaşımı olarak kabul edilebilir.
Yapısal programlama ile yazılan, mantıksal bütünlük gösteren bloklara bölünebilir. Bu yolla karmaşık programları ayırarak daha kolay biçimde yazılabilmesini mümkün kılar.
Yapısal programlamaya sahip bir dilde kontrol işlemleri şöyledir :
1.Akış (sequence) bir alt programdan diğerine geçiş işlemi.
2. İki alt programdan birini bir bool mantık işlemine göre çalıştırmak.
3.Bir şart sağlanana kadar bir alt programın çalıştırılması (döngüler , Loop , iteration , for, while )
Yapısal dillere örnek :
.FORTRAN
.ALGOL
.COBOL
.BASIC
.C
.C++
.DELPHI
.JAVA (***)
Dördüncü Nesil Programlama Dilleri / Nesne Yönelimli Programlama
Temel olarak amaç, programcıya olan ihtiyacın en aza indirilmesidir. Dördüncü nesil programlama ifadesinden ilk olarak 1982 yılında James Martinin Application Development without Programmers adlı kitabında bahsedilmiştir.
Başlıcaları tablo güdümlü programlama, kullanıcı arayüzü üreten programlar, rapor üreten programlar, veri yönetimine yönelik programlar olmak üzere bu nesil programlamanın birçok tipi vardır.
Nesne yönelimli programlamayı bu soruna karşı bir çözüm haline getiren başlıca özelliği yazılımda birimselliği (Modularity) Bilgi gizleme (information hiding), veri soyutlama (data abstraction) , çok biçimcilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakını ve aynı yazılım üzerindeki birden fazla kişinin çalışmasını kolaylaştıran kavramlarıda yazılım literatürüne kazandırmıştır.
Nesne yönelimli programlamaya örnek olarak:
SQL
Informix-4GL*
Progress 4GL*
Progress 4GL*
SPSS*
Borland Delphi*
Oracle Forms /Reports*
Beşinci Nesil Programlama Dilleri / Yapay Zeka
Prolog mantıksal ve bildirgesel(dekleratif) bir programlama dilidir. İsmini Programming in Logic kelimelerinden almıştır. Bildirgesel programlama yani prosedürel, tanımlanan bir duruma göre yorumlayıcının çözüm üretmesidir. Prolog kodları bir yorumlayıcı tarafından yorumlanarak sonuç elde edilir; yazılan kod satırı yorumlanır sonuç üretilir ve diğerine geçer. Diğer dillerdekinden farklıdır. Eğer siz yazdığınız program kodlarını tek tek değil de birlikte çalıştırmak isterseniz bunu bir dosyaya yazıp ve kaydettikten sonra prolog yorumlayıcısına yüklemeniz gerekmektedir. İsteğininiz sonucu, dosyanın içindekilerini bir veri tabanı gibi kullanarak size sonucu gönderecektir. Prologda bilgi tabanı çok önemlidir, sonuçlar bu bilgi tabanındaki verilerden elde edilir. Bilgi tabanında kurallar belirlenir ve programın akışı istenilen şekilde düzenlenir; yani tanımlanan bir kuralın bir diğer kural ile ilişkisi bildirilir ve sorgu yapıldığı zaman prolog bunları kullanarak uygun olan sonucu kullanıcıya gönderir. Kurallar mantık çerçevesinde oluşturulur bundan dolayı prolog tamamen mantık tabanlıdır bir dildir. Prologda bu işlemleri yerine getirmek için Karar Motoru denilen bir yapı mevcuttur. Bu motor sayesinde problem çözümü için mantıklı bir çözüm bulunur ve problem çözülür.
Açıkca kodlamanın yerine bildirimsel yöntemle çalışır. Açıkça kodlamanın (imperative) yerine bildirimsel (declaravite) yöntemle çalışan ve özellikle yapay zeka alanında programlama dillerine örnek olarak Merucy ve çıkış yıllarına göre ;
1949: C-10
1954: FORTRAN
1958: LISP
1958: ALGOL
1959: COBOL
1964: BASIC
1970: PASCAL
1972: C
1978: SQL
1983: C++
1987: PERL
1990: HASKELL
1990: PYTHON
1991: JAVA
1993: RUBY
1995: RHP
1995: DELPHI
2000: C#
Ve son olarak Yapay Zeka hakkında düşünceleriniz neler ? lütfen yorumlara bildiriniz. Beğendiyseniz Teşekkür butonunu kullanmayı unutmayınız.
Kaynaklar : https://yapayzeka.ai https://line.do https://www.google.com
/kodlab Programlama kitaplarından bazı parçalar esinlenilmiştir.
Son düzenleme:


