Wpis z mikrobloga

Dzień dobry Wykopowicze! ( ͡º ͜ʖ͡º)

Czy wiecie, że wczoraj wieczorem pojawił się nowy odcinek kursu "Nowoczesny C++ od podstaw" od Wojtka Razika? ( ͡ ͜ʖ ͡)

Dzisiaj Wojtek porusza temat pętli, sprawia że groźne komentarze stają się jeszcze groźniejsze i gra w napisaną przez siebie (prostą) grę! ()

https://www.youtube.com/watch?v=7oA5cZqzEnE ()

Miłego oglądania! ʕʔ

CppPolska - Dzień dobry Wykopowicze! ( ͡º ͜ʖ͡º)

Czy wiecie, że wczoraj wieczorem p...

źródło: comment_Ik94R7pud5NIusZFaoeLP0FaG0dah6T6.jpg

Pobierz
  • 44
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@CppPolska: Dobra ja się teraz przysram do czegoś. Skąd taka nienawiść do nagłówka random?
Poza tym nie potraficie nawet tego poprawnie używać. Tworzenie lokalnie generatora do pobrania co najwyżej 32 bitów entropii nie ma kompletnie sensu i równie dobrze można by przekazać tam referencje do std::random_device.
Z powodzeniem przestarzałe std::rand() można zastąpić std::random_device{}(), jako że standardowy std::random_device jest już dużo lepiej implementowany. Dalej, jeżeli chcielibyśmy uzyskać jakkolwiek określoną wydajność
  • Odpowiedz
@lionbest: Dzięki, takie komentarze to lubię! Przyznam szczerze, że jest to po prostu kopia ze stackoverflow, nie chciałem się rozwodzić bo z punktu widzenia kursu to i tak nieistotny kawałek kodu.

Zrobię update materiałów, upraszczając tę funkcję. Dzięki!
  • Odpowiedz
@CppPolska: Czytałem dawno temu, że C++ jest językiem znienawidzonym przez "starych" (zatwardziałych) programistów, którzy wciąż wolą ANSI C czy nawet pisać w ASM (i pewnie nadal by to robili, gdyby nie różnorodność platform), ponieważ zbyt wiele rzeczy zostało tam uproszczonych w stosunku do oryginalnego C. Zresztą sam twórca Linuxa - Linus Torvalds wspomniał, że jest... delikatnie mówiąc "uprzedzony" w stosunku do C++ (tutaj oraz tutaj tłumaczenie dlatego tak sądził
  • Odpowiedz
@Seif: Środowisko C++ nie szanuje Linusa xd. Rzeczywiście, jest grupa "zatwardziałych" leśnych dziadków, którzy hejtują C++, ale świat embedded zmierza w kierunku linux + C++. Bare metalowych aplikacji w niskopoziomowym C jest coraz mniej. Warto wspomnieć, że nawet jeśli mamy już tego C++ na mikroprocek, to bardzo często możemy zapomnieć o bibliotece standardowej...
  • Odpowiedz
Termin "Nowoczesny C++" jest po to, żeby odróżnić od starego C++, pełnego wkaźników, tablic i innych rzeczy, które nie są już potrzebne


@b33zon: Ej no... nie zgodzę się, że tablice nie są potrzebne. To że w C++ można już swobodnie używać kolekcji takich jak wektor i iterować po nich przyjemnie jak w pythonie nie oznacza że tablice są passe...

Potem przychodzi do mnie studenciak nabity abstrakcjami z YTbowych poradników i do prostej
  • Odpowiedz
Środowisko C++ nie szanuje Linusa xd. Rzeczywiście, jest grupa "zatwardziałych" leśnych dziadków, którzy hejtują C++, ale świat embedded zmierza w kierunku linux + C++. Bare metalowych aplikacji w niskopoziomowym C jest coraz mniej. Warto wspomnieć, że nawet jeśli mamy już tego C++ na mikroprocek, to bardzo często możemy zapomnieć o bibliotece standardowej...


@b33zon: Przykładem jest Arduino. C++ przykrojony do mikrych zasobów. Nie ma tam za dużo tego C++ ale klasy
  • Odpowiedz
@kwanty: Arduino to nie jest najlepszy przykład, przestarzały kompilator i brak nowych standardów. Lepiej mówić o Armach w trybie thumb2, kompilowane najnowszym clangiem, da się. Szkoda, że tak mało SDK to wspiera.
  • Odpowiedz
@kwanty:

Ej no... nie zgodzę się, że tablice nie są potrzebne. To że w C++ można już swobodnie używać kolekcji takich jak wektor i iterować po nich przyjemnie jak w pythonie nie oznacza że tablice są passe...

Potem przychodzi do mnie studenciak nabity abstrakcjami z YTbowych poradników i do prostej real-timowej aplikacji potrzebuje superkomputera bo mu nie wyrabia... I nie rozumie dlaczego push_back()* w pętli przetwarzającej dane to jest
  • Odpowiedz
Dziś wiele osób tworzy w językach "ultra wygodnych", nie przejmując się niczym. Przez to proste aplikacje potrafią mulić, bo są napisane w JavaScript. Przez bycie wygodnym ludzie zapominają, w jaki sposób działa komputer i że można zrobić coś działającego znacznie szybciej, korzystając z innego narzędzia. Potem ktoś na apkę pisaną w JSie narzuci swoją abstrakcję (nie pozwól Boże, by wrzucić do tego przeglądarkę/electrona), napisaną w kolejnym wolnym języku, i nagle prosta apka
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@kwanty: a o std::array słyszałeś?

Własności tablic C opakowane w piękny typ/interfejs.

Kompilowany do tego samego co stare/prymitywne tablice. Bez dynamicznych alokacji.

Ogólnie piękno typowania można poznać dzięki TypeScriptowi, a dokładniej jak potrafi "przetransformować" język.
  • Odpowiedz
@KorwinizacjaPrzelyku:

Sorry, że Ci ziomeczku tak dosadnie napiszę, ale cały ten post można wyrzucić do kosza, bo wystarczy wywołać na początku std::vector::reserve, podając na ile elementów zarezerwować pamięć. Dzięki temu wcale nie musisz używać tablic, tylko możesz dalej używać wektora, bo żadnych realokacji, czy niepotrzebnego kopiowania danych nie będzie. I spokojnie możesz robić pushback w pętli.

No i nie mieszaj więcej w głowach
kwanty - @KorwinizacjaPrzelyku: 
 Sorry, że Ci ziomeczku tak dosadnie napiszę, ale ca...

źródło: comment_shoAEcMq0rBZtQTLRzaDROoDA3fwfbyU.jpg

Pobierz
  • Odpowiedz
@kwanty: Szanuję, że Ci sie chciało przygotować taki przykład, ale wyciągnąłeś złe wnioski, bo źle odcyfrowałeś to, co się dzieje w assemblerze. Piszesz, że push_back nie został zinline'owany przez kompilator - fałsz, właśnie został - w linijce 161, do pojedynczej instrukcji mov! Ten call, o którym piszesz, w linijce 166, to realokacja wektora, która w tym konkretnym przypadku się nie wywoła, bo zrobiłeś wcześniej reserve na 100 elementów.

BTW, Twoje
  • Odpowiedz