@stivens:
A w jaki sposob udowodnisz mi, ze jestes bardziej produktywny w Pythonie? Przeciez LoC nie uwzglednia debugowania, pozniejszego czytania kodu, fuckupow.
Jesli mi powiesz ze w Pythonie robisz mniej bledow to zwyczajnie nie uwierze bo w najlepszym przypadku robisz tyle samo (ale to chyba musialbys byc jakims nad-programista).
Dla złośliwości można odwrócić pytanie: jak udowodnisz, że jesteś bardziej produktywny w Ruście?
Bo zdaje mi się, że przed samym językiem programowania i tym, ile on nam błędów zwali na głowę jest architektura aplikacji. To architektura aplikacji zrobi z najszybszego języka najwolniejszy, a z najbardziej "poprawnego", najbardziej zabugowany. I nie będzie miało znaczenia, czy to będzie Python, Haskell, Rust, Go czy coś innego.
Więc zakładam, że porównanie dotyczyć będzie tej samej aplikacji, napisanej w dwóch różnych językach, ale działających w obrębie tej samej architektury. Tu wówczas dochodzimy do takich problemów, jak np. dostępność bibliotek - język popularniejszy, będący na rynku dłużej, siłą rzeczy będzie ich miał więcej, a wśród tej większej ilości będzie więcej tych lepszej jakości - wynika wprost z matematyki, nawet jak założymy, że np. w teorii dla Rusta powinno być więcej "dobrych", bo w Ruście piszą bardziej "świadomi" i doświadczeni programiści. Ale tu znowu siła złego wchodzi. Więc pisząc w języku mniej popularnym maszą większą szansę, że trafisz na brak odpowiedniej biblioteki - więc albo będzie pisać ją od zera, albo zrobisz obejście w architekturze i zdelegujesz taska do innego mikroserwisu - w każdym z tych przypadków tracisz tę "produktywność"
Zresztą, wróćmy do kwestii "poprawności" i debugowania. Strzelam w ciemno, że IDE do Rusta, cokolwiek bierzemy za nazwę, nie ma takiego toolingu jak IDE do Pythona (PyCharm) - debugger, profiler, cała reszta. Oczywiście pisząc w Pythonie "na pałę", zrobię więcej błędów i więcej będe debugował, bo język mi na to pozwala. Rust mi na to nie pozwoli. Przy czym, jak wspomniałem: w Ruście (w stosunku do Pythona) będzie mniej błędów, które mają związek z użyciem lub niewłaściwym użyciem systemu typów, ale błędów już typowo biznesowych będzie podobna liczba.
Teraz, w zasadzie ostatnio, miałem przypadek, że w Ruście poszedł w stringu niewłaściwy identyfikator (nie od tego rekordu, co powinien - oba mają identyczną długość i są stringiem - po prostu pomyliłem miejsca w zapytaniu). Standardowo system typów tego nie złapie, jak polegam "tylko" na String
. Oczywiście, zaraz ktoś wyskoczy z argumentem, tym, że mogłem opakować w jakiegoś strukta, albo w jakiegoś enuma, to miałbym jakąś pewność - że używam właściwego ID - tylko, że zwiększa to znacząco nakład pracy (w stosunku do prostego użycia stringa).
W Pythonie zrobię podobny błąd (chyba, że mypy
zdecyduję się użyć, wtedy też mam szansę go wyłapać - tylko mypy
zwiększa znacząco nakład pracy po stronie Pythona), więc nie czaruję się, że któryś mnie nie zawiedzie, tylko to sama baza danych sprawdza te identyfikatory po swojej stronie, zamiast polegać na "bezbłędnych" językach.