Wpis z mikrobloga

Tylko, że lepszy :) Python to piękny język. Każdy powinien go znać.
Z mojego punktu widzenia ma tylko dwie wady:

1. Marna wydajność interpretera (ale można z tym żyć)
2. Brak porządnej wielowątkowości.

#programowanie #python
gacek_w - Tylko, że lepszy :) Python to piękny język. Każdy powinien go znać. 
Z moje...

źródło: python_is_basic

Pobierz
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gacek_w: i te dwie wady eliminują ten język w wielu zastosowaniach.
przyjęło się, że pythona używa się w data science, ale w data science również przetwarza się dane wielowątkowo, przynajmniej mi się dość często zdarzało. napisanie kodu wielowątkowego w pythonie, to jest taki ból w tyłku, że już wolę to robić w MATLABie xD
  • Odpowiedz
@ly000: z tego co kojarzę pracują nad GILem i ogólnie poprawą wielowątkowości. Ale dla tych którzy prędkość mają za priorytet języki takie jak Mojo mogą być lepsze.
  • Odpowiedz
@gacek_w: nie widzę co jest w nim pięknego - cholernie niespójny, niekonsekwentny design, bardzo łatwo o błędy, okropne zarządzanie zależnościami
  • Odpowiedz
  • 0
cholernie niespójny, niekonsekwentny design, bardzo łatwo o błędy, okropne zarządzanie zależnościami


@Krolik: To prawda. Ale i tak jest piękny mimo swoich ułomności. Piękniejszy jest chyba tylko Haskell (ale to inny paradygmat). Jest idealny IMO do nauki algorytmów i struktur danych. Do pisania niewielkich programów: max kilkaset linijek, jako glue-code, język skryptowy (choć tu może lepsza jest Lua) też. I wszędzie tam, gdzie ludzie z jakiegoś powodu używają JavaScript... (nie licząc
  • Odpowiedz
  • 0
@Krolik: Czyż to nie jest piękne? Powiedzcie sami :)

def car_pooling(trips: List[List[int]], capacity: int) -> bool:
max_trip = max(trip for _, _, trip in trips)
arr_trip = [0] * (max_trip +
  • Odpowiedz
@gacek_w: nie widzę w tym nic pięknego. Ten kod wyglądałby niemal identycznie, z dokładnością do składni, w Javie, C#, Go czy nawet o zgrozo C++.

Co do niekonsekwencji - dlaczego funkcyjne for i if ma odwróconą składnię względem imperatywnych odpowiedników? Scala I Rust mają zrobione to lepiej - tam wszystko jest wyrażeniami jest jedna wspólna składnia.

Co do piękna designu - po co Pythonowi dwa operatory przypisania?

Co do zarządzania
  • Odpowiedz
  • 0
en kod wyglądałby niemal identycznie, z dokładnością do składni, w Javie, C#, Go czy nawet o zgrozo C++.


@Krolik: No nie zgodzę się. Generatory w Javie? Może i da się, ale jakim kosztem... ;) Swoją drogą: Java to też świetny język, ale pod innymi względami. W Javie właśnie najlepiej mi leży współbieżność. Jest lepiej imo rozwiązana niż w modern C++ i (nawet) Go, ale to może kwestia tego, że do
  • Odpowiedz
@arysto2011: użycie PySparka to świetny sposób na przewalenie tysięcy dolców na chmurę na zadanie, które lokalnie może zrobić program napisany w C++/Zig/Rust/Fortran/Python+Numpy w kilka minut na zwykłym laptopie lub w najgorszym razie na serwerze. 90% użyć sparka to cv driven development (dane własne na podstawie naprawiania problemów wydajnościowych ze sparkiem zgłaszanych przez klientów - często na zbiorach danych po kilkadziesiąt GB czyli tyle co nic).

Właściwie to spark stracił sens
  • Odpowiedz
@gacek_w: generatory masz lepsze w Scali a w Javie też za pomocą streamów uzyskujesz podobny efekt, a nawet streamy są bardziej ekspresywne bo można robić chaining metod, a w Pythonie próba użycia map/filter/reduce wielokrotnie kończy się paskudnym zagnieżdżaniem.
  • Odpowiedz
@arysto2011: tak, heca polega na tym że większość klientów tego nie wie i nie wie jak. Zapuszczają skrypt w pythonie na lokalnym serwerze, chodzi to wołowo i konkludują ze muszą użyć sparka (lub innego skalowania poziomego - to samo dotyczy baz danych) zamiast napisać skrypt w czymś szybkim i dobrze zoptymalizować. Współczesne komputery są serio cholernie szybkie tylko trzeba umieć ich użyć. Większość firm nie ma tyle danych ani takich
  • Odpowiedz
@horus666: tiobe jest nic nie warty bo ma nieprawidłową metodykę, wg której C/C++ ma sumarycznie większą popularność niż Python w co dość trudno uwierzyć. Jeśli już to cytuj Pypl, Redmonk albo Overflow survey. Popularność języka nie koreluje wcale z jego jakością. To że większość ludzi cyka zdjęcia smartfonami nie oznacza że smartfon jest lepszym aparatem fotograficznym niż lustrzanka / bezlusterkowiec. Tak samo to że większość ludzi jada w fastfoodach nie
  • Odpowiedz
@ly000: zgoda, ale ja pójdę nawet dalej - po co mam używać parallel for loop jak w innych językach wystarczy zwykły jednowątkowy for i będzie i tak szybciej ;)

I żeby nie było że wymyślam: ostatnio benchmarkowalem jeden z naszych klastrów - Nosqlbench napisany w Javie ma gorszą wydajność przy 256 wątkach na 12 rdzeniach niż Latte napisane w Rust odpalone na jednym wątku. Latte jednym wątkiem potrafi strzelać do
  • Odpowiedz