-
X-Received: by 2002:a0c:b622:: with SMTP id f34mr682735qve.1.1546439146249; Wed, 02
Jan 2019 06:25:46 -0800 (PST)
X-Received: by 2002:a0c:b622:: with SMTP id f34mr682735qve.1.1546439146249; Wed, 02
Jan 2019 06:25:46 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.
stu.neva.ru!v55no10100741qtk.0!news-out.google.com!m21ni11584qta.0!nntp.google.
com!v55no10100738qtk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!n
ot-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 2 Jan 2019 06:25:45 -0800 (PST)
In-Reply-To: <q0hoij$vnq$1@node2.news.atman.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.77.192;
posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 46.186.77.192
References: <0...@g...com>
<q0hoij$vnq$1@node2.news.atman.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6...@g...com>
Subject: Re: Uwagi odnośnie książki Stroustrupa
From: g...@g...com
Injection-Date: Wed, 02 Jan 2019 14:25:46 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213132
[ ukryj nagłówki ]W dniu środa, 2 stycznia 2019 08:17:40 UTC+1 użytkownik Tomasz Kaczanowski napisał:
> > Wczoraj Tomek Kaczanowski polecił tu książkę do nauki programowania
> > spod pióra Stroustrupa pt. "Programowanie. Teoria i praktyka
> > z wykorzystaniem C++".
> [...]
> > 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".
>
> Pytanie tylko co z tego. W jednym języku masz przygotowane rzeczy do
> jednych operacje, w innym do innych.
Czasem rzeczywiście jest tak, że masz je "w języku". Na przykład w Perlu
(czy nawet w JavaScripcie) jest specjalna składnia do pracy z
wyrażeniami regularnymi.
W Pythonie czy PHP wyrażenia regularne są dostępne z funkcji bibliotecznej.
I to podejście wydaje się zwyciężać, bo lepiej się skaluje.
> W zasadzie po co pisać proste
> programy, skoro większość z nich był już napisany wielokrotnie.
To zależy. Dla nauki, dla treningu, dla zabawy.
Po co rozwiązywać krzyżówki, skoro ktoś je już rozwiązał?
> A jednak. Swojego czasu (pierwsza połowa lat 90), żeby dobrze zrozumieć
> jak wykorzystać polimorfizm analizowałem sobie napisany program
> przykładowy dołączany do jednego z kompilatorów. Znowu - też nie jakieś
> super skomplikowane rzeczy - ot parser funkcji matematycznych, dzięki
> któremu rysowane były wykresy. Nic zaawansowanego, ale dało trochę do
> myślenia i do analizy jak to działa.
No i bardzo dobrze. Programy pisze się między innymi po to,
żeby można je było czytać.
> Wiele rzeczy pisze się podczas
> nauki nie po to by rozwiązać realny problem, tylko aby na jakimś
> problemie przećwiczyć sposoby rozwiązania.
W porządku. Ja nie mówię, że ten akurat problem nie ma wartości dydaktycznej.
Mówię, że podejście Stroustrupa jest niedobre.
Przeglądam sobie jeszcze raz ten fragment, a tam widzę takie coś:
case '8': // Za pomocą znaku '8' reprezentujemy liczby.
WTF? Dlaczego?!
> Oczywiście można wymyślić
> jakiś problem nie rozwiązany już na 1000 sposobów, tylko po co? Co to da
> w kontekście dydaktycznym poza trudniejszym opisem problemu?
Jakiś czas temu zgłosił się do mnie jakiś student z Czech, żebym mu
pomógł w jakimś projekcie.
Projekt był dość ciekawy. Jego nauczyciel przygotował program, w którym
jakiś ludzik chodził po labiryncie w poszukiwaniu skarbu.
Celem studenta było napisanie programu, który tym ludzikiem posteruje.
To była całkiem fajna zabawa.
Podobnie np. gra "Human Resources Machine", w której układasz z klocków
programy sterujące pnącym się po szczeblach kariery pracownikiem korporacji.
Miłe, przyjemne zadanka.
> > 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).
>
> i bardzo dobrze moim zdaniem, pokazuje, że proste na początku zadanie,
> może mieć dużo dodatkowych wymagań.
Tak, i czasem łatwiej przeformułować wymagania tak, żeby były one
w naszym zasięgu. Ale Stroustrup zamiast powiedzieć np.
"obsługa precedensów operatorów arytmetycznych jest trudna,
w związku z czym użyjmy zamiast tego odwrotnej notacji Polskiej"
albo coś w tym rodzaju, brnie w niezbyt interesującą teorię.
> Czasami proste rozwiązanie może
> okazać się prostackie i dla mnie nieakceptowalne, jak np kiedyś coś tam
> robiąc w PHP, korzystając z funkcji str_getcsv, okazało się, że nie jest
> ona odporna na różność kodowań. Standard csv nie ma takich ograniczeń,
> natomiast jeśli mamy źle lokale ustawione i niekompatybilne z nim
> zakodowany plik, to nagle funkcja nie potrafi prawidłowo podzielić
> rekordów na pola. Koś poszedł na skróty, właśnie nie przeprowadził
> wystarczająco dobrze procesu rozpoznawania problemu i stworzony został
> moim zdaniem potworek.
Ostatnio mieliśmy aplikację od dużej firmy. Była chyba napisana w C#,
i też trzeba było zmieniać język w systemie operacyjnym, bo jakieś tam
pola gdzieś tam miały przecinki zamiast kropek albo na odwrót.
I ważne moim zdaniem jest pytanie, jak unikać tego rodzaju problemów.
Tyle że nie bardzo wiem, jak ma się to do tego, co napisałem wcześniej.
Następne wpisy z tego wątku
- 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
- 03.01.19 16:07 g...@g...com
- 03.01.19 17:41 AK
- 04.01.19 08:15 Maciej Sobczak
- 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
Najnowsze wątki z tej grupy
- 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
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Gdańsk => Software .Net Developer <=
- 2024-11-08 Akumulator Hyundai
- 2024-11-08 Warszawa => Manager/Specialist e-commerce (B2C) <=
- 2024-11-08 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-08 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-08 znaj podstawe
- 2024-11-08 Chrzanów => Specjalista ds. public relations <=
- 2024-11-08 Warszawa => Data Scientist / Data Engineer (predictive modelling) <=
- 2024-11-08 zbrojone wężyki hamulcowe