Standard języka C17/C18

0

Mam takie pytanie, warto jeszcze zaczynać pisać nowe wydajne programy w standardzie języka C18 czyli ISO/IEC 9899:2018? Czy po prostu wybrać inny nowszy język jak Rust? Z tego co czytałem kompilator C++ obsługuje tylko standard w wersji C98 języka C. I piszę tu o wspólnym kompilatorze C++/C nie samego C.
https://blog.ansi.org/2018/11/c-language-standard-iso-iec-9899-2018-c18/
https://webstore.ansi.org/Standards/ISO/ISOIEC98992018?source=blog

0

Warto. C++ a nawet Ansi C to nadal podstawa wielu aplikacji i systemów.

1

Pewnie że warto. Może nie być warto mieszać stylu C i C++ w obrębie jednego pliku, ale w obrębie jednego programu - jak najbardziej. Część plików w czystym C i kompilowane kompilatorem C, część w C++, później bezproblemowe linkowanie. Zupełnie dobrym pomysłem bywa też robienie całości w C bez plusów, jeśli nie wystąpiła potrzeba używania jakiejś biblioteki plusplus-owej (na przykład którejś spośród bibliotek do GUI).

0
Troll anty OOP napisał(a):

Pewnie że warto. Może nie być warto mieszać stylu C i C++ w obrębie jednego pliku, ale w obrębie jednego programu - jak najbardziej. Część plików w czystym C i kompilowane kompilatorem C, część w C++, później bezproblemowe linkowanie. Zupełnie dobrym pomysłem bywa też robienie całości w C bez plusów, jeśli nie wystąpiła potrzeba używania jakiejś biblioteki plusplus-owej (na przykład którejś spośród bibliotek do GUI).

Po prostu Obj-C. Łączy wszystkich w bólu.

0

0

Nie, nie warto zaczynać nowych projektów w C++. . No chyba, że jesteś miłośnikiem umysłowego masochizmu i C++ to twoja pasja. Tylko pamietaj, że w tej zabawie na pewnym etapie może już nie być "safe word".

Co innego samo C. Co do nowych standardów C to większość dużych projektów w C jest dość ciasno związana bardziej z samym kompilatorem i tym co on potrafi niż konkretnymi wersjami standardu C. Trzeba mieć to na uwadze. Kompilatory miewają własne rozszerzenia języka jak i potrafią nie implementować pewnych elementów standardów lub robić to nieco inaczej niż standard opisuje. Czy zaś tworzenie coraz to nowszych wersji standardu C ma sens to temat na odrębną dyskusję. Ja wykazuję w tym temacie sporą dozę sceptycyzmu.

0

Ja bym poprosił o doprecyzowanie - jak dla sportu, to czemu nie, a jak do pracy, to najpierw popatrz w okolicy po ogłoszeniach jaki standard jest podawany w ogłoszeniach. Koniec końców, przypuszczam, że warto umieć też "rozumieć/czytać", tzw. "C z klasami" ;)

2

Standardem C w którym są istotne nowości, jest C11. C17/18, odpowiada na zgłoszone DR (ang. Defect Report) http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm . Nie ma tu żadnych nowych elementów składni czy ważnych zmian w bibliotekach w stosunku do C11.
Dla projektów komercyjnych (embedded, automotive...), ciągle bazowym standardem pozostaje C90 i C99. Choćby z racji tego że np. C99 rozwiązuje klika problemów budowania większego oprogramowania (ilość symboli i ich wielkość dostępną w czasie linkowania).

Z tego co czytałem kompilator C++ obsługuje tylko standard w wersji C98 języka C. I piszę tu o wspólnym kompilatorze C++/C nie samego C.

Niestety to nie jest takie proste. Z C11, C++11 włączył np. model pamięci co pozwoliło doprecyzować działanie mechanizmów wielowątkowych. Co do składni.. w zasadzie prosty skrót myślowy "C++ jest kompatybilnie wstecznie z C", przestaje już coraz bardziej obowiązywać. W szczegółach się różni. Niektóre elementy składni występują tylko w C a wiele w C++. Dość że C++ z całą pewnością, uściśla typowanie (czego C z różnych ważnych a czasem egzotycznych powodów nie czyni w takim stopniu).
Najnowsze drafty standardów znajdziesz tu: http://www.open-std.org/ .
Jeśli masz wybór, wybierasz język jaki pasuje Tobie czy zespołowi. W wielu branżach masz jednak skrępowane ręce. Język to nie wszystko. Są standardy bezpieczeństwa, sposobu wytwarzania oprogramowania, jego certyfikowania.... Tu np. Rust niewiele jeszcze może zdziałać. Nie ma stabilnych (na poziomie aplikacji krytycznych) rozwiązań weryfikacji jakości. Tu królują C i C++. I to bez względu na to jaki jest poziom bezpieczeństwa tych języków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1