Bjarne Stroustrup tarafından 1979 yılında "c with classes" başlığıyla ortaya çıkardığı programlama dili. daha sonra 1983 yılında c++ adını almıştır. yanlış bilmiyorsam kendisinin doktora tezidir ayrıca. c programlama dilinin biraz daha geliştirilmiş versiyonu.
ben bunu öğreniyordum kendi kendime bir ara 10 yıl önce falan. hazır linux'a girmişken c ve c++ da öğreneyim demiştim. her şey iyi gidiyorken pointer ve macar notasyonu denen şeyi bir türlü anlayamamam üzerine bıraktım öğrenmeyi. ya benim öğrendiğim kaynak çok hızlı ilerledi ya da ergenken pek kavrayamadım olayı, bilemedim.
tekrar bir başlangıç yapsam mı acaba kendisine?
//bu başlık rstnpeace tarafından ukde olarak kaydedilmiş
python'la karşılaştıracak yazarlar gelmeden birkaç kelam etmek isterim. diller birbirleriyle aynı işi yapmaya aday ise karşılaştırılabilirler ve detaylarla karşılaştırılabilirler. örneğin bir ara java ve c# karşılaştırıldı ve lambda function feature bir topic idi orda. tabi zamanla aradaki farklar azalsa da bence hala karşılaştırılmaya aday iki dildir ikisi de. platform bağımsızlığı, birimi işi yapma hızı, learning curve, community gücü, dokümantasyon kalitesi gibi bir çok husus da karşılaştırma sırasında ele alınabilir.
Türkiye'deki üniversitelerde genelde sadece 98 standartı anlatılan ama c++11, c++14 ve c++17 gibi versiyonları bulunan, c++20 için nihai teknik onayı almış olan programlama dili.
c++20'nin, 2020'nin sonuna doğru yayınlanması bekleniyor.
c++11 ile gelen özellikleri şöyle:
---------------
* std::move: yazılımın gereksiz copy constructor çağrılarının önüne geçerek performans canavarına dönüşmesini sağlayan şahane fasilite.
Örnek:
std::vector< std::string> names;
// bu değişkeni bir vector'e atadıktan sonra bir daha kullanmayacağız
std::string myName = "mahmut";
// burada compiler'a myName nesnesi ile işimizin bittiğini belirtiyoruz. compiler da bu durumu değerlendirerek copy constructor çağırmıyor.
names.push_back(std::move(myName));
// aşağıdaki çağrı boş bir string basar çünkü myName artık boş bir string
std::cout < < myName;
---------------
* template functionlara değişik sayıda argüman verebilme: argüman listesindeki stringleri birleştirip return eden bir fonksiyon düşünelim. bunu yapmak için c++98'de muhtemelen va macrosunu kullanmak gerekirdi. c++11 ile gelen bu yeni özellik ise recursion yapmadan compile time'da fonksiyonların açılmasını ve devaqmında compiler tarafından optimize edilmesini sağlıyor. bu nedenle performans/stackoverflow korkusu olmadan kullanılabilir.