Seviyelerine Göre Programlama Dilleri
Seviyelerine göre programlama dilleri nedir ne değildir ona geçmeden önce programlamanın tanımını yapmamız gerekecek. Kısaca programlama için, bilgisayarın donanıma nasıl davranacağını anlatan, bilgisayara yön veren komutlar, kelimeler, aritmetik işlemler cevabı verilebilir.
Programlama Dilleri
Programlama dillerinin var olma sebebi tıpkı gündelik yaşamda insanların birbirleriyle iletişim kurmak için dil kullanmalarıyla benzerlikler göstermektedir. Öyle ki aradaki tek fark belki de iletişim kuracak olan taraflardan birinin makine olmasıdır. Haliyle de makine ile insan arasındaki iletişimin sağlanması gerekli olmakta.
İnsan ile makine (bilgisayar) arasındaki iletişimi sağlamaya yarayan programlama dili kısaca, bir bilgisayara ne yapmasını istediğini anlatan ve programların geliştirilmesi için kullanılan ve biçimsel kuralları olan aracı dil olduğu söylenebilir.
Programlama dilleri kabaca düşük seviye programlama dili (low-level programming language) ve yüksek seviye programlama dili (high-level programming language) olarak sınıflandırılabilir.
Peki kabaca neden böyle bir sınıflandırma var, neden programlama dillerinin bir seviyesi var diye sorarsanız cevap olarak eğer bir dil insan algısına ne kadar yaklaşırsa, insanlar o dili kolayca kodlayabilir ancak bir o kadar da makine dilinden uzaklaşılmış olunur.
Yani bilgisayarlar makine dili olarak adlandırılan ve 0 ile 1’lerden oluşan dilden başka bir şeyi anlamadığı için birtakım derleyiciler vasıtasıyla insan ile bilgisayarlar arasındaki iletişimin kolaylaşmasını sağlayan diller ortaya çıkmıştır. Haliyle bu diller de kendi içlerinde seviyelere ayrılmıştır.
Düşük Seviye Programlama Dili
Geçmişte programlama, düşük seviye programlama (low-level programing) olarak adlandırılan ve donanım üzerinde doğrudan çalışabilen ve programlama diliyle makine dili arasında soyutlama bulunmayan ya da az bulunan bir soyutlamayı temsil etmesinden ötürü oldukça zordu.
Bir programlama dili ikili (binary) olarak adlandırılan 0’lar ve 1’ler ile yazılmaya yaklaştıkça soyutluğu azalmakta, işlemci ve bellek ile ilgili detayların bilinmesi gerektiğinden ötürü bir hayli zorlaşmaktadır.
Düşük seviye dillerin hız yönünden avantajları bulunmaktadır. Keza yazılan projelerdeki kodların yorumlanması veya derlenmesi gerekmediğinden donanımda olduğu gibi yürütülür. Bu nedenle çalışma hızları en yüksek diller düşük seviye programlama dilleridir.
Düşük seviye diller, belirli bir mimari yapı için tasarlandığından, programlar belirli donanımlarla çalışacak şekilde tasarlanmıştır. Yani bu demektir ki düşük seviye dilde yazılmış bir program farklı bir makineye götürüldüğünde, talimatlarla uyumlu olmadığı için onu tanımayacak ve dolayısıyla da çalışmayacaktır.
Peki alt seviyeli programlama dilleri hangileridir diye sorulacak olursa makine dili (machine code) ve assembly dili (çevirme dili) yaygın olarak bilinen iki örneği olarak verilebilir.
Makine Dili
Kısaca makine dili, bir bilgisayarın ek bir dönüşüme ihtiyaç duymaksızın doğrudan anlayabildiği komutlar ve tanımlamalar kümesidir. Dahası birinci nesil programlama dili olarak da bilinen ve doğrudan bilgisayarın işlemcisi (CPU) tarafından anlaşılabilen ve çalıştırılabilen komutlardan oluşan en temel program yazma aracıdır. Bu demektir ki makine dili bilgisayar tarafından direkt olarak anlaşılabilir ve herhangi bir transformasyon (dil dönüşümü) gerektirmez.
Peki makine dili nerelerde kullanılmaktadır diye sorulursa, bilgisayar işlemcilerinde (CPU) kullanılmaktadır denilebilir. Yani CPU yalnızca makine dili ile yazılmış talimatları yerine getirebilmektedir.
Belirtmek gerekir ki makine dili, donanım (hardware) ile yakından ilişkili olmasından ötürü bir tip donanım için yazılan kod, başka bir donanım tipi için uygun olmamaktadır. Haliyle her CPU firmasının kendine özgü makine dili vardır.
Assembly Dili
Assembly dili, makine dilinden kaynaklanan zorlukları gidermek için geliştirilmiş ve kısa kelimelerden oluşan komutların kullanıldığı ikinci nesil bir programlama dilidir.
Makine dilinden farklı olarak ikili (binary) sistem yerine mnemonics adı verilen kısa kelimelerden oluşan komutlardan yararlanmaktadır.
Assembly dilinde yazılmış bir kodun çalışabilmesi için makine diline çevrilmesi gerekir. Bu çevrilme ise assembler adı verilen bir yazılımla sağlanır. Haliyle her CPU firmasının kendine özgü makine dili olduğu gibi benzer şekilde assembly dili ve yazılımı da kendine özgüdür.
Her ne kadar assembly dili ile makine dilini yazmak daha kolaylaşsa da programlamayı kolaylaştırdığı söylenemez. Zira programcı hala işlemci, donanım mimarisi ve bellek hakkında çok fazla detay bilmek zorunda ve çok basit bir program için dahi olsa satırlarca kod yazması gerekmektedir.
Orta Seviye Programlama Dili
Düşük seviyeli dillerin geliştirilmeleriyle ortaya çıkan ilk programlama dilleridir. Orta seviye diller, düşük ve yüksek seviyeli diller arasında bir yerdedir, zira programcı basit ve doğal talimatlar kullanabilse de donanıma erişim düşük seviyeli dile yakındır.
Orta seviye programlama dillerine örnek olarak Fortran, C, C++, Pascal, Cobol, Algol gibi programlama dilleri verilebilir.
Programcı bu dilleri kullanırken istediği işlemi ayrıntılarıyla yordamlar içinde tanımlamalıdır, yani “nasıl” yapacağını tanımlamak zorundadır. Bu sebeple bunlar prosedürel diller (procedural languages) olarak bilinmektedir
Orta seviye diller, alt seviyeli dillere oranla daha anlaşılır olmakla birlikle belleğe tam erişim de vardır. Esnek olmalarının yanı sıra bu diller ile hem alt hem de üst seviyeli programlama yapılabilmektedir. Bu kategoride bir dil olan C programlama dili her ne kadar öğrenimi zaman alsa da oldukça kullanışlı ve programcılığın temel dillerinden biri olarak kabul edilmektedir. Zira, C ile oyun kodlamaktan tutun da, sistem kodlamaya kadar her türlü işlem yapılabildiği için kullanım alanı oldukça geniştir.
Yüksek Seviye Programlama Dili
Günümüzde programcılar makine kodu yazmak için işlemci, donanım mimarisi ve bellek hakkında çok fazla detayı göz önünde bulundurmaksızın yüksek seviye programlama dilleri aracılığıyla program yazabilmektedirler.
1950’li yıllarda yüksek seviyeli programlama (high-level programming language) adında yeni bir programlama terimi ortaya çıkmıştır. Bu yaklaşıma göre donanım hakkındaki detayları bilmeksizin çok kompleks programlar yazmak kolaylaşacaktır.
Derleyici (compiler) ve yorumlayıcı (interpreter) adı verilen iki araç vasıtasıyla yüksek seviye programlama dilinde yazılmış kodlar makine diline çevrilmektedir.
Bildiğiniz üzere bilgisayar işlemcisi (CPU) yalnızca makine dili yazılmış talimatları işleyebilmektedir. Bu nedenden ötürü yüksek seviye programlama dilinde yazılmış bir kodun bilgisayarda çalışabilmesi için makine diline çevrilmesi gerekmektedir.
Kısaca özetlersek, yüksek seviyeli programlama dilleri aracı bir dil olup çevirici araçlar vasıtasıyla programcının yazdığı kodlar makine diline çevrilir.
Düşük Seviye ve Yüksek Seviye Programlama Dilleri Arasındaki Farklar
Yüksek seviyeli dil ile düşük seviyeli dil arasındaki temel fark, programcıların makineye kıyasla yüksek seviyeli dili kolayca anlayabilmeleri veya yorumlayabilmeleridir. Öte yandan, makine ise insanlara kıyasla düşük seviyeli dili kolayca anlayabilir.
Düşük Seviyeli Programlama Dili | Yüksek Seviyeli Programlama Dili |
---|---|
Makine dostu bir dildir. | Programcı dostu bir dildir. |
Yüksek bellek verimlidir. | Bellek verimi düşüktür. |
Anlaşılması zordur. | Daha anlaşılır. |
Hata ayıklaması zordur. | Hata ayıklamak basittir. |
Bakımı zordur. | Bakımı basittir. |
Taşınabilir değil. | Taşınabilir. |
Makineye bağımlıdır. | Her platformda çalışabilir. |
Günümüzde yaygın olarak kullanılmamaktadır. | Programlama için yaygın olarak kullanılır. |
Çok yardımcı oldu teşekkür ederim.
Faydalı oluyorsa ne mutlu 🙏