CppNews #51 [31.12.2018 - 06.01.2019]
CppNews #51 [31.12.2018 - 06.01.2019]
Witamy w pierwszym odcinku newsów w tym roku! Bez wątpienia rok 2018 był bardzo ważny dla języka C++, ostatnie spotkania komisji standaryzacyjnej pokazały jak bardzo język się zmieni w wersji C++20. Część z tych zmian w ostatnim tygodniu spowodowała burzliwą dyskusję odnośnie przyszłości C++, nastąpił wysyp postów krytykujących poziom złożoności języka, czytelność kodu, możliwości debugowania. Wszystko zaczęło się od postu Erica Nieblera, stąd nadaliśmy nazwę “Niebler Gate”.
Niebler Gate
Post, który wowałał lawinę. Eric jest autorem biblioteki Ranges (dzięki Eric, kawał dobrej roboty!). Post wzbudził kontrowersję, ze względu na małą czytelność kodu (warto przeczytać wątek na reddicie, twitterze lub hacker news)
ericniebler.com/2018/12/05/standard-ranges/Jason Meisel odniósł się do tego postu, pokazał między innymi jak można poprawić kod Erica wykorzystując korutyny (ang. coroutines).
medium.com/@jasonmeisel/ranges-code-quality-and-the-future-of-c-99adc6199608Aras Pranckevičius napisał bardzo długi artykuł, krytykując obecny kierunek, w którym zmierza C++ (tutaj twitter oraz reddit - warto przeczytać dyskusje)
aras-p.info/blog/2018/12/28/Modern-C-Lamentations/Sean Parent w odpowiedzi na wpis Arasa, bardziej jego post dotyczy ogólnych przemyśleń:
sean-parent.stlab.cc/2018/12/30/cpp-ruminations.html
W poście Sean napisał, że “wstydem” jest nieznać historii nazwy funkcji “iota” - ze względu na bardzo kontrowersyjne brzmienie tego zdania i falę hejtu - w następnym poście wyjaśnił co dokładnie miał na myśli:
https://sean-parent.stlab.cc/2019/01/04/iota.htmlKolejna odpowiedź - tym razem od Bena Deane’a, na temat ogólnych problemów które występują w branży gier i w jaki sposób można je zaadresować:
elbeno.com/blog/?p=1598Mathieu Ropert również dorzucił swoje trzy grosze, mocno broniąc obecnego kierunku, w jakim zmierza C++:
mropert.github.io/2019/01/02/gamedev_intro_to_modern_cpp/
Pozostałe
Powyższe dyskusje ruszyły “falę nienawiści” - stąd kolejny artykuł krytykujący C++, tym razem sposób inicjalizacji zmiennych:
mikelui.io/2019/01/03/seriously-bonkers.htmlNastępny krytyczny post, stawiający bardzo wiele otwartych pytań na temat C++ (typu: “Czy C++ ewoluuje za szybko? Czy za wolno?”, “Co powinno być w bilbiotece standardowej?”)
cor3ntin.github.io/posts/what_is_cpp/Wróćmy do czegoś optymistycznego. Świetne podsumowanie stanu języka na rok 2018, wszystkie najważniejsze wydarzenia zebrane w jednym miejscu, linki do proposali i wiele więcej:
[bfilipek.com/2018/12/c-at-end-of-2018.html] (https://www.bfilipek.com/2018/12/c-at-end-of-2018.html)Jonathan Boccara znalazł bardzo ciekawy sposób, jak nie zapomnieć o komentarzach TODO:
fluentcpp.com/2019/01/01/todo_before-clean-codebase-2019/Jeśli jeszcze nie wiecie jak działają concepty - tutaj dwie części wprowadzenia do nich:
feabhas.com/2018/12/a-brief-introduction-to-concepts-part-1/
feabhas.com/2018/12/a-brief-introduction-to-concepts-part-2/Kolejny post od Jonathana - wyjaśnia dlaczego programowanie funkcyjne nie jest złotym środkiem, w swoim przykładzie zwraca uwagę, że nie da się wymusić poprawnego designu:
fluentcpp.com/2019/01/04/functional-programming-is-not-a-silver-bullet/Arthur O’Dwyer wyjaśnia czym tak naprawdę jest słowo “const”:
quuxplusone.github.io/blog/2019/01/03/const-is-a-contract/Nowy odcinek C++ Weekly, Jason Turner pokazuje jak pobrać przydatne narzędzia dla C++ przy użyciu pythonowego pipa:
youtube.com/watch?v=ZsKdRtQM7EANowy odcinek CppCast - wywiad z Isabellą Muerte, o jej pierwszy spotkaniu komisji standaryzacyjnej i o “Merged Modules”:
cppcast.com/2019/01/isabella-muerte/Wpis od Rainera Grimma - pokazuje wpisy z C++ Core Guidelines dotyczący variadic template’ów:
modernescpp.com/index.php/c-core-guidelines-rules-for-variadic-templatesJeśli nie wiecie czym są allocatory (“ten drugi argument w std::vector”), poniższy post doskonale wam to wyjaśni:
medium.com/@gasparyan1995/what-is-an-allocator-c8df15a93ed
Bonus: Wiedzieliście, że jest narzędzie lepsze od doxygena? Generuje dużo ładniejszy output z xmli wyprodukowanych przez doxygena:
blog.magnum.graphics/meta/improved-doxygen-documentation-and-search/