Wpis z mikrobloga

ja bym powiedział, że jednak dużo lepszy niż JS. Nie jest językiem funkcyjnym który ktoś przerabia na język najpierw imperatywny a potem obiektowy. No i jednak jest ściśle typowany (w run timie).

@CamusVevo: To że jest to język skryptowy i nawet super IDE tego do końca nie rozwiąże


@zibizz1: użyłeś kiedyś annotacji typów i mypy? Dostaniesz wtedy takiej samej klasy sprawdzenia co w C++ w czasie kompilacji.

A
  • Odpowiedz
użyłeś kiedyś annotacji typów i mypy?


@okretowy_sanitariat: nie, wyrobiłem sobie zdanie o pythonie zanim weszły dobrze te protezy typu mypy i pyright i nie rozumiem dlaczego nie są częścią kolejnej wersji języka jak to ma miejsce w innych projektach tylko jakimiś dodatkami. Większe doświadczenie mam w JS/TS gdzie TS rozwiązuje masę rzeczy i jest super ale wsteczna kompatybilność z JS nadal mocno bruździ.
  • Odpowiedz
Bo Python nigdy nie był i nigdy nie będzie językiem silnie typowanym


@papaj42: Myslalem ze python jest silnie typowany, bo sam nie zmieni ci typu jak JS np (gdzie "2" + 2 == "22", a w pythonie to bedzie TypeError), ale jest tez dynamicznie typowany, wiec mozesz se raz dac x = "2", a zaraz pozniej x = 2, i to normalnie dziala.
  • Odpowiedz
@binarny_pasek: Ostre dyskusje pasjonatow. Ja mam w------e na jezyk, wazne zeby kwit na koniec miesiaca sie zgadzal. Programowanie na warstwie w ktorej klepie sie logike biznesowa to takie bardziej zaawansowane klepanie formul w Excelu.
  • Odpowiedz
@zibizz1: mypy i pyright nie mogą być częścią języka ze względu na wsteczna kompatybilność.

Do togo zauważ, że w pythonie postępuje ekstrakcja istotnych rzeczy z kodu pythona do paczek publikowanych na pypi (pip, wheel, virtualenv, etc). Pozwala to publikować aktualizację narzędzi bez czekania na nową wersje pythona. Z tego powodu nawet jak mypy lub pyright będą dostarczane z domyślna instalacją pythona to dalej będą to wersje z pypi.
  • Odpowiedz
@zibizz1: użyłeś kiedyś annotacji typów i mypy? Dostaniesz wtedy takiej samej klasy sprawdzenia co w C++ w czasie kompilacji.

Buhaha, zawsze rozwala mnie jak ktoś kto nie zna C++ robi porównania do C++. Te śmieszne adnotacje typów w Pythonie to zabawka nawet w porównaniu do systemu typów Javy a co dopiero szablonów C++, traitów Rust czy typów generycznych Haskella/Scali.

Pokaż mi jak wyspecyfikujesz tymi adnotacjami funkcje generyczne, czyli takie które
  • Odpowiedz
Ze wszystkich języków których używałem Python ma najkrótszy "time to market"


@Massad: ma najkrótszy time to market jeśli poprzeczka jakościowa jest postawiona bardzo nisko. Czyli jeśli akceptujemy duże prawdopodobieństwo wywrotki na produkcji, duże zużycie zasobów, niską wydajność i kiepski user experience przy instalacji (to cudowne uczucie po nieudanej instalacji apki pytonowej dowiedzieć się że musisz zainstalować kolejne już środowisko pythona od zera). Czyli w sam raz do prototypów na własny
  • Odpowiedz
@Krolik: Czasami do ubicia muchy warto siegnac po packe, a nie po czolg. Dawno tego nie slyszalem, bo nie obracam sie w towarzystwie w ktorym trzeba takie rzeczy wyjasniac, ale kiedys czesto widywalem haslo "Choose the right tool for the job" przy roznych dyskusjach/artykulach poswieconych porownaniu jezykow. Najpierw zbiera sie wymagania od klienta, pozniej dopytuje czy na pewno wie czego chce i dogrywa szczegoly, a dopiero pozniej mozna rozmyslac nad
  • Odpowiedz
@Krolik: Mam wrażenie, że albo pracowałeś z kiepskim zespołem programistów Pythona i z dobrym od innego jezyka, albo powtarzasz to co usłyszałeś w internecie.

Tak miałem do czynienia z takimi apkami pythonowymi, że po próbie ich instalacji musiałem stawiać środowisko od pythona od nowa. Maiłem też tak z Javą (co jest głupie bo java łatwo pozwala dorzucić wszystkie biblioteki). Miałem też sytuacje, że po wykonaniu instrukcji aplikacji napisanej w C++
  • Odpowiedz
@Massad:

pip install -r requirements.txt


No super, tylko co się dzieje jak apka potrzebuje innej wersji jakiejś biblioteki albo inną wersję pythona niż już masz zainstalowaną? Ale inna apka potrzebuje znowu innej wersji. I wtedy zaczyna się kombinowanie ze środowiskami wirtualnymi. Ja już mam takich środowisk na swoim laptopie 3 i teraz jak chce uruchomić jakaś aplikacje to zawsze muszę pamiętać, które środowisko pythona muszę uaktywnić. Oczywiście jest na ten
  • Odpowiedz
No super, tylko co się dzieje jak apka potrzebuje innej wersji jakiejś biblioteki albo inną wersję pythona niż już masz zainstalowaną? Ale inna apka potrzebuje znowu innej wersji. I wtedy zaczyna się kombinowanie ze środowiskami wirtualnymi. Ja już mam takich środowisk na swoim laptopie 3 i teraz jak chce uruchomić jakaś aplikacje to zawsze muszę pamiętać, które środowisko pythona muszę uaktywnić. Oczywiście jest na ten problem rozwiązanie: docker, ale chyba nie oczekujesz
  • Odpowiedz
pipx, pyenv i kilka innych rozwiązań. A wiesz jak jest fajnie jak program skompilowany wymaga innej wersji biblioteki współdzielonej niż jest zainstalowana w systemie?


@Massad: to nie dostarczasz programu linkowanego dynamicznie tylko linkujesz statycznie i problem rozwiązany.

A napisanie 2 razy w pytonie jest często dużo tańsze niż raz w
  • Odpowiedz
i do którego nie masz tak dużej ilości bibliotek jak w Pythonie więc zamiast po prostu zaimportować rozwiązanie musisz je implementować od zera.


@Massad: nope, wszystkie biblioteki pythona wywołam z Rust, choć w sumie nigdy nie miałem potrzeby bo te słynne biblioteki Pythona albo mają lepsze odpowiedniki natywne albo i tak są napisane w C i C++, więc są dostępne bezpośrednio.
  • Odpowiedz
Szybciej napisać to od razu w C++ i potem optymalizować, niż napisać w Pythonie a potem przepisywać do C++.


@Krolik: A czy szybiej jest napisać w C++ i przepisać w C++ czy napisać w Pythonie i przepisać w C++? Bo wszystkie duże projekty w na które miałem wgląd efektywnie były przepisane przynajmniej raz.
  • Odpowiedz