Pytanie do znawców Pythona

0

Zastanawiam się czy zainwestować w naukę Pythona. Jestem ciekawy, czy za pomocą tego języka można robić poważne rzeczy, czy raczej jest to język programowania dla dzieci ? Jak się ma ten język do C++ lub C# na platformie NET ?

1

Tak, można robić poważne rzeczy w Pythonie i jest jednocześnie łatwy do nauki.

Jak się ma ten język do C++ lub C# na platformie NET ?

O co pytasz, o popularność języka, ilość ofert pracy, techniczne różnice?

3

czy raczej jest to język programowania dla dzieci ?
Na pythonie opiera sie wiekszosc data science. To, ze jest prosty to tylko zaleta.

0

Niby coś się w nim robi, ale niewiele i nie u nas...

W Holandii miałem hardware'ową pracę w Pythonie (moduły diagnostyczne do maszynki produkującej chipy). Ale takie rzeczy to raczej nisza...

Z wymienionych przez Ciebie języków, moim zdaniem na dłuższy romans najlepiej wybrać C#.

1
MisiekNaLuzie napisał(a):

czy raczej jest to język programowania dla dzieci ?

Na pythonie opiera sie wiekszosc data science. To, ze jest prosty to tylko zaleta.

Taa. Chyba tego akademickiego. W praktyce potrzebujesz lepszej wydajnosci. Tesla sie np. na C/C++ przepisala.

0

@lion137: Czytam wszędzie że Python jest bardzo popularny i zastanawiam się czy się go nie nauczyć. Musiałbym kupić na początek kilka książek. Nie wiem tylko, czy ten język bardziej przypomina Basic albo C# z początków czy ma też bardziej zaawansowane elementy takie jak np. klasy generyczne, delegaty, zdarzenia itp i jak jest z aplikacjami graficznymi w Pythonie . Czy wy używacie Visual Studio do programowania w Pythonie czy czegoś innego ?

4

Jedyny prawdziwy poważny język to Java. Dlatego powstaje w Javie większość softu bankowego /s

2

czy ma też bardziej zaawansowane elementy takie jak np. klasy generyczne

Generyki w dynamicznie typizowanym jezyku? No nie :P
Tzn. masz jeden wielki generyk pod tytulem any ¯_(ツ)_/¯

0

@Zimny Krawiec: Pyton jest dynamicznie typowany, więc rozmowa o generykach, czy delegatach nie ma za bardzo sensu. Jeśli interesuje Cię to o co pytasz, programy graficzne, czy programowanie pod Visual Studio, to Python jest, raczej nie dla Ciebie.
Tego języka używa się głównie w webie, sporo fajnych framewoków i bibliotek asynchonicznych; oraz w data science, jedne z najpopularniejszych bibliotek używanych w industry i Academii, (dobra, na uczelniach jest może więcej R) to: PyTorch, TensorFlow, Scikit-learn

0

@lion137: Czyli tak reasumując do czego można wykorzystać Pythona ?

1

Tak jak napisałem, webówka, frameworki, Django, Flask, REST - owe API, data science, AI, itp... plus skryptowanie, czyli, np., taka pomocnicza "day to day job" w jakiejś wiekszej firmie.

0

Znawcą nie jestem, ale co raz większa ilość ofert w tym języku, w Polsce, za bardzo duży hajs wskazuje na to, że chyba warto.

1

Warto znać ten język, ale o ile nie siedzisz w ML/data science to nie powinien być to twój główny wybór. Python najlepiej się sprawuje w małych i średniej-wielkości projektach. Do tych większych też się nadaje, ale trzeba mieć sporo dyscypliny i ogarnięty zespół żeby nie zrobił się z tego clusterfuck.

0

Tak pomyślałem, że podzielę się pewnym przemyśleniem:

Jak człowiek uczy się jakiegoś programistycznego języka i chce być w nim coraz lepszy to z czasem dowiaduje się o jakiś praktykach, technikach jakie są stosowane w języku, często to kwestia zależna od paradygmatu, czy obecnych konstrukcji jakie oferuje dany język. Język promuje pewne podejścia które są zgodne z nim oraz kładzie nam kłody pod nogi jeśli próbujemy inaczej kodować. Gdy dostatecznie dużo razy się potkniemy, stajemy się lepsi i w końcu patrzymy na problemy zgodnie z wybranym językiem. Cenę jaką płacimy za tą naukę jest fakt, że ciężko jest się z tego wyleczyć, ciężko jest dostrzec inne alternatywy, a jeszcze ciężej jest się przełączyć na nie, bo trzeba wcześniej oduczyć się starych sztuczek, rzeczy które są dla nas łatwe i przede wszystkim fundamentalne.

Python pod tym względem jest trochę wyjątkowy. To jest język króty oferuje kilka różnych i ciekawych możliwości: opp, fp, contextmanagery, immutable types, generatory, async, metaclass, repl. Jest w czym wybierać i niestety każda z tych opcji długofalowo ma jakieś niedociągnięcia przez co ogranicza, i tak w praktyce ciężko jest wybrać taki sposób, który mógłby w pythonie się zwracać. Te niedogodności to była dla mnie zachęta do dalszej nauki i dalszego eksperymentowania, a wraz z tym przekonywałem się na własnej skórze jak diametralnie może się zmienić moja perspektywa patrzenia na problem. Zacząłem dostrzegać minusy, oceniać konstrukcje względem stawianych problemów co doprowadziło do tego, że coraz rzadziej na nich polegałem.

Gdybym miał wskazać jakie podejście python najbardziej promuje to właśnie byłoby to dążenie do prostoty poprzez unikanie purystycznych rozwiązań, nadużywania mutacji, formalnego kodu, hacków czy rozdętego pisania. Pisząc w pythonie najlepiej zwraca się postawa gdy piszesz tak prosto i tak jawnie jak to możliwe, wtedy praca z pythonem staje się super doświadczeniem.

0

oczywiście python nie jest językiem programowania dla dzieci on po prostu jest prosty można robić wiele rzeczy

1

Obawiam się że mi się teraz wszystkie te języki pomieszają. C++, C#, Python, Java.

Jak dopiero zaczynasz przygodę z programowaniem to eksperymentuj z kilkoma.
Ja przed pierwszą pracą bawiłem się programowaniem w Basicu, ASM, Action!, C, C++, Pascal, Logo.

Obecnie do eksperymentowania masz bardzo duży wybór i języki są coraz bardziej zaawansowane.
Masz Julia, Clojure, Ocaml, Rust, Nim, Haxe, Zig, Haskell, Odin, i te trochę mniej rozrywkowe - Java, C#, Kotlin, Scala.
C/C++/ASM/Fortran polecam tylko do projektów gdzie chcesz wycisnąć 100% wydajności procesora. A to tak naprawdę jest przereklamowana zaleta. Lepiej jest pobawić się np. w Javie samym algorytmem niż np. w C++ konstruktorem kopiującym z przenoszeniem (co w innych językach czy realnym świecie nie ma żadnego znaczenia).
Rust ponoć jest w niektórych rzeczach szybszy od C/C++.
Fortran na pewno najlepszy w liczeniu macierzy (C/C++ w tym temacie są zaskakująco skomplikowane).

Pythona też planuję nauczyć się w tym roku, korzystałem z niego już przy różnych okazjach (shell do API, skryptowanie deploymentu Javy), ale nigdy nie było czasu siąść do jakiejś książki która by nauczyła podstaw.

Python potrafi zaskakiwać szybkością, renderingiem w czasie rzeczywistym lub batchowym czy wydajnością ML (patrz TensorFlow), głównie dzięki wsparciu sprzętu i bibliotekom stworzonym w innych językach, głównie C/C++.

Jak chcesz w miarę wydajne i łatwe programowanie, spróbuj jeszcze z Go lub Julią.

2

Teraz to złoty czas dla pythona. Miliony monet i ofert pracy, próg wejścia niski. Pakować się i to po same uszy.

A opis wad czy zalet... Wrzuce shameless pluga z mojego bloga - Krótki opis wad i zalet Pythona i trochę o Historii pythona

3

Za każdym razem kiedy ktoś mówi, że Python jest wolniejszy niż Java, coś we mnie umiera. Zacznijmy od tego, że przez długi czas w rankingach benchmarków serwerów http w kategorii req/s JS biło Javę. W wielu PHP jest na czele. To co wy właściwie macie na myśli mówiąc, że wasz język jest szybszy?

Albo jak architekt wybiera Javę bo mówi, że jest szybsza niż Python i programiści piszą aplikację w Javie ze Springiem, która raz na godzinę ma się uruchomić, wykonać jakieś proste zadanie. Przecież Python zyskuje tutaj na pół minuty na samym odpaleniu maszyny wirtualnej.

Albo jak ktoś mi mówi, że w Pythonie są robione hacki, a w Javie macie Springa, jakieś Beany, singletony, AOP, refleksje. To gdzie jest więcej hacków? Wystarczy dać programistom Clean Code do przeczytania i odzywać się w Pull Requestach to kod w Pythonie będzie czysty.

3
twoj_stary_pijany napisał(a):

Za każdym razem kiedy ktoś mówi, że Python jest wolniejszy niż Java, coś we mnie umiera.

Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java. Python jest wolniejszy niż Java.

Żyjesz :] ?

0

Nie ma wolnych języków programowania - są tyko niestaranne implementację. Każdy język programowania ma swój smaczek, który należy odkryć aby pisać w nim szybko działające programy. Po odbyciu Bootcampu nie będziesz umiał pisać szybkich programów. Bo żeby pisać szybkie programy to trzeba rozumieć architekturę komputera i jak to wszystko działa pod maską. Algorytmy + struktury danych + architektura PC + architektura maszyny wirtualnej = szybki program. Dynamiczne typowanie oraz brak JIT sprawia że Python jest trochę wolniejszy ale to nie problem bo język pozwala na użycie bibliotek napisanych w C++.

0
twoj_stary_pijany napisał(a):

Za każdym razem kiedy ktoś mówi, że Python jest wolniejszy niż Java, coś we mnie umiera. Zacznijmy od tego, że przez długi czas w rankingach benchmarków serwerów http w kategorii req/s JS biło Javę. W wielu PHP jest na czele. To co wy właściwie macie na myśli mówiąc, że wasz język jest szybszy?

Albo jak architekt wybiera Javę bo mówi, że jest szybsza niż Python i programiści piszą aplikację w Javie ze Springiem, która raz na godzinę ma się uruchomić, wykonać jakieś proste zadanie. Przecież Python zyskuje tutaj na pół minuty na samym odpaleniu maszyny wirtualnej.

Albo jak ktoś mi mówi, że w Pythonie są robione hacki, a w Javie macie Springa, jakieś Beany, singletony, AOP, refleksje. To gdzie jest więcej hacków? Wystarczy dać programistom Clean Code do przeczytania i odzywać się w Pull Requestach to kod w Pythonie będzie czysty.

Ja np. nie powiedzialem "Python jest wolniejszy niz Java" tylko

Na studiach to co moim kolegom w Pythonie sie liczylo 2h to mi w Scali tylko 5 minut. A takie obliczenia trzeba bylo wykonac wielokrotnie z roznymi parametrami uczenia.

I to jest pstryczek w kierunku "a bo Python to jest dobry do AI, ML, ...". Co w sumie samo w sobie tez jest absurdalne bo sie ludziom reklamuje Pythona przez jakies MLe a oni koncza piszac w Django - huh?


Tak w ogole jak ktos interesuje ML to chyba sie powinien uczyc ML a jezyk juz jakis znac :)

0

Mój kolega, maniak PHP, na studiach przepisał GAlib (polecany przez prowadzących) z Javy do PHP i tak go zoptymalizował, że algorytm genetyczny w PHP działał dziesiątki razy szybciej.

0

@twoj_stary_pijany: Mamy na myśli to, że Java jest częściowo językiem interpretowanym i częściowo JIT compilowanym, a python tylko interpretowanym

0
m94 napisał(a):

@twoj_stary_pijany: Mamy na myśli to, że Java jest częściowo językiem interpretowanym i częściowo JIT compilowanym, a python tylko interpretowanym

Python też jest częściowo kompilowany. Aczkolwiek, nie jest to JIT.

0

"Python jest wolniejszy od C++", Gdzieś czytałem, że niby tak, ale człowiek nie jest w stanie nawet tego zauważyć więc są to minimalne wartosci.

0
stivens napisał(a):

Ja np. nie powiedzialem "Python jest wolniejszy niz Java" tylko

Na studiach to co moim kolegom w Pythonie sie liczylo 2h to mi w Scali tylko 5 minut. A takie obliczenia trzeba bylo wykonac wielokrotnie z roznymi parametrami uczenia.

I to jest pstryczek w kierunku "a bo Python to jest dobry do AI, ML, ...". Co w sumie samo w sobie tez jest absurdalne bo sie ludziom reklamuje Pythona przez jakies MLe a oni koncza piszac w Django - huh?

No fajnie, że umiesz pisać w Scali, tylko jak dokładnie odpalasz ten Twój program w Pythonie? Bo jeżeli piszesz program do obliczeń numerycznych, jakieś modele i odpalasz to na procesorze to strzelasz sobie w kolano. Python jest świetnym interfacem do pracy z bibliotekami napisanymi w C++, które uruchamiają kod na kartach graficznych. Uruchom mi teraz kod w Scali na karcie graficznej. Teraz mi wyskoczysz z jakimiś libami z Githuba, które potrafią to zrobić. Tylko kto te liby utrzymuje? Widzieliście już kogoś kto je kiedykolwiek wdrożył na produkcję?

0

@twoj_stary_pijany:
https://github.com/scalanlp/breeze

Widze ponad 100 kontrybutorow, 3500 commitow i regularne utrzymywanie od lat.
Do tego dochodza jeszcze biblioteki Javo-centryczne bo Scala dziala na JVMie. To nie jest tak ze Python ma wylacznosc na komunikacje z binarkami.

GPU jest obslugiwane bodajze poprzez delegacje do np. natywnej systemowej libki cuBLAS.


Z przymrozeniem oka ;)

0

@twoj_stary_pijany:
Już miałem zacząć naukę Pythona ale coś mnie odrzuciło . Muszę wziąć głęboki oddech. Autor książki napisał że Python to język wysokiego poziomu a C++ niskiego poziomu i że jeden kompilator Pythona może być 10 razy szybszy od innego ale nie zawsze. Chce pisać w Visual Studio. Nawet nie wiem, która tam jest wersja.
Jest co najmniej 7 różnych wersji.
Python - https://pl.python.org/
Cython - https://cython.org/
Pypy- https://www.pypy.org/
stackless-python - https://pypi.org/project/stackless-python/
IronPython - https://ironpython.net/
Psyco - http://psyco.sourceforge.net/
Jython - https://www.jython.org/

0

Dobry programista zna kilkanaście języków programowania i wybiera jeden z nich w zależności od problemu. W Pythonie bardzo szybko napiszesz skrypt który wykona np. przetwarzanie plików tekstowych w katalogu. Python ma bardzo fajną składanie i ciekawe funkcje zaporzyczone z języków funkcyjnych. Jeżeli skrypt będzie uruchamiany sporadycznie to nie ma sensu przejmować się szybkością wykonania programu.

0
ple napisał(a):

Dobry programista zna kilkanaście języków programowania i wybiera jeden z nich w zależności od problemu. W Pythonie bardzo szybko napiszesz skrypt który wykona np. przetwarzanie plików tekstowych w katalogu. Python ma bardzo fajną składanie i ciekawe funkcje zaporzyczone z języków funkcyjnych. Jeżeli skrypt będzie uruchamiany sporadycznie to nie ma sensu przejmować się szybkością wykonania programu.

Kilkanaście? @ple -- wymień 11 języków, które znasz (albo powinno się znać)!

1 użytkowników online, w tym zalogowanych: 0, gości: 1