-
Data: 2023-05-18 16:40:43
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 18/05/2023 16:16, Dawid Rutkowski wrote:
>>> Może wystarczą następne kroki - ale one są już o wiele, wiele trudniejsze.
>> A co jeszcze musisz zmienić *zanim* zaczniesz używać std::size, poza "++"?
>> Możesz podać listę tych kroków?
> Więcej nie ma, poza przekroczeniem Rubikonu - takim, że przestajesz
> powoli mieć możliwość odwrotu do C, a możesz nie mieć tyle fartu co Juliusz Cezar.
Po co chcesz wracać do C? Możesz podać 1 racjonalny powód?
> To ja zapytam z drugiej strony - co rozwiąże używanie TYLKO std::size, poza bugami
na sizeof?
Dokładnie to.
Jest masa innych rozwiązań innych problemów. Każdy znajdzie coś dla siebie.
Mój ulubuiony z gatunku "ło, to się tak da?", który jest z drugiej
strony, z kretaywnego wykorzystania C++:
Masz programistę C, ideologa, który prawie całe życie pisał miganie
diodami w 8051.
W efekcie czego masz taki kod:
#define FOO_FLAG 1<<6
#define BAR_FLAG 1<<3
#define OUT_FLAG 1<<2
i funkcję:
void setFlags( int flags, int extra_flags );
No i które flags przyjmują jakie define?
To przykład z typowego systemu embedded.
Czy wiesz, że dzięki magii C++ możesz napisać funkcję setFlags, bez
śladu narzutu w runtime, która uniemozliwi podanie nieprawidłwej flagi
do zmiennej i bedzie to wykrywane na etapie kompilacji?
Pomyłka używania flag z powodu używania idotycznych #define to znaczący
problem w embedded i możesz go elegancko rozwiązać w C++. Wymaga to
nieco kodu o dość skomplikowanej budowie, ale dla użytkownika końcowego
jest to trywialne w użyciu.
To jest raz napisane za darmo. Nagle niwelujesz masę problemów w różnych
miejscach.
Tego nie da się zrobic w C, chyba że będziesz używał jakiegoś
postprocessingu C.
> Ogólnie to średnio inteligentny matoł, który przesiedział trochę dupogodzin nad
bugiem
> na sizeof (szczególnie na embedded, bo pod OS pierwsze użycie gdb to naprawdę jest
satori),
> zapamięta to sobie na całe życie - inaczej się na programistę i tak nie nadaje,
Tutaj wlaśnie się różnimy. Dla mnie to siedzenie nad debuggerem razy
ilość trywialnych problemów załatwionych w C++ to koszta, które nie uczą
niczego innego, jak tylko masy iditycznych zakazów. To przypomina naukę
za pomocą bata. Może i skuteczna, ale koszty ponosi pracodawca, a
pracownik ma poczucie orania po polu pełnym min.
> A z trzeciej strony pozwolenie na C++ to otwarcie nowej Puszki Pandora.
Możesz podać przykład, co okromnego stanie się po pozwoleniu używania
C++ czego nie da się spierniczyć w C?
> Tu dopiero możesz się dowiedzieć, co to jest prawdziwy bug, a nie jakiś tam sizeof.
Nie, to najzwyczajniej nie prawda. Służę własną statystyką moją i
kilkudziesięciu ludzi jakich znam. Koszt szukania błedu w dużym systemie
w C jest dramatycznie droższy, od systemu w C++. Głównie z powodu
znacząco wyższej kultury pisania, opierajacej się o unit testy,
abstrakcje itp detale, których w C nie ma, a jak są, to są grubym
workaroundem zazwyczaj wynajdującym C++ za pomocą makr i asemblera.
Pracuję w C++ w ogromnym oprogramowaniu. Oprogramowanie to zawiera
również legacy C. Nie, nie chciałbyś tam debugować.
>>> Zaś "zwyczajowo" - to samo raczej nic nie poprawi. Popsuć może.
>> A co może popsuć?
> Jak zwykle - "jeśli działa, nie naprawiaj". Sprawdzić, czy nie kobieta (poza
Kopernik, Einstein i Curie-Skłodowska ;).
Czyli czysta ideologia. Masz za darmo siekiere, ale walenie patykiem o
drzewo też działa, wiec po co zmieniać.
Następne wpisy z tego wątku
- 18.05.23 16:54 Dawid Rutkowski
- 18.05.23 17:29 Marek
- 18.05.23 17:35 heby
- 18.05.23 17:37 heby
- 18.05.23 18:11 Marek
- 18.05.23 18:16 Marek
- 18.05.23 18:18 Marek
- 18.05.23 18:19 heby
- 18.05.23 18:29 heby
- 18.05.23 18:30 heby
- 18.05.23 18:44 Marek
- 18.05.23 18:46 Marek
- 18.05.23 18:47 Marek
- 18.05.23 18:53 heby
- 18.05.23 18:57 heby
Najnowsze wątki z tej grupy
- SFP, 10G, simplex sc/apc
- [słabe wiatry powodują - przyp. JMJ] Energetyczny paraliż w Niemczech
- NxtPaper
- Programiści nie przestają zadziwiać świat
- Długi kabel zasilający a na końcu procek
- Dlaczego nam nie idzie
- Co czujnik to inna temperatura
- Jak naprawić pilota
- Dlaczego TMP wer. 2.0 nie może być sprzedawany jako patyk USB lub karta PCIe 1x?!?
- produkcja w UE
- Pamięć SRAM nie działa z Z80182
- plyta indukcyjna - naprawa
- założyłem kamerę
- syrenki alarmów
- Czym obecnie programuje się EPROM-y?
Najnowsze wątki
- 2025-09-17 Ukraińcy uważają polski sys. antydronowy za najlepszy na Świecie, a rząd w III Rzeczy (pospolitej) woli sys. niemiecki
- 2025-09-17 Ukraińcy uważają polski sys. antydronowy za najlepszy na Świecie, a rząd w III Rzeczy (pospolitej) woli sys. niemiecki
- 2025-09-17 Warszawa => Dyrektor pionu IT <=
- 2025-09-17 Rzeszów => International Freight Forwarder <=
- 2025-09-16 China => Production Coordinator / Representant Product Dev <=
- 2025-09-16 Warszawa => Project Manager (AI and innovation) <=
- 2025-09-15 "Jeden telefon z Waszyngtonu i nasze samoloty nie wystartują" - czyli to co każdy koder wie
- 2025-09-15 UE chce uruchomić SI "Chat Control" na kompach wszystkich euroPejczyków
- 2025-09-15 Sejm odrzucił zakaz idelogii banderyzmu
- 2025-09-15 Nieprawidłowe parkowanie
- 2025-09-15 Poznań => Konsultant SAP HCM <=
- 2025-09-15 Warszawa => Specjalista rekrutacji IT <=
- 2025-09-15 Warszawa => International Freight Forwarder <=
- 2025-09-15 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-09-15 Warszawa => Engineering Manager (doświadczenie w branży lotniczej lu