Wpis z mikrobloga

Czytam już kolejny wpis, w którym osoba pytająca o język na początek przygody z programowaniem dostaje odpowiedź: Python.

Moim zdaniem w ten sposób się wyrządza takim osobom krzywdę. I nie chodzi mi o to, że programowanie musi być trudne, a jak nie umiesz napisać hello world w malbolge albo ręcznie nie zarządzasz pamięcią to #!$%@? jesteś, a nie koder xD

Bardziej o to, że Python tworzy złudzenie, że programowanie jest łatwe, szybkie i przyjemne, bo do wszystkiego są biblioteki i w zasadzie wszystko można zrobić jednym importem i jest super, bo działa. Tylko, że w prawdziwym świecie tak nie jest, a do całej masy rozwiązań, na które jest zapotrzebowanie Python się zwyczajnie nie nadaje i w rzeczywistości będzie trzeba pracować w mniej "fancy" językach.

Druga sprawa. Nie, Python nie uczy dobrych praktyk. Wręcz przeciwnie, poza samym formatowaniem kodu Python uczy złych praktyk. To, że jest dynamicznie typowany, to jest jeden problem, ale większym jest to, że rzeczy, które środowisko Pythona uważa za "pythonic" to w innych językach są najzwyczajniej świecie anty-wzorce, najlepszym przykładem będzie control flow za pomocą wyjątków. Jak się przychodzi do pytonga z innych języków (Java, C++, C# itp) i zobaczy kod pythona napisany zgodnie ze standardami, to pierwszą myślą jest, że to jest #!$%@? napisane XD Oczywiście to nie znaczy, że tak jest, ale odmienność jest na tyle duża, że potem może być problem jak trzeba będzie w czyms typowo "biznesowym" pisać.

Zresztą #!$%@? (naprawdę #!$%@?, a nie z punktu widzenia innego języka) kod w Pythonie można pisać na milion sposobów i jeżeli ktoś nie wyniósł zrozumienia tego jak pisać dobry kod z języków, które silniej narzucają dobre praktyki, to nawet nie będzie wiedział, że robi źle, chyba że od samego początku będzie się starał robić zgodnie ze sztuką, ale doskonale wiemy, że żaden początkujący czy nawet junior tak od razu nie robi XD

Ponadto często opisywany jest fenomen pythoniarzy, którzy zachłyśnięci tym językiem nie są się w stanie przystosować do innych standardów.

A trzecia sprawa jest taka, że, generalnie, im niższy próg wejścia, tym mniejszy hajs.

Python jest dobry do nauczenia się co to są pętle, klasy, funkcje i do nauki algorytmów czy struktur danych, bo to są rzeczy niezależne od języka i tutaj mega łatwy sposob pisania i odpalania programu pomaga. Albo jak ktoś chce iść w AI i ma background matematyczny. Ale już do nauki czegoś bardziej w stylu inżynierii oprogramowania, python jest tragiczny.

#programista15k #programowanie #naukaprogramowania #niepopularnaopinia
  • 14
język na początek przygody

Python jest dobry do nauczenia się co to są pętle, klasy, funkcje i do nauki algorytmów czy struktur danych, bo to są rzeczy niezależne od języka i tutaj mega łatwy sposob pisania i odpalania programu pomaga


@kilemile: no, więc w czym problem? Bardzo ładnie zdefiniowałeś tutaj "początek przygody".

control flow za pomocą wyjątków


tutaj od biedy mógłbym się zgodzić, ale cały temat sprowadza się do czytelności, czyli
@kilemile: Zgadzam się. Uważam, że im prostszy język programowania na początek tym większe problemy w przyszłości będą. Zanim mnie zjadą inni: Nie chodzi mi o implementacje skomplikowanych algorytmów czy struktur danych. Zaczęcie nauki od dajmy na to C od razu wymusza na użytkowniku dbałość o szczegóły i chwilę myślenia zanim się w ogóle zacznie pisać kod.

Dużo ludzi poleca pythona dlatego, że można z nim zrobić praktycznie wszystko więc taki użytkownik
@thexDguy: No fajnie, ale to co ma wspólnego z wpisem?

@kilemile: no, więc w czym problem? Bardzo ładnie zdefiniowałeś tutaj "początek przygody".


@croppz: No własnie w tym, że "początek przygody" można rozumieć dwojako. Jest mnóstwo ludzi, którzy coś tam liznęli albo mieli na studiach semestr albo dwa programowania i już takie rzeczy ogarniają i chcą się wgłębić w praktyczne programowanie aplikacji. Dla nich Python nie będzie optymalnym wyborem (chyba,
Poza tym wydaje mi sie, że właśnie ludzie polecają pythona żeby ktoś w ogóle mógł coś szybko zrobić i skompilować jakiś prosty kod i zobaczyć czy go to interesuje czy nie.


@oxern: Nie, ludzie polecają Pythona do klepania np apek webowych, żeby potem startować na jakiegoś Django deva i takie rzeczy. To tego co napisałeś, to oczywiście jest idealny.
@kilemile: jeżeli będzie językiem pierwszym i jedynym to faktycznie, efekty mogą być słabe. Dlatego na przykład na MIT pierwszy semestr albo rok programuje się w pythonie, potem wchodzi java.

IMO warto znać przynajmniej trochę i jedno, i drugie podejście. A najlepiej jeszcze trochę się pobawić jakimś językiem typowo funkcyjnym. Inaczej robi się z tego taki mistrz złotego młotka z dość ograniczonymi horyzontami. ( ͡° ͜ʖ ͡°)
@croppz: No tak, dokładnie o to mi chodzi. Najlepiej poznać przynajmniej coś z trzech światów Haskell/Scala/F#, Java/C# i Python (JS? Ruby?) no i warto przynajmniej mieć świadomość niskopoziomowych rzeczy jakie się robi w C/C++, żeby wiedzieć co się dzieje pod spodem. Z takim zestawie powinniśmy się odnaleźć w większości zadań.
@kilemile: niestety nie mogę się zgodzić, python ma swoje zastosowania i jest ich sporo, tylko na leży do jednej z kategorii języków i tyle, najlepiej właśnie nauczyć się każdego języka z danej rodziny tj jak napisałeś, java/c# i python/php/js to jest rozsądne minimum, tj liznąć jakieś podstawy w obu, dlatego dobrym pomysłem mimo wszystko są jakieś studia bo zwykle właśnie dają one podstawową wiedzę o obu językach, haskell/scala/f# to raczej imho
haskell/scala/f# to raczej imho taki dodatek, można się przetoczyć przez całą karierę programistyczną nie mając za bardzo kontaktu z tymi językami


@Jurigag: Z nimi samymi to może i nie, ale będziesz miał z pewnością styczność z koncepcjami wziętymi z paradygmatu funkcyjnego, który wspierają, bo coraz więcej z nich przenika do mainstreamowych języków, poza tym w niektórych zastosowaniach (systemy rozproszone, big data, automatyczne systemy tradingowe itd.) są bardzo popularne, a kto wie
@kilemile: Daje plusa i jako noob - potwierdzam.

Python to pierwszy jezyk za jaki sie wzialem chcac robic web dev. Dosc szybko skonczylo sie tak, ze zladowalem na C#. Python na tamten czas (juz z rok uplynal) wydal mi sie dosc nielogiczny. Oczywiscie nie mozna tak napisac, bo przeciez wewnetrznie logiczny to on jest; rzecz w tym, ze na bazie tego jezyko dosc ciezko sobie - przynajmniej mi - wyobrazic jak