-
X-Received: by 10.31.48.138 with SMTP id w132mr43121vkw.23.1503563125043; Thu, 24 Aug
2017 01:25:25 -0700 (PDT)
X-Received: by 10.31.48.138 with SMTP id w132mr43121vkw.23.1503563125043; Thu, 24 Aug
2017 01:25:25 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-medi
a.com!news.highwinds-media.com!v29no261522qtv.0!news-out.google.com!f21ni172qta
.1!nntp.google.com!e2no261714qta.1!postnews.google.com!glegroupsg2000goo.google
groups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 24 Aug 2017 01:25:24 -0700 (PDT)
In-Reply-To: <c...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=194.9.244.37;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 194.9.244.37
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6...@g...com>
Subject: Re: Co jest nie tak z C++ (było: Rust)
From: Maciej Sobczak <s...@g...com>
Injection-Date: Thu, 24 Aug 2017 08:25:25 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Body-CRC: 92901081
X-Received-Bytes: 7842
Xref: news-archive.icm.edu.pl pl.comp.programming:211272
[ ukryj nagłówki ]> Mogę podać inny przykład, bliższy temu, o czym tutaj jest mowa.
>
> for (int i = 0; i < ticks_per_frame; i++) {
> for_each(in_seq(sectors), bind2nd(mem_fun(&Sector::update), 0.07));
> for_each(in_seq(portals), bind2nd(mem_fun(&Portal::update), 0.07));
> for_each(in_seq(ropes), bind2nd(mem_fun(&Rope::update), 0.07));
> }
Faktycznie koszmarek.
> Dla odmiany taki chociażby Python pozwoliłby wyrazić te konstrukcje
> np. tak:
>
> for instance in range(ticks_per_second):
> for sector in sectors:
> sector.update(0.07)
A gdzieś tak od pół dekady C++ pozwala tak:
for (Sector & s : sectors)
s.update(0.07);
W pewnym okresie była taka moda, że chyba wszystkie języki teraz mają coś podobnego.
> > Ale przecież operatory w Wolframie też można wypowiedzieć.
> > Np. operator indeksowania (to te podwójne nawiasy) nazywa się
> > Part.
>
> Dziwne. Nie przyszło mi do głowy, żeby [[_ ;; ;; _]] wymówić "Part".
Dziwne. Tak się właśnie ten operator nazywa. Podobnie, + nazywa się Plus. Itd.
> Prędzej wymówiłbym to jako "otwórz nawias kwadratowy, otwórz nawias
> kwadratowy, coś, spacja, średnik, średnik, spacja, średnik, średnik,
> spacja, coś, zamknij nawias kwadratowy, zamknij nawias kwadratowy".
Jasne. A wywołanie funkcji w SmallTalku wymawiasz "ttl, otwórz nawias okrągły, coś,
zamknij nawias okrąły". Nie silmy się na takie trolowanie.
> Wątpliwości w dalszym ciągu wzbudza rola podkreślnika po argumencie
> po lewej stronie znaku ":=",
To jest wzorzec, który akceptuje cokolwiek. Czyli jest to definicja funkcji, która ma
jeden argument dowolnego typu. Można wzorzec ograniczyć np tak:
oddsEvens[x_List] := ...
i wtedy jest to funkcja, która ma jeden argument typu List.
W tym przypadku można byłoby tak zrobić, ale wtedy taka funkcja działałaby tylko z
listami, a akurat nie tylko listy mają taką strukturę, którą moglibyśmy chcieć w ten
sposób uporządkować. Dlatego wolałem zostawić szerszy wzorzec.
http://reference.wolfram.com/language/ref/Blank.html
> oraz to, dlaczego do wyrażenia tożsamości
> użyto symbolu powszechnie używanego w informatyce w roli przypisania.
Bo to jest przypisanie. Tak się właśnie definiuje funkcje.
http://reference.wolfram.com/language/ref/SetDelayed
.html
> Podwójnych podwójnych średników też nie lubię.
To napisz x[[1;;-1;;2]], wtedy będzie widać, że indeksowanie jest od 1 do końca. Ta
spacja między średnikami to opuszczone -1.
> Zgadzam się.
> Gdybyśmy zresztą nawet nie dysponowali funkcją Parts, moglibyśmy
> ją sobie zdefiniować przy pomocy cons, car, cdr i rekurencji.
I to jest właśnie coś, czego nie lubię.
Indeksowanie jest naturalną operacją i dla komputera (w sensie: hardware) bardziej
podstawową. Dlatego wolę, jeśli język ją wspiera bezpośrednio.
W ogóle, w naturze nie ma procesów rekurencyjnych. To jest na siłę wciskany ludziom
kit, że rekurencja jest podstawą innych rzeczy. Dlatego języki promujące rekurencję
jako podstawową konstrukcję są nienaturalne - zarówno w nauce, jak i w wykonaniu.
> Że języki, które znamy, warunkują sposób, w jaki myślimy,
Niezupełnie. Pierwszy język może to warunkować (i Wittgensteinowi chodziło o język
naturalny). Natomiast później nasze myślenie może warunkować pozostałe wybory.
> Nie wiem zresztą, czy miał przekonać. Raczej miał stanowić
> ilustrację tego, w jaki sposób ta maksyma odzwierciedla się
> w kontekście języków programowania. Sądzę, że -- mimo wszystkich
> zarzutów, jakie wysnułeś, dotyczących rozwiązania wymyślonego
> przez Kaya (i które nb nijak się mają do tego, co chciałem
> zakomunikować) -- stanowi dobrą ilustrację.
Tak. Kiepski język prowadzi do kiepskiego myślenia i w rezultacie do kiepskich
programów. :-)
> w szczególności warto przyglądać się
> temu, jak historycznie kształtowały się nasze sposoby rozumienia
> obliczania i komputerów.
Tak.
> Skoro mowa o kontekście, może zamiast pokazywać przykład
> w Mathematice, która stosunkowo niewiele różni się od ISWIMa z lat 60.,
> może spróbowałbyś pokazać rozwiązanie tego zadania w nowoczesnym
> języku, jakim jest C++, żebyśmy zobaczyli
Dlaczego? Ty nie pokazałeś przykładu w C++. :-)
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 24.08.17 11:38 g...@g...com
- 24.08.17 12:20 M.M.
- 24.08.17 13:02 g...@g...com
- 24.08.17 15:42 fir
- 24.08.17 15:46 g...@g...com
- 24.08.17 17:32 M.M.
- 24.08.17 18:10 fir
- 24.08.17 20:11 Mateusz Bogusz
- 24.08.17 21:24 fir
- 24.08.17 21:32 g...@g...com
- 24.08.17 23:48 Adam M
- 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
Najnowsze wątki z tej grupy
- 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
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-22 Re: Czy Bodnar to prawny Makiawel? [Prawo "w likwidacji"]
- 2025-06-21 Sąd Najwyższy ukarał "karą porządkową" 3_000 PLN za protest wyborczy z "wulgaryzmami osobowymi"
- 2025-06-21 Gdzie kupowac aku?
- 2025-06-21 Listwa przypodłogowa pod kominek
- 2025-06-21 Czy warto miec wy....anego na sucho premiera?
- 2025-06-21 Warszawa => Analityk IT (projekty z obszaru telco) <=
- 2025-06-21 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-06-21 Warszawa => Scrum Master <=
- 2025-06-21 Warszawa => Senior Account Manager <=
- 2025-06-20 5w30 zamiast 0w30
- 2025-06-19 Klima i samodzielne uzupełnienie
- 2025-06-20 Upgrade z i7-6xxx
- 2025-06-19 Czy ołowiane perowsiki, drukowane na folii to był fake ?
- 2025-06-20 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-06-20 Gdynia => Sales Executive / KAM <=