-
Data: 2019-01-04 08:15:53
Temat: Re: Uwagi odnośnie książki Stroustrupa
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> > I co w tym zabawnego?
>
> Dla programistów C++ pewnie nic.
Ogólnie, dla programistów porzebujących narzędzi odzwierciedlających sposób działania
komputera.
> Co w takim razie wnoszą referencje w C++? (oprócz niepotrzebnej komplikacji)
Uwaga: dopiero co usiłowałeś udowodnić, że operator przypisania jest niepotrzebny.
Uwaga na dwie różne rzeczy. Referencje same w sobie to aliasy i służą właśnie do
tego, żeby upraszczać zapis (o tym pisał AK) a nie żeby cokolwiek komplikować. Drugie
zastosowanie referencji to przekazywanie argumentów bez konieczności ich kopiowania.
Służą wydajności i są czytelniejsze, niż wskaźniki a pozwalają nie kombinować z
dodatkowymi "trybami" czy innymi "modami" parametrów podprogramów.
> Co takiego staje się możliwe dzięki nim, co nie było możliwe bez nich?
Pisanie bardziej czytelnego kodu. Widać to bardzo dobrze gdy porówna się API
bibliotek mających osobne wersje dla C i C++.
> > W tym wypadku wartością dodaną jest możliwość korzystania z jakieś ograniczonej
formy lambdy, bez konieczności posiadania garbage collectora.
>
> Pierwszy kompilator języka Scheme, ORBIT, dawał ograniczoną
> formę lambdy i nie potrzebował garbage collectora.
W jaki sposób realizował upward-closure?
> > Inaczej - istnieje pewna klasa projektów, w których nikt[*] nie ma lepszej
oferty.
>
> Jeśli pominiemy takie języki jak np. Rust.
Ciekawe:
https://doc.rust-lang.org/1.1.0/book/closures.html
"So if we returned this closure, the function call would be over, the stack frame
would go away, and our closure is capturing an environment of garbage memory!"
Jest podane rozwiązanie tego problemu, ale nie wiem, czy ten mechanizm jest
stosowalny tak samo wygodnie dla różnych przypadków, które można sobie wyobrazić. W
C++ po prostu dano użytkownikom narzędzie i obowiązek do samodzielnego rozstrzygania
takich problemów. W tym przypadku problem nie jest trudny do rozstrzygnięcia i nie
wiem, czy chcę mieć aż tak dużą dodatkową komplikację na poziomie języka, żeby ten
problem rozwiązać.
Tzn. potrafię nie mieć problemu z wiszącymi referencjami w C++ przy składni
prostszej, niż oferuje Rust, więc w tym konkretnym przypadku Rust jest dla mnie
niepotrzebnym kosztem.
Rust jest ciekawym pomysłem (ogólnie w aspekcie zarządzania czasem życia obiektów),
ale potrzeba jeszcze czasu, żeby ocenić jego przydatność w praktyce.
Pod pojęciem praktyki rozumiem np. system, dla którego istnieje kompilator C++ a dla
którego nie istnieje kompilator Rust. Praktyka to również dostępne narzędzia
pomocnicze w rodzaju analizatorów statycznych. Być może Rust zyska sympatię
użytkowników i stanie się popularny, nie potrafię tego jeszcze rozstrzygnąć.
> Standard GNU C
To tak jakbyś napisał "Standard Visual C".
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 04.01.19 09:53 g...@g...com
- 07.01.19 07:59 Maciej Sobczak
- 07.01.19 10:34 g...@g...com
- 08.01.19 09:46 Maciej Sobczak
- 08.01.19 09:51 AK
- 08.01.19 10:05 AK
- 08.01.19 10:51 Maciej Sobczak
- 08.01.19 11:15 g...@g...com
- 08.01.19 13:33 AK
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-04-27 Warszawa => Inżynier DevOps (projekt JP) <=
- 2024-04-27 Warszawa => Senior Account Manager (on-site) <=
- 2024-04-27 Wrocław => Dyrektor Sprzedaży (branża usług/produktów IT) <=
- 2024-04-27 Warszawa => Sales Representative for Outsourcing Services <=
- 2024-04-27 Chrzanów => Administrator i wdrożeniowiec Lotus Notes/Domino <=
- 2024-04-27 Ja pierdolę...
- 2024-04-27 Ryby i kawitacja
- 2024-04-27 Zabrze => Junior HelpDesk <=
- 2024-04-27 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2024-04-27 Bażanowice => Inżynier Industrializacji - Elektronik <=
- 2024-04-27 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-04-27 Zadaszenie tarasu, a wymagany spadek
- 2024-04-27 Warszawa => Senior Account Manager <=
- 2024-04-27 Wrocław => Head of Sales (IT services/products field) <=
- 2024-04-27 Gdańsk => Head of International Freight Forwarding Department <=