-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
0.net!news.mixmin.net!aioe.org!.POSTED!not-for-mail
From: AK <n...@n...net>
Newsgroups: pl.comp.programming
Subject: Re: Jaki język polecić początkującemu? - komentarz do artykułu w
Programista 9/2018
Date: Thu, 10 Jan 2019 15:47:13 +0100
Organization: Aioe.org NNTP Server
Lines: 104
Message-ID: <q17ltn$fmv$1@gioia.aioe.org>
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>
NNTP-Posting-Host: MV2AClG/2c9bVI3d/hJi2Q.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Complaints-To: a...@a...org
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101
Thunderbird/60.4.0
Content-Language: en-GB
X-Notice: Filtered by postfilter v. 0.8.3
Xref: news-archive.icm.edu.pl pl.comp.programming:213237
[ ukryj nagłówki ]On 2019-01-10 14:22, g...@g...com wrote:
> W dniu czwartek, 10 stycznia 2019 14:02:42 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).
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().
>> 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.
>> 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.
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.
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 :(
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.
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:).
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).
AK
Następne wpisy z tego wątku
- 11.01.19 07:57 Maciej Sobczak
- 11.01.19 08:05 Maciej Sobczak
- 11.01.19 19:14 g...@g...com
- 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
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 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
Najnowsze wątki
- 2025-07-05 Shrek, wzrośnie cena prądu :-)
- 2025-07-05 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-05 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-07-06 Płacić za wodę ze studni
- 2025-07-06 Kolejny inżynier...
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-04 od kiedy można obrażać Plastusia i do kiedy Batyra?
- 2025-07-05 UE ustępuje pod presją Trumpa. Socjaldemokraci: oddaliśmy miliardy
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=