@Krolik trochę tak, trochę nie. Dziwi mnie, że Pythona postrzegasz jako język ze skomplikowaną składnią, gdy obok sobie chwalisz Scalę czy Rusta jakby tam było znacząco prościej O.o Poza tym Twoja odpowiedź wskazuje tylko minusy. Nie wiem na ile merytoryczna jest wypowiedź, gdy ktoś wyłącznie narzeka, że młotkiem ciężko maluje się ściany. Pewne ma rację, ale taka wypowiedź bardziej wskazuje przemęczenie tematem niż jakieś konkrety.
Python owszem pod wieloma technicznymi kwestiami zawodzi i utrudnia pracę, przykładowo:
- jak chcesz pocisnąć OOP.. to tracisz. Bo nie ma interfejsów, modyfikatory są umowne, a typowanie dynamiczne.
- chcesz FP? również tracisz, bo nie ma TCO, brak persistent structures, i uboga ilość funkcji do manipulacji strukturami.
Także im bardziej elastyczne oprogramowanie tworzymy w Pythonie tym trudniej jest tym zarządzać i utrzymywać.
Python się zwraca gdy:
-
Zamiast OOP, wybierasz skromne object based - czyli zamiast definiować nowe klasy to dane modelujesz wyłącznie przy użyciu wbudowanych typów. W pythonie jest to o tyle wygodniejsze względem javascript, że tutaj struktury lepiej się printują, python jest silnie typowany, łatwiej się kopiuje, jest większy wybór kolekcji przy modelowaniu, źródłowe dane łatwiej jest chronić, bo są opcje na niemodyfikowalne dane, a i też Python ułatwia zapisanie kodu tak, by to co robimy zbiegało do postaci wyrażeń niż instrukcji.
-
Gdy większość swojej pracy realizujesz z poziomu REPL. Na przykład jak kodujesz selenium to nie piszesz najpierw programu, a potem sprawdzasz jak to działa. Tylko uruchamiasz REPL i każde Twoje działanie od razu wpływa na selenium, piszesz i widzisz jak każda najmniejsza operacja rzutuje na pracę programu od razu. Jest szybsza pętla zwrotna, lepszy feedback. Pisanie w REPL może się wydawać niepraktyczne i niewygodne w operowaniu, ale w PyCharm możesz bez problemu podpiąć skrót, by fragment kodu jaki napiszesz w IDE został wykonany w bezpośrednio w podtrzymywanej sesji REPL. Tu warto również ustawić REPL, aby miał włączony autoreloading i wtedy praca z kodem to bajka.
Jak dla mnie Python jest spoko do szkicowania, zadań w tle, wizualizacji danych, przerzucana danych z miejsca A do miejsca B, automatyzacji, jest jak programowalny excel. Excel to dobre słowo, najlepiej oddaje możliwości Pythona. Python pozwala myśleć o danych, o programie w paru płaszczyznach, ułatwia myślenie, ale sam w sobie arkusz excela nie jest jednak końcowym produktem. Tak samo w Pythonie ciężko jest pisać kod od razu pod końcowego użytkownika. Nie ważne czy robisz web, desktop czy mobilne. Stack się komplikuje i zwiększa nakłady pracy i utrudnia utrzymanie.
Z tego względu jak robię rzeczy pod koncowego usera to przełączam się na Clojure. Jeden język w którym mogę pisać web, rzeczy mobilne, gry, desktop zachowując wydajny przepływ pracy i sprowadzając efekt pracy wyłącznie do jednego pliku.