Į pradžią > Mano filosofavimai, programavimas > Kompiuterių tinklai, arba kaip išmokau programuoti CLR/C++ (Visual C++/CLI)

Kompiuterių tinklai, arba kaip išmokau programuoti CLR/C++ (Visual C++/CLI)

Beje, MS istorija buvo tokia:

1. Visual Basic
2. Bandymai pagerinti ISO C++ – padarytas Visual C++/CLI. Neva turėjo pagerinti GUI kūrimą. Gal ir pagerino, bet yra iš tiesų tai totalus CRAP. Ir tai sakau, perpratęs šią C++ kalbos perdarymo rūšį. Beje, google taip pat tam pritaria, ir dauguma Visual C++/CLI programuotojų perėjo prie:
3. C#.

Nesvarbu kad visi jie naudoja tą patį .NET framework’ą 4.0. Esmė ta, kad Visual C++/CLI kalba praktiškai yra tiesiog ‘useless’. Aš suprantu kad galima surasti ISO C++ programavimo kalbos panaudojimų vietų, tačiau C# neabejotinai yra geriau nei Visual C++/CLI.

Vienas iš tokių atveju – objektų multithreadingas – t.y. GUI po mygtuko paspaudimo pabandus paduoti ‘this’ pointerį į pačią windows formą, nelabai gaunasi daryti ‘mutual connection between objects’. Nes gaunasi begalinė rekursija, arba reikia matyt labai užsiknisti.

O ir šiaip – programinimas per prototipus – headerius, tikrai yra outdated dalykas per daug lėtinantis procesą. Java ir C#, C++ kalbą šiuo atžvilgiu daro į vienus vartus…

Beje, Echo Serverį programinau su standartiniu ISO C++ su CodeBlocks IDE, be GUI. Visual C++/CLI ir Visual Studio buvo reikalingas tik dėl Echo Kliento, nes jis buvo su GUI. Tik čia normaliai ir lengvai galima padaryti ir valdyti C++ GUI, negana to be didesnių keitimų veikia Java GUI(Swing) anksčiau rašytas kodas.

O iš tiesų tai parašiau tik 2 programas – Echo Serverį ir Echo Klientą Java 1.6 su NetBeans IDE. O tik po to tą patį kodą perkėliau į ISO C++, bei Visual C++/CLI.
Port’us tarp aplikacijų daryti jau ne kartą yra tekę: Java -> C#, Java -> Python, tad ir šis portas nebuvo naujiena. :) )

Vidutinis 1 programos dydis buvo ~1400 eilučių, na o visas 3 užduotis padaryti prisireikė mažiau mėnesio. Pradėjau rugsėjo vidurį, o spalio viduryje pabaigiau. :) )

  1. Marius
    2010.10.23 0:05 | #1

    Ir paslydo tavo C++/CLI variantas destytuvui?

  2. Xamas
    2010.10.23 22:40 | #2

    Jo, su C# negalima, o C++/CLI galima :) .

    Bet ten yra visokių mandrybių, kaip

    System::String^ -> char*

    Ir pan. konvertavimai. Nes Echo clientas/serveris tai buvo stock C kodas, kurį perrašiau į C++ ir ten reikia old-style būdu duomenis paduoti.

    Dar labai, kaip ir sakiau, nesamonė yra su bendravimu per pointerius tarp ‘mutual’ objektų. Šitame dalyke C# easy viskas, o su C++ ne. Ir dar aš naudojau Winsock2, o ne senąjį Winsock – yra daugiau galimybių, veikia galbūt kažkiek patogiau, tačiau vėlgi reikėjo papildomas direktyvas į stdafx.cpp (ar koks ten tas predefined header failas), kišti.

    O šiaip tai už visas užduotis po maksimumą ir dar pagyrė už ‘most advanced work in group’. Kaip supratau dauguma net GUI patingėjo padaryti. Nors, jeigu prisiminsiu savo C++ OOP darbą, su kelio paieškos algoritmais, tai konsolėse matricas ir paveikslėlius braižyti buvo gana užknisantis reikalas ir daug darbo.

    Dar beje, pavargau nemažai kol pasidariau Debug’ą ant C++/CLI. Bajeris tame, kad labai sunku paleisti Win Forms GUI projektą ir konsole projektą sykių, tai teko į atskirą objectą push’inti debug’ą, ir po to per formoje ‘get debug’ mygtuką išsitraukinėt. :D .

    Na ir dar tas dalykas kurį paminėčiau, tai aš savo Echo Serverį (ne klientą) rašiau ne ant C++/CLI, bet ant paprasto ISO C++ (naudojant Code::Blocks) ir jis tą kodą gana nemažai nagrinėjo, ir buvo matęs kad moku įgyvendinti socket’us per paprastą C++.

    Nors, mano nuomone, manau tau užskaitytų ir jeigu abi parašytum per C++/CLI. Tik tiek kad aš nelabai matau prasmės naudoti C++/CLI serveriui, kuriame nereikalingas Joks GUI.

    Ir dar viena pastaba:
    Visual Studio 2010 – netaiso kodo parašyto C++/CLI (t.y. nepabraukia klaidų/neatpažintų f-jų, modulių ir kt.). Reikia įsidėti “VA X” pluginą. Kitaip normaliai programinti C++/CLI ant Visual Studio, aš manau, apskritai neįmanoma.

  1. Atsekčių dar nėra.
*