-
X-Received: by 2002:a0c:8b4c:: with SMTP id d12mr642751qvc.3.1546392517519; Tue, 01
Jan 2019 17:28:37 -0800 (PST)
X-Received: by 2002:a0c:8b4c:: with SMTP id d12mr642751qvc.3.1546392517519; Tue, 01
Jan 2019 17:28:37 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.
stu.neva.ru!v55no9266560qtk.0!news-out.google.com!m21ni11059qta.0!nntp.google.c
om!v55no9266549qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not
-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 1 Jan 2019 17:28:37 -0800 (PST)
In-Reply-To: <0...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.48;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 5.172.255.48
References: <0...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2...@g...com>
Subject: Re: Uwagi odnośnie książki Stroustrupa
From: fir <p...@g...com>
Injection-Date: Wed, 02 Jan 2019 01:28:37 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213116
[ ukryj nagłówki ]W dniu wtorek, 1 stycznia 2019 16:15:42 UTC+1 użytkownik g...@g...com napisał:
> Wczoraj Tomek Kaczanowski polecił tu książkę do nauki programowania
> spod pióra Stroustrupa pt. "Programowanie. Teoria i praktyka
> z wykorzystaniem C++".
>
> Choć swoimi pierwszymi wrażeniami już się zdążyłem podzielić,
> pomyślałem sobie, że nie zaszkodziłoby przedstawić nieco bardziej
> dogłębną analizę moich przekonań dotyczących podejścia, jakie
> Stroustrup w niej reprezentuje.
>
> Przykładowy rozdział, który można podejrzeć na stronie Helionu,
> a konkretniej rozdział szósty, zatytułowany "Pisanie programu",
> dotyczy "prezentacji procesu myślowego, który ma miejsce
> podczas wytwarzania oprogramowania".
>
> Stroustrup twierdzi (skądinąd słusznie), że pisanie programu
> należy zacząć od sformułowania probelmu, który program ma rozwiązać.
> Problemem, jaki Stroustrup stawia, jest domniemana niewiedza
> czytelnika, zaś jako rozwiązanie proponuje "program zmuszający
> komputer do wykonywania typowych działań arytmetycznych
> na wyważeniach, które mu podamy".
>
> Stroustrup nalega również, żeby program działał w "oknie konsoli",
> ponieważ wyjaśniał we wcześniejszych rozdziałach "jak posługiwać się
> strumieniami `cin` i `cout`, a graficzne interfejsy użytkownika (GUI)
> zostaną opisane dopiero w rozdziale 16".
>
> Każdy, kto uczył się Pythona z tutoriala Guidona van Rossum,
> zapewne pamięta, że jedna z początkowych sekcji nosi tytuł
> "Using Python as calculator". Programiści Pythona raczej
> nie byliby szczególnie zainteresowani problemem dydaktycznym,
> który proponuje Stroustrup, ponieważ wiersz poleceń w Pythonie
> już jest "takim kalkulatorem, tylko lepszym".
>
> Jak możemy się domyślać, Stroustrup proponuje początkującemu
> czytelnikowi raczej ciężką i niewdzięczną drogę: oto bowiem
> zostajemy rzuceni w wir tokenizacji i parsowania (a dodatkowo
> mistrz wymaga od swoich uczniów, żeby pojedyncze wyrażenia mogły się
> rozciągać na wiele linii, żeby początkującemu nie było za łatwo).
>
> Innymi słowy, Stroustrup chce, żebyśmy na początku naszej drogi
> programistycznej nauczyli się w lichy sposób rozwiązywać szereg
> problemów, które nie są ani trochę interesujące z perspektywy
> zastosowania komputera, których lichość będzie nas prześladować
> w przyszłości, i których można by było w ogóle uniknąć.
>
> Nietrudno się domyślić, skąd bierze się takie przekonanie.
> Twórcy języka C byli jednocześnie autorami systemu operacyjnego
> UNIX. Mieli świadomość, że opracowany przez nich system jest
> kompromisem, którego główną cechą ma być przede wszystkim
> prostota implementacji i przenośność. Stąd też w UNIXie "wszystko
> jest plikiem", zaś pliki to po prostu ciągi bajtów, które
> można odczytywać i zapisywać wywołaniami systemowymi "read"
> i "write". Dotyczy to w takim samym stopniu danych zapisanych
> lokalnie na dysku, jak i urządzeń czy innych komputerów.
>
> Najbardziej rozpowszechniona forma grupowania bajtów
> polega na oddzielaniu ich znakiem nowej linii. Na tym
> założeniu opiera się większość narzędzi uniksowych, takich
> jak `grep`, `sed` czy `tail`. Niestety, to założenie nie pozwala
> nam tworzyć "złożonych złożoności". Do tego celu służą jednak
> takie pomysły, jak zgrupowany hierarchicznie system plików.
>
> Używanie tego mechanizmu jest jednak do wielu rzeczy
> niewygodne. Czasem wolimy zapisać złożoną teksturę w pliku
> tekstowym, ponieważ taki plik łatwiej wyświetlić na ekranie,
> przesyłać i edytować.
>
> Jednak jeśli zdecydujemy się na taki krok, doświadczymy
> pewnych komplikacji:
> - musimy mieć sposób konwersji danych z pliku tekstowego
> do postaci drzewa (parser)
> - dajemy sobie możliwość budowania wadliwych struktur (błędów
> składniowych)
>
> Pomimo tych niedogodności, taki model dobrze się rozpowszechnił.
>
> Stroustrup natomiast uznał go za ostateczną prawdę, i wybudował
> mu ołtarz w postaci języka C++.
>
> Jeśli ktoś poszukuje całościowego modelu alternatywnego względem
> tego z UNIXa, to dobrym przykładem jest środowisko Smalltalka
> (np. Pharo albo Squeak). Stworzenie aplikacji kalkulatora dla takiego
> środowiska jest znacznie przyjemniejszym ćwiczeniem dla początkujących
> osób, niż studiowanie gramatyk BNF (i z funkcjami graficznymi
> nie trzeba czekać "do rozdziału 16").
>
> Warto też zapoznać się z s-wyrażeniami języka LISP: jest to składnia
> dużo prostsza do parsowania nawet od tego głupiego kalkulatorka,
> któremu Stroustrup poświęca tak dużo miejsca, a jej dodatkową
> zaletą jest to, że jest to lekki i uniwersalny format serializacji,
> którego można używać np. wszędzie tam, gdzie stosuje się XML
> (stanowi uniwersalne rozwiązanie zagadnienia "złożonych złożoności").
> A co najważniejsze, można ten problem parsowania rozwiązać raz
> i dobrze i się nim więcej nie przejmować, a nie wmawiać początkującym,
> że to na tym polega programowanie. (Można też ten problem całkowicie
> zignorować, i od początku skupić się na bardziej interesujących
> zagadnieniach, jak choćby nawet różniczkowanie symboliczne - Stroustrup
> nie konstruuje przecież w swojej książce parsera dla C++a, tylko
> dla wyrażeń arytmetycznych.)
>
> Czasem zamiast rozwiązywać jakiś problem, lepiej go ominąć.
> Podobnie jak tę książkę.
>
> Najlepszego wszystkim w nowym roku.
jak dla mnie te krytyki c++ itp sa malo
sensowne lub istotne, (ale tez zarazem
sie nie umpieram bo nie mam specjalnego zdania na te tematy, malo mnie to obchodzi
odbieram to jako nieistotne)
wielokroc chyba juz mowilem jak to widze:
to jak cos szybko i sprawnie zrobisz zalezy juz bardziej od biblioteki niz od jezyka
i od jej znajomosci, no i od umiejetnosci klecenia programu...sama jakosc docelowa
moze zalezec od jezyka/platformy ale to nie ma tez takiego znaczenia bo ew mozna
przeportowac
co ma znaczenie pierwszorzedne wobec
tego? chyba to co stanowi nawieksze problemy i jest realna przeszkoda by zrobic cos
dobrego
a co to jest? to jest wlasnie moim zdaniem dobre pytanie (w tym sensie ze odpowiedz
na nie moglaby duzo dac)
ja na nie zwykle odpowiadam tak ze sa to
w moim wypadku
1) przeszkody psychologiczne (czy tez moze raczej mentalno energetyczne).. moze nie
tyle ciezko mi sie za cos wziac, (bo wziac sie za cos w kodowaniu jest mi dosyc
latwo), ale ciezko mi sie zmusic
by to dlugo robic i sie nie wypalic ..
a jak sie wypale by jakos w miare szybko do tego wrocic
2) problemy 'koncepcyjne'
A]
- niektore rzeczy sa dosyc latwe do pisania, [wystarczyla by wiac ta energia z punktu
1 i by sie nie meczyc i by miec ogromna ilosc czasu i sie nie starzec itd itd i mozna
pisac (chyba bo nawet tego nie jestem pewien)]
[
a1) przykldem takiego programu ktory sam sie niemal pisze byl np edytor tekstu jaki
troche pisalem w zeszlym roku, zasadniczo bralo sie to i pisalo, pozatym
bezprobloemowo..natrafilem co prawda na pewne problemy zwiazane z tym jak dziala gdi
do rysowania fontow (chodzilo o to ze
nie wiem jak zrobic tak by przeplatanie rysowanie fontow na ekranie i rysowań per
pixel na tym samym ekranie bylo 'naturalnie' wydajne, bo to co znalazlem
wymagalo blitowania w tą i z prwrotem przy kazdym takim przeplocie wiec w ogolnosci
by zarznelo program -- nie znalazlem czy da sie to obejsc bo nie chcialo mi sie
tracic czasu na dlugie czytania -- ale zakladam ze pewni ejest jakis sosob by to
zadzialalo jak trzeba,
w najgorszym wypadku musialbym sobie generowac fonty bitmapowe ofscreen tym gdi i
wtedy rysowac je jak sprity)
a2) innym przykladem bylo pisanie gry roguelike - tez zasadniczo sie bralo i pisalo..
nie kojarze jakichs wiekszych koncepcyjnych problemow..
a3) moglbym podac wiecej taich przykladow ale mi sie nie chce na to tracic czasu naw
ymienienie tego (... doodam ze chyba nawet pisaie kompilatora poprawionego c trafia
do tej 'latwej' kategorri.. "sie bierze i sie pisze")
]
B]
- ale niektore programy do pisania takie nie są..czesc tez byc moze nalezy do takiej
kategorii ze z poczatku sie bierze i sie pisze a pozniej przechodza w druga kategorie
ta druga kategoria to co takiego ze "sie bierze ale sie nie pisze" ew "sie nie bierze
bo sie nie chce (?)"
mozna by sie zastanowic na czym to polega bo te przypadki mnie conieco przygnebialy
czy wprowadzaly w jakis miks zlego humoru
co prawda jest juz nieco pozno jak to pisze i nie wiem czy to jest dobry moment by to
probowac wymianiac, ale moze w jakims cienkim szkicu
b1) pewne rzeczy bym ew mogl napisac ale mi sie nie chce tego robic bo widze to jakos
zbyt malo konkretnie..ew wydaje mi sie ze to za duzo roboty na ktora nie mam
nastroju..problem jest moze w tym ze wydaje mi sie ze niektore rzeczy moze i daloby
sie zrobic ale nie ma gwarancji ze to dobrze wyjdzie i mi si enie chce tegio robic i
zarazem jest to chyba sporo roboty.. troche mi sei nie chce wymieniac co to jest ale
moze np
-) powiedzmy ze chce zrobic gre oparta na animacjach, te operacje tzreba rysowac i
trzeba tez zrobic tai system przejsc miedyz jej roznymi odnogami bo nei chialbym by
onebyly zbyt kanciaste tylko takie berdziej realistyczne... to niby jest do zrobienia
ale dla mnie jaos nie nalezy do kategori A tylko wlasnie do B
(ze wzgledu jedna bardziej na 'duzo roboty brak gwarancji' niz na scisle 'nie wiadomo
co zrobic')
-) sa pewne rzeczy ktorych zrobienie tez nie zakrawa na ciezkie do wykoncypowania ale
wymaga czytania np na msdnie czy gdzies (np o tym przpelataniu fontow, albo o raw
input do myszy, albo o socketach) a mi sie tego nie che robic
bo uwazam to za troche malo atrakcyjne, ew o czyms z matematyki jak np kiedys chciaem
zgrac swoje wyniki z rasteryzacji z wynikami z raytracingu bo wyszlo mi ze to sie
bedzie lekko rozjeżdzac, ze wzgledy na przyblizenia w perspektywie w rasteryzerze
(cyba, moge troche nie pamietac) i tego tez mi si eni chcialo robic (i ciagle nie
chce)... to moze nie jest scisle kategoria B ale troche na nia wchodzi ..kaegoria AB
powiedzialbym
b2) sa pewne rzeczy ktorych realnie nie wiem jak zrobic choc wiem ze ludzi to
rozgryzli, musialbym sie jednak douczyc.
konkretnie np w zeszlym roku costa dlubalem prosta symulacje z odbijaniem sie kulek
ale taka ze mogly sie sklejac
w takie sprezyste dosyc czasteczki..okazalo sie ze oja metoda licznie tego mimo ze z
grubsza dzial wyjebscie tak jak chcialem scilse nie zachowuje energii - by to zglebic
musialbym sie porzadniej tej fizyki anuczyc a mi sie nie chce (nie chcodzi o to ze
nie moglbym tylko ze cenie swoj czas bo czas mojego zycia jest ograniczony) - moze
ten przypadek wyglada
w sumie podobnie do tego AB wczesniej wymienionego (typu "zrobilbym ale mi sie nie
chce czytac") ale tutaj moze mam na mysli troche trudniejsza klase problemow gdzie te
studia by cos zrobic musialybybyc powiedzmy dluzsze (niz nawet 2 czy 3 tygodnie
studiowania artylkow w necie)
b3) bywaja jeszcze gorsze problemy bo w tych wyzej przynajmniej z grubsza wiadomo
ze jak cos potestuje narobie sie i ew przeczytam kupe googla to cos zrobie (placac za
to jakims wiekszym kosztem czasowym typu miesiac czy dwa) ale sa problemy bardziej
mgliste gdzie problem polega chyab na tym ze nie wystarczy czytac jakies papiery na
dany temat tylko samemmu trzeba cos 'zresearchowac' obadac i wytworzyc takie
papiery... dla mnie np robenie ai zakrawalo troche o takie cos..
byuc moze widzialem to zwykle nieco zyt pesymistycznie ale by ai dzialalo jak tzreba
wydawalo mi sie trzebbylo nawymyslac jakies reguly (czym te postaci maja byc
ograniczane) pozniej jak maja w ich ramach dzialac i to nie jest cos na co jest
prosty przepis bo jak sie zrobi poprstu cos co przyjdzie do glowy to toz adziala ale
spektakularnosc tego bedzie bliska zeru
jak sie nie wie o czym mowie to moze nie wydaje sie takie ciezkie ale problem jest
naprawde trudny - to cos takiego jak by ktos powiedzial "napisz dobry maly sceneriusz
filmu dla hollywood" niby proste ale tak naprawde troche ciezko z tym
tu sie troche wlasnie chyab gubie z tym wyliczaniem, gdy robis ie trudniej bu tu te
problemy pewnie mozna podzilic a wiecej roznych przypadkow..no ale wlasnie tosa
problematyczne kwestie i urwe moze te wylicznie i opisywanie zwlaszcza ze pozno sie
zrobilo
generalnie chodzi wlasnie o to ze to sa wlasnie istatnie problemy (zwlaszcza ta
kategoria pzniejszego B zdaje sie) a nie raczej bzdurne problemiki jaki to jezyk jest
lepszy, albo straszliwe problemy z debugowaniem i inne malo wazne bzdury
Następne wpisy z tego wątku
- 02.01.19 06:41 s...@g...com
- 02.01.19 07:13 g...@g...com
- 02.01.19 07:40 g...@g...com
- 02.01.19 08:17 Tomasz Kaczanowski
- 02.01.19 10:37 Maciej Sobczak
- 02.01.19 12:42 fir
- 02.01.19 12:44 g...@g...com
- 02.01.19 13:44 fir
- 02.01.19 15:25 g...@g...com
- 02.01.19 15:55 g...@g...com
- 02.01.19 16:34 fir
- 02.01.19 16:59 fir
- 02.01.19 17:39 g...@g...com
- 03.01.19 10:14 Maciej Sobczak
- 03.01.19 10:43 Tomasz Kaczanowski
Najnowsze wątki z tej grupy
- 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??
- 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
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO