Ostatnio zacząłem przeglądać sobie większe programy open-source napisane w pythonie i zerknąłem na lutris.

54000 tysięcy linii napisanych w tym języku i dopiero ostatnio zaczął korzystać z mypy w bardzo podstawowym stopniu.

Zacząłem przeglądać kod jako kompletny outsider i zauważyłem kilka zmiennych których typów nie mogłem wydedukować. Przepatrzyłem miejsca gdzie są odczytywane/zapisywane i jedyne wywnioskowałem że niektóre z nich to dicty, ich klucze to stringi lub czasami tuple a wartości to jakieś nieotypowane zmienne.

Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?
Przecież brak jasno określonych typów zmiennych rodzi problemy i utrudnia osobom zrozumienie kodu i pomaganie.

Od kiedy w pracy zaczęliśmy korzystać z duetu ruff + mypy strict, ilość błędów znacząco zmniejszyła się i dziwi mnie że duże pythonowe projekty nie korzystają z mypy, choć jest dostępny już kilka/kilkanaście lat i jest potwornie przydatny

#python
#programowanie
848e4c84-1104-4e17-bfca-42e94dfc46c9
wombatDaiquiri

@qarmin 

Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?

Bo życie to nie tutorial a projekty rozwijają ci którym się chce a nie ci którzy są najbardziej kompetentni.

koszotorobur

@wombatDaiquiri - rozumiem, że mówisz o projektach Open Source.

W profesjonalnych projektach nikomu się nie chce

qarmin

@wombatDaiquiri @koszotorobur Zarówno działam profesjonalnie jak i w projektach open-source więc mogę mieć nieco spaczone podejście, ale wystarczająco wiele razy widziałem błędy związane z brakiem typów, by wiedzieć, że jednorazowy wysiłek w ich dodanie jest dużo mniejszy niż użeranie się z tymi błędami.

koszotorobur

@qarmin - i tak właśnie motywuję potrzebę wprowadzenia typów - na początku mnie devy nienawidzą, by później przyznać mi rację - BTW tak samo jest z kontenerami

wombatDaiquiri

@qarmin ja się z Tobą zgadzam, ale co z tego? xD niektórzy nie wiedzą, niektórzy nie wierzą, niektórzy wprost sabotują bo wyznają inne wartości i tak to się żyje w tym programowaniu

koszotorobur

@wombatDaiquiri - ale co to za życie programisty 15K

groman43

Dlaczego, nawet przy tak dużych projektach ludzie wzbraniają się przed używaniem typów?

@qarmin Gdybym chciał używać typów, nie programowałbym w Pythonie.

koszotorobur

@groman43 - takie podejście sprawdza się jedynie jak robisz coś małego dla siebie - w profesjonalnych projektach robionych przez zespoły ludzi typy się świetnie sprawdzają

koszotorobur

@qarmin - weź mmie nawet nie triggeruj.

Ja nawet nie jestem programistą z zawodu i jak wchodzę w Pythonowy projekt jako SRE to zadziwia mnie w jak kiepskimi jest stanie - nawet te pozaczynane niedawno.

Do tego biznes chce widzieć nowe funkcjonalności a nie wydawać kasę na refaktoryzację tego co już działa

szczekoscisk

Podobnie mam z Type Script i "any" lub "object". Dla wyjaśnienia, TS pozwala ale nie wymusza typowanie. Więc mam takie WTF gdy ktoś poświęcił chwilę na wpisanie że coś jest/zwraca "cokolwiek" . Gdzie tu jest jakaś korzyść?

rakokuc

@szczekoscisk jak dobrze pamiętam, to czasami kompilator TS potrafi się przyczepić, że typ jest nieokreślony, więc żeby się nie czepiał to daje się any i fajrant ( ͡° ͜ʖ ͡°)


Przy czym dotyczy to głównie sytuacji, kiedy ktoś używa TS bo jest modny albo mu kazali.

szczekoscisk

Nie kojarzę by sam kompilator TS wymuszał typowanie (przynajmniej na szybko nie kojarzę takich przypadków), możliwe że widziałeś sytuacje gdzie "tslint" czegoś się czepiał.

dotevo

chyba strict mode wymaga typów. Chyba, że coś mieszam bo od dawna zawsze staram się wszystko typować

dotevo

Myślę, że to przez to, że lutris to dość stary projekt, a typowanie w pythonie to jednak coś dość nowego. Pamiętam, że z 10 lat temu używałem już lutrisa.

grzmichuj_gniezno

@qarmin Gdy po kilku dobrych latach z C++ zacząłem w robocie pisać w Pythonie to nie mogłem się odnaleźć i strasznie mi typów brakowało. A później się przyzwyczaiłem i juz miałem wszystko w dupie ( ͡° ͜ʖ ͡°) Może dlatego. W większości przypadków da się (przynajmniej u mnie) typ spokojnie wyczaić z kodu. Raz na ruski rok się nie da i wtedy używam debuggera.

Zaloguj się aby komentować