-
X-Received: by 2002:a37:ad4:: with SMTP id 203mr12651qkk.3.1547230472657; Fri, 11 Jan
2019 10:14:32 -0800 (PST)
X-Received: by 2002:a37:ad4:: with SMTP id 203mr12651qkk.3.1547230472657; Fri, 11 Jan
2019 10:14:32 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.
iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!v55no17
93677qtk.0!news-out.google.com!h3ni988qtk.1!nntp.google.com!v55no1793672qtk.0!p
ostnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Fri, 11 Jan 2019 10:14:32 -0800 (PST)
In-Reply-To: <q17ltn$fmv$1@gioia.aioe.org>
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: <c...@g...com>
<2...@g...com>
<5...@g...com>
<9...@g...com>
<1...@g...com>
<8...@g...com>
<d...@g...com>
<a...@g...com>
<c...@g...com>
<6...@g...com>
<3...@g...com>
<a...@g...com>
<a...@g...com>
<5...@g...com>
<q17bsf$1157$1@gioia.aioe.org>
<c...@g...com>
<q17fpf$1j06$1@gioia.aioe.org>
<4...@g...com>
<q17ltn$fmv$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f...@g...com>
Subject: Re: Jaki język polecić początkującemu? - komentarz do artykułu w
Programista 9/2018
From: g...@g...com
Injection-Date: Fri, 11 Jan 2019 18:14:32 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 145
Xref: news-archive.icm.edu.pl pl.comp.programming:213242
[ ukryj nagłówki ]W dniu czwartek, 10 stycznia 2019 15:47:22 UTC+1 użytkownik AK napisał:
> >>> No, można i tak.
> >>
> >> Ano mozna.
> >> Zwlaszcza, ze jest to zgodne ze z podstawowa logika i
> >> specyfika Pythona (metkowanie).
> >
> > A jaka jest "podstawowa logika i specyfika Pythona",
> > z której by ta zgodność wynikała?
>
> Metkowanie.
> 1. Obiekty w Pythonie sa wylacznie "metkowane".
> Kopiowane sa wylacznie prymitywy (int , float, bool i.. i chyba tyle).
Tzn. przekazywane przez referencję?
> 2. definicja funkcji to jest _statement_ wiec wszystko co podlega
> ewaluacji, jest _wlasnie wtedy_ ewaluowane.
> Stad wartosci domyslne sa ewaluowane w momencie wykonania
> _statementu_ def function().
A jakie są pozostałe "statementy"?
> >> Kwestia czy zle (przylaczam sie do twierdzenia ze jest to mylace,
> >> - choc wylacznie dla poczatkujacych), czy dobrze (przy rekurencji
> >> przydatne czesto) jest dyskusyjna.
> >
> > To może podaj kilka argumentów na rzecz takiego rozwiązania
> > (bo ja serio nie widzę żadnego)
>
> W rekurencji latwo zapamietac jakas "sciezke" wlasnie w takim
> parametrze.
>
> No ale przyklad z tej dyskusji.
>
> pierwsze = [2]
> def jest_pierwsza(liczba, pierwsze=pierwsze):
> erasto = int(sqrt(liczba) + 0.5)
> czy_pierwsza = all(liczba % pierwsza for pierwsza in pierwsze
> if pierwsza <= erasto)
> if czy_pierwsza: pierwsze.append(liczba)
> return czy_pierwsza
>
> Mozna zapisac tak:
>
> def jest_pierwsza(liczba, pierwsze=[2]):
> erasto = int(sqrt(liczba) + 0.5)
> czy_pierwsza = all(liczba % pierwsza for pierwsza in pierwsze
> if pierwsza <= erasto)
> if czy_pierwsza: pierwsze.append(liczba)
> return czy_pierwsza
>
> Po co tworzyc niepotrzebnie globala/statica jesli jest on potrzebny
> tylko wewnetrznie?
> Jak wiadomo Python nie posiada takiej konstrukcji zmiennych/obiektow
> statycznych funkcji w takim sensie jak C
>
> int fun()
> {
> static int = 3;
> }
>
> wiec w ten sposob tworzy sie w Pythonie wlasnie zmienne statyczne
> nie zasmiecajac wyzszego namespace.
Można też użyć do tego celu "domknięcia", albo klasy.
Przekazanie parametru rekurencyjnie do funkcji to nic trudnego
> >> PS: Innym podejsciam jest zastosowanie czegos w rodzaju:
> >>
> >> def f(x=on_the_call(None)):
> >> return x
> >
> > Czyli mamy co najmniej dwa złe idiomy zamiast jednego dobrego rozwiązania.
>
> Dlaczego zle ?
> Nie widze w nich nic zlego.
Sam powiedziałeś, że "bywa mylące".
Ja uważam, że jest mylące z dobrych powodów.
> Zwlaszcza w stosunku do expr w takim Lisp gdzie nawet priorytet
> opeatorow poszedl do kosza wiec trzeba go wymuszac odpowiednia
> kolejnoscia ewaluacji i/lub nawiasami (a nawet trzeba wymuszac/okreslac
> tymiz lewo-prawo-lacznosc operatorow).
> Np: (* A (* B (* C D))) to co innego niz (* (* (* C D) B) A)
> Przecie to nieskonczone zrodlo pomylek.
?
Jakich pomyłek?
W każdym języku f(x, f(y, f(z, w))) to raczej coś innego niż
f(f(f(z, w), y, x).
I to nie jest "wymuszanie nawiasami lewo-prawo-łączności operatorów",
bo w Lispie syntaktyczine w ogóle nie ma czegoś takiego.
Akurat operator mnożenia jest (semantycznie) łączny i przemienny,
toteż nie ma znaczenia, czy napiszesz tak, czy inaczej.
Możesz też napisać (* A B C D) albo (* C D B A).
> PS: Tylko mi nie probuj mowic, ze jest inaczej bo drzewiej
> pisywalem (fakt ze rzadko, nie umialem sie przekonac:) w AutoLispie
> makra do AutoCADa "cus tam" liczace i... to dla numeryka byl
> istny koszmar :(
Co ja mam Ci próbować wmówić?
Jak czegoś nie lubisz, to to Twoja sprawa.
> W porzadnych jezykach programowania kolejnosc obliczania expr. byla
> zawsze od lewa do prawa, a priorytet operatorow jest scisle okreslony
> i dla arytmetycznych zgodny z normalna matematyka.
Lepiej zamiast "normalna matematyka" powiedzieć
"matematyka, której mnie uczono".
> Oczywiscie C/C++ to popsul bo w nim stwierdzono (z wydumanych wzgledow
> wydajnosciowych oczywscie:) ze kolejnosc ewaluacji czesci wyrazen jest
> .. dowolna co rowniez jest zrodlem niekiedy koszmarow (gdy
> funckcje maja efekty uboczne - a miewaja czesciej niz sie wydaje:).
W "normalnej matematyce" funkcje nie mają efektów ubocznych.
> PS: Nawiasy nie pomoga. Nawiasy w C/C++ wymuszaja priorytety, ale nie
> kolejnosc ewaluacji wyrazen.
> Np takie cus w Algolu, Pascalu, Fortranie, PL/I, Javie, C# czy innym
> Pythonie:
> double y = 3;
> double fun(double x)
> {
> y += x;
> return y;
> }
> z = 2 * fun(3) + fun(7);
> byloby jednoznaczne (wynik 25), ale juz w C/C++ moze to byc
> albo 25 albo 36 (zaleznie od kierunku wiatru, kompilatora,
> gestosci Slonca, % w nalewce Szwagra itp).
No i bardzo dobrze.
Przynajmniej zniechęca ludzi do pisania takich programów.
Następne wpisy z tego wątku
- 11.01.19 21:31 AK
- 11.01.19 22:42 g...@g...com
- 14.01.19 09:36 Maciej Sobczak
- 14.01.19 09:47 g...@g...com
- 14.01.19 10:12 AK
- 14.01.19 10:29 AK
- 15.01.19 08:03 Maciej Sobczak
- 15.01.19 08:12 Maciej Sobczak
- 15.01.19 08:16 Maciej Sobczak
- 15.01.19 08:46 g...@g...com
- 15.01.19 12:28 AK
- 15.01.19 12:32 AK
- 15.01.19 12:44 AK
- 16.01.19 11:13 Maciej Sobczak
- 16.01.19 12:01 g...@g...com
Najnowsze wątki z tej grupy
- 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??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-21 Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 2024-12-21 Ideologia Geniuszy-Mocarzy dostępna na nowej s. WWW energokod.pl
- 2024-12-21 ciekawy układ magnetofonu
- 2024-12-21 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2024-12-21 Warszawa => Java Developer <=
- 2024-12-21 Zalesie Borowe => Medical Equipment Service Engineer <=
- 2024-12-21 Żerniki => Specjalista ds. Employer Brandingu <=
- 2024-12-21 jak tacy debile
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi