-
X-Received: by 10.31.153.196 with SMTP id b187mr85328vke.14.1503611294833; Thu, 24
Aug 2017 14:48:14 -0700 (PDT)
X-Received: by 10.31.153.196 with SMTP id b187mr85328vke.14.1503611294833; Thu, 24
Aug 2017 14:48:14 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-medi
a.com!news.highwinds-media.com!x187no67340ite.0!news-out.google.com!f21ni321qta
.1!nntp.google.com!v29no139634qtv.0!postnews.google.com!glegroupsg2000goo.googl
egroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 24 Aug 2017 14:48:13 -0700 (PDT)
In-Reply-To: <5...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=70.89.204.241;
posting-account=aFGPVQoAAADngh59qlchYygiuB87zBBU
NNTP-Posting-Host: 70.89.204.241
References: <f...@g...com>
<1...@g...com>
<7...@g...com>
<b...@g...com>
<a...@n...v.pl>
<2...@g...com>
<a...@n...v.pl>
<on23a3$85s$1@node1.news.atman.pl>
<a...@n...v.pl>
<on75ke$g4u$1@node2.news.atman.pl>
<5...@g...com>
<onfotu$lh6$1@node1.news.atman.pl>
<0...@g...com>
<3...@g...com>
<6...@g...com>
<c...@g...com>
<d...@g...com>
<5...@g...com>
<c...@g...com>
<3...@g...com>
<6...@g...com>
<c...@g...com>
<6...@g...com>
<f...@g...com>
<0...@g...com>
<f...@g...com>
<d...@g...com>
<5...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0...@g...com>
Subject: Re: Co jest nie tak z C++ (było: Rust)
From: Adam M <a...@m...com>
Injection-Date: Thu, 24 Aug 2017 21:48:14 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 16223
X-Received-Body-CRC: 3891643096
Xref: news-archive.icm.edu.pl pl.comp.programming:211283
[ ukryj nagłówki ]On Thursday, August 24, 2017 at 3:32:50 PM UTC-4, g...@g...com wrote:
> W dniu czwartek, 24 sierpnia 2017 17:32:35 UTC+2 użytkownik M.M. napisał:
>
> > > i oczywiście w jakimś sensie jest to truizm. Tyle
> > > że może wytwarzać fałszywe przeświadczenie, że
> > > jakość języka programowania nie ma żadnego znaczenia,
> > > a jakość programisty ma wyłączne znaczenie.
> > > Wydaje mi się, że przykład Allena Newella i Alana Kaya
> > > pokazuje, że tak nie jest.
> >
> > Rozumiem. Ale powiedz mi jeszcze, co myślisz o dobrych
> > bibliotekach w C++, które w praktyce są dostępne od
> > wielu lat. Czy te biblioteki nie czynią z C++ właśnie
> > dobrego środowiska?
>
> Zależy do czego. Rzecz z bibliotekami ma się tak,
> że ich użyteczność ogranicza się zazwyczaj do celu,
> w jakim zostały zrobione. Mówiąc inaczej, to są przetarte
> szlaki, i do rozwiązania typowych problemów z reguły
> pewnie wystarczą.
> Dlatego jeżeli C++ pomaga Ci w osiąganiu Twoich celów,
> to jak najbardziej korzystaj z niego.
> Ale stąd jest jeszcze daleka droga do powiedzenia, że jest
> "najlepszy", tak jak niektóre osoby by chciały. Być może
> w niektórych sytuacjach rzeczywiście będzie najlepszy,
> ale nie w jakimś absolutnym sensie, tylko w sensie przygodnym
> -- bo akurat nikt nie zrobił lepszych bibliotek dla innych
> języków. C++ jako abstrakcyjna notacja do komunikowania
> i zapisywania idei raczej się nie nadaje. Nie jest dobrym
> narzędziem dla umysłu (choć może jest dobrym narzędziem
> dla przemysłu)
>
> > W sumie o tym pisałem wcześniej,
> > tylko nie użyłem słowa "biblioteka". Pewnie że nie
> > zawsze chce mi się pisać w C++ wyrażeń regularnych, ale
> > kiedyś miałem przypadek, w którym program słabo działał
> > na gotowacach. Problemem była wydajność. Wyrzeźbiłem
> > ręcznie jakiś podzbiór funkcjonalności regexp i mógł
> > działać. C++ to język który daje dwie możliwości na
> > raz - ręcznie rzeźbienie z którym poradzi sobie tylko
> > dobry programista, albo dobre biblioteki przy
> > pomocy których każdy programista stosunkowo szybko
> > napisze działającą aplikację.
>
> Dziś rozmawiałem o tym z kolegą z pracy. Opowiadał, że
> na pierwszym roku studiów miał za zadanie zrobienie kalkulatora
> GUI na Windows. Powiedział, że męczył się z tym zadaniem
> 3 dni w C++, podczas gdy jego kolega przyszedł i zrobił w C#
> w 3 godziny.
>
> Z C++ jest taki problem, że to nie jest język, tylko
> worek różnych ficzerów, które czasem do siebie pasują,
> a czasem nie. Jeżeli chcesz pisać w C++ tak jakby był
> Javą, to możesz to zrobić. Jeżeli chcesz w nim pisać
> tak, jakby to było C, to też możesz. Niektórzy powiedzą,
> że to dobrze, bo "język daje wolność". Jednak ja nie
> uważam, że to jest dobra wolność, bo jeżeli masz w zespole
> programistów z różnym backgroundem, to każdy będzie mógł
> pisać po swojemu.
>
> Dla odmiany, wydaje mi się, że języki, które narzucają
> na programistę więcej ograniczeń, jak np. Clojure, w którym
> wszystko jest niemutowalne, w rezultacie dają kod dużo
> lepszej jakości. Ładnie to ujął Runar Bjarnason w swojej
> prezentacji, której tytuł mówi już dość wiele: "Constraints
> Liberate, Liberties Constrain":
> https://www.youtube.com/watch?v=GqmsQeSzMdw
>
> > > Dobry programista poradzi sobie z C++ -- z czasem nauczy
> > > się omijać pułapki i obchodzić jego ograniczenia.
> > Zastanawiam się, czy w moim przypadku nie było inaczej.
> > Na początku, gdy po ludzku programowałem w C++, nie
> > wpadałem zbyt często w zbyt duże pułapki. Potem przyszła
> > Java, w Javie programowałem w bardzo podobny stylu jak w
> > C++. Ale jeszcze potem napotykałem często na problemy
> > wydajnościowe i musiałem wrócić do C++, tyle że w C++
> > już po ludzku nie programowałem - a to powodowało że
> > czasami doprowadzałem aplikację do stanu w którym była
> > mało podatna na rozwój - ale dzialała szybko na tanim
> > sprzęcie. W zasadzie w pułapki wpadałem częściej jako
> > doświadczony programista, jako początkujący nie
> > prowokowałem sytuacji prowadzących w ślepe uliczki.
>
> Pytanie, skąd się uczyłeś C++a
>
> > > Wytworzy
> > > "swój własny" sposób programowania w C++, w którym będzie
> > > się w stanie bez problemu poruszać. Wytworzy sobie swoją
> > > własną bibliotekę klas, metod i definicji, w którym będzie
> > > w stanie "rozwiązywać problemy" czy budować systemy. Jeśli
> > > będzie musiał.
> > Tak, coś takiego mialem na myśli, albo po prostu weźmie QT.
> > W co większych firmach mają swoje gotowe i bardzo dobre
> > biblioteki.
>
> I jeżeli im mają i im działa, to dobrze. Ale trzeba mieć
> świadomość, że to jest w dużej mierze owoc tego, co się im
> jako firmie udało wyrzeźbić z tego kloca, jakim jest C++.
> A jeśli rzeźbili, to podejrzewam, że było dużo prób i błędów.
> Pytanie, ile te próby i błędy kosztowały.
>
> > > Tyle że moim zdaniem to nie jest dobra droga dla rozwoju
> > > przemysłu i programisty. Lepiej mieć wspólny język, którym
> > > możemy się bez problemu porozumieć -- tym bardziej, że
> > > często samo sformułowanie problemu jest już jego rozwiązaniem
> > > (albo jego kluczową częścią).
> > Że wspólny się zgadzam. Jestem za tym, aby rozbudować bibliotekę
> > QT np. 10 razy pod względem funkcjonalności. Jestem też za tym,
> > aby dodać wersje klas nastawione na wydajność, a nie na wygodę
> > programisty.
>
> Ja jestem całkowicie przeciwny. Jedyną rzeczą, jaka powinna się liczyć
> przy pisaniu kodu, jest wygoda programisty i łatwość refaktoryzacji.
> Jeżeli wszystko ma działać szybko, powinniśmy tworzyć dobre narzędzia
> optymalizujące.
>
> > Potem niech komitet wykupi prawa do tej biblioteki i
> > ustali bibliotekę QT jako bibliotekę standardową.
>
>
> To też jest problem, że jak chcesz mieć kontener, to musisz
> wybrać, czy to jest kontener z STL, czy Qt. Ale tego problemu
> nie da się rozwiązać, zachowując kompatybilność wsteczną.
>
> > A różni
> > producenci niech dostarczają swoje implementacje. Pewnie że
> > lepiej byłoby, gdyby wszyscy na Ziemie gadali w jednym języku, ale
> > czy angielski jest lepszy od hiszpańskiego, to nie wiem.
>
> Też nie wiem. Języki etniczne ciężko jest ze sobą porównywać,
> bo wszystkie są raczej złożone i idiosynkratyczne.
>
> > > > > W jakimś sensie jest to wartościowy eksperyment dla tych, którzy
> > > > > potrafią się uczyć na cudzych błędach, bo wydaje mi się, że
> > > > > nie ma błędu, którego projektanci C++ by nie popełnili.
> > > > C++ to asembler obiektowy. Dużo lepiej nie da się takiego
> > > > języka zaprojektować.
> > >
> > > Nie rozumiem. Co to jest "asembler obiektowy"?
> >
> > To powszechnie znana drwina z obiektowości-wskaźnikowej jaką
> > wprowadza C++ :D
>
> Tyle że programiści często myślą, że to, że C++ daje dużą kontrolę
> nad sprzętem, to dobra rzecz.
> Myślę, że jest dokładnie odwrotnie. Im mniej intymnych szczegółów
> język może wiedzieć o systemie, na którym jest uruchamiany, tym
> lepszą robotę mogą odwalić narzędzia uruchomieniowe.
Widzę że wszyscy tutaj wieszaja psy na tych biednych krzyżowcach - ale jak mówi
przsłowie - Jak trwoga to do Boga - i tak jeśli musisz napisac program który musi
rozmawiac ze sprzętem to masz tak naprawdę tylko trzy jezyki popularne do dyspozycji:
Macro Assembler (nazwywanie tego językiem to dość duże naciągniecie - ale niech
bedzie), C lub C++ (przez miłosierdzie nie wspominam tu ADY ;-) )
Osobiście uważam ze ignorowanie sprzetu prowadzi braku zrozumienia dlaczego
oprogramowanie zachowuje sie w ten a nie inny sposób. To tak jak by lekarz powiedzial
po co mam uczyc sie calej anatomii czlowieka jesli bede okulista.
>
> > > > Ja czasami też bym chciał w C++ programować
> > > > ciut dalej od warstwy sprzętowej. Ale cóż, jest jak jest.
> > > >
> > > > Projektanci C++ mogli zrobić dwa języki wywodzące się z C:
> > >
> > > Projektanci C++ nie są jedynymi osobami na świecie, które
> > > mogą robić języki programowania. (często mam wrażenie, że
> > > sukces C++ wziął się stąd, że było wiele osób, którym wydawało
> > > się, że jest inaczej)
> >
> > Jakiś język programowania kompilowany do C można napisać :)
>
> Nawet nie tylko można, ale i się pisze. Całą masę. Zresztą
> C++ też tak zaczynał.
>
> > > > > Jeżeli Twój stosunek do C++ jest równie sceptyczny, co mój,
> > > > > to może ten apel powinienem skierować do entuzjastów tego
> > > > > języka. Ktoś się podejmie?
> > > > W wielu praktycznych zastosowaniach nie ma alternatywy.
> > >
> > > Zawsze jest jakaś alternatywa. Czasem po prostu trzeba włożyć
> > > nieco pracy, żeby jej poszukać.
> >
> > Ale chodzi o sensowne alternatywy. Czasami chciałbym język javo-podobny,
> > kompilowany, bez wywoływania metod po nazwie, bez automatycznego
> > zwalniania pamięci, bez plików nagłówkowych, bez sieczki składniowej w
> > szablonach, bez wskaźników... Ale ostatnio... mało używam malloc i new,
> > wskaźników używam tylko w gorącej pętli, za to mam 3-4-krotnie
> > zagnieżdżone szablony i edytor głupieje, zamiast mnie wspierać.
>
> Dlaczego miałbyś chcieć język bez automatycznego zwalniania pamięci?
Jeśli kolega zadaje takie pytanie to tutaj jest link który może się przydać aby
zrozumieć za automatyczne zwalnianie i odśmiecanie nie zawsze jest dobrym
rozwiązaniem:
https://www.dynatrace.com/resources/ebooks/javabook/
impact-of-garbage-collection-on-performance/
>
> > Zobacz kod drzewa i testu które niedawno wrzuciłem, tam bezposrednio
> > nie operuję na new i malloc, a wskaźniki są tylko w tych pętelkach,
> > które są ważne dla wydajności.
> >
> > https://drzewa-czerwono-czarne.blogspot.com/p/kod-zr
odowy-programu-testujacego.html
> >
> > https://drzewa-czerwono-czarne.blogspot.com/p/kod-zr
odowy-c-drzewa-czerwono-czarne.html
> >
> > Używanie tego drzewa nie jest strasznie trudne, a daje bardzo dużą
> > wydajność. Jak w haskelu i lispie używa się drzew czerwono-czarnych?
>
> Nie wiem, nie używałem nigdy (i wolałbym nie używać), ani nie implementowałem.
> Ostatnio implementowałem dużo algorytmów grafowych czysto funkcyjnie,
> ale niestety powodowało to narzut złożoności algorytmicznej w stosunku
> do wersji korzystających z mutacji.
> Stąd teraz mam taką zabawę, że wymyślam metody automatycznej
> transformacji programów napisanych funkcyjnie w wydajniejsze
> programy stosujące mutację.
Następne wpisy z tego wątku
- 25.08.17 00:23 g...@g...com
- 25.08.17 01:12 M.M.
- 25.08.17 06:04 AK
- 25.08.17 06:05 AK
- 25.08.17 06:06 AK
- 25.08.17 06:07 AK
- 25.08.17 06:08 AK
- 25.08.17 06:14 AK
- 25.08.17 06:29 AK
- 25.08.17 06:37 AK
- 25.08.17 07:08 AK
- 25.08.17 07:51 g...@g...com
- 25.08.17 09:42 Maciej Sobczak
- 25.08.17 09:45 Maciej Sobczak
- 25.08.17 10:13 fir
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- 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??
Najnowsze wątki
- 2025-03-15 kraje nieprzyjazne samochodom
- 2025-03-15 parking Auchan
- 2025-03-15 Art. 19.1 ustawy o ochronie praw autorskich
- 2025-03-15 przegląd za mną
- 2025-03-15 Na co komu okna
- 2025-03-15 Mój elektryk
- 2025-03-15 Fejk muzyczny czy nie fejk
- 2025-03-15 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-15 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-15 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-03-15 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+ experience) <=
- 2025-03-15 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-03-15 KOMU w RP3 pasuje "Rumuńska łatwość gmerania w wyborach" i dlaczego nie PO-Trzaskanym?
- 2025-03-15 China-Kraków => Key Account Manager IT <=