C ile C++ Arasındaki Farklar Bölüm 1
Yazan : Yusuf Nar, Ağustos 16, 2006, Çarşamba 14:57
Etiket(ler) : C, C++, Farklar, Nesnel Yönelimli Programlama, Object-Oriented
C diline (veya) C++ diline yabancı olan fakat merakla izleyen çoğu kimsede ilgi uyandıran bir konu olacağı düşüncesiyle bu makalenin faydalı olacağını ümit ediyoruz.
Öncelikle şunu belirtelim; bu makalenin konusu bir takım teknik konuları veya kod parçalarını incelemekten ziyade bu dillerin temel farklılıkları üzerinde olacak. Makaleyi iki başlık altında incelemeyi uygun gördük :
Programlama dillerinde tasarım yönünden eksiklikler olabilmektedir. Şu ana kadar 1500 civarında programlama dilinin varlığından söz ediliyorsa bunun en önemli nedeni dillerin daha çok spesifik amaçlar için tasarlanmasıdır. C++ dilinin ortaya çıkışını bu bağlamda ele alabiliriz. C++ dili C dilinden türemiştir. Yani C++ dili; C'deki eksiklikler giderilerek ve C' de olmayan birçok ek özellik getirilerek ortaya çıkmıştır diyebiliriz.
C++' ın en başta gelen farklılığı ise Nesne Yönelimli (Object-Oriented) olmasıdır.
C++' ın en başta gelen farklılığı ise Nesne Yönelimli (Object-Oriented) olmasıdır. Buna karşın C fonksiyonel bir dildir (procedural). Peki tam olarak nedir Nesnel Yönelimli Programlama? Kısaca değinecek olursak; C dilinde (veya fonksiyonel herhangi bir dilde) program yazarken programımızı fonksiyonlara parçalar ve tasarlardık. Yani programımızın temel parçası fonskyionlar idi. C++ da ise programlarımızın temel birimi nesnelerdir. Örneğin bir satranç oyununu simule eden programı yazdığımızı düşünelim. Programda bazı nesnelerin Satranç tahtası, Piyon, Vezir, vs olacagini düşünebiliriz. Bu şekilde program yazmak hepimizin farkedecegi gibi daha kolay ve en önemlisi de gerçeğe daha uygundur. Zaten nesne yönelimli programlamanın ortaya çıkışında yatan ilham kaynaği da diyebileceğimiz en önemli unsur gerçek dünyayı modelleyebilmektir.
Farklı bir örnekle konuyu açıklamaya çalışalım. Mesela programımızda "otomobil" diye bir nesnemizin olduğunu düşünelim. Bu nesnenin direksiyon, fren, kapı gibi elemanları oldugu gibi gitmek, hızlanmak gibi özellikleri de olmalıdır. Hatta bu alt elemanların da kendilerine ait elemanlari ve özellikleri olduğunu ve otobomil nesnesinin de üyesi olduğu daha kompleks bir nesne olduğunu düşünebiliriz. Işte C++ bize böyle karmaşık yapıyı kolayca tasarlayabileceğimiz bir araç sunuyor. Bu yapıyı program içinde C de olmayan yeni bir anahtar sözcük (keyword) olan class (sınıf) ile kuruyoruz. class yapılarının C deki struct veri yapısına benzediği kısmen doğrudur fakat artık class yapıları içinde fonksiyon tanımlayabiliyoruz.
Basit bir örnekle açıklayacak olursak; C de oluşturduğumuz iki tane farklı yapı düşünelim. X ve Y yapilari. X' i Y' ye kopyalamak için
Y = X;
gibi bir ifade kullanamazdık. C++ ile kopyalamanın ne şekilde olacağını belirterek bunu doğal olarak yapabiliyoruz.
Bu noktada sorabilecegimiz en önemli soru şudur : Bu işlemi biz C dilinde de farklı bir yolla yapabilirdik, o halde neden C++? Şunu belirtelim ki C++ ile yazabildigimiz tüm programları kesinlikle C diliyle de yazabiliriz. Fakat programımızın boyutu büyüdükçe, karmaşıklıgı arttıkça ve zamanın bizim için çok önemli oldugunu düsündüğümüzde artık yazabilmekten ziyade hızli, kolay ve efektif bir şekilde program yazmanın gerekliliği ortaya çıkıyor ve bu noktada Nesne Yönelimli Programlamanın ihtiyacını hissediyoruz.
Aslında burada belirtilmesi gereken diger bir husus daha vardır. C ile de şüphesiz nesnel programlama yapabiliriz. Fakat bunu yapabilmek oldukça zordur. C++ ise Nesne yönelimli programlamaya imkan vermekten öte zaten bu paradigmaya göre tasarlanmıştır ve yapısındaki araçlar sayesinde bunu kolaylaştırmıştır.
Bölüm II'de C ile C++ arasındaki farkları daha ayrıntılı olarak inceliyoruz.
#51 Begüm dedi ki;
Kasım 21, 2006, Salı 18:28
ben bilgisayar prugramcılığı okuyorum fakat ne yapsam bu c dilini anlamıyorummm.sitenizde konu anlatımlrınıza yer verirseniz çok sevirimmmm
#52 Yusuf Nar dedi ki;
Kasım 22, 2006, Çarşamba 9:18
Şunu bilmelisiniz ki; düşük seviye bir dil olması nedeni ile C dili gerçekten öğrenmesi zor bir dil. Fakat C'yi öğrendiğiniz zaman diğer dilleri öğrenmekte zorlanmayacağınız gibi, özellikle C++, Java, C# gibi benzer syntax'i(sözdizimini) kullanan dillere çok kolay geçiş yapabilirsiniz. İleride, iş hayatında, belki C'yi hiç kullanmayacaksınız bile, buna rağmen elinizden geldiğince bu konuda çaba göstermenizi tavsiye ederim. Programlama eğitiminin temel bir parçası olmasından dolayı Noktalıvirgül olarak bu tür konulara daha fazla ağırlık vermeye çalışıyoruz.
#56 Dolunay.efe dedi ki;
Kasım 28, 2006, Salı 14:39
ben c programlama dilinden hiç birsey anlamıyorum ben sizden sadece ayrıntılı olarak bunu acıklamanızı istiyorum
eğer bu istegimi yerine getirilirse size cok minnet kalırım
#57 Askimlee dedi ki;
Kasım 28, 2006, Salı 14:40
ben c programlama dilinden hiç birsey anlamıyorum ben sizden sadece ayrıntılı olarak bunu acıklamanızı istiyorum
#58 Kubra dedi ki;
Kasım 28, 2006, Salı 22:34
ben elektronik müendisliğinde okuyorumm baslarda c anlamak gercektenn zorduu anlamıyordumm vizelerde sabahlara kadar calıssamda fayda etmiodu simdii tamm anladımm derken fonksiyonlar konusu girdii ne yapıcamm şimdii CARESİZ VAKKAYIMM MALESEFF EGER BU DERTENN KALIRSAM HAYATIMINN SONU OLURR BU İŞİNN MÜBALAGSII TABİ:(
#59 Kubra dedi ki;
Kasım 28, 2006, Salı 22:36
VE İKİNCİ VİZELERE KADAR COOKK IYI BILMEM LAZIMM SİNİFTA HERKESS ACİPP BILIYOLARR VE IKINCI DONEM JAVA GORÜCEMM NOT JAVA DAHA KOLAY GELDİİ BANA :P
#68 Gülay dedi ki;
Aralık 06, 2006, Çarşamba 12:44
c dili çoooook zevkli bir dil .Özellikle sevince kolay ve anlaşılır hale geliyor
#139 Semih dedi ki;
Nisan 05, 2007, Perşembe 20:31
selam sevgili dostlar kusurabakmayın bende bişi soracam ben programcılık okuyorum 1.sınıf c dilini öğrenmeden c++ ve c# la başlayabilirmiyim yardımlarınız için şimdiden teşekkür ederim
#140 Yusuf Nar dedi ki;
Nisan 06, 2007, Cuma 8:43
Kesinlikle başlayabilirsin. C++, C# ve C ortak yönleri olsa da birbirlerinden farklı diller.
#208 Anadolumanyagi dedi ki;
Haziran 29, 2007, Cuma 13:11
C++ dilini hiç anlamayan birine öğretebilecek bir e-kitap biliyor iseniz ve linkini buraya verirseniz tam süper olurdu. Saygılar
#239 Eray dedi ki;
Eylül 05, 2007, Çarşamba 23:00
Öncelikle ben ortaokul dan beri yazılımla uğraşan birisiyim.Bilgisayara hayatını adamış bir insanım ve bu hastalık bana bir yazılım mühenisi bir abiden geçmişti.Ben şu an 18 yaşındayım ve bana programlamaya önce mantığını anlayarak başlamam ve genellikle web programlama gibi kolay dillere yönelerek yazılımın mantığını kavramak tavsiye edildi(bu tavsiyeler 14 yaşlarımdaykendi).Ben html,javascript,php ile başlamıştım.Tabi web programlamada görsellik daha kolay sağlanıyor ama şu an daha önce web programlamanın kolay anlaşılırlığıyla c# a çok ciddi derecede hakimim.Şimdi c++ diline heves sardım 3 aydır uğraşıyorum çok güzel bir dil.C++ diline çok iyi hakim olabildikten sonra c diline geçmeyi düşünüyorum.Belki intihar etmeye karar verirsem assembly de öğrenirim emekli olduktan sonra :)
(Millet eskiden yeni dillere doğru gitmeye çalışırdı.Bense yeni dillerden eski ve mükemmel dillere hakim olmaya çalışıyorum.)
Not:Ben üniversite okumuyorum
#253 Muhammet dedi ki;
Eylül 27, 2007, Perşembe 20:23
eray kardeş ben bir keyloger yazmak istiyotum amacım hask değil arkadaşlar arasında bir muhabbet bu ama başkaları bunu hack olarak gördükleri için yardım etmio.keylogger olmasada bana
bi açık yazılım kodu verinde üstünde uğraşıyım ßß
muhammet_torun1@hotmail.com
#272 Fuat dedi ki;
Kasım 24, 2007, Cumartesi 16:51
c veya c^++ gibi dillerle kendine özgü işletim sistemleri yapılabilirmi 2. sorum windows xp ve vista bu dillerlemi yazılmış
cevaplarsanız sevinirim...
#292 Yasin dedi ki;
Ocak 12, 2008, Cumartesi 20:56
@FUAT , C veya C++ dili ile kendine özgü işletim sistemi yazabilirsin tabiki.Ancak bu işi başarabilmen için C dilini müthiş derecede iyi biliyor olman gerekiyo.Hatta yalnız başına yazamayabilirsin de.Mutlaka yardım alman gerekecektir.
XP'yi tam olarak bilmiyorum fakat Vista C++ diliyle yazılmıştır.
#293 Serpil dedi ki;
Ocak 13, 2008, Pazar 0:08
Yanılıyorsunuz vista nın tamamı c++ ile yazılmadı bir kısmı c++ kullanılarak yazıldı ama bana göre geri kalan kısmı da direk prosedürel olarak yazılmak zorundadır yani c ile yazılmış olabilir veya daha alt seviye olarak assembly ile de olabilir ama tamamı c++ ile yazılabilen sadece donanım yazılımları ve oyunlardır.
#296 Yasin dedi ki;
Ocak 13, 2008, Pazar 16:16
@Serpil , Sanıyorum ki bu konudaki bilginiz hatalı serpil hanım.Çünkü vista'nın c++ ta yazıldığını en yetkili ağızlardan öğrenmiştim. Şöyle ki Vista ile ilgili bir eğitim seminerine katıldım ve sunumu yapan uzmanların Vista'nın c++ dili ile yazıldığını söylediler.Bu seminerden öncede hocalarımla yaptığım tartışmalarda vistanın C++ dili ile yazıldığını öğrenmiştim.
Bu arada C için alt seviye dil dediğiniz için teşekkür ederim. Ben aynı cümleyi başka bir yerde kurmuştum ve yemediğim laf kalmamıştı.Halbuki C en alt seviye dillerden biridir. Doğru türkçe için teşekkürler...
#307 Önder dedi ki;
Şubat 23, 2008, Cumartesi 22:42
Vistanın bir kısmı C# ile yazılmıştır.Bunu Microsoft açıkladı.Burdan microsoftun C# 'a baya önem verdiğini/vereceğini anlayabiliriz sanırım.
ilk olarak C sonra C++ şeklinde mi? gitsem yoksa direkt C++ 'a mı başlasam.
Adınız
E-Posta
Yorumunuz