Wpis z mikrobloga

20 lat programowania na karku. C, C++, Java

Nowy projekt i zmusili rozszerzenia jednego komponentu napisanego w Pythonie, a jako perfekcjonista najpierw przerobiłem tutoriale i wziąłem się do roboty.

Ooo #!$%@?... Jaki ten Python jest upośledzony... Jedyne co ma więcej ponad inne języki to chyba dodatkowy chromosom.

Ktokolwiek w tym cokolwiek dużego jest w stanie napisać?
No może napisać tak, ale do refactoringu bez pokrycia testami 200% to nawet nie ma się co zabierać bo oczywiście typy nigdzie się nie będą zgadzać i albo ma się dobre testy albo na produkcji wyjdzie, że nie ma akurat tego jednego testu i leci #!$%@? TypeError...

Ostatnio słuchałem HejtParku i prof. Dragan mówił, że fizyki uczy się ludzi w taki sposób, że opowiada się bajki (fizyka relatywistyczna), a potem kolejno odkłamuje (fizyka kwantowa).

Chyba tak samo jest z Pythonem - na początku 'elo fajny to język', ale... no jakie to jest gówno.

PS
Osoby znające tylko Pythona uprzejmie proszę o niezabieranie głosu w dyskusji xD

#programowanie #programista15k #python
  • 163
@Kryspin013:

Pomijając kilka dużych projektów, które wymieniłeś to z doświadczenia wiem, że nawet duże projekty biznesowe pisane w javie (jak np SAP) są pisane strasznie niechlujnie a sama java jest #!$%@?ące później do debugowania po stronie serwera.


jest bo ktoś kto ci dał soft po prostu wszystko co mogło by Cię nakierować na problem wyłączył - norma w wersji produkcyjnej która ma chodzić u klienta.

Zrobiłem szybki research - sap to
bug który wrzuciłeś dotyczy swinga, został zastąpiony przez javafx która to właśnie wyleciała z jdk i żyje obecnie własnym życiem jako dodatkowa zależność. Ale hola hola został oznaczony jako duplikat innego błędu który został naprawiony i masz nawet dla których wersji javy został wydany patch. Pomijam fakt że to zgłoszenie które wrzuciłeś dotyczyło javy 7 czyli javy sprzed 11 lat XD


@rekoj: bug występuje we wszystkich wersjach javy z jakich korzystałem
@Kryspin013: no dobrze ale czy te wersje javy której używasz mają tego patcha który został wymieniony w wyżej wymienionym przez ciebie zgłoszeniu? Strzelam że nie. Teoretycznie wszystko powyżej javy 12 powinno go mieć nie ważne skąd weźmiesz jdk. Ale nie rozumiem dlaczego nie probwales uruchomić na obecnej wersji tylko bujasz się z jakimś arhaizmem pokroju 11. Co do okienkowej javy to cały pakiet od jet brains jest w niej napisany. Chyba
@Kryspin013: no dobrze ale czy te wersje javy której używasz mają tego patcha który został wymieniony w wyżej wymienionym przez ciebie zgłoszeniu? Strzelam że nie. Teoretycznie wszystko powyżej javy 12 powinno go mieć nie ważne skąd weźmiesz jdk. Ale nie rozumiem dlaczego nie probwales uruchomić na obecnej wersji tylko bujasz się z jakimś arhaizmem pokroju 11.


@rekoj: Nie bujam się. Po prostu unikam javy.

Chyba OpenOffice i jego odnogi ale
Jeden z powodów czemu go unikam. Okienka javy też maja #!$%@? stylowanie pod różnymi systemami. Na archwiki są poświęcone rozdziały konkretnym programom jak naprawić motyw by cokolwiek było widać w programie. Szczególnie jest to upierdliwe w projektach bazujących na UI eclipse xD I znowu coś co działa wszędzie ofc jest #!$%@? domyślnie w javie.


@Kryspin013: szczerze mówiąc nigdy nie miałem takiego problemu, sam też pisałem dla siebie jakieś okienkowe programy i
Generalnie pomimo twojej całej nienawiści do javy i unikania za wszelką cenę to mogę się założyć że używasz jej na codzień nawet o tym nie wiedząc


@rekoj: jedyne miejsce gdzie jej używam to libre office i apache active directory studio (gdzie ofc ma #!$%@? ciemny motyw swoją drogą xD)
Języki programowania to różnorodne narzędzia jak różne wielkości klucze, młotki czy coś innego. Krytykowanie jednego, chwaląc drugie znaczy tyle samo że klucze 8mm jest najlepszy a już większy jest bee.


@alexander-dantes: o, symetrysta się znalazł. Języki programowania to bardziej materiały budowlane a nie narzędzia. Narzędziem jest edytor tekstu, IDE, kompilator, debugger. Od narzędzia zależy wygoda i szybkość pracy. Od materiału zależą dodatkowo cechy ostatecznego produktu. I materiały jak najbardziej różnią się
A co do kafki i cassandry, podałem ci projekty, które słyną z bardzo dużej wydajności i możliwości przetwarzania olbrzymiej ilości danych - nie zrozumiałeś nawet przykładu.


@RapIArbuzy: Apache Cassandra jest względnie szybka dzięki skalowalnej architekturze i olbrzymiej ilości pracy włożonej przez jej programistów w optymalizacje przez ponad dekadę. MIMO Javy, która jest ewidentnie zła technologią do tego zastosowania i przeszkadza niemal na każdym kroku. Gdyby Facebook debilnie nie napisał Cassandry w
Python = Wysoko i prosto. Java to jedno wielkie null pointer exception. Nie ma co porównywać funkcjonalności pseudocode.py z jdk i jre
@wytrzzeszcz: nie wiem. Ale strzelam, że po prostu w C/C++ jest większy nacisk na optymalizację, a w pythonie na czytelność. I tak:
1. Pętle oparte na range() to zazwyczaj standard. Szczególnie jak ktoś potrzebuje indeksów, albo iteruje się po kilku rzeczach naraz.
2. Niechęć do dużej liczby zmiennych. Jak mam gdzieś powtarzające się stringi, to ładujesz je do zmiennej i elo. W C do tego użyłbym definów. W pythonie definów nie
@Krolik: Znam architekturę cassandry, sporo z nią pracowałem i oczywiście zgodzę się z tym, że architektura tutaj odgrywa znaczącą rolę. Zwyczajnie jvm, czy tam java to nie jest silver bullet, ale nie jest to w żadnym calu zła technologia. Ma swoje zastosowania i robi to dobrze, odnośnie wydajności c++ i javy, to wchodzimy na sporny temat i jedynie można to skwitować stwierdzeniem "to zależy". ( ͡° ͜ʖ ͡°
Kod maszynowy produkowany przez JVM jest naprawdę sensownie zoptymalizowany


@RapIArbuzy: Ile razy patrzyłeś na kod maszynowy wyprodukowany przez JVM i porównywałeś z kodem wyprodukowanym przez np. LLVM albo współczesne GCC? Ale tak szczerze?

To łap przykład: https://pkolaczk.github.io/overhead-of-optional/

JVM został po prostu zmasakrowany przez Rust+LLVM i to na bardzo łatwym kodzie. To mikrobenchmark, który powinien być trywialny dla JVM w optymalizacji.

Z praktyki wiem, że o ile JVM czasem potrafi zrobić magię
@Movet: to są konsekwencje tego, że Python ma niski próg wejścia. To podobny przypadek co PHP a kiedyś VB. Parę miesięcy temu robiliśmy rekrutację na staż. Kurła, każdy student miał Pythona w CV. Każdy. A 99% z nich nie umiało zaprogramować szeregu fibonacciego.
Osoby znające tylko Pythona uprzejmie proszę o niezabieranie głosu w dyskusji xD


@kobrys13: piszę obecnie w Pythonie, ale znam też PHP, C, C++, Perla i w trybie read-only Rubiego, Javę i Go.

Powiem tak. Przesadzasz :D

Argument z typami o ile jest zasadny (bo faktycznie prawdziwy) o tyle… ehh… to samo masz w Rubym, JavaScripcie i innych dynamicznie typowanych językach. Stąd ich nazwa - "dynamicznie typowane".

I bardzo dużo wielkich projektów