C Programlama Dili

Cabir C.
8 min readJan 30, 2021

--

C Programing language, C’nin Tanımı ve Tarihsel Gelişimi, Avantajları ve Dezavantajları, Uygulama Alanları

1. TANIM VE TARİHSEL GELİŞİM

C programlama dili 1972'de Dennis Ritchie tarafından ABD’de bulunan AT&T (American Telephone & Telegraph) Bell laboratuvarlarında geliştirilmiştir. Dennis Ritchie C dilinin kurucusu olarak bilinir. B, BCPL gibi önceki dillerin sorunlarının üstesinden gelmek için geliştirilmiştir. Başlangıçta, C dili UNIX işletim sisteminde kullanılmak üzere geliştirilmiştir. B ve BCPL gibi önceki dillerin birçok özelliğini miras alır.[1]

https://www.guru99.com/images/1/012419_1229_WhatisCProg2.jpg

1980'lerde C yavaş yavaş popülerlik kazandı. En yaygın olarak kullanılan programlama dillerinden biri haline gelmiştir, mevcut bilgisayar mimarilerinin ve işletim sistemlerinin çoğunluğu için mevcut olan çeşitli satıcıların C derleyicileri ile C 1989'dan beri ANSI tarafından standartlaştırılmıştır (ANSI C) ve Uluslararası Standartlar Örgütü (ISO) tarafından düzenlenmiştir.[2]

C’nin popülaritesinin ana nedeni UNIX’in taşınabilirliğiydi. Her yeni makine için yeni bir işletim sistemi oluşturmak yerine, sistem programcıları makine için gereken birkaç sisteme bağlı parçayı yazabilir ve ardından bir yeni sistem için C derleyicisi kullanılmaktadır. Sistemlere yardımcı programlarının çoğu C dilinde yazıldığı için C’ye yeni yardımcı programlar yazmak da mantıklıydı.[4]

Programlama dillerinin tabanı veya babası ALGOL’dur. İlk olarak 1960 yılında tanıtıldı. ALGOL Avrupa ülkelerinde geniş çapta kullanıldı. ALGOL, yapılandırılmış programlama kavramını geliştirici topluluğuna tanıttı.
1967'de Temel Kombine Programlama Dili anlamına gelen BCPL adı verilen yeni bir bilgisayar programlama dili duyuruldu. BCPL, Martin Richards tarafından özellikle sistem yazılımı yazmak için tasarlanmış ve geliştirilmiştir. Programlama dilleri dönemi buydu.

Üç yıl sonra 1970'de Ken Thompson tarafından BCPL’nin birçok özelliğini içeren B adlı yeni bir programlama dili tanıtıldı. 1972'de büyük bir bilgisayar bilimcisi Dennis Ritchie, AT&T ve Bell Laboratuvarlarında UNIX işletim sistemi kullanılarak C adlı yeni bir programlama dili oluşturdu. ALGOL,
BCPL ve B programlama dillerinden oluşturuldu. C programlama dili, bu dillerin tüm özelliklerini ve diğer dillerden benzersiz kılan daha birçok ek konsepti içerir.[3]

C ++ / Java gibi diller ‘C’den geliştirilmiştir. Bu diller çeşitli teknolojilerde yaygın olarak kullanılmaktadır. Böylece, ‘C’ şu anda kullanılmakta olan diğer birçok dil için bir temel oluşturmaktadır.[3]

2. AVANTAJLAR VE DEZAVANTAJLAR

C Programlama Dilinin Avantajları:

  • C Dil prosedüre yönelik bir dildir, burada kullanıcı görevlerini yerine getirmek için prosedürler veya işlevler oluşturur. Prosedürlere yönelik dili öğrenmek çok kolaydır, çünkü ifadelerinizi yürütmek için bir algoritma izler. Prosedüre yönelik dili kullanarak bir program geliştirmek için algoritma çizmeniz ya da hazırlamanız ve ardından prosedüre veya fonksiyonlara dönüştürmeye başlamanız gerekir.[5]
  • C Language, sistem tarafından oluşturulan işlevler ve kullanıcı tanımlı
    işlevlerden oluşan birçok işlev sunar. C Derleyici, bir program geliştirmek için kullanılabilecek birçok genel işlevden oluşan başlık dosyalarının bir listesi ile birlikte gelirken, programcı ayrıca kullanıcı tarafından oluşturulan / tanımlanmış işlev olarak adlandırılan gereksinimlerine göre işlev oluşturabilir. [5]
  • C derleyici, diğer dil derleyicilerine kıyasla çok hızlı makine kodu üretir. C
    derleyicisi bir veya iki saniyede yaklaşık 1000 satır kod derleyebilir. C Derleyicisinin bir diğer avantajı da kodun daha hızlı yürütülmesi için optimize edilmesidir. [5]
  • C programlama dili küçük bir dildir, kullanılan kavramlar oldukça kısadır, Sadece ANSI C’de 32 anahtar kelime vardır ve gücü yerleşik işlevlerinde yatmaktadır. Programları geliştirmek için kullanılabilecek birçok standart işlev mevcuttur.[6]
  • C Dil sözdizimini anlamak çok kolaydır. if, else, goto, switch, main, vb. Gibi bir anahtar kelime kullanır. Hepimizin günlük hayatımızda anlam ifade etmek veya bazı kararlar almak için kullandığımız bu tür bir anahtar kelime. [5]
  • C portatif bir dildir. Kurulumu ve çalıştırılması çok kolaydır, yine çıktısı herhangi bir bilgisayarda başka bir çerçeve / yazılım olmadan yürütülebilen bir .exe dosyası ile yapılabilir. [5]

C Programlama Dilinin Dezavantajları:

  • C dili, prosedüre yönelik bir dildir. Bu nedenle, programınızı yalnızca prosedüre yönelik dili kullanarak geliştirmelisiniz ve herhangi bir algoritmayı bir işlev çağrıları kümesi olarak uygulamanız gerekir.[6]
  • Biçimlendirmesi görsel olarak karmaşıktır ve genellikle diğer dillerin noktalama işaretlerini kullandığı İngilizce anahtar kelimeler kullanır. [5]
  • C Dilinde Nesneye Yönelik Programlama Özellikleri eksik, Programınızı yalnızca prosedüre yönelik dili kullanarak geliştirmelisiniz. [5] C’nin OOP (Nesne Yönelimli Programlama) özelliği yoktur, bu yüzden C ++ geliştirilmiştir.[7]
  • C, namespace özellikleri sağlamaz, bu nedenle aynı değişken adını bir kapsamda tekrar kullanamazsınız. Eğer Namespace özellikleri varsa, aynı değişken adını yeniden kullanabilirsiniz. [5]
  • C, nesne yönelimli özellikler sağlamaz, bu nedenle Constructor ve Destructor özellikleri yoktur. Constructor ve Destructor bir nesne inşa etmek (oluşturmak) ve bir nesneyi yok etmek için kullanılır. Yani C dilinde, bir işlevi kullanarak veya başka yollarla değişkenin yapımını ve imhasını manuel olarak uygulamanız gerekir.[5]
  • C dilinde çalışma zamanı kontrolü yoktur. [7]
  • C dili Çalışma Süresi Türü Denetimi gerçekleştirmez, yalnızca çalışma zamanında saat türü denetimini derler, C dili otomatik veri dönüşümü gerçekleştirirken doğru veri türünün kullanılıp kullanılmadığını garanti etmez. [6]
  • Hiçbir katı tip kontrol (strict type checking) yoktur. Örneğin, float veri türü için bir integer değeri iletebiliriz.[7]

3. UYGULAMA ALANLARI

Gömülü Sistemler: Çamaşır makinesi, bulaşık makinesi, hesap makinesi … C ile kodlayabiliriz. Bu cihazların beynini C ile kodlayarak, yönetimini sağlayabiliriz. C, gömülü sistemler ve sistem seviyesinde yazılım geliştirme için oldukça tercih edilen bir dildir.[8] C dilinin gömülü sistemler alanında kullanımına “Gömülü C — Embedded C” adı veriliyor. Mikrodenetleyicilerin programlanmasında kullanılan C dili için bu ifade kullanılıyor. [9]

Driver yazımı: Bildiğiniz üzere driverlar (Sürücüler) sistem üzerinde tam yetkiye sahip, ring 0 denilen sistemin merkezinde çalışan .sys uzantılı dosyalardır. C programlama dilini kullanarak bu şekilde driver yazılmaktadır. [8]

Grafik ve Oyun: C dili satranç, zıplayan top, okçuluk vb. gibi çeşitli grafik ve oyun uygulamalarının geliştirilmesinde kullanılmıştır. [8]

Robotik Kodlama: Arduino gibi mikrodenetleyici kartlarını kullanarak hayal ettiğiniz donanımları kendiniz kodlayabilirsiniz. [8]

İşletim Sistemleri: Unix-Çekirdeği, Microsoft Windows programları, işletim sistemi uygulamaları ve Android işletim sisteminin büyük bir bölümünün C ile yazılmaktadır. [8]

Hesaplama Platformları: C, algoritmaları ve veri yapılarını hızla uygular ve programlarda daha hızlı hesaplamaları kolaylaştırır. Bu, MATLAB ve Mathematica gibi daha yüksek derecelerde hesaplama gerektiren uygulamalarda C’yi kullanmayı sağlamıştır. [8]

https://www.guru99.com/c-programming-language.html#:~:text='C'%20language%20is%20widely%20used,using%20'C'%20programming%20language.

Yukarıdaki 2018 yılına ait Grafikte C Dilinin Mobil uygulamalarda, Masaüstü
uygulamalarda ve gömülü sistemlerde çok sık kullanıldığını ve en çok kullanılan 4. Dil olduğunu görmekteyiz.

4. BİR KOD ÖRNEĞİ ÜZERİNDEN TEMEL KOD BİLEŞENLERİNİN İNCELEMESİ

Şimdi, en basit şekilde oluşturulmuş ilk C programımızı incelemeye çalışalım: [10]

Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar: [10]

#include <stdio.h>: (standart input output header dosyası) Bu satır bir önişlemci direktifidir. Önişlemci direktifleri C programlarında yer alırlar ancak işlem satırı olarak işlem görmezler. Programın derlenme safhasından önce işlem görürler. Başka bir deyişle, derleme başlamadan önişlemci direktifinin gerektirdiği işlemler tamamlanmış olur. Daima “#” işaretiyle başlarlar. Programımızda, kullanılan “include” önişlemci direktifi, stdio.h adlı
başlık dosyasını program içine dahil etmemiz gerektiğini bildirir. Bu sayede, derleme işlemi başladığında, stdio.h uzantılı dosyanın içeriği program içinde yazılmış gibi işlem görür. [10]

main(): Bir C programı çalışmaya başladığında, ilk önce program içinde mutlaka bulunması gereken main() adlı fonksiyonu arar, bulur ve ilk işlem satırından itibaren çalıştırmaya başlar. Burada main fonksiyonu için void türünde değer dönderdiğini söylememiz gerek (yani herhangi bir değer döndermiyor = return kullanmıyoruz).

int id1: int anahtar kelimesiyle intager türünde bir id1 adlı değişken tanımlaması yapıyoruz. C’de bütün anahtar kelimeler küçük harfle yazılmalıdır. Aksi takdirde derleyiciler tarafından tanınmazlar.

id1 = 27: Tanımladığımız id1 adlı değişkene 27 tam sayı değerini atıyoruz.

printf(“%d”,id1): printf() fonksiyonu ile id1 adlı değişkenin değerini ekrana
yazdırıyoruz.

C bir satırda (;) işaretine rastladığında, bu işareti işlem satırı sonu olarak algılar. /*….*/ ve // ifadeleri yorum satırı yazmak için kullanılıyor. C99 standartları ile birlikte // ifadesi kullanılarak tek satırlık yorum satırları tanımlama olanağı sağlanmıştır.[10]

5. PROGRAM GELİŞTİRME AŞAMALARI VE GEREKLİ YAZILIM ARAÇLARI

C dilinde yazdığınız bir program, Assembly dilinin aksine, bütün bilgisayarlarda çalışacak şekilde hazırlanır. Bazı programlama dillerinde yazılan programlar (kaynak kodları) derleme ve bağlama (link) işlemleri sonrasında makina kodlarına (ikili sayı sistem kodu- machine code) çevrilir ve .exe uzantılı bir dosya elde edilir. Elde edilen bu dosya hangi bilgisayarda
olursa olsun ek bir program yükleme gereksinimi olmadan çalıştırılabilir. C, derleyici (compiler) programlama dilleri olarak adlandırılan bu grubun içinde yer almaktadır.[10]

Derleyici programı bir kez derlendikten sonra makina kodlarına çevrildiğinden derleyici program daha hızlı çalışır. Yorumlayıcı program ise her çalıştığında yorumlanması gerektiğinden, diğerine kıyasla daha yavaş çalışır. [10]

Ayrıca C programlama dili ile program yazmak ve çalıştırmak için bir IDE ortamlarından birine ihtiyacımız olacaktır. Örneğin; Code:Blocks IDE (Entegre Geliştirme Ortamı). Ya da çeşitli C Compilerlar (GNU Compiler Collection, Microsoft Visual C/C++ Compiler, Clang, Tiny C Compiler) ile Sistemi hazır hale getirdikten sonra, çalışan .exe uzantılı bir program elde edebilmemiz için, aşağıdaki üç safhalı işlemi gerçekleştirmemiz gerekir.

İlk safhayı gerçekleştirmek için, bilgisayara yüklenen IDE’nin içinde bulunan metin düzenleyicisini veya dilerseniz farklı bir metin düzenleyicisi kullanarak programınızın kodlarını bir dosyaya yazmanız gerekir. Bu dosya ilk bakışta normal bir metin dosyası ile aynı nitelikleri taşır. Bir C programı içeren bu dosyaya “Kaynak Dosya” adı verilir. Bu dosyayı .c uzantısı ile kaydetmeniz gerekir. Çünkü C programlama dilinde bütün kaynak dosyaları .c uzantılıdır. Eğer IDE’nin içindeki metin düzenleyici ile programınızı yazarsanız, uzantı vermeseniz de otomatik olarak programınıza .c uzantısını verilir. Artık, elimizde program kodları (kaynak kod) içeren bir dosya var. [10]

İkinci safha programınızın derlenme safhasıdır. Kaynak dosya IDE derleyicisi (Compiler) ile derlendiğinde, programımız makine kodlarına çevrilerek .obj veya .o uzantılı ikinci bir dosya oluşturulur. Bu dosya da henüz çalıştırılmaya hazır değildir. [10]

Üçüncü ve son safha elde edilen .obj veya .o uzantılı dosyanın kütüphane dosyaları ile birleştirilmesi safhasıdır. Bu safhada, IDE içinde bulunan bağlayıcı (Linker) kullanılarak .obj uzantılı dosya ile kütüphane fonksiyonlarının bulunduğu dosyaları birleştirilerek .exe uzantılı üçüncü bir dosya oluşturur. Bu dosyanın adını komut satırında yazarak veya direkt
olarak derleyicinizin içinden çalıştırabilirsiniz. Bağlayıcı, derleyici tarafından object dosyasına çevrilen dosya veya dosyalar arasında bir bağ oluşturarak çalıştırılabilen tek bir .exe dosya elde eder. [10]

Sonuç olarak, yazılan tek bir program için IDE üç farklı dosya oluşturur. Eğer “File-name.c” adlı bir kaynak dosya oluşturur ve gerekli işlemleri tamamlarsak, aşağıda gösterilen 3 dosyayı elde ederiz:

  • File-name.c
  • File-name.obj / File-name.o
  • File-name.exe
https://www.guru99.com/c-programming-language.html#:~:text='C'%20language%20is%20widely%20used,using%20'C'%20programming%20language.

Günümüzde yaygın olarak kullanılan IDE’lerde, derleme ve bağlama işlemleri sadece tek bir komutla (“Build”) gerçekleştirilmektedir. [10]

Bazen derleyici programınızı derler, ancak derleme işleminden sonra size uyarı mesajları verir. Bu mesajlar programınızın çalışmayacağını göstermez, ancak programcı olarak bu mesajları inceleyerek çalışma anında bir sorun yaratıp yaratmayacağı konusunda karara varmanızda fayda vardır. [10]

En zor olarak tespit edilen hatalar, derleme ve bağlama işlemi normal olarak sonuçlandıktan sonra, elde edilen .exe dosya çalıştırılmak istendiğinde meydana gelen ve çalışma zamanı hataları (runtime error) olarak adlandırılan hatalardır. [10]

Burada hatırlanması gereken en önemli konu C dilinde çalışma zamanı hataları kontrolü olmadığıdır. Bu hataların kontrolü programlayıcı tarafından yapılmalıdır. [10]

KAYNAKÇA

[1] “History of C Language,” javatpoint.com, para. 2, Jan. 31, 2001. [Online]. Available: https://www.javatpoint.com/history-of-c-language. [Accessed: June. 5, 2020].

[2] “C (programming language),” wikipedia.org, para. 3. [Online]. Available: https:// en.wikipedia.org/wiki/C_(programming_language). [Accessed: June. 5, 2020].

[3] “What is C Programming Language? Basics, Introduction and History,” guru99.com, para. 5. [Online]. Available: https://www.guru99.com/c-programming-language.html. [Accessed: June. 5, 2020].

[4] “C Programming/History,” wikibooks.org, para. 4. [Online]. Available: https:// en.wikibooks.org /wiki/C_Programming/History. [Accessed: June. 5, 2020].

[5] “Advantages and Disadvantages of C Language,” tekslate.com. [Online]. Available: https://tekslate.com/advantages-c-language. [Accessed: June. 5, 2020].

[6] HEBA SOFFAR, “ C programming language features, advantages and
disadvantages,” online-sciences.com, Jan. 19, 2017. [Online]. Available: https://www.onlinesciences.com/programming/c-programming-language-features-advantages-anddisadvantages/. [Accessed: June. 5, 2020].

[7] “Advantages and Disadvantages of C Language,” hecrazyprogrammer.com. [Online]. Available: https://www.thecrazyprogrammer.com/2013/07/what-are-advantages-anddisadvantages.html. [Accessed: June. 5, 2020].

[8] K. Alan, “ Bir C Programlama Dili Sorunsalı: Nerede kullanacağım bunu ?,” medium.com, Jan. 9, 2017. [Online]. Available: https://medium.com/@kadiralan021/bir-c-programlama-dilisorunsal%C4%B1-nerede-kullanaca%C4%9F%C4%B1m-bunu-5071d53748fd. [Accessed: June. 5, 2020].

[9] “C Programlama Dili Hala Nerede Kullanılıyor?,” gomuluyazilim.com, para. 3, Agt. 9, 2017. [Online]. Available: http://gomuluyazilim.com/c-programlama-dili-hala-nerede-kullaniliyor/. [Accessed: June. 5, 2020].

[10] “ C Programlamaya Giriş,” bilgigunlugum.net. [Online]. Available: https://www. bilgigunlugum.net/prog/cprog/c_giris. [Accessed: June. 5, 2020].

--

--