Şimdi Ara

C++17 Öğrenme Günlüğüm // 7. Gün (sonlandı)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
1
Favori
963
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • İyi günler,

    C++17 öğrenmeye 30.Eylül.2019 ile başlamış bulunmaktayım. Birçok yeni özellik eklenen C++17 neredeyse bir Ruby ayarında olmuş, nitekim o yüzden öğrenmeye başladım ancak bildiğiniz üzere Ruby sanal makina üzerinde çalışıyor, C++ direkt makina kodunda çalışıyor, o yüzden C++'ın fonksiyonel özelliklerini öğrenip kullanmak Ruby'ye göre bir tık daha zor.

    Kaynak olarak Apress'in 2019 basımı C++17 Standard Library Quick Reference belgesini seçtim. Gelişimimi görmek de değerlendirmek için kendime birkaç gün süre verdim. Tüm gelişimimi buradan ileteceğim.

    Esenlikler.
    30.Eylül.2019 23.56




    Güncellemeler:

    #001: 01.Ekim.2019

    - C++17 compiler 'ı indirmek sorun oldu. Daha maçı başında 1 gol yedim :) Cünkü ortada bir C++17 compiler'ı yok. Derleme standart bir C++ compiler 'ı ile C++ Boost library include edilerek yapılıyor. O yüzden C++ Boost library'nin son versiyonu 1.71.0 'ı indirip kurdum ancak o kurulum dizini altında bir 'include' klasörü olması gerekiyor , o yok. Maçta 2. golü de yedim:) StackOverflow gibi sitelere baktıgımda C++17 kod derleme örneklerinde Visual Studio 2017 kullanıldığını gördüm. Kaynakları sınırlı laptopumda VS 2017 kuramadığım için derlemeyi komut giriş (command line) ekranından yapmak istediğimden o yol benim için geçerli değil. Youtube'ta komut giriş ekranında C++17 derleme nasıl yapılırı gösteren video baktım o da yok. Başlangıçta dedim ya, derlenen diller bir Ruby gibi değil, bu sürü ek işleri var.




    #002: 01.Ekim.2019
    - Örnek bir C++17 kodunu Boost library kullanarak object koduna derlemeyi başardım, ancak ondan exe şu ana dek yapamadım. Mayıs 2008'de yayınlanmış şu yazıda:

    http://www.javadtaghia.com/clam/boost-c/settingupboostgccwindows

    komut giriş ekranında Boost include edilerek ne biçimde derleme yapılabileceği anlatıyor. Yazıda kullanılan kod:

    C++17 Öğrenme Günlüğüm // 7. Gün (sonlandı)


    bu yazıdaki derleme kodunu kendi ortamıma uyarladıktan sonra şu kodu kullandım:

    g++ -c -IC:/Programs/boost-1.71.0 -o regexp.o regexp.cpp

    sonra regexp.o nesnesini sorunsuz derledi ancak şu komut giriş kodu ile nesneden exe yapmaya çalışınca

    g++ -o regexp.exe regexp.o -LC:/Programs/boost-1.71.0/libs -lprogram_options -lregex

    program_options ile regex library'yi bulamadı dedi. Boost dizini içinde sözkonusu library'lere bakınca dll'lerini bulamadım dolayısıyla Linker'in yanlış vermesi normal. Bu durumda, kurduğum Boost library'de bir dll derleme işlemi de yapmam gerekecek gibi. Şimdi ona bakacağım.

    Bu 2.güncellemede saydığım işlemler yaklaşık 2 kadran süremi aldı.Daha önce Boost lib hiç kullanmadığım için bu normal. Ancak C++ biliyorum dememe karşın bir library ekleyerek ederek exe çıkaramadım, o yüzden C++ 'yi bilmiyormuş gibi bir duyguya kapıldım. exe'yi yapıp bu duygudan kurtulmaya calışacağım :)




    #003: 02.Ekim.2019

    - Şimdi yaptığım araştırmada Boost lib kurduktan sonra lib içindeki kodları derlemek te gerekiyor, bunun için ise VS kullanmak gerekecek. Elimde bulunan parasız sürüm VS 2010 Express ile bu derleme işlemini yapmayı deneyeceğim. Bu süreçte lib kodları .dll 'e değil .lib 'e derleniyor (düzeltme: opsiyonel olarak .dll'e de derlenebiliyor) .lib bildiğim ölçüde Microsoft C++ compiler 'ın kullandığı derlenmiş library dosyası formatı dolayısıyla g++ nin onları kullanmama olasılığı var (çünkü g++ GNU C++ Compiler, MS'in bu formatını destekleyip desteklemediğini test etmedim) Bunu ancak .lib 'leri derledikten sonra test edebileceğim.




    #004: 02.Ekim.2019

    - Laptop'uma VS 2010 kurup Boost library'lerine yer açmak için harddiskte 5GB 'lık yer boşalttım. Tüm önişlemler 1-2 kadran sürdü. VC++17 öğrenmeye başladıktan sonra harcadığım süre ise toplamda 8 kadran buna karşın C++17 kodu deneyemedim. Düşünün, Windows Power User'ım, program kurma, konfigürasyon yapma bilgim var, C ile profesyonel olarak firmware düzenleme işleri yapıyorum yine de 8 kadran boyunca C++17 compiler 'ını kuramadım :) Bir Ruby compiler kurmak gibi kolay olmayacağını biliyordum ancak bu denli uğraştırmasını da beklemiyordum.




    #005: 03.Ekim.2019

    - VS 2010 kurup Boost'u kurmaya başladım, "Failed to build Boost.Build engine" yanlışı verdi. Yanlışı araştırdığımda VS 2010 'de 'thread' library'nin olmadığı VS 2012'den başlayarak olduğu ortaya çıktı.

    Bu durumda ya VS 2012 kurmalıyım ya da başka çözüm geliştirmeliyim ya da thread'i elle kurmalıyım. Ancak VS 2012 Windows 7 SP1 istiyor.

    Tüm bu işlemler 2 kadranımı daha aldı, toplam harcadığım süre 10 kadran yine de ortada bir C++17 compiler yok. Ancak bunun nedeni Service Pack'siz Windows 7 kullanmam :)




    #006: 04.Ekim.2019

    - Dün ek iş olarak bir web sitesi işine baktım. Parası iyi. 3 gün sürecek. O yüzden C++17 compiler kurulumuna ara verdim. Ancak yukarda değindiğim soruna çözümü tasarladım.

    'JAM' adlı build tool kurulum için C++11 destekli compiler istiyor ancak bu desteği eksiksiz biçimde vermeyen VS 2010'daki C/C++ compiler'ı kullanıyor. Laptop'ta C++11 destekli GCC-5.1.0 kurulu. Dolayısıyla GCC-5.1.0'ı kullanarak JAM'ihttp://freetype.sourceforge.net/jam/index.html kurmayı deneyeceğim.




    #007: 04.Ekim.2019
    - Yukardaki mesajdan sonra web işine kısa ara vererek laptopun başına geçip tasarladığım çözümü denedim. Sorunsuz çalıştı.
    C++17 Öğrenme Günlüğüm // 7. Gün (sonlandı)

    İmaj net görülmüyorsa direkt link
    https://store.donanimhaber.com/04/a2/2e/04a22e3a9274d566b65c8b01a29f6f64.png
    İlk denemede ufak bir yanlış verir, düzeltilir de bunun gibi birkaç tur debugging 'ten sonra çalışır diye bekliyordum daha ilk denemede çalıştı. Cunku Boost'un kurulumunu yapacak b2 adlı 'JAM' programının kurulum dosyası olan 'bootstrap.bat' i incelediğimde compiler secenekleri olduğunu de aralarında 'GCC' olduğunu gördüm. Screenshot'ta gözünüze ilişti ise, 'bootstrap.bat' i gcc seçeneği ile çalıştırdım.

    Böylelikle bir engeli daha aştım. Ancak şimdi bu b2 ile (JAM dosyası) Boost library'i kuracağım o aşamada sorun çıkacak mı? Boost kurulumu uzun süreceği için ona şimdilik başlamadım. Web işine dönmeliyim.




    #007: 04.Ekim.2019

    - Web işine döneceğim dedim ancak b2 JAM kurulumu çalıştıktan sonra Boost library'nin kurulumu da çalışacak mı diye düşüncelerime takıldı bir kez. Nitekim onun kurulumunu yaptım.

    Environment/System Variable olarak BOOST=C:\Programs\boost-1.71.0 tanımladıktan sonra

    b2 install --libdir=%BOOST%\libs64 --includedir=%BOOST%\include --build-dir=C:\Programs\boost-1.71.0-build --layout=tagged variant=release threading=multi link=shared runtime-link=shared address-model=64 -sZLIB_SOURCE=C:\Programs\boost-1.71.0-src\tools\boost_install\test\iostreams\zlib-1.2.11 -sBZIP2_SOURCE=C:\Programs\boost-1.71.0-src\tools\boost_install\test\iostreams\bzip2-1.0.6

    biraz zorlu da olsa kurulum (hemen hemen) sorunsuz bitti. Dolayısıyla artık C++17 derleyicisi var. Hemen C++17 özelliklerini kullanan şu kodu denedim:

     
    #include iostream
    #include boost/regex.hpp
    #include string

    using namespace std;
    using namespace boost;

    /* g++ -c -I$BOOST/include -o regexp.o regexp.cpp */
    /* g++ -o regexp.exe regexp.o -L$BOOST/libs64 -lboost_program_options-mt-x64 -lboost_regex-mt-x64 */

    /* 30.Eylül.2019 22:30 Yukardaki deyim lib bulunamadı yanlışı verdi -IC:/Programs/boost-1.71.0 ekledim daha da uzun bir undefined reference yanlışı verdi */

    /* 4.Ekim.2019 16:58 Boost-1.71.0 kurulumundan sonra yanlış düzeldi*/

    int main() {
    string s = "This is my simple sample text, really.";
    regex re(",|:|-|\s+");
    sregex_token_iterator my_iter(s.begin( ), s.end( ), re, -1);
    sregex_token_iterator my_end;
    while (my_iter != my_end)
    cout kk *my_iter++ kk '
    ';
    return (EXIT_SUCCESS);
    }

    Sonra kod sorunsuz çalıştı.

    ÇOK GÜZEL!

    Şimdi 'higher-order function' kategorisindeki 'reduce' işlevini kullanarak temel/orta düzey bir programcılık sorusunu çözeceğim ki onu yaptıktan sonra C++17 öğrenme girişimim amacına ulaşmış olacak.




    #008: 06.Ekim.2019

    - C++17 öğrenme sürecine, yaklaşık 2 gün ara verdikten sonra kaldığım yerden sürdürüyorum.

    Bildiğiniz üzere C++17 derleyici kurmak 10 kadran süremi almıştı. Doğal olarak Visual Studio 2017 gibi yeni bir IDE kurmadan yaptığım için bu denli uzun süre aldı. Ayrıca C++ ile ilgili projeler yapmadığım için laptopumda güncel C++ derleyicisi ile library'ler olmadığı için de işlem bu denli uzun sürdü.

    Laptop'umda bulunan C++ derleyicisi 2015 yılı çıkışlı GNU g++'ıydı (g++-5.1) Laptop'a C++17'deki tüm yeni fonksiyonları içeren Boost-1.71.0 library'yi kurduğum için, Boost'u include edip linker'e Boost linki vererek C++17 programlarını derleyip çalıştırabilir konuma geldim.

    Amacım 1'den 10'a dek olan sayıların faktöryelini basacak program yazmak.

    Birebir o işi yapmayan ancak ona yakın bir kod yazdım (forum << işaretini bozduğu için 'kk' deyimi kullanıldı:
     
    #include iostream
    #include boost/algorithm/cxx17/reduce.hpp
    #include boost/range/irange.hpp
    #include boost/functional.hpp // 'multiplies' için

    using namespace std;
    using namespace boost::algorithm; // reduce'u kısa yazabilmek için

    int main() {
    auto seri = boost::irange(1,5);
    for_each(seri.begin(),seri.end(), [](int n){cout ' ' kk n;});
    int faktoryel = reduce(begin(seri), end(seri), 1 , multiplies int ());
    cout kk ", faktoryel " kk faktoryel kk endl;
    }

    Şu komut ile g++ faktoryel-seri.cpp -IC:/Programs/boost-1.71.0/include -o faktoryel-seri.exe -std=c++17 derleyince sonuç:

    ./faktoryel-seri.exe
    1 2 3 4, faktoryel 24


    1-5 arası sayıları for döngüsü kullanmadan boost::irange fonksiyonu ile oluşturup, reduce'a lambda parametresi olarak çarpım fonksiyonunu vererek 1-5 arası sayıları birbiri ile çarpıp indirgedim.

    Ancak güncel bir C++17 derleyicisi kullanmadan, Boost ile yaptığım için programda 4 include ile 2 using kodları, programı biraz uzun gösteriyor. Ancak C++17 kullanma nedenim yalnızca fonksiyonel programlama değildi, programları kısa olarak yazabilmekdi. Boost kullanınca programı kısa yapma amacom pek gerçekleşmeyecek gibi. O yüzden şimdi Windows 7 için g++'ın C++17 destekleyen güncel versiyonlarına baktım, SourceForge'de gcc-9.2.0 'nin Windows binary'leri vardı, indirdim, hemen çalıştı. 10 kadran süren bu Boost arasından sonra şimdi C++17 destekleyen g++-9.2 ile deneme yapacağım.



    
    #009: 07.Ekim.2019

    - C++17 öğrenme amacıyla başladığım yolculukta, sanırım amaca ulaştım cunku C++17 nin özelliklerini kullanan kısa bir program yazıp çalıştırdım. Bu süreçte en cok süre alan bölüm, programın kendisini yazmaktan cok compiler'ı ayarlamak oldu. Yine de 1 haftayı geçirmeden amacı tutturdum ki bu bir haftanın 3 gününü bir web işine de ayırdım dolayısıyla esasında 4 gün ki o 4 günün içinde net 15 saat süre harcadım diyebilirim.

    Program , 1-10 arası sayıların faktöryelini, yerleşik faktöryel fonksiyonu kullanmaksızın, C++17'nin yeni özelliklerden 'reduce' fonksiyonunu kullanarak basıyor


     
    #include numeric
    #include vector
    #include iostream
    using namespace std;
    int main() {
    for (int i=1;i 10;i++){
    vector int s(i);
    iota(s.begin(), s.end(),1);
    cout reduce(s.begin(), s.end(), 1, multiplies int ()) ", ";}}

    Forum kod içindeki < ile > imlerini bozuk bastığından sildim, görünmüyor. O yüzden SS:
    C++17 Öğrenme Günlüğüm // 7. Gün (sonlandı)


    Önce 1-10 arası sayı büyüklüğünde s vektörü oluşturup, iota fonksiyonu ile vektörün elemanlarını 1'den başlayarak ardışık artacak biçimde değiştirdim sonra s vektörünün elemanlarını sırayla birbiri ile çarparak sonucu cout ile bastım. reduce fonksiyonuna elemanlara uygulanacak fonksiyonu verebiliyorsunuz, burada elemanlar çarpılacağı için ' multiplies int ()' fonksiyonunu verdim.

    reduce 'u kullanabilmek için <numeric> library'yi (header) eklemelisiniz.

    Bu durumuyla C++17, en başta belirttiğim gibi Ruby gibi fonksiyonel ancak birşey dışında o da Ruby'deki 'Range' nesnesinde olduğu gibi 1...10 diyerek s vektörünü bir anda oluşturamıyoruz, 2 sıra kod ile ancak oluşturabiliyoruz.

    C++20'de Ruby'deki Range nesnesine benzer bir fonksiyon gelecek deniliyor. O işlem tek fonsiyonla yapılsaydı, tüm işlemi C++17'nin 'for_each_n' fonksiyonu ile yalnızca 1 tek sıra koda indirmeyi deneyecektim, o yüzden denemedim.

    'for_each_n' fonksiyonu Python'daki 'map' benzeri bir fonksiyon. Başka deyişle bir C++ vektörünün tüm elemanlarına istediğiniz bir fonksiyonu uygulama fonksiyonu.

    Sonuç: C++ son yıllarda büyük ilerleme sağlamış. 2010'lar fonksiyonel programlamanın büyük atak yaptığı bir dönem oldu.

    2010'ların bitmesine yaklaşırken C++ fonksiyonel programlama konusunda Ruby'ye yakın konuma gelmiş. 2020'de C++ Ruby ile bu açıdan eşit konumda olacak denilebilir. Ancak başta da değindiğim gibi Ruby bir Sanal Makinaya bağımlıyken C++ direkt makina kodu ile çalışıyor o yüzden C++ için artık "makina hızında çalışan fonksiyonel programlama dili" de denilebilir.

    Sonlandı.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 30 Haziran 2022; 23:56:32 >
    < Bu ileti mini sürüm kullanılarak atıldı >







  • Komut giriş ekranında g++ compiler opsiyonu olarak -std=c++17 versem bile derleyicim en yüksek c++11 ile uyumlu olduğu için, c++17'ye özel bir fonksiyon kullandığımda o fonksiyonu bulamadı diyerek yanlış veriyor.

    Araştırdığıma göre, C++17 standart library'yi default olarak içeren bir derleyici şu anda piyasada yok onun yerine C++14 (yada C++11) uyumlu eski derleyicilere Boost library'den include opsiyonu verilerek örneğin -IC:\Programs\boost_1_71_0\include gibi , derleme yapılıyor ancak sorun şu ki, Boost library'yi kurdum öyle bir include klasörü yok, dolayısıyla şu ana dek C++17'ı deneyemedim :)

    Yukardaki kişinin ilgisiz mesajına gelince: "Python öğrenme günlüğüm" biçimindeki konu başlığını sadece siz mi kullanabilirsiniz? O başlığı bir sen kullandın diye başka hiç kimse kullanamaz mı?
  • requizm kullanıcısına yanıt
    Komut giriş ekranında g++ compiler opsiyonu olarak -std=c++17 versem bile derleyicim en yüksek c++11 ile uyumlu olduğu için, c++17'ye özel bir fonksiyon kullandığımda o fonksiyonu bulamadı diyerek yanlış veriyor.

    Araştırdığıma göre, C++17 standart library'yi default olarak içeren bir derleyici şu anda piyasada yok onun yerine C++14 (yada C++11) uyumlu eski derleyicilere Boost library'den include opsiyonu verilerek örneğin -IC:\Programs\boost_1_71_0\include gibi , derleme yapılıyor ancak sorun şu ki, Boost library'yi kurdum öyle bir include klasörü yok, dolayısıyla şu ana dek C++17'ı deneyemedim :)

    Yukardaki kişinin ilgisiz mesajına gelince: "Python öğrenme günlüğüm" biçimindeki konu başlığını sadece siz mi kullanabilirsiniz? O başlığı bir sen kullandın diye başka hiç kimse kullanamaz mı?



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 1 Temmuz 2022; 0:6:9 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • Böyle konuları çok severim :) Devam et ben okurum .
  • ayhanpasa1 kullanıcısına yanıt
    Bu konu 2 başka konunun birleşiminden doğdu. Geçtiğimiz Temmuz herkes denize dinlenmeye gitti ben türlü nedenlerden dolayı gidemedim. Bilgisayar başında yeni nesler yaparak bu dönemi geçiririm diyerek Perl 6 konularına bakmaya başladım, eksiksiz olarak nasıl başladığımı anımsamıyorum ancak daha ilk günden forumdaki Temel Programlama Soruları (Döngü ile Koşul Yapıları) konusundaki 20 problemin coğunun Perl 6 ile tek sıra kod ile kodlanabildiğini gördüm, bu iş bir anda sardı. O konuda
    https://forum.donanimhaber.com/temel-programlama-sorulari-dongu-ve-kosul-yapilari--137712410

    10.Temmuz gibi, C++ , Python, Java ile çözümler gelmişti. Laptopumdaki Perl 6 klasörüme bakıyorum, deneme amaçlı ilk kodu 17.Temmuz'da , konuya ise 19.Temmuz'da ilk mesajımı göndermişim. Daha sonra bu "kısa kod" üzerine konu açtım:
    https://forum.donanimhaber.com/reddit-hn-euler-dh-gibi-sitelerden-is-gorusmesi-sorulari-odev-sorulari--139462992

    Kısa kod esasında fonksiyonel programlama olup, fonksiyonel programlama her geçen yıl daha yaygınlaşıyor.

    Ancak bu "kısa kod" konusuna Go bilen bir arkadaşın da ilgi göstermeye başlaması sonrası kısa koda ek olarak "hızlı kod" olayı da önem kazandı. Perl 6 ile kısa kod yazabiliyoruz iyi güzel ancak Go bilen arkadaş diyor ki "benim kod makina kodu hızında çalışıyor senin kod yorumlayıcı ile çalışıyor" :) Esasında Perl 6 JVM byte koduna derlenebiliyor dolayısıyla oldukça hızlı calışma olanağı var ancak makina kodu bir başka.

    Nitekim o konuda Go 'ya karşılık C++ ile çözüm yazmaya başladım. Kullandığım compiler olan C++11 fonksiyonel programlamaya destek veriyordu ancak bu destek daha cok Map, Vector, List gibi veri yapıları ile o yapılarda 'iterator' gibi temel işlevlerle sınırlı bir görüntü veriyordu. Okey C++11'deki iterator işlevine kullanıcı tanımlı fonksiyon / lambda uygulanabiliyordu ancak tüm bunlar standart lambda olarak yapılıyordu buna karşın çözmek istediğimiz 1-den-10-a-kadar-sayilarin-faktoryelini-hesaplama problemindeki faktöryel işlemini standart lambda ile yapmak olası değildi, yüksek-dereceli / higher-order kategorisindeki 'reduce' işlevi gerekliydi ancak C++11 speklerini incelediğimde 'reduce' yoktu. Dolayısıyla o problemde Go'ya C++ ile karşılık veremeyeceğimi düşünmeye başladığım sırada C++17'de reduce işlevinin eklendiğini gördüm. Bir anda işler değişti sonra C++17 öğrenmeye karar verdim. Bu konu işte böyle doğdu :)



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 1 Temmuz 2022; 0:13:10 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • Go ya sadece hız olarak bakmak yanlış olur. çünkü C, C++, Rust gibi diller Go dan daha hızlı çalışır. Ancak eşzamanlı çalışması gereken bir algoritma kurmanız gerekiyorsa işin rengi değişiyor. Kodlama kolaylığı ve sistem kaynaklarını kullanmak konusunda Go daha avantajlı hale geliyor. Ancak Go nun bu avantajı çok az senaryoda gerekli olur, çoğu durumda mevcut programlama dilleri fazlasıyla işinizi görecektir. örneğin Raspberry pi gibi düşük ram ve işlemci kapasitesi olan bir bilgisayarda eşzamanlı birden fazla sensör okumak ve aynı zamanda yoğun web sunucusu olarak kullanmak için Go uygun olabilir. yada süper bir bilgisayarınız var ancak webserver istekleri karşılayamıyorsa yada webserver sayınız çoksa ve azaltmak istiyorsanız Go ya bir şans vermelisiniz.

    buna örnek bir linki sizinle paylaşayım.
    http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/



    < Bu mesaj bu kişi tarafından değiştirildi CleanCoders -- 2 Ekim 2019; 23:43:40 >




  • CleanCoders C kullanıcısına yanıt
    Go'ya yalnız hız açısından bakmadım, bir tek makina koduna derleniyor dedim. Makina koduna derlenince JVM gibi ek program kurma zorunluğu olmaması bence hızdan daha önemli.

    Eş-anlı (concurrent) programlama Go'dan yıllar önce olan bir nes. Örneğin C++ 'de eksiksiz olarak destekleniyor dolayısıyla ona Go'nun ayırt edici bir özelliğiymiş gibi değinmek gereksiz.

    Go'nun C++'a göre en büyük avantajı daha yalın de kolay öğrenilebilir olması.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 1 Temmuz 2022; 0:16:45 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Tuğkan-0153

    Go'ya yalnız hız açısından bakmadım, bir tek makina koduna derleniyor dedim. Makina koduna derlenince JVM gibi ek program kurma zorunluğu olmaması bence hızdan daha önemli.

    Eş-anlı (concurrent) programlama Go'dan yıllar önce olan bir nes. Örneğin C++ 'de eksiksiz olarak destekleniyor dolayısıyla ona Go'nun ayırt edici bir özelliğiymiş gibi değinmek gereksiz.

    Go'nun C++'a göre en büyük avantajı daha yalın de kolay öğrenilebilir olması.
    ben C++ eş zamanlı programlamayı desteklemiyor demedim, Kodlama kolaylığı ve sistem kaynaklarını kullanmak konusunda Go daha avantajlı hale geliyor dedim
  • CleanCoders C kullanıcısına yanıt
    Alıntı yaparak yorum yapmana gerek yok; cunku yorumum hemen yukarda görülüyor.

    Kodlama kolaylığı açısından okey, Go'yu kodlaması kolay ancka sistem kaynaklarını kullanma açısından avantajı var diyebilmek için C/C++'ın ürettiği exe'lerden daha kısa exe üretebiliyor, kullandığı dll'llerden daha kısa dll kullanıyor olması gerekli, C/C++'tan daha verimli thread support'u olması gerekli ancak öyle bir durum yok, o yüzden 2. bölüm yanlış.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 1 Temmuz 2022; 0:18:58 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • C++17 öğrenme günlüğüm bugün (7.Ekim.2019) sonlandı cunku C++17 ile yazmayı amaçladığım şu programı yazmış bulunuyorum:
    Fonksiyonel programlamanın temel işlevlerinden biri olan 'reduce' fonksiyonunu kullanarak faktöryel hesaplama.

    1-10 arası sayıların bu biçimde faktöryelini bulup basmak toplam 9 sıra tuttu ancak ana gönderideki son paragrafa bakarsanız, C++20 çıkınca bu 9 sıra 3 sıra daha kısalarak 6 sıraya inebilir ki onun da 4'ü 'include' ile 'using' gibi rutin C++ kodları.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 1 Temmuz 2022; 0:23:1 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.