Geçmişten Günümüze Programlama Dilleri Konusu Hakkında;
Sizce günümüze kadar geliştirilmiş programlama dillerinin sayısı nedir?
Wikipedia daki alfabetik programlama dilleri listesini kaynak olarak kabul ettiğimizde, yaklaşık 500 adet programlama dili mevcut. Doğal olarak bu dillerin bir çoğu günümüzde kullanılmıyor ve bir çoğu da nadiren kullanım alanı buluyor, ama yine de yüzlerle ifade edilen bir büyüklükten bahsediyoruz...
PROGRAMLAMA DİLLERİNİN GELİŞİMİ
Programlama dillerinden bahsetmeden önce genel olarak gelişimlerinden bahsetmek istiyorum. Literatüre göre programlama dillerini gelişim evrelerine göre 5 nesilde(generation) inceleyebiliriz. Bilgi teknolojilerinin ilk çağlarında bilgisayara (machine) yakın olan diller, her yeni nesille birlikte günlük yaşama ve insana (human) yakınlaşmış durumdalar. Araştırmalarıma dayanarak söyleyebileceğim 1837 yılında duyurulan “Analytical Engine Code Order” programlama diliyle başlayan macerayı öncelikle nesil ayrımında incelemek istiyorum.
Birinci Nesil Programlama Dilleri – Makine Dilleri
Birinci nesil programlama dilleri ilk bilgisayarlarla birlikte ortaya çıkan programlama ihtiyacını karşılakamk üzere geliştirilen ve tamamen geliştirildiği makinenin (machine) özelliklerine odaklı (machine-level) makine seviyesi dillerdi. Komutlar direkt olarak bilgisayar üzerindeki bir panel aracılığıyla herhangi bir derleyici ya da çevrime ihtiyaç duyulmadan giriliyordu. Birinci nesil programlama dillerinin işlemciye doğrudan verilen komutlarla çalışıyor olmaları hız ve yetenek açısından çok güçlü olmalarını sağlıyordu. Ancak öğrenilmeleri ve uygulanmaları zor, hata durumlarını yönetmek sıkıntılıydı. Diğer taraftan belirli bir işlemci/makine için yazılan kod, farklı yapıdaki başka bir makinede çalışmıyor, tamamen yeniden yazılması gerekiyordu.
Günümüzde halen çok eski makineler için kullanım alanı bulan makine dili aynı zamanda modern programlama dillerinin nihai halidir. Herhangi bir modern dille geliştirdiğiniz programı derlediğinizde (compile) ortaya çıkan şey birinci nesil bir makine dilinden başka bir şey değildir.
Bilinen makine dillerinden örnekler:
• ARM
• Intel 80x86
• IBM 360
• MIPS R2000|R3000
• MOS Tech 6502
• Motorola 680x
• Power Architecture - (POWER and PowerPC)
• StrongARM
• Sun SPARC, UltraSPARC
İkinci Nesil Programlama Dilleri – Çevirici Diller
İnsanlar tarafından makine dillerine oranla daha anlaşılır olan (human-readable) bu diller assembly – çevirmen diller olarak bilinirler. Direkt işlemciye/makineye özel kodların yerini komutlar ve kısaltmalar kullanılmaktadır. Fakat halen makineye özel programlama yapılması gerekmektedir. Ayrıca bu dillerle geliştirilen programların makinelerde çalışabilmesi için makine diline çevrilmeleri gerekiyordu. Bu noktada assembler yani çevirmenler devereye giriyordu.
Günümüzde halen özel donanımların progranlanmasında, işletim sistemleri çekirdeklerinde assembly dilleri kullanılmaktadır.
Bilinen bazı çevirici diller:
• ASEM-51 [1]
• BAL (Basic AssembLer)
• COMPASS (COMPrehensive ASSembler)
• Emu8086
• FAP (FORTRAN Assembly Program)
• FASM (Flat Assembler; IA-32, IA-64)
• GAS (GNU Assembler)
• HLA (High Level Assembly)
• MASM (Microsoft Macro Assembler)
• NASM (Netwide Assembler)
• NEAT (National”s Electronic Autocoder Technique)
• TASM (Turbo Assembler, Borland)
Üçüncü Nesil Programlama Dilleri – Yapısal Diller
Programlama dillerinin günümüzde yaygın kullanılan ve bilinen türlerinin geliştirildiği nesil, üçüncü nesildir. İngilizce ağırlıklı olarak insanların kullandığı dillere yakın, yüksek seviyede (insana yakın) yapısal dillerdir. Bu nesille birlikte yazılım geliştirme makine bağımlılıktan kurtarılmıştır. Yazılan programlar farklı makinelerdede kullanmaya başlanmıştır. Üçüncü nesil dillerin yüklendiklerini bilgisayarda çalışması için derleyici (compiler) ya da yorumlayıcı (interpreter) aracılığına ihtiyaç duyulur.
Yapısal dillerden örnekler:
• Fortran
• ALGOL
• COBOL
• BASIC
• C
• C++
• Delphi
• Java
Dördüncü Nesil Programlama Dilleri – Çözüme Yönelik Diller
Üçüncü nesil dillerin programlama anlalmında çok çiddi ilerlemeler sağlamasına rağmen, ticaret ve iş yaşamında özel durumlara yönelik hızlı çözümler geliştirebilme ihtiyacı dördüncü nesil programlama dillerinin gelişimine neden olmuştur.
Kullanımı çok daha kolay, daha az kod yazarak yönergeler, hazır şablonlar ve sihirbazlar sayesinde belirli ihtiyaçlarda uzmanlaşmış pratik çözümler geliştirmeye yönelik olan bu diller rapor üreteci (generator), form üreteci, vaka tasarımı, veri yönetimi, istatiksel analitik, vb alanlarda uygulamalar geliştirmeye yöneliktir.
Örnek araçlar:
• Informix-4GL
• Progress 4GL
• SQL
• Oracle Forms /Reports
• PostScript
• RPG-II
• Gauss
• ABAP
• Mathematica
• PL/SQL
• Progress 4GL
• SPSS
• Borland Delphi
• MATLAB”s GUIDE
• Windows Forms
• Powerbuilder
• Progress Dynamics
• ColdFusion
Beşinci Nesil Programlama Dilleri
Beşinci nesil programlama dilleri programcının algoritma geliştirerek çözüm geliştirmesinin ötesinde, koşulları ve kısıtları bilgisayara verdiğinizde, bilgisayarın çözümü kendisinin bulmasına yönelik olarak tasarlanmaktadır. Açıkça kodlamanın yerine (imperative) bildirimsel (declarative) yöntemle çalışan ve özellikle yapay zeka alanında araştırmalarda kullanılan bu yeni programlama dillerine örnek olarak Prolog, OPS5 ve Mercury verilebilir.
PROGRAMLAMA DİLLERİNİN TARİHÇESİ
Programlama dillerinin nesil nesil gelişimini inceledikten sonra sıra tarihsel gelişimleri üzerinden geçmeye geldi. Programlama dillerinin gelişimi, bilgisayarların gelişimine paralel olarak yol almıştır. Bu noktada ilk elektronik dijital bilgisayarların ilan edilmesi 1940’lı yıllarda olmasına rağmen, çok daha öncesinden bu alanda çalışmalar yapıldığını görüyoruz.
1940 Öncesi
1837 yılında bir İngiliz profösörü olan Charles Babbage, çok amaçlı kullanım için geliştirdiği hesaplayıcısına bir sırılama/komut seti oluşturdu. Babbage ilk olarak 1837 yılında açıkladığı “Analytical Engine Order Code” çalışmalarını 1871 yılına kadar sürdürdü. Her ne kadar araç politik, ekonomik ve yasal sebeplerle yaygınlaşmasa da kayıtlara geçen ilk programlama dili olarak kabul edilmektedir. Daha sonraları, 1950’li yılların sonlarında, Howard Aiken Analytical Engine Order Code’u baz alarak “CPC Coding Schema” yı geliştirdi. Ve 1949’da Robert Seeber CPC Coding Schema temellerinden yola çıkarak “Seeber Coding Schema” yı açıkladı.
1940’lı Yıllar
“ENIAC Coding System” ilk elektronik dijital bilgisayarlardan olan Electronic Numerical Integrator and Computer (ENIAC) için 1943 yılında geliştirilmiştir. John Von Neumann, John Mauchly, J. Presper Eckert ve Herman Goldstine’in başını çektiği ekip tarafından geliştirilen dilin üzerine 1946 yılında “Eniac Short Code”, 1947 yılında Kathleen Booth tarafından “ARC Assembly”, 1948’de Haskell Curry tarafından “Curry Notation System” , 1949’da John Mauchly ve William F. Schmitt tarafından “Brief Code” ve yine 1949 yılında Betty Holberton tarafından “C-10” dilleri geliştirilmiştir.
1943 - Plankalkül (Konrad Zuse)
1943 - ENIAC coding system
1949 - C-10
1950’li ve 1960’lı Yıllar
Bu yıllar modern programlama dillerinin temellerinin atıldığı yıllardır.
1951 - Regional Assembly Language
1952 - Autocode
1954 - FORTRAN (FORmula TRANslator)
1958 - LISP (LISt Processor)
1958 - ALGOL (ALGOrithmic Language)
1959 - COBOL (COmmon Business Oriented Language)
1962 - APL (A Programming Language)
1962 - Simula
1964 - BASIC (Beginner”s All-purpose Symbolic Instruction Code)
1964 - PL/I (Programming Language One)
1970’li Yıllar
Bu yıllarda programlama dilleri olgunlaşmaya, çeşitlenmeye başladığı ve yapısal programlama dillerinin geliştirildiği yıllardır.
1970 - Pascal
1972 - C
1972 - Smalltalk
1972 - Prolog
1973 - ML
1978 - SQL
1980’li Yıllar
1980’li yıllar daha geniş sistemler için ölçeklenebilir uygulamalar geliştirebiliecek dillerin doğduğu yıllardır. Bu yıllar nesne yönelimli programlamanın (Object Oriented Programming) çokça konuşulduğu yıllardı.
1983 - Ada
1983 - C++
1985 - Eiffel
1987 - Perl
1989 - FL (Function Level)
1990’lı Yıllar
İnternetin yaygınlaşmasıyla birlikte, internetle çok ciddi anlamda bütünleşen Java dilinin geliştirildiği ve yaygınlaştığı yıllardı oldu 1990’lar.
1990 - Haskell
1990 - Python
1991 - Java
1993 - Ruby
1995 - PHP
1995 - Delphi
2000 - C#
PROGRAMLAMA DİLLERİNİN GELECEĞİ
Genel hatlarıyla geçmişten günümüze inceledğimiz programlama dillerinin geleceği için söylenecek çok şey var. İlk olarak yapay zeka üzerine yürütülen çalışmalarda bir taraftan programlama dilleri yapay zekanın gelişimine katkıda bulunurken, diğer taraftan yapay zeka çalışmaları programlama dillerinin gelişimine katkıda bulunmaktadır.
İlk başlarda direkt işlemciye komut göndermek anlamına gelen programalama, zamanla algoritma geliştirme düzeyine gelmiş, arkasından alanlarında uzmanlaşan programcılara zaman kazandırabilmek için ekran tasarım üreteçleri, veritabanı geliştirme araçları gibi proje geliştirmeye hız katan bileşenlerle donatılmıştır. Zamanın ve hızlı sonuçlar almanın çok değerli olduğu günümüzde kurumlar ihtiyaçlara mümkün olan en kısa zamanda ve en etkin biçimde cevap vermek durumundadır. Bu nedenle bazı programlama süreçleri uzman yazılımcılığın dışına taşarak departman bazında raporlama, analiz, basit arayüzler geliştirerek veri toplama gibi işlemleri üretmeyi gerektirmiş ve program dili geliştiriciler de bu yönde ürünler geliştirmişlerdir. Biraz daha ileriye baktığımızda beşinci nesil programlama dillerinde hedeflenen, bazı kısıtları ve gerekli bilgileri verdiğinizde ihtiyacınız olan uygulamanın geliştirilebilmesi fikri hiç de uzak değil.
Kaynakça;
http://www.chip.com.tr/
11.01.2015
Wikipedia daki alfabetik programlama dilleri listesini kaynak olarak kabul ettiğimizde, yaklaşık 500 adet programlama dili mevcut. Doğal olarak bu dillerin bir çoğu günümüzde kullanılmıyor ve bir çoğu da nadiren kullanım alanı buluyor, ama yine de yüzlerle ifade edilen bir büyüklükten bahsediyoruz...
PROGRAMLAMA DİLLERİNİN GELİŞİMİ
Programlama dillerinden bahsetmeden önce genel olarak gelişimlerinden bahsetmek istiyorum. Literatüre göre programlama dillerini gelişim evrelerine göre 5 nesilde(generation) inceleyebiliriz. Bilgi teknolojilerinin ilk çağlarında bilgisayara (machine) yakın olan diller, her yeni nesille birlikte günlük yaşama ve insana (human) yakınlaşmış durumdalar. Araştırmalarıma dayanarak söyleyebileceğim 1837 yılında duyurulan “Analytical Engine Code Order” programlama diliyle başlayan macerayı öncelikle nesil ayrımında incelemek istiyorum.
Birinci Nesil Programlama Dilleri – Makine Dilleri
Birinci nesil programlama dilleri ilk bilgisayarlarla birlikte ortaya çıkan programlama ihtiyacını karşılakamk üzere geliştirilen ve tamamen geliştirildiği makinenin (machine) özelliklerine odaklı (machine-level) makine seviyesi dillerdi. Komutlar direkt olarak bilgisayar üzerindeki bir panel aracılığıyla herhangi bir derleyici ya da çevrime ihtiyaç duyulmadan giriliyordu. Birinci nesil programlama dillerinin işlemciye doğrudan verilen komutlarla çalışıyor olmaları hız ve yetenek açısından çok güçlü olmalarını sağlıyordu. Ancak öğrenilmeleri ve uygulanmaları zor, hata durumlarını yönetmek sıkıntılıydı. Diğer taraftan belirli bir işlemci/makine için yazılan kod, farklı yapıdaki başka bir makinede çalışmıyor, tamamen yeniden yazılması gerekiyordu.
Günümüzde halen çok eski makineler için kullanım alanı bulan makine dili aynı zamanda modern programlama dillerinin nihai halidir. Herhangi bir modern dille geliştirdiğiniz programı derlediğinizde (compile) ortaya çıkan şey birinci nesil bir makine dilinden başka bir şey değildir.
Bilinen makine dillerinden örnekler:
• ARM
• Intel 80x86
• IBM 360
• MIPS R2000|R3000
• MOS Tech 6502
• Motorola 680x
• Power Architecture - (POWER and PowerPC)
• StrongARM
• Sun SPARC, UltraSPARC
İkinci Nesil Programlama Dilleri – Çevirici Diller
İnsanlar tarafından makine dillerine oranla daha anlaşılır olan (human-readable) bu diller assembly – çevirmen diller olarak bilinirler. Direkt işlemciye/makineye özel kodların yerini komutlar ve kısaltmalar kullanılmaktadır. Fakat halen makineye özel programlama yapılması gerekmektedir. Ayrıca bu dillerle geliştirilen programların makinelerde çalışabilmesi için makine diline çevrilmeleri gerekiyordu. Bu noktada assembler yani çevirmenler devereye giriyordu.
Günümüzde halen özel donanımların progranlanmasında, işletim sistemleri çekirdeklerinde assembly dilleri kullanılmaktadır.
Bilinen bazı çevirici diller:
• ASEM-51 [1]
• BAL (Basic AssembLer)
• COMPASS (COMPrehensive ASSembler)
• Emu8086
• FAP (FORTRAN Assembly Program)
• FASM (Flat Assembler; IA-32, IA-64)
• GAS (GNU Assembler)
• HLA (High Level Assembly)
• MASM (Microsoft Macro Assembler)
• NASM (Netwide Assembler)
• NEAT (National”s Electronic Autocoder Technique)
• TASM (Turbo Assembler, Borland)
Üçüncü Nesil Programlama Dilleri – Yapısal Diller
Programlama dillerinin günümüzde yaygın kullanılan ve bilinen türlerinin geliştirildiği nesil, üçüncü nesildir. İngilizce ağırlıklı olarak insanların kullandığı dillere yakın, yüksek seviyede (insana yakın) yapısal dillerdir. Bu nesille birlikte yazılım geliştirme makine bağımlılıktan kurtarılmıştır. Yazılan programlar farklı makinelerdede kullanmaya başlanmıştır. Üçüncü nesil dillerin yüklendiklerini bilgisayarda çalışması için derleyici (compiler) ya da yorumlayıcı (interpreter) aracılığına ihtiyaç duyulur.
Yapısal dillerden örnekler:
• Fortran
• ALGOL
• COBOL
• BASIC
• C
• C++
• Delphi
• Java
Dördüncü Nesil Programlama Dilleri – Çözüme Yönelik Diller
Üçüncü nesil dillerin programlama anlalmında çok çiddi ilerlemeler sağlamasına rağmen, ticaret ve iş yaşamında özel durumlara yönelik hızlı çözümler geliştirebilme ihtiyacı dördüncü nesil programlama dillerinin gelişimine neden olmuştur.
Kullanımı çok daha kolay, daha az kod yazarak yönergeler, hazır şablonlar ve sihirbazlar sayesinde belirli ihtiyaçlarda uzmanlaşmış pratik çözümler geliştirmeye yönelik olan bu diller rapor üreteci (generator), form üreteci, vaka tasarımı, veri yönetimi, istatiksel analitik, vb alanlarda uygulamalar geliştirmeye yöneliktir.
Örnek araçlar:
• Informix-4GL
• Progress 4GL
• SQL
• Oracle Forms /Reports
• PostScript
• RPG-II
• Gauss
• ABAP
• Mathematica
• PL/SQL
• Progress 4GL
• SPSS
• Borland Delphi
• MATLAB”s GUIDE
• Windows Forms
• Powerbuilder
• Progress Dynamics
• ColdFusion
Beşinci Nesil Programlama Dilleri
Beşinci nesil programlama dilleri programcının algoritma geliştirerek çözüm geliştirmesinin ötesinde, koşulları ve kısıtları bilgisayara verdiğinizde, bilgisayarın çözümü kendisinin bulmasına yönelik olarak tasarlanmaktadır. Açıkça kodlamanın yerine (imperative) bildirimsel (declarative) yöntemle çalışan ve özellikle yapay zeka alanında araştırmalarda kullanılan bu yeni programlama dillerine örnek olarak Prolog, OPS5 ve Mercury verilebilir.
PROGRAMLAMA DİLLERİNİN TARİHÇESİ
Programlama dillerinin nesil nesil gelişimini inceledikten sonra sıra tarihsel gelişimleri üzerinden geçmeye geldi. Programlama dillerinin gelişimi, bilgisayarların gelişimine paralel olarak yol almıştır. Bu noktada ilk elektronik dijital bilgisayarların ilan edilmesi 1940’lı yıllarda olmasına rağmen, çok daha öncesinden bu alanda çalışmalar yapıldığını görüyoruz.
1940 Öncesi
1837 yılında bir İngiliz profösörü olan Charles Babbage, çok amaçlı kullanım için geliştirdiği hesaplayıcısına bir sırılama/komut seti oluşturdu. Babbage ilk olarak 1837 yılında açıkladığı “Analytical Engine Order Code” çalışmalarını 1871 yılına kadar sürdürdü. Her ne kadar araç politik, ekonomik ve yasal sebeplerle yaygınlaşmasa da kayıtlara geçen ilk programlama dili olarak kabul edilmektedir. Daha sonraları, 1950’li yılların sonlarında, Howard Aiken Analytical Engine Order Code’u baz alarak “CPC Coding Schema” yı geliştirdi. Ve 1949’da Robert Seeber CPC Coding Schema temellerinden yola çıkarak “Seeber Coding Schema” yı açıkladı.
1940’lı Yıllar
“ENIAC Coding System” ilk elektronik dijital bilgisayarlardan olan Electronic Numerical Integrator and Computer (ENIAC) için 1943 yılında geliştirilmiştir. John Von Neumann, John Mauchly, J. Presper Eckert ve Herman Goldstine’in başını çektiği ekip tarafından geliştirilen dilin üzerine 1946 yılında “Eniac Short Code”, 1947 yılında Kathleen Booth tarafından “ARC Assembly”, 1948’de Haskell Curry tarafından “Curry Notation System” , 1949’da John Mauchly ve William F. Schmitt tarafından “Brief Code” ve yine 1949 yılında Betty Holberton tarafından “C-10” dilleri geliştirilmiştir.
1943 - Plankalkül (Konrad Zuse)
1943 - ENIAC coding system
1949 - C-10
1950’li ve 1960’lı Yıllar
Bu yıllar modern programlama dillerinin temellerinin atıldığı yıllardır.
1951 - Regional Assembly Language
1952 - Autocode
1954 - FORTRAN (FORmula TRANslator)
1958 - LISP (LISt Processor)
1958 - ALGOL (ALGOrithmic Language)
1959 - COBOL (COmmon Business Oriented Language)
1962 - APL (A Programming Language)
1962 - Simula
1964 - BASIC (Beginner”s All-purpose Symbolic Instruction Code)
1964 - PL/I (Programming Language One)
1970’li Yıllar
Bu yıllarda programlama dilleri olgunlaşmaya, çeşitlenmeye başladığı ve yapısal programlama dillerinin geliştirildiği yıllardır.
1970 - Pascal
1972 - C
1972 - Smalltalk
1972 - Prolog
1973 - ML
1978 - SQL
1980’li Yıllar
1980’li yıllar daha geniş sistemler için ölçeklenebilir uygulamalar geliştirebiliecek dillerin doğduğu yıllardır. Bu yıllar nesne yönelimli programlamanın (Object Oriented Programming) çokça konuşulduğu yıllardı.
1983 - Ada
1983 - C++
1985 - Eiffel
1987 - Perl
1989 - FL (Function Level)
1990’lı Yıllar
İnternetin yaygınlaşmasıyla birlikte, internetle çok ciddi anlamda bütünleşen Java dilinin geliştirildiği ve yaygınlaştığı yıllardı oldu 1990’lar.
1990 - Haskell
1990 - Python
1991 - Java
1993 - Ruby
1995 - PHP
1995 - Delphi
2000 - C#
PROGRAMLAMA DİLLERİNİN GELECEĞİ
Genel hatlarıyla geçmişten günümüze inceledğimiz programlama dillerinin geleceği için söylenecek çok şey var. İlk olarak yapay zeka üzerine yürütülen çalışmalarda bir taraftan programlama dilleri yapay zekanın gelişimine katkıda bulunurken, diğer taraftan yapay zeka çalışmaları programlama dillerinin gelişimine katkıda bulunmaktadır.
İlk başlarda direkt işlemciye komut göndermek anlamına gelen programalama, zamanla algoritma geliştirme düzeyine gelmiş, arkasından alanlarında uzmanlaşan programcılara zaman kazandırabilmek için ekran tasarım üreteçleri, veritabanı geliştirme araçları gibi proje geliştirmeye hız katan bileşenlerle donatılmıştır. Zamanın ve hızlı sonuçlar almanın çok değerli olduğu günümüzde kurumlar ihtiyaçlara mümkün olan en kısa zamanda ve en etkin biçimde cevap vermek durumundadır. Bu nedenle bazı programlama süreçleri uzman yazılımcılığın dışına taşarak departman bazında raporlama, analiz, basit arayüzler geliştirerek veri toplama gibi işlemleri üretmeyi gerektirmiş ve program dili geliştiriciler de bu yönde ürünler geliştirmişlerdir. Biraz daha ileriye baktığımızda beşinci nesil programlama dillerinde hedeflenen, bazı kısıtları ve gerekli bilgileri verdiğinizde ihtiyacınız olan uygulamanın geliştirilebilmesi fikri hiç de uzak değil.
Kaynakça;
http://www.chip.com.tr/