Wpis z mikrobloga

C++ to jednak nadjęzyk ( ͡° ͜ʖ ͡°) - w porównaniu do innych popularnych języków wysokiego poziomu ten można przy nich nazwać niskopoziomowym ( ͡° ͜ʖ ͡°). Nad wszystkim nad czym chcesz mieć kontrolę to ją masz, kompilator nie mówi ci jak masz żyć, nie napierdzielasz wywołań metod na 2 ekrany czcionką 12 na szerokość 1920 pikseli... Tu rzucisz wskaźnik, tu wyłuskanie, tu przeładowanie operatora - wszystko takie jakieś przejrzyste, lekkie i proste - w C++ czuję się jak Mickiewicz przy piórze ( ͡° ͜ʖ ͡°) A i kod jakiś taki krótszy się wydaje ( ͡° ͜ʖ ͡°)


#programista15k #cpp #pracbaza #zalesie #programowanie
  • 51
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@NjeMjetek: i te wskaźniki przypadkowo wstawione przez literówkę.
I to szukanie błędu przez 2 tygodnie przeczesując żmudnie każdą linię w projekcie.

Normalnie żyć nie umierać.

P.S. O atrakcjach, jakie mieliśmy przy przesiadaniu się z architektury x86 na x64 to mi się nawet nie chce wspominać ( ͡° ͜ʖ ͡°)
P.S.2 Jak to dobrze, że ten gówno język dla masochistów odchodzi powoli w zapomnienie ( ͡°
  • Odpowiedz
@imateapot: Dobrze skonfigurowane środowisko i wszystkie wskaźniki masz pokolorowane ( ͡° ͜ʖ ͡°)

A z x86->x64 wszystko jest ok dopóki nie używasz funkcji z C (też się o tym kiedyś boleśnie przekonałem ( ͡° ʖ̯ ͡°)

@tell_me_more: "Kto do #!$%@? nędzy pisał ten kod?" - 2 minuty później - "A, to ja..." ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@tell_me_more: Ja staram się korzystać z std bo jest z nimi najmniej problemów (a że muszę zrezygnować z części funkcji pisanych dla C i char* i metod pisanych dla Q/O-Stringów to tworzy nowy problem znany jako "wyważanie otwartych drzwi" ( ͡° ͜ʖ ͡°).

@MamCieNaHita: I tak każdy wie o co chodzi ( ͡° ͜ʖ ͡°) Jeden typ zmiennej tablicowej +
  • Odpowiedz
A z x86->x64 wszystko jest ok dopóki nie używasz funkcji z C (też się o tym kiedyś boleśnie przekonałem ( ͡° ʖ̯ ͡°)


@NjeMjetek: u nas na 2-3 ekranach waliło losowymi błędami na losowych komputerach, których nie dało się zreprodukować. Nie wiem co tam było pod środku, bo za krótko byłem w projekcie, ale decyzja biznesu przepisaliśmy to na C# ( ͡° ͜ʖ ͡
  • Odpowiedz
@NjeMjetek: Ja tylko bardzo nie rozumiem w czym problem, bo jak naprzykład piszesz projekt w Qt to korzystasz tylko z QString (no czasami z QByteArray), a dla zewnętrznych bibliotek to robisz najzwyklejsze na świecie wrapery do API.

@tell_me_more:
Mieszanie różnych stringów w jednym kodzie jest błędem Architektury projektu.
  • Odpowiedz
@lionbest: chcesz wrapować API każdej biblioteki, która używa stringów, czy wrapować stringa i tworzyć 10 klasę do obsługi stringów z operatorami na każdy inny typ?

Żadna z tych opcji mi się nie uśmiecha, bo wrappery to też kod, i też trzeba go utrzymywać. Widziałem błędy spowodowane tym, że ktoś był sprytny, i zrobił operatory castowania między typami używanymi w aplikacji. Tylko zapomniał o kilku kombinacjach, i szły "na około", co
  • Odpowiedz
Nawet standardowa biblioteka C++ popełnia ten błąd architektury i używa zarówno std::string, jak i const char*.


@tell_me_more: w którym miejscu to powoduje problemy? widziałem takie coś tylko w jedną stronę i wystarczy użyć std::string::c_str().
  • Odpowiedz
nie napierdzielasz wywołań metod na 2 ekrany czcionką 12 na szerokość 1920 pikseli...


@NjeMjetek: wat? Głównie w cpp spotkałem się z takimi potworkami, gdzie typ zmiennej był na długość 100 znaków (bo pseudo generyki vel. template, dodatkowo milion namespaceów). I tak teraz macie dobrze, bo w cpp11 chyba auto wprowadzili, tak to trzeba było #!$%@?ć typ, a potem przy definicji jeszcze raz ten typ...

wszystko takie jakieś przejrzyste, lekkie i
  • Odpowiedz
@MamCieNaHita: Pisze w C# (jak i również uważam C# > Java), tam mamy var od dawien dawna, tak samo jak ludzkie generyki, które są generykami, w przeciwieństwie do template, które tylko udają. Tak, wiem, taka specyfika języka, no ale cóż.

Chodzi mi o lekkość używania uniqueptr, sharedptr, i tak dalej. Rozumiem, że jak ktoś w tym siedzi to ogarnia mniej więcej który kiedy i czego nie wolno, ale
  • Odpowiedz