Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rant... C++ 9999x

[es] :: Advocacy :: Rant... C++ 9999x

[ Pregleda: 5058 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
88.128.80.*



+7169 Profil

icon Rant... C++ 9999x05.02.2015. u 21:34 - pre 111 meseci
Dakle, sredjujem danas malo masinu, brisem matore stvari i tako... odlucim da uklonim i Visual Studio 2012, rekoh - imam VS2013, a sve svoje hobi projekte sam prebacio na novi VS.

I tako veceras krenem da rebuildujem projekat kad ono... PAF, milion gresaka.

Ubrzo sam shvatio fatalnu gresku koju sam napravio: zbog predhodnog Microsoft idiotizma sa nasilnom eliminacijom Windows XP kompatibilnosti i konsekventni fijasko koji je bio neminovan, kao "Platform Toolset" sam drzao vs110_xp iliti Visual Studio 2012 - XP kompajler.

Preskocimo na trenutak kosmicku silinu gluposti da covek mora da menja podesavanja kako bi mu program radio na jednoj od najzastupljenijih Windows verzija, takva vrsta secenja one stvari je ekskluziva za Redmond, ono sto je bitno za ovu pricu je da je to razlog zbog koga je moj projekat ostao na VS2012 kompajleru i zbog toga nisam ranije video greske.

A greske su?

Pa nekih milion gresaka u 3rd party C++ kodu (neke neuroscience biblioteke) vezanih za kod koji je radio u proteklih par godina bez ikakve frke.

Posle par minuta je postalo jasno u cemu je problem, u pitanju su neke C++ 11x promene vezane za deleted functions.

Greske su ovog tipa: http://stackoverflow.com/quest...ence-a-deleted-function-vs2013

OK, kapiram ja - cela stvar ima smisla, ali ne postoji opcija da se f*ckin sitnicenje kompajlera iskljuci!

Ne, u 2015... kod Microsoft C++ kompajlera nema nazad bato, il' si C++ 11x ili si nista.

WTF?

Kapiram ja da sam old fart, programiranje mi je odavno ostalo samo hobi... kontam da novi klinci razbijaju i bacaju C++11 rime ako ih probudis u sred noci i tako to... ali brate mili, imas stotine hiljada linija 3rd party koda, koji ti baca hiljadu gresaka i sta onda? Busi i kopaj 3 dana i menjaj kod, kako bi bio po kanonu kako je naredio C++ komitet.

Mislim da je to moglo ipak i sa nekom opcijom za gasenje. Mislim, nemam frku da promenim moj kod... zapravo, moj kod je old-school, nema taj C++ kung-fu tj. gomilu necega sto matorim ljudima izgledaju kao hieroglifi koji mozda puknu u sledecoj reviziji standarda, pa tako da moj kod nije ni dostojan pomena i kompajler ga guta bez frke kao i neki matori C, ali sta da rade ljudi koji imaju milione linija.. tudjeg koda koji su tu i koji su se kompajlirali do sad?

Kazu ljudi - prebaci kompajler na VS2012... e do mojeg, sad moram da skidam ponovo par GB i to preko javnog WiFija.

Sto je najgore - sve ovo je problem i ako je glavni kompajler Intel C++ - jerbo i njemu treba "base toolset" a sa njim i glavobolja.

Nisam mogao da sanjam da cu ovo reci... ali, brate, GCC razbija kad mozes ko covek da iskljucis poslednju modu jesen-zima C++a, stavis -std <sta_hoces>, ne znam koji je moj Microsoftu - mozda zele da ljudi batale C++ i predju na najnoviju reinkarnaciju Visual Basic-a.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
82.208.242.*



+2789 Profil

icon Re: Rant... C++ 9999x05.02.2015. u 22:24 - pre 111 meseci
Nisam mogao da sanjam da cu ovo reci... ali, brate, GCC razbija kad mozes ko covek da iskljucis poslednju modu jesen-zima C++a, stavis -std <sta_hoces>, ne znam koji je moj Microsoftu - mozda zele da ljudi batale C++ i predju na najnoviju reinkarnaciju Visual Basic-a.[/quote]
Baš me zanima šta ljudi imaju protiv GCC-a.

OK, neki kažu da im za određene namene fale biblioteke. Šta još?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.web.vodafone.de.



+7169 Profil

icon Re: Rant... C++ 9999x05.02.2015. u 22:40 - pre 111 meseci
Ma nemam ja nista protiv GCC-a - samo mi nikada nije bio u "uzem izboru", verovatno zbog toga sto sam prvenstveno koristio Windows.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.mbb.telenor.rs.



+9 Profil

icon Re: Rant... C++ 9999x05.02.2015. u 23:28 - pre 111 meseci
I opet, svi imaju jedno zajedničko, a to je očajna dijagnostika. Clang je verovatno najviše odmakao po tom pitanju.
 
Odgovor na temu

tdusko

Član broj: 93380
Poruke: 1701
217.9.102.*



+768 Profil

icon Re: Rant... C++ 9999x06.02.2015. u 09:22 - pre 111 meseci
Citat:
Ivan Dimkovic
Nisam mogao da sanjam da cu ovo reci... ali, brate, GCC razbija kad mozes ko covek da iskljucis poslednju modu jesen-zima C++a, stavis -std <sta_hoces>, ne znam koji je moj Microsoftu - mozda zele da ljudi batale C++ i predju na najnoviju reinkarnaciju Visual Basic-a.
Ma kakav VB, stvarno nisi trendy. Ti u stvari trebas tvoj projekat da kompajliras u javascript Hint emscripten
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
82.208.242.*



+2789 Profil

icon Re: Rant... C++ 9999x06.02.2015. u 15:14 - pre 111 meseci
Citat:
Ivan Dimkovic:
Ma nemam ja nista protiv GCC-a - samo mi nikada nije bio u "uzem izboru", verovatno zbog toga sto sam prvenstveno koristio Windows.

Hint: MinGW
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
88.128.80.*



+7169 Profil

icon Re: Rant... C++ 9999x06.02.2015. u 15:27 - pre 111 meseci
Citat:
Goran Arandjelovic:
I opet, svi imaju jedno zajedničko, a to je očajna dijagnostika. Clang je verovatno najviše odmakao po tom pitanju.


Dijagnostika? Mislim da je tu Intel na top listi: molis se bogu da ti kompajler ne izbaci "internal error: backend signals" ili jos kraci i bolji "ipo: error" i ispusti dusu.

Sansa da ti ovo izleti sa iole komplikovanijim kodom nije mala, ako je ukljucena interproceduralna optimizacija.

Da ne gresim dusu, najnovija verzija (XE 2015) je jos i najmanje losa po tom pitanju - kad se setim pre nekoliko godina, ukljucivanje ipo optimizacije je bilo slicno ubacivanja zetona u slot masinu u Vegasu.

Mada i XE 2015 ima svoje nove bagove - najbolji koji sam do sada otkrio je zalba linkera da neki simbol nije definisan u 32-bitnom buildu. A ono, funkcija tu gde i uvek. Resenje? Za 32-bitnu kompilaciju forsiraj stariju verziju kompajlera.

Ili mozda hit kada Vtune profajler ostane bez memorije, zato sto im je neki kolektor 32-bitni proces koji ima 2 GB ogranicenje.

Onda kako se zauzece memorije priblizava 2 GB, nesrecnik pocinje da radi neko svoje interno swapovanje i uspori do te mere da samo mozes da ga ubijes.

To su resili sa najnovijim VTune-om - ne znam da li su presli na komplet 64-bitne procese (sumnjam) ili su optimizovali svoju kolekciju podataka / memorijski menadzment.

@Nedeljko, znam za mingw ali ga nikad nisam koristio duze od par sati (ako je bas moralo). Celo to okruzenje mi je oduvek delovalo kao budzeraj - pocevsi od onih hibridnih staza koje su neki frankenstajn Windows fajl sistema i slovnih oznaka diskova i *Nix standarda. Radije bih upalio virtuelnu masinu sa pravin *Nixom nego sto bih se zezao sa tim. Pogotovu danas kada gcc nije jedino besplatno resenje.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.mbb.telenor.rs.



+9 Profil

icon Re: Rant... C++ 9999x06.02.2015. u 21:22 - pre 111 meseci
@Ivan
Trenutno zbog posla moram najviše da koristim VC++ i ne mali broj puta samo dobio "internal compiler error". Na svojoj mašini sam recimo imao Update 4 instaliran, a na build mašini je bio Upd 3. Kod mene sve fercera, a na build mašini puca. A usput mi je dosadilo i da gledam pogrešno generisan objektni kod za neke banalne konstrukcije poput lambdi, inicijalizacionih listi, itd. Linker je tek posebna priča, ali da frontend toliko zakucava u 2014/15. godini je smešno.

Mislim, verujem da ti C++98 završava posao, ali sav taj novi kung-fu (koliko god mi se neke stvari ne sviđaju) ima smisla kad pišeš generičke biblioteke. Tu je MS najbolji u pravljenju kupus salate jer nit imaju čitav C++11, a usput imaju 10% C++14, a i sve pre toga su zapišali svojim jezičkim ekstenzijama koje moraju da budu uključene ako hoćeš da koristiš WinAPI. U zaglavljima često imam #ifdef _MSC_VER. Ko malo pipne TMP vrlo brzo krene da čupa kosu.

Od svega što sam video, Clang ima ubedljivo najbolju statičku analizu.

A sve ovo što si pomenuo stoji, "legacy" kod i povezivanje s istim je najviše stradalo. I Clang i gcc mogu to da isključe po potrebi, a MS je s druge strane to izostavio s namerom, kako bi Herb Sutter-ovi slajdovi o novotarijama u VC++-u imali smisa i da bi opet na mala vrata uveli vendor lock-in.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
82.208.242.*



+2789 Profil

icon Re: Rant... C++ 9999x07.02.2015. u 08:31 - pre 111 meseci
Citat:
Ivan Dimkovic:
@Nedeljko, znam za mingw ali ga nikad nisam koristio duze od par sati (ako je bas moralo). Celo to okruzenje mi je oduvek delovalo kao budzeraj - pocevsi od onih hibridnih staza koje su neki frankenstajn Windows fajl sistema i slovnih oznaka diskova i *Nix standarda. Radije bih upalio virtuelnu masinu sa pravin *Nixom nego sto bih se zezao sa tim. Pogotovu danas kada gcc nije jedino besplatno resenje.

Nemam pojma o čemu pišeš. Kod mene ovo radi:
Code (cpp):

#include <cstdlib>
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    const char path[] = "c:/users/nedjo/tmp.txt";
    const char message[] = "Hello, world!";
    ofstream out(path);

    out << message << endl;

    ifstream in(path);
    string str;

    getline(in, str);
    cout << str << endl;

    return EXIT_SUCCESS;
}
 

Sva razlika je u tome da umesto obrnute kose crte koristiš kosu crtu, a osim toga, napiši
Code (cpp):

    const char path[] = "c:\\users\\nedjo\\tmp.txt";
 

i radiće i to.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
82.208.242.*



+2789 Profil

icon Re: Rant... C++ 9999x07.02.2015. u 08:44 - pre 111 meseci
Štaviše, getcwd() vraća putanju po MS standardima - ispisao je "C:\Users\nedjo\Projects\Test".
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
*.openskytelcom.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Rant... C++ 9999x07.02.2015. u 18:00 - pre 111 meseci
Prilično sam siguran da Ivan misli na cygwin konzolu:

Code:
Burgos@WORKSTATION ~
$ pwd
/cygdrive/c/Users/Burgos

 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
82.208.242.*



+2789 Profil

icon Re: Rant... C++ 9999x07.02.2015. u 23:05 - pre 111 meseci
Govori se o GCC-u u okviru MinGW-a.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
*.155.131.74.choopa.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Rant... C++ 9999x08.02.2015. u 10:43 - pre 111 meseci
Opet, siguran sam da Ivan priča o tome, tj. da je pobrkao Cygwin sa MinGW.

Rečenica

Citat:
pocevsi od onih hibridnih staza koje su neki frankenstajn Windows fajl sistema i slovnih oznaka diskova i *Nix standarda.


mi je odmah uključila lampicu za cygwin.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
145.15.244.*



+7169 Profil

icon Re: Rant... C++ 9999x08.02.2015. u 16:59 - pre 111 meseci
@Nedeljko, @Burgos,

Sorry, pobrkao sam - mislio sam na Cygwin (i njegove "hibridne" staze), ne na mingw.


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

[es] :: Advocacy :: Rant... C++ 9999x

[ Pregleda: 5058 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.