Temel C Programlama -4- Programlama Dilleri

Programlamaya giriş yapmak istediğimizde hangi programlama dilini öğrenmemiz gerektiği konusu kafamızı oldukça kurcalar. Ben programlamaya 2007-2008 yıllarında meraklanmış ve Visual Basic üzerinden basit programlar yapmaya başlamıştım. Tabi Visual Basic basit programlar yapmaya yarıyordu ve internette Türkçe Visual Basic kaynakları da hesap makinesi yaptırmaktan öte gidemiyordu. Ben de hesap makinesi yaptıktan sonra sıkılıp bırakmıştım. İşin önemli yanı Visual Basic bize gerçekten program yazmayı ve algoritma kurmayı öğretmiyordu. Düğmelerin, metin kutularının arkasına yazılan fonksiyonlar olay tabanlı çalışıyor ve program akışı ve algoritmadan bizi uzak tutuyordu. Daha sonrasında ilk öğrenmeye çalıştığım programlama dili C++ oldu. Burada yine C++ hakkında Türkçe kaynak olmadığı için tercüme bir kitap almıştım. Halen de C++ hakkında kapsamlı bir kitap yazılmış değildir. O dönem bir veya iki Youtube kanalından video izleyerek bunu ilerletiyordum. Şimdi video izleyerek öğrenmeyi tasvip etmesem de o dönem ulaşabileceğimiz tek kaynak olarak bulunmaz nimetti. Lisede Web programcılığına yönelik eğitim görüp HTML, ASP.NET ve PHP üzerinden programlamaya devam etsem de benim asıl öğrenmem gereken dilin en başta C olması gerektiğini daha sonra öğrenebildim. C++’nın ileri seviye konuları hariç C kısmıyla aynı olan yerlerini zaten bildiğim için C öğrenmem zor olmadı. Gömülü sistemler üzerinde çalışmaya başladıktan sonra ise bu alan için C dilinin tek başına bile yeterli bir dil olduğunun farkına vardım.

C dili öğrenmem uzun zaman içerisine yayılan bir süreç halindeydi. Çünkü bir dili öğrenmek farklı o dili sindirmek farklı bir durumdur. Diğer dillerde olduğu gibi C dilini öğrenmek kolay olsa da anlamak için zamana ihtiyaç vardır. Bu anlama süreci ezbere kod yazmaya devam edildikçe oldukça gecikmektedir. Belki hiç anlamadığı halde o dilde yıllar boyu program yazan programcıyı görebiliriz. Gömülü sistemlerde ise anlamadan ve ezbere kod yazma imkanı yoktur. Çünkü yazdığınız kodun en değerli olduğu yer gömülü sistemlerdir. Örneğin Web tasarımında HTML ve CSS kodları yüzlerce satırdan oluşabilir ama ortaya çıkan ürünün değeri az olur. O yüzden çoğu zaman da oturup sıfırdan kod yazılmaz belli başlı şablonlar ve hazır kodlar kullanılır. Gömülü sistemlerde ise yapılan ürün değerli olduğu gibi yazılan kod da değerlidir. 5-10 bin liralık bir ürünün programı 200-300 satır koddan oluşabilir. Ayrıca Web tasarımında olduğu gibi kalitesiz koda ve hataya asla yer yoktur. Yazdığınız program kodu doğru olmasının yanında kaliteli de olmak zorundadır. Gömülü sistemler üzerinde çalışırken ben her gün oturup yüzlerce satır kod yazmıyorum. Şu an bir yılda 5-6 düzgün program yazmam işimde yeterli oluyor.

Gömülü sistemlerde çalışmak isteyenlerin öğrenmesi gereken en önemli dil olan C dilini teorik olarak öğrenmek kolay olsa da bunu uygulamaya dökmek zor olabilir. Bilgisayar uygulamasında C++ ağırlıkta, gömülü sistemlerde ise C ağırlıktadır. Yani gömülü sistemler için C kullanmak istesek bile C eğitimleri bilgisayar üzerinden ve bilgisayar programı yazarak gerçekleşmektedir. C dilinde ise bilgisayar alanında pek kullanım olmadığı için ortada kalacağımız düşüncesi olabilir. Biz masaüstü programlarda neden C/C++ tabirini kullandığımızın cevabı da buradadır. Bilgisayar ortamlarında iki dili beraber kullanmamız şart gibidir.

Burada en popüler programlama dillerinin bir listesini görmekteyiz. Bu popülerlik her siteye veya platforma göre değişmektedir. Github’daki popülerlik çok daha farklı olabilir. Bu popülerliğin sizi aldatmaması gereklidir. Çünkü en popüler olan en iyi veya en değerli anlamı taşımamaktadır. Bazı programlama dilleri bir anda parlar ve sonrasında modası geçer. Tarihte bir döneme damgasını vurmuş pascal gibi programlama dillerini artık günümüzde görememekteyiz. Modaya bağlı olmayan, bir şirketin arkasında olmayan ve piyasada her zaman kendinden söz ettiren iki dili bu liste arasında sayabiliriz. Bunlardan biri C diğeri ise C’nin nesne tabanlı ve gelişmiş sürümü diyebileceğimiz C++ dilidir. Bu iki dilin diğer diller arasında seçkin bir yeri olmasının bir sebebi vardır. Günümüzde Python, PHP gibi diller bile C/C++ ile yazılmıştır. Programlama dili yazdığımız bir programlama dilinin modasının geçmesi bu durumda mümkün değildir. C/C++ dilleri ile oyun motoru, internet tarayıcı, photoshop, CAD programları, işletim sistemi, bilimsel programlar ve dahası yazılmaktadır. C ve C++ zor, derin bilgi gerektiren ve diğerleri gibi kullanıcı dostu olmayan bir yapıda olsa da bu dilleri etkin olarak kullananlar diğer programcılar arasında ayrı bir yere sahiptir.

Yazının ikinci kısmında ise programlama dillerini dil yapısı yönünden kısaca inceleyelim. Programlama dillerinin meydana gelmesinde iki önemli dil unsuru vardır. Bunlardan biri makine dili öteki ise İngilizce’dir. Programlama dillerini incelediğinizde alt seviye dillerin makine dili mantığına yakın olduğunu üst seviye dillerin ise İngiliz dili mantığına yakın olduğunu görürsünüz. Bu durumda İngiliz dili mantığını iyi bilen birisi üst seviye programlama dillerini anlamada sıkıntı çekmez. Örneğin “if” deyiminin en başta yer alması gibi İngilizce cümlelerde de “if” deyimi başta yer almaktadır. Bizde ise -sA eki ile bu durum sağlanmaktadır. Bunun gibi bütün üst seviye programlama biçimleri Türkçe’nin söz dizimine uyum sağlamaz. Fakat İngilizce’deki cümle söz dizimlerine benzer yapıdadır. O yüzden özellikle ana dili İngilizce olan birisi adeta konuşur gibi program yazabilir. İngiliz dili mantığını bilmeyen biri içinse program yazmak makine kodu yazmaktan farklı gelmez. O yüzden program yazarken İngilizce bilmenin önemi sadece İngilizce kaynaklara erişimde değil programlama dilini anlamada da etkili olmaktadır.

Makine diline geldiğimizde ise bu dilin mantığı insan dili mantığından uzak bir noktadadır. Daha çok matematik ve mantık işlemlerine yakın olan bu makine dilini öğrenmenin yolu ise makinenin çalışma mekanizmasını anlamaktan geçer. Makine dilini öğrenmek derken Assembly dilinden bahsettiğimizi bilmeniz gerekir. Çünkü Assembly dili temelde makine dilinin alfanümerik kodlanmasından öte bir şey değildir. Bu kodlanma yine İngilizce’ye çevirmekle olmaktadır. Örneğin makinenin toplama işlemi yapması için gerekli kod “0011 0110” ise bunu Assembly’e çevirdiğimizde “ADD” yani İngilizce “Ekle” olarak çeviririz. Bu durumda ADD komutu benzeri komutların kelime anlamı dışında bir yabancı dil unsuru Assembly dilinde görülmemektedir. Çok yüksek seviye diller iyice İngilizce mantığına yaklaşmış ve donanımdan soyutlanmış dillerdir. O yüzden yüksek seviye dilde programlama yaparken bilgisayar mantığını anlamamız zor olacaktır.

Alt seviye programlama program akışında çok fazla dil unsuru gerekmese de bunlar hakkında bilgiyi elde etmek için yine yabancı kaynakları okuyabilecek kadar yabancı dil bilmek gereklidir. İşin ilginç yanı buradadır. Örneğin Excel programında yüksek seviye programcılık yapılsa da Türkçe fonksiyonlar olduğu için oldukça işimiz kolaylaşmaktadır. Fakat diğer yüksek seviye dillerde Türkçe kaynak olsa da fonksiyonlar yabancı dilde olduğu için bunları kavramak yabancı dil bilmeyenler için güç olmaktadır. C dilinde ise yabancı dil bilmekten çok algoritma ve program mantığını bilmek gereklidir. Bu noktada C dilini Türkçe kaynaklardan öğrenip bir noktaya gelenler bile bu dil üzerinde çalışabilmek için yeterli İngilizceye sahip olması gereklidir. Çünkü kullanılacak kütüphaneler ve platformlar hakkında Türkçe kaynak yok gibidir. Biz sadece C dilini öğrenmekle kalmayıp bunu kullanmayı da anlatacağız.

Last updated