You are on page 1of 3

Brtein Ege

Efsane Programlama Dili:

Dnyamz UNIX ile sadece iPhone ve iPad gibi r aan birok elektronik aletin yapmn mmkn klan
bir iletim sistemi kazanmakla kalmad, ayn zamanda yine tpk UNIX gibi vazgeilmez bir programlama dili olan Cye
de kavutu. Bu mthi programlama dili Cnin tpk Benjamin Button gibi gittike genleen
bir kahramana benzediini sylersek hi de abartm olmayz. Peki, sadece UNIXin deil Windows ve
Linux gibi baka iletim sistemlerinin hangi programlama dilinde programlandn hi merak ettiniz mi?
Buyurun, cevab beraber bulalm.

ir nceki yazmzdan da (bkz. UNIX 40 Yanda!, Bilim ve Teknik, TBTAK, s. 36-39,


ubat 2012.) hatrlanaca gibi 1970li yllarn banda Kenneth Thompson ve Dennis Ritchie,
Bell Laboratuvarlarndaki bir DEC PDP-7 zerinde
efsanevi iletim sistemi UNIXi yaratmt. UNIXin
baars zerine AT&T hemen o dnemin en modern donanmlarndan olan bir DEC PDP-11 temin
etmi ve Thompson ile Ritchie bu makine zerinde
UNIXin daha gelimi bir srmn gerekletirmek iin tm gleriyle almaya balamt.
62

UNIX, PDP-7de B adl bir programlama dilinin


yardmyla gelitirilmiti. B ise, MITde (Massachusetts Institute of Technology) grevli ngiliz bilim insan Martin Richards tarafndan gelitirilen BCPL
(Basic Combined Programming Language) adl programlama dilinin rnek alnmasyla Thompson tarafndan 1970 ylnda gelitirilmi bir programlama diliydi. Fakat B, ayn BCPL gibi donanma hayli yakn
alan, dk dzeyli bir sistem programlama dili olmasna karn PDP-11 zerindeki yeni almalar srasnda giderek yetersiz kalmaya balad. Ksa
bir sre sonra bunun balca sebeplerinden birinin
Bnin yalnzca tek bir veri tipine sahip olmas ve bu
nedenle PDP-7ye gre hayli modern bir donanm
olan PDP-11e tam olarak uyum salayamamas olduu anlald. Bunun zerine B, UNIXi gelitirme
almalarna paralel olarak, Ritchienin nclnde yeniden gzden geirilip gelitirilmeye baland.
Bu almalar srasnda (1971-1973) B, szdizim yaps korunarak, ancak farkl veri tiplerine ve birok
baka yapsal deiiklie izin verecek ekilde yeniden tasarland. Rithcie tarafndan ortaya karlan bu
yeni programlama dilinin ilk srm ilk nce New
B daha sonra C olarak adlandrld ve 1973de tamamlanarak o zamanki UNIX ekirdeinin yeniden
programlanmasnda kullanlmaya baland.

>>>

ANSI-Cye giden yol

Brian Kernighan

Cnin kkleri: BCPL ve B


Yukarda da belirtildii gibi Cnin kkleri Bye, Bnin kkleri ise BCPL adl bir
programlama diline dayanr. Bu nedenle
gnmz Csinde bile BCPLin etkileri yer
yer grlr. BCPL, 1966 ylnda ngiliz bilim insan Martin Richards (MIT) tarafndan gelitirilmi ve daha sonra o dnemlerdeki eitli projelerde baaryla kullanlmt. Byk lde Ken Thompsonn,
ksmen de Dennies Ritchienin katklaryla gelitirilen B ise sadece UNIX iletim
sisteminin ilk srmnn gelitirilmesinde kullanlm ve 1973te UNIX ekirdeinin C ile yeniden yazlmasndan sonra
tahtn kesin olarak Cye brakmtr.

C denilince akla gelen kitap:


The C Programming Language
Cyi tahtna doru gtren yoldaki en
byk destekisinin incecik bir kitap olabilecei hi aklnza gelir miydi? Bu gerekten de byle olmutur: 1978 ylnda
Brian Kernighan ve Dennis Ritchie tarafndan yazlm The C Programming Language adl kitap, Cyi ele alan belki de en
ince ama ayn zamanda en kapsaml ve
etkili kitaptr. 1988 ylnda ikinci basks yaplan kitap bugn bile Cyi en batan renmek isteyenlerin ve profesyonel
C programclarnn bir numaral bavuru
kayna olarak gncelliini koruyor.

Gnmz biliim dnyasna hkim


olan programlama dillerinin aksine C,
herhangi bir komite tarafndan tasarlanp
dzenlenmemi, aksine yetenekleri Cyi
kullanan programclar tarafndan yaplan eklentilerle zamanla adm adm gelitirilmitir. C, her ne kadar bu sayede kendi kendine yryen bir dev haline gelmi
ise de bu srecin yan etkisi Cnin dnyann her yerinde farkl srmlerinin domas olmutur. Durumun gittike karmak bir hal aldn gren Amerikan Ulusal Standartlar Enstits (American National Standards Institute-ANSI) 1983 ylnda
Cnin standartlamas iin bir alma grubu (X3J11) oluturarak 1989a kadar sren
almalar sonucunda Cyi dnya apnda standartlatrr (ANSI X3.159-1989) ve
hatta bu arada dilin yapsna birka yenilik getirerek eitli iyiletirmeler de yapar:
Dnyaca nl C-Standart, ANSI-C artk
domutur. ANSI-C yaplan bir ka deiiklikten sonra 1990 ylnda ISO (International Organization for Standardization)
tarafndan da kabul edilir ve C90 bal altnda yaymlanr. Daha sonraki yllarda (1995, 1999 ve 2011) yine ISO tarafndan C90 standartna birtakm eklemeler
yaplmas sonucu ortaya kan yeni standartlar da srasyla C95, C99 ve C11
balklar altnda yaymlanr. C11 olarak
bilinen ISO standart ayn zamanda ANSI tarafndan da kabul edilen en gncel C
standartdr.

Nesne ynelimli programlama


ve C++n douu
Her ne kadar nesne ynelimli programlama (Object Oriented ProgrammingOOP) biliim dnyasnda ilk olarak 1990l
yllarda ticari uygulamalarn gelitirilmesinde boy gstermeye balam olsa da, temeli ilk olarak 1970lerde atlmaya balanmt (1967 ylnda Oslo niversitesinden
Ole-Johan Dahl ve Kristen Nygaard tarafndan gelitirilen Simula-67 ilk nesne ynelimli programlama dilidir). 1972 ylnda Xerox PARC Laboratuvarlarnda Alan
Kay, Dan Ingalls ve Adele Goldberg yne-

Bilim ve Teknik Mart 2012

timinde gelitirilen Smalltalk-80 adl programlama dili, Simula-67den sonra ikinci nesne ynelimli programlama diliydi.
1980li yllarda Apple tarafndan baarl
bir ekilde ticariletirilmesiyle birlikte biliim dnyasnda artk geri dn olmayan
bir sre balamt.
Yazlm dnyasndaki tm bu gelimeleri yakndan takip eden Bell Laboratuvarlar, Cnin uygulama gelitirmelerinde byk arla sahip nesne ynelimli programlamada yetersiz kalacan ngrerek
daha 1979 ylnda Bjarne Stroustrup adl Danimarkal bir bilim adamnn ynetiminde C++ adl yeni nesil bir programlama dili iin ilk almalar balatmt bile.
Cnin nesne ynelimli programlamann bel
kemiini oluturan snflarn ve olaand durumlarn ilenmesine olanak tanmamas, C++ projesinin balatlmasnda rol
oynayan en nemli faktrd. C++ prensip
olarak, yalnzca Cnin biraz daha gelimi
ve nesne ynelimli programlama iin uyarlanm bir ekli olarak grlebilir. D adn almamasnn nedeni de budur (C++, C
jargonunda Cnin deerinin bir artrlmas anlamna gelir). Gnmzde C++, Microsoft Windows gibi iletim sistemlerinin
gelitirilmesinden, yksek performans gerektiren uygulamalarn gelitirilmesine kadar birok alanda kullanlyor. Ayn Cnin
C++ya ilham vermesi gibi, C++ da Java,
PHP ve C# gibi baka programla dillerinin
mimarilerini hayli etkilemitir.

C# (C Sharp)
Microsoft tarafndan 2001 ylnda gelitirilen C#n temeli C, C++ ve Javaya dayanyor. zellikle szdizim yapsnn Cden
byk lde etkilendii sylenebilir. C#
kullanm basit, genel amal fakat hayli baarl bir nesne ynelimli programlama dili ve gnmzde Microsoft.NET teknolojilerinin ana programlama dilini temsil ediyor. Her ne kadar C# ile gelitirilmi
uygulamalar bellek ve ilemci gereksinimleri asndan hayli tutumlu olmalaryla bilinseler de, performans asndan C programlama dili ile programlanm uygulamalarlala rekabet edecek dzeye eriememilerdir.
63

<<<

Efsane Programlama Dili: C

Dennis MacAlistair Ritchie

Brtein Ege,
Viyana Teknik niversitesi
Bilgisayar Mhendislii
Blmn bitirdikten sonra,
yksek lisans renimini
de 2005 ylnda yine Viyana
Teknik niversitesinde
tamamlad. Yksek lisans
almas kapsamnda
Siemens-Almanya iin
birbiriyle bilgi alveriinde
bulunabilen iki
ilikisel veritaban
modelleyerek programlad.
u anda Hacettepe
niversitesinde semantik
web zerine doktora
renimi gryor. Ayrca
eitli firma ve kurumlara
semantik web teknolojileri
konusunda danmanlk
yapyor.

9 Eyll 1941de Bronxville, New Yorkta dodu. Harvard niversitesinde fizik ve uygulamal matematik okuyan Ritchie 1963 ylnda yine
Harvard niversitesinde doktoraya balad. Doktora konusu olarak program yaps ve hesaplama karmakln seen Ritchie doktorasn 1968
ylnda tamamlad.
Mhendis olan babasnn yolundan giden Ritchie, 1967 ylndan itibaren onun gibi Bell Laboratuvarlarnda almaya balad. Bell
Laboratuvarlarnda younlukla MULTICS, BCPL, ALTRAN, B ve C programlama dilleri ile UNIX ve Plan9 iletim sistemleri zerine alt. 2007
ylnda emekli olan Ritchie, 12 Ekim 2011 ylnda 70 yandayken New
Jerseyde hayata gzlerini yumdu.

Gnmzde C
Java, C#, C++ gibi 3. nesil bir programlama dili olan C de genel amal programlama iin gelitirilmitir. C, dk dzeyli bir dil olduu iin bir
uygulama gelitirme dilinden ok ideal bir sistem
programlama dilidir ve gnmzde birok derleyici ve iletim sisteminin gelitirilmesinde kilit rol
oynamaktadr. Java Sanal Makinesi (Java Virtual Machine), UNIX ve Linuxun hemen hemen tamam, Microsoft Windowsun zellikle ilk srmlerinin byk blm yine C ile gelitirilmitir.
Ayrca Cnin baarlar sadece bunlarla kalmam ve
C++ zerinden gnmzn dier ana programlama
dilleri Java, PHP ve C#n mimarilerine ilham vererek, bu programlama dillerinin yaplarn da byk
lde etkilemitir. C, hayli yksek bir performansla ve byk bir gvenilirlikle her donanm zerinde alabilmektedir ki bu son zellik bilgisayar dnyasnda byk bir devrimi de beraberinde getirmitir (1970li yllarda programclarn ii hayli zordu; bir
program ya belirli bir donanm iin gelitirmek zorundaydlar ya da byk abalar ve zaman harcayarak sz konusu yazlm her bir donanm tipine ayr
ayr uyarlamak zorundaydlar.)

Gelecekte C

Yukarda da belirtildii gibi, her ne kadar Cden


daha sonra ve nesne ynelimli programlama ve olaand durumlarn tanmlanabilmesi vb. gibi hususlar da dikkate alnarak gelitirilmi olsa da, C++ kesinlikle Cnin halefi olarak grlemez. nk C++
zellikle nesne ynelimli felsefeyle programlanacak
olan uygulamalarn gelitirilmesi iin tasarlanm bir
programlama dilini temsil ederken, C donanma ok
yakn dzeyde, olaanst bir performansla alan
bir sistem programlama dilidir. Cnin belki de en zayf ynlerinden biri derleyicisinin hata ayklama s64

En bilinen sz : UNIX basittir, fakat ne kadar basit olduunu anlamak iin dhi olmanz gerekir.
Ald dller : Ritchie meslek yaam boyunca ABDde ve baka lkelerde bir ok dl almtr. Bunlardan en nemlileri unlardr: ACM Turing dl (1983, UNIXin mimar Ken Thompson ile beraber), IEEE Richard W. Hamming Madalyas (1990), Ulusal Teknoloji Madalyas (1999,
Ken Thompson ile beraber)

relerinde programcya yeterince ipucu verememesi ve dolays ile programcy baz durumlarda hatalar ile neredeyse ba baa brakmasdr. Bunun sebeplerinden biri de C derleyicisinin dorudan bellek
operasyonlarna izin vermesidir. Her ne kadar gvenilir programlama dilleri kategorisinde bulunsa da,
Cnin bu tip zelliklerinden dolay gerek zamanl sistemlerde ve gvenliin n planda olduu dier alanlarda (tpta, havaclk ve uzay sanayilerinde vb.) uygulama gelitirilmesinde kullanlmas pek tavsiye edilmez. Dier taraftan Cnin gml sistemlerdeki baarsn burada bir daha hatrlatmakta yarar var: Mikrodenetleyici programlanmas alannda C, hl en ok
tercih programlama dili. letim sistemleri cephesinde ise, her ne kadar Microsoft Windowsun gelitirilmesinde C yerine artk C++ kullanmaya balam olsa da, biliim dnyasnn iki kilit iletim sistemi olan
UNIXin ve Linuxun gelitirilmesine -tpk gemite olduu gibi- yine C ile devam edilecei kesindir
(C doal olarak, bu son iki iletim sisteminin sistem
programlama dili olarak kalmaya da devam edecektir). Btn bu nedenlerle, Cnin gelecek dnemlerde
de nemini kaybetmeyecei, aksine UNIX, Linux gibi iletim sistemlerinin kullanmnn yaygnlamasyla daha da nem kazanaca aktr.
Kaynaklar
Brian W. Kernighan and Dennis Ritchie, The C Programming
Language-ANSI C, Prentice Hall, 2nd Edition, s. ix-xii, s.1-4, 1988.
Dennis M. Ritchie, The Development of the C Language,
Association for Computing Machinery Inc., 1993.
Bjarne Stroustrup, Die C++ Programmiersprache,
Addison-Wesley, 4. aktualisierte und erweiterte Auflage, s. 3-22.
Danny Kalev, The future according to Dennis Ritchie (a 2000 interview),
LinuxWorld.com, 20. December 2000.
Wilfried Elmenreich, Systemnahes Programmieren,
C Programmierung unter Unix und Linux, Institut fr Technische Informatik,
Technische Universitt Wien, s. 109, 2005.
Wikipedia, C-Programmiersprache,
http://de.wikipedia.org/wiki/Programmiersprache_C/
Donna Cunningham and Patrick Regan, Ritchie and Thompson Receive
National Medal of Technology from President Clinton,
Alcatel-Lucent / Bell Labs, 2002.
Rupert Goodwins, Dennis Ritchie, father of Unix and C, dies,
13. October 2011.
http://en.wikipedia.org/wiki/C_Sharp_(programming_language)

You might also like