C Dersleri 1: Programlamaya Giriş - Sinan Yorulmaz

Sinan Yorulmaz


Bir Yazılımcının Günlüğü

17 Ocak 2016
C Dersleri 1: Programlamaya Giriş

C Programlama Dili
17 Ocak 2016 C/C++ 845 Okuma 2 Yorum

C dili C++, C#, Java ve Objective-C gibi dillerin kaynağı olmasından dolayı öğrenmesi görece zor bir dildir. Fakat bu dili öğrendiğinizde diğer tüm dilleri çok daha kolay öğrenebileceğinizin garantisini verebilirim. Bu başlangıç dersimizle birlikte C dilini öğrenmek isteyenlere oldukça kaliteli ve geniş içerikli bir kaynak oluşturmayı amaçlıyorum. Olabildiğince detaylı bir başlangıç seviyesinden sonra orta ve ileri düzey dersler ile C dili meraklılarının başka hiçbir kaynağa ihtiyaç duymadan bu dili öğrenebilecekleri şekilde derslerimi devam ettireceğim. İlk dersimi metin şeklinde hazırlamak istedim, sonraki derslerim ise videolu şekilde devam edecek. (Videoyu açıp iki saat bunları size dinletmek istemediğimden, okumak istemeyen kişilerin direkt geçebilmesi için böyle uygun gördüm. Tabi okumanızda çok çok fayda görüyorum.) Şimdi lafı daha fazla uzatmadan dersimize geçelim.

Programlama Dili Mantığı

Bu dersi programlama ile hiç alakası olmayan kişilerinde okuyabileceğini düşünerek derslerime ilk olarak programlama dillerinin mantığından bahsederek başlamak istedim.

Bilindiği üzere bilgisayar sistemleri temel olarak yazılım ve donanım kısımlarından oluşmuştur. Yazılımlar bir bakıma bilgisayar üzerindeki donanımları elektriksel sinyaller üreterek kontrol etmeye yarayan komutlardır. Bu cümleden yola çıkarak bir programlama dilinin de programcının bilgisayar donanımına ne yaptırmak istediğini anlatan standart hale gelmiş bir yoldur diyebiliriz.

Diğer bir tabirle programlama dilleri, programcıların bilgisayarlarına hangi veriler üzerinde işlem yapılacağını, verinin nasıl getirilip işleneceğini, hangi koşullarda hangi işlemlerin yapılacağını net olarak anlatmasıdır da diyebiliriz. Tabi her programlama dilinin kendine has bir söz dizimi (syntax) vardır. Bundan dolayı programcı, yazdığı dilin söz dizimine uymak zorundadır.

Tarihlere Göre Programlama Dilleri

Programlama dilleri, ilk bilgisayarın yapıldığı 1940’lı yıllarda ortaya çıkmıştır. İlk bilgisayar, hafıza ve işlem gücü açısından çok sınırlı olduğu için Assembly dili, bu bilgisayarları programlamak için oldukça yeterliydi. Fakat zamanla Assembly dilinde kod yazmanın ne kadar zor olduğu, ihtiyaçlar arttıkça anlaşıldı ve yeni arayışlara girildi. Bundan dolayı 1940-1950 yılları arasında Plankalkül, ENIAC Coding System ve C10 programlama dilleri denenen diğer diller oldu. 1950-1960 yılları arasında ise bugün bile bazı sektörlerde kullanılan FORTRAN, LISP, COBOL ve ALGOL dilleri ortaya çıktı.

Her geçen yıl ortaya çıkan yeni programlama dilleri, bir birini hızlı bir şekilde takip etmeye devam etti. İşte diğer programlama dilleri ve çıkış tarihleri:

  • Simula (1962)
  • BASIC (1964)
  • PL/I (1964)
  • Logo (1968)
  • Pascal (1970)
  • C (1972)
  • Prolog (1972)
  • Scheme (1975)
  • SQL (1978)

Bu tarihten sonra “Nesne Tabanlı Programlama”nın gündelik hayatımıza girdiğini ve ciddi bir şekilde kullanılmaya başlandığını söyleyebilirim.

  • C++ (1980)
  • Ada (1983)
  • Eiffel (1985)
  • Erlang (1986)
  • Perl (1987)
  • TCL (1988)
  • FL (1989)

1990 yılından sonra çıkan programlama dillerinin ise internet kullanımından doğan ihtiyaçlar sonucu ortaya çıktığını söyleyebilirim.

  • Haskell (1990)
  • Python (1991)
  • Java (1991)
  • Ruby (1993)
  • JavaScript (1995)
  • PHP (1995)
  • Rebol (1997)
  • C# (2001)
  • F# (2002)
  • Scala (2003)
  • Factor (2003)
  • Go (2009)

Programlama Dillerinin Türleri

Makina Dili

İşlemcinin verilen komutlar doğrultusunda çalıştırılmasını sağlayan ve işlemci mimarisine göre değişen en alt seviyedeki programlama diline makina dili denir. Bu dil 0 ve 1 ikiliklerinin anlamlı kombinasyonlarından oluşur. Bu da makina dilinin anlaşılmasının ne kadar zor olduğunu gösterir. Makina dili, diğer programlama dillerinin gerektirdiği derleyici veya yorumlayıcı kullanımı gerektirmediği için ve donanımı doğrudan kontrol etmesi daha kolay olduğundan tercih edilir.

Mesela “1 0011 0111” şeklinde 9 bitlik bir komutumuz olduğunu varsayalım. Bu komuttaki sol baştan “1” biti dolaylı (indirect) adresleme yapıldığını, sonraki 4 bitlik veri olan “0011” ise çarpma işleminin yapılması gerektiğini, son 4 bitlik veri ise hafızanın “0111” adresine gidilmesi gerektiğini belirtmektedir.

Assembly Dili

Makina dilinin anlaşılması çok zor bir dil olduğundan bilim adamları belli başlı işleri daha anlaşılır hale getiren komut kümeleri oluşturmuşlar ve buna da Assembly demişler. Kod yazma işlemini tamamladıktan sonra bu komut kümeleri, Assembler denilen özel bir dönüştürücü program aracılığıyla makina diline çevrilmektedir.

Mesela X86 yani 32 bit işlemciler için bir makina dili örneğini şöyle verebiliriz:

10110000 01100011

Bu komutun Hexadecimal (16’lık sayı tabanı) karşılığı şu şekildedir:

B0 63

B0’a karşılık gelen kısım komutun türünü belirler. 63’e karşılık gelen kısım ise işlemin parametresine karşılık gelir. 32 bit işlemcilerde B’nin karşılığı MOV’dur. Şimdi bu komutu Assembly dilince yazmış olsaydık nasıl olacağını görelim:

MOV AL, 63h

Yani, AL yazmacının içine 63h sayısını depola anlamına geliyor. Gördüğünüz gibi Assembly dili, makina diline göre çok daha anlaşılır.

Script Dilleri

Makina diline dönüştürülerek kendi kendine çalışan programların tersine başka programlar tarafından yorumlanarak çalışabilen dillere Script dilleri denir. Bu dillerin bir çoğunda gelişmiş programlama dilleri yetileri yer almaz. Bundan da anlıyoruz ki bu dillerin geliştirilme amacının diğer programlama dillerindeki derleme ve hata ayıklama sürecine dahil olmadan hızlı bir şekilde program geliştirilmesine olanak sağlamaktır. En çok kullanılan script dillerine ise PHP, Ruby, Groovy, Perl, TCH, TCL gibi dilleri örnek gösterebiliriz.

Yüksek Seviye Programlama Dilleri

Bu dillerin en güzel yanı, içerdikleri komutların gündelik yaşamlarımızdaki sözcüklere çok yakın olmasıdır. Bu dilleri öğrenmek ve bu dillerde program yazmak düşük seviyeli programlama dillerine göre çok daha kolaydır. Bu dillerde yazılan programların, program yazma işlemi bittikten sonra makina diline çevrilebilmesi için bir derleyici veya yorumlayıcıya ihtiyaç vardır.

C Programlama Dilinin Tarihçesi

Bu makalemin sonunda, asıl konumuz olan C programlama dilinin kısaca tarihçesinden bahsedip bitirmek ve artık derslerimize başlamak istiyorum.

C dili, 1969-1973 yılları arasında Bell laboratuvarlarında Dennis Ritchie tarafından geliştirilmiştir. C programlama dili pek çok özelliğini ise Martin Richards tarafından geliştirilen BCPL dilinden ve BCPL dilinin başka bir uzantısı olan ve Ken Thompson tarafından geliştirilen B dilinden almıştır.

C dilinin geliştirildiği yıllarda UNIX işletim sistemi de aynı süreçteydi. O sıralarda DEC firması PDP-11/20 isimli 16 bitlik bir mikro denetleyici piyasaya sürdü. Ticari olarak piyasaya çıkan ilk UNIX işletim sistemi PDP-11/20 üzerinde piyasaya sürülmüştü. Bu UNIX sürümünde PDP-11/20 denetleyicisi, Assembly dili kullanılarak programlanmıştı. Fakat Assembly dilinin zorluğu, zamanla ihtiyaçları karşılayamaması ve o sıralarda da C dilinin gelişimini tamamlamak üzere olması, PDP-11/20 işlemcisinin çekirdeğinin büyük bir kısmının C dili ile tekrar yazılmasını sağladı. Bununla beraber UNIX işletim sistemi yaygınlaştıkça C programlama dili de gelişmeye ve yaygınlaşmaya devam etti.

Fakat 1980’li yıllarda popüler hale gelen “Nesne Tabanlı Programlama” paradigması, nesne tabanlı olmayan C programlama dilinde bazı değişiklikler yapılmasını gerektirdi. Bu gereklilik sonucunda C diline nesne tabanlı programlama özelliğinin eklenmesi ile ortaya iki farklı dil daha çıktı. Bunlardan biri Bell laboratuvarlarında Brian Stroustroup tarafından geliştirilen C++ dili. Diğeri ise hemen hemen aynı zaman dilimlerinde Stepstone isimli yazılım firmasındaki çalışmalar sonucunda ortaya çıkan Objective-C diliydi.

Bu iki dil ile neredeyse gelişimini tamamlayan C, artık bir çok sektörde ileri düzey bir çok ihtiyacı karşılamakta ve ciddi bir iş olanağı sağlamaktadır. Eğer sizde C programlama dilini uzman seviyede öğrenmek istiyorsanız, ilk dersinize başlamış bulunuyorsunuz. Bundan sonra yayımlayacağım videolu dersler ile sıfırdan en üst seviyeye çok kolay bir şekilde çıkabileceksiniz.

Sonraki derste görüşmek üzere.

Yapılan 2 Yorum

  1. Yazı çok güzel olmuş, klavyene sağlık. Takipteyim.

    Cevapla
  2. C dili kraldır, kraldan da ötedir 🙂 Bunu öğrendikten sonra algoritmanız tam oturur. Diğer dillere geçişiniz kolaylaşır kesinlikle.

    Cevapla

Yorum Yap

Copyright © 2015. Tüm haklarım anneme aittir. Babama yakalanmadığınız sürece sorun yok!