Genel

Programlama Dillerine Giriş – Tip Konusu

Programlama Dillerine Giriş yapıyoruz ve Tip Konusuna bakıyoruz.

Bir programlama dili öğrenmeye başladık, ilk öğrendiğimiz konu değişkenler, bir değişkenin alabileceği değerler kümesini ise tip olarak öğrendik.

Örneğin bir sayı ise int, double, float, short vs. gibi primitive tipli değişkenlerimiz olabilir.

a diye bir değişkenimiz ve değeri 3. a ‘nın tipi nedir ? sayısal bir değer alan bir tip olması beklenir değil mi ?

a ‘nın sayı olduğunu programlama dili nasıl anlıyor ? Kısaca Tip, verinin mi değişkenin mi bir özelliğidir ?

Örnek olarak 2 tane değişken tanımlayalım.

int a = 3;

a=3

burada işte Tip ‘ler 2 ‘ye ayrılarak açıklanıyor.

1.Statik Tipler : Derleme zamanında tip ‘i belirlenen ve çalışma zamanında değişmeyen tip türü statik tip ‘tir. C/C++, Go gibi diller derleme ve çalışma zamanında tip ‘in analizlerini yapıyor. IDE size type ‘le ilgili hataları compile ettiği zaman söylüyor. (java ‘ya strong typed’da denir. Kuralları keskindir)

2. Dinamik Tipler : a=3 dediğimizde a ‘nın tip’nin ne olduğu derleme zamanında bilinmez. Değişkenin tip ‘i yoktur, tip bilgisi burada veriye aittir. Yani derleme zamanında tipinin olmadığı, çalışma zamanında tipinin belirlendiği ve değişebildiği diller tipsiz, dinamik tipli dillerdir. Örneğin Python, Javascript gibi diller.

Aslında şunu diyebiliriz. Derlenen diller tipli, yorumlanan diller tipsiz’dir. Tabi bu zorunlu değildir. Derlenen, yorumlanan dil nedir ?

Bilgisayar bizim konuştuğumuzdan biraz farklı konuşuyor. Bizim yazdığımız kodu anlamıyorda low level olan bir dil ‘i işlemciler işleyebiliyor. Bunun için bizim yazdığımız programı low level ‘a dönüştürmemiz gerekiyor.

Low level ‘a neden dönüştürme ihtiyacı duyuyoruz diyorsanız, cevabı her işletim sistemi farklı dosyaları çalıştırır. Örneğin windows .exe dosyasını çalıştırırken, Linux ‘ta .out çalıştırılır. Biz işte her bir işletim sistemi için bişeyler yazmak yerine compiler low level ‘a bizim yerimize dönüştürüyor.

Derlemek : Yazmış olduğumuz kodu alıp farklı bir formata dönüştürmektir. Bu formata dönüştüren araca derleyici denir. Örneğin java derleyicisini kullanarak .java dosyalarını .class dosyalarına dönüştürür. Derleyicilerin bize sağladığı en büyük fayda kodun çalışma zamanında önce derleme zamanındaki hataları görerek kodumuza müdahale etme imkanı vermesidir. Bu özellik java gibi sert kurallara sahip bir dil için fayda sağlamaktadır. Sürekli kod yazıyoruz ama hata çıkıyor. Bunu siz her kodu çalıştırdığınızda mı görmek istersiniz, yoksa bize bir uyarıcı bunu söylesin düzeltelim mi. İşte bu uyarıcı derleyici oluyor.

Örn : Fortran, Go, Pascal, C++

Yorumlamak: Bir kod yazdık, kodun satıları incelenerek bunun byte code’a çevirilmesine yorumlamak deniyor. Makine kodu oluşturmadan direk çalıştırıyoruz. Derlenen dillere göre daha yavaştır.

Örn : PHP, Python, Ruby, Javascript

Burada php, python vs derlenmiyor diye düşünmüyor. Direk olarak bu kodu yazıp çalıştırabilirsiniz. IDE vs kullanılmadığı için bu kanıyı kabul olarak görün. Eğer bir Python, php IDE ‘si kullanıyorsanız kodlar önce derlenecektir, sonrasında ise yorumlanacaktır. Yani sizin kod üzerinde yapmış olduğunuz her hata derleyi otomatik derlediği için size görünecektir.

Derlenen dili farklı bir işletim sisteminde çalıştırmak için yeniden derlemeye ihtiyaç duyarken, yorumlanan dilde buna ihtiyaç yoktur. Platform’dan bağımsızdır. Yorumlanan dil işletim sistemi üzerinde direk çalışır. Java ‘da yorumlanan bir dil olduğu için bilgisi aşağıdadır, java ‘nın .class dosyası olan her platformda çalışması beklenir.

Hem yorumlanan, hem de derlenen dil var mıdır ? Evet vardır, Java hem derlenir, hem yorumlanır. Java derleyeci ile hatadan arınıyor, bytecode ‘lardan oluşan .class dosyalarına dönüştürüyor. JVM ile de bytecode ‘lar çalışma zamanında yorumlanıyor. JVM yorumlanan dillerde yaptığı gibi direk okuduğunu çalıştırıyor. Bu durum bize hem platformdan bağımsızlık, hemde kodu etkin bir şekilde yazmayı sağlıyor.

Yazıyı okuduğunuz için teşekkür ederim.

Kaynakça ve daha fazla bilgi için Akın Kaldıroğlunun Nesne merkezli programlamaya giriş dersini öneririm.

//www.udemy.com/course/java-ile-nesne-merkezli-programlamaya-giris/

//medium.com/@msenell/derleyi%CC%87ci%CC%87-compiler-ve-yorumlayici-interpreter-%C3%BCzeri%CC%87ne-bi%CC%87r-deneme-d8656619ef6
//medium.com/@msenell/derleyi%CC%87ci%CC%87-compiler-ve-yorumlayici-interpreter-%C3%BCzeri%CC%87ne-bi%CC%87r-deneme-d8656619ef6

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir