Neden C++?

Dilin adını tasarlayan kişiler belirliyor. Sizde bir dil ve derleyici tasarlayıp adını Y++ ya da Z# koyabilirsiniz. Adının böyle olması daha iyi bir dil olduğu anlamına gelmez.
Bu arada, Java++ koyamazsın. Dava yiyorsun sonra. :D
 
Java C'den mi çıkmış? Ne alaka? Java ilk geliştirilirken akıllı ev aletleri gibi yaygın ve yüksek işlem gücüne sahip olmayan sistemlerde compiler sorununu çözmek için sanal makine kullanılmasıyla icat edildi. Daha sonra object oriented programlama popülerleşince PC'lerde de yaygınlaştı. C ne alaka burada?
 
Java C'den mi çıkmış? Ne alaka? Java ilk geliştirilirken akıllı ev aletleri gibi yaygın ve yüksek işlem gücüne sahip olmayan sistemlerde compiler sorununu çözmek için sanal makine kullanılmasıyla icat edildi. Daha sonra object oriented programlama popülerleşince PC'lerde de yaygınlaştı. C ne alaka burada?

Direk C'den çıktı demek tam doğru olmasa da, C türevi yazılım dilleri (C derivative languages) ailesine mensup bir dil Java.
 
Kendi Derleyicinizi ve programlama dilinizi yazabilirsiniz. Gerekenler özellikler çok basit; Karavan(Minibüs de olur), Şizofreni ve tanrının yardımı. Bkz Terry A. Davis ve HolyC (Kutsal C dili).
 
Sayılan programlama dillerinin hepsi teoride birer Turing makinasıdır. Öyleyse C ile yaptığımız her şeyi Ruby ile de yapabiliyor olmamız lazım. Peki niye pratikte işler böyle yürümez?

Eğer C++, C'nin yaptığı her şeyi yapabiliyor olsaydı C'ye ihtiyaç kalmazdı. Örneğin çok sınırlı kaynağa sahip olan birçok sistemde hala C kullanılıyor. Çünkü C++'ın teoride getirdiği bütün o kolaylıkları, STL'i, güvenli yapıları, OO paradigmayı vs. bu tip gömülü sistemlerde kullanacak yeterli kaynağınız yok. Bunları geçtim, bugün hala çoğu gömülü sistem için tasarlanmış bir C++ derleyicisi dahi yok. Dolayısıyla iki dili kıyaslarken sadece semantik özelliklerine bakmak gerçekten çok komik. Kaynak tüketimi, hangi platformlarda çalışma ortamınız var vs. bunlar daha önemli sorular. Eğer bu bahsettiklerim önemsiz olsaydı bütün dünyada tek bir programlama dili kullanılırdı o da Java olurdu muhtemelen.

Kaldı ki semantik olarak incelediğimizde dahi C++, C'nin supersetidir demek doğru olmaz. Evet C ile yapabildiğimiz çoğu şeyi C++'da aynen yazabiliriz fakat C ile C++' da sentaksı aynı olan bazı ifadelerin derleyicide çok farklı yorumlandığını görebiliriz. İşte burada da semantik farklar ortaya çıkıyor. Daha basit bir dille anlatmak gerekirse tamamen aynı yazılan iki kod satırı iki dilde farklı işler yapabiliyor. Bunun yanısıra C'de derlenen fakat C++'da izin verilmeyen bir takım expressionlar da vardır.

Bazı diller daha fazla abstractiona izin verir. Böylece daha modüler, takım çalışmasına uygun ve daha okunabilir kod yazabilirsiniz. Bu da iyi bir sürdürülebilirlik, daha iyi bir hata ayıklama imkanı verir. Zaman kazandırır. Fakat daha yüksek kaynak tüketimi oluşur.

Bazı diller de tam aksine daha ilkeldir. Aynı işi yapmak için daha çok zaman harcarsınız fakat kaynak tüketimi açısından buna mecbursunuzdur.

Özet olarak bilgisayar bilimlerinde ve aslında dünyanın her alanında karşımıza çıkan bir problemle karşılaşırız. Bir terazi düşünün. Bir kefesinde zaman maliyeti var, diğerinde fiziksel maliyet (bellek alanı). Programlama dilleri birer araçtir. Terazinin hangi kefesi o anki projeniz için ağır basıyorsa ona uygun dili kullanırsınız. Bu yüzden de kuru kuruya x dili y dilinden iyidir demek saçmalıktır.
 
Bunları geçtim, bugün hala çoğu gömülü sistem için tasarlanmış bir C++ derleyicisi dahi yok.
Buna katılmıyorum. Gömülü platformlar ARM işlemciler kullanıyor ve arm-gcc/g++ altyapısı tamamen mevcut. Linux üzerinde çalışan her şeyi cihaza buildroot kurup çalıştırabilirsin. Elle derleme yaptıktan sonra istersen Java yaz makinaya sana kalmış ki, Android telefonlar zaten buna bir örnek.

Ancak haklısın, hiç bir dil birbirinden iyi değil, hepsinin kullanım amacı farklı.
 
Java C'den cikmis, Python Fortran'dan gelmis gibi sozler bos.
Buradaki fikir syntax benzerligiyse Javascript de C'den cikmis denilebilir.

Programlama dilleri o bundan cikti, bu sundan geliyor diye kiyaslanmaz.
Typing nasil ( dinamik, statik ), Generic destegi var mi, Functional destekliyor mu, Inheritance, operator overloading, method overloading, garbage collection, encapsulation, pointer arithmetic, imperative, declerative vs gibi kavramlarla kiyaslarsin.

Ayrica Kotlin yazarsin JS e compile edersin, CoffeScript yazarsin JS e compile edersin, Typescript yazarsin onu da JS e compile edersin. Sass yazar CSS'e compile edersin. Scala yazar JVM de byte kod calistirirsin. Her dil ayri ve bagimsiz; kendisinden once gelenin bir ust modeli degil.

C ismi D 'den once geliyor; D cok iyi dil olmali nedir arkadas, az biraz arastirin su isi. Yolda gecen arabalari plakalarinda yazan sayilara gore mi kiyasliyorsunuz gercek hayatta?
 

Geri
Yukarı