-
Data: 2017-08-13 05:17:21
Temat: Re: Co jest nie tak z C++ (było: Rust)
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Saturday, August 12, 2017 at 11:07:20 PM UTC+2, g...@g...com wrote:
> W dniu sobota, 12 sierpnia 2017 15:59:27 UTC+2 użytkownik s...@g...com
napisał:
> I z pewnością, żeby odpowiedzieć na to pytanie, najpierw
> należałoby ustalić nasze oczekiwania względem danego języka,
> żeby można było zastosować jakieś kryteria, a nie prowadzić
> dyskusji na poziomie "język X jest zły, bo nie ma ficzera Z",
> albo "język X jest zły, bo nie jest językiem Y".
Kryterium porównawcze to dobra rzecz.
> Moim zdaniem, dużą wadą C++ jest to, że nie daje programiście
> środków do tego, żeby mógł go używać stosownie do swoich
> upodobań -- oczywiście w niektórych kontekstach można by to
> było uznać za zaletę, jednak "w ogólności" wydaje się to raczej
> wadą.
Tutaj pozwolę sobie trochę się nie zgodzić. W C++ generalnie
jest dużo środków i można w nich przebierać. No chyba chodzi o
biblioteki, w przypadku bibliotek trzeba brać albo taką jaka
jest, albo se napisać swoją. Właśnie kolekcje do uporządkowanych
zbiorów mi nie odpowiadają ani w QT, ani w STD, więc napisałem
swoją. Ale to jest wada każdego języka. Chociaż taka Java od
razu była nastawiona na prostotę i standaryzację ogromnej
biblioteki...
> Przykładowo, gdybym chciał, żeby wszystkie zmienne w C++
> były domyślnie zadeklarowane jako "const", i tylko te, które
> zasadniczo chcę zmieniać, były zadeklarowane (np. jako "var"),
> C++ (z tego co wiem) nie daje mi możliwości uzyskania takiego
> zachowania.
Ale takiego efektu w żadnym języku nie można uzyskać, o ile
zrozumiałem co masz na myśli. Jeśli zostanie przewidziane
przed pisaniem kodu, to można sprytne define zrobić, jeśli nie,
to w żadnym języku tak się nie da.
> Podobnie, interfejsy dostarczane przez STL są bardzo dziwne.
> Jest sobie chociażby taki kontener "stack". Jak można się spodziewać,
> stack<T> ma funkcję push(T element), która kładzie element na stosie,
> oraz pop(), która zdejmuje element ze stosu.
Idzie z tym żyć. Ja na tę sprawę mam inny pogląd. W innych językach,
jest mniej możliwości. Naturalne dla innych języków jest to, że
biblioteka zazwyczaj jest taka jaka powinna być w danym języku. A w
C++ jest bardzo dużo środków wyrazu. Zazwyczaj z biblioteką taką jak
STL czy QT można żyć. Problem w tym, że czasami chce potrzeba
biblioteki "skrojonej na miarę" do danego programu. Przy czym
skrojona na miarę oznacza albo wygodę programowania, albo
bezpieczeństwo, albo przejrzysty kod, albo ekstremalną wydajność.
W innych językach nie tylu środków wyrazu, więc inne języki
nie dają okazji do dzielenia włosa na czworo. W Javie nigdy w
życiu nawet bym nie pomyślał o pisaniu swojego kontenera, bo
po co? W C++ zazwyczaj używam swoich drzew, tablic hashujących, itd,
ponieważ (w moim przypadku najczęściej) to skraca czas obliczeń.
> Problem w tym, że funkcja pop() nie zwraca zdejmowanego elementu.
> Uzasadnienie autorów biblioteki jest takie, że w ten sposób można
> uzyskać większą wydajność, i że STL jest projektowany w taki sposób,
> żeby "nie płacić za to, czego się nie używa" -- jednak brak
> ergonomii biblioteki jest w istocie pewną ceną -- tym więszką, gdy
> programiści przyzwyczają się, że zepsute interfejsy to norma.
Zazwyczaj jest bardzo wysoka cena za bardzo małe zwiększenie wydajności.
Stos ma metodę top która zwraca. Można wywołać top a potem pop. I
pewnie w konkretnym przypadku będzie efekt przeciwny do zamierzonego,
pewnie wydajność będzie gorsza dla dwóch wywołań niż dla jednego z
odpowiednim typem zwracanym. A jakby dziedziczyć po stosie i sobie
napisać taką metodę pop? W QT chyba nazywa się taka metoda take.
> Jeśli ktoś ma ochotę posłuchać sobie tego rodzaju narzekań, to jest
> ten gość, Scott Meyers, który najpierw pisał dużo książek o C++,
> a później zaczął jeździć po konferencjach, narzekając na dziwność
> interfejsów C++ (sławiąc taką mantrę, żeby projektować interfejsy
> w taki sposób, żeby łatwo było ich używać poprawnie, i żeby trudno
> było ich używać niepoprawnie), i teraz zdaje się zajmuje się
> rozwijaniem języka D. Można sobie go w wolnej chwili obejrzeć
> np. tutaj
Nie, mam dosyć swojego narzekania ;-)
> Poza tym długie czasy kompilacji i niezrozumiałe komunikaty diagnosyczne
> również są pewną ceną, którą programiści C++ muszą płacić.
Kompilacje można zrównoleglać w make. Komunikaty diagnostyczne...
nie wiem.. zazwyczaj wiem co kompilator do mnie mówi, czasami
tylko muszę chwilę się zastanowić.
> W każdym razie jeżeli używasz C++ i jesteś z tego zadowolony,
> to ja nie zamierzam Cię przekonywać, że nie jesteś. Jednak dla mnie
> duży stopień komplikacji tego języka (np. skomplikowana
> składnia i różne założenia utrudniające formułowanie wniosków
> dotyczących programów napisanych w C++) są na tyle poważnym problemem,
> że jeśli nie muszę, raczej staram się z niego nie korzystać.
Dla mnie to co nazywasz komplikacją, jest bogactwem możliwości.
Ale jeśli nie muszę, to też wolę np. Jave, PHP.
Pozdrawiam
Następne wpisy z tego wątku
- 13.08.17 07:04 slawek
- 13.08.17 07:44 g...@g...com
- 13.08.17 11:23 M.M.
- 13.08.17 15:01 slawek
- 13.08.17 16:16 M.M.
- 13.08.17 16:52 w systemie siła 'POPIS/EU
- 13.08.17 18:15 slawek
- 13.08.17 18:44 w systemie siła 'POPIS/EU
- 13.08.17 20:32 slawek
- 13.08.17 21:23 w systemie siła 'POPIS/EU
- 16.08.17 18:47 Wojciech Muła
- 16.08.17 20:28 slawek
- 16.08.17 20:35 Mateusz Bogusz
- 16.08.17 22:21 slawek
- 18.08.17 18:46 Mateusz Bogusz
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-07-04 Białystok => Kotlin Developer <=
- 2025-07-04 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-07-04 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-07-04 Zakrzewo => Konsultant SAP HCM <=
- 2025-07-04 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-04 Szczecin => Key Account Manager IT <=
- 2025-07-04 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-04 Warszawa => Technique IT - Hardware Configuration and Support <=
- 2025-07-04 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=