Python uber alles

W mojej robocie generalnie kluczowym jest dobre opanowanie C i różnego rodzaju kombinacje, jak duże ilości bardzo ciężkich serwerów w owym C napisanych, ze sobą w jakiś wydajny sposób zsynchronizować (z jednego konkretnego swojego rozwiązania jestem szczególnie dumny, bo działa bardzo ładnie :).

Międzymordzie usera jest napisane w pehapie z użyciem smarty'ego, oryginalnie przeze mnie (choć w rzeczywistości pehapa praktycznie nie znam; i nie chcę znać ;), a obecnie jest to rozwijane przez mojego znajomego.

Do tego dochodzi kawałek kodu odpowiedzialny za zasysanie 'logów' z poszczególnych serwerów, obrabianie ich lekko i wsadzanie do lokalnej bazy danych. To postanowiłem zrobić w pythonie i od już gdzieś roku działa bez problemów. Znajomy nawiasem mówiąc w przerwach od pehapienia też coś podobnego robi. Też w pythonie :)

Ostatnio natomiast przyszło mi przerobić jeden z serwerów na coś zbierającego i analizującego dane. Więc kod w C przerobiłem na zbierający dane, natomiast kombinacją pythona i shella zarządzam odpalaniem owego serwera, po czym obrabiam wynikowe dane. Działa pięknie i pozwala na wręcz gigantyczną swobodę.

Ostatnio natomiast szef mi kazał doprowadzić do jakiegoś stanu mieszaninę kodu C i C++ w wersji bardzo bardzo alpha (ledwo proof of concept). Powiedziałem mu, że to będzie duuużo roboty i będzie to długo trwało, na co odpowiedział, że mam to tylko na szybko przyciąć, coby było zdatne na demo dla potencjalnych klientów.

Python rządzi! Robienie w nim gluecodu po prostu wymiata. Zamiast martwić się przerabianiem wnętrzności tego kodu C/C++, po prostu podzieliłem go logicznie na coś w rodzaju modułu synchronizującego i programik 'kliencki' robiący jak najprostszą rzecz, a sterowany z linii komend. A synchronizację jednemu i drugiemu zapewniłem przy pomocy dwóch skryptów pythonowych i kawałka shella. Miodzio. Gdyby nie python, to bym się pewnie posiekał, bo musiałbym to robić nie dość, że w C/C++, co samo z siebie byłoby powolne, to jeszcze cały czas by mi w paradę wchodził oryginalny kod.

Luuudzie! Uczcie się (dobrych) języków skryptowych, bo bez nich jak bez fujarki, znaczy, wróć, bez ręki. Nawet sobie nie wyobrażam co by ze mną było, gdybym się te bodajże dwa lata temu owego pythona nie nauczył.

  1. 1. Patrys

    Ale masz świadomość, że to C też powinieneś przepisać na pythona, bo o ile hybrydy ładnie działają, to środowiska homogeniczne są w przeciwieństwie do nich zarządzalne i rozwijalne? ;)

  2. 2. mmazur

    Ja obecnie pracuję chyba w czymś w rodzaju startupa (żeby nie było -- nie, nie zostanę milionerem od tego) i to takiego, którego klienci najprawdopodobniej nigdy nie przekroczą liczby jednocyfrowej, więc problemy z zarządzaniem nigdy nie przekroczą pewnego poziomu skomplikowania.

    Acz fakt faktem, że jakby mnie coś kiedyś przejechało, to by mój szef miał lekko przesrane. Muszę wreszcie jakąś dokumentację skrobnąć, nie ma co.

  3. 3. Hawk

    A ja tam perlowy jestem :) Też sobie bez perla nie wyobrażam pracy choć znam go takim samym stopniu co inne języki, czyli wystarczającym na dłubanie własnych pierdółek, ale niewystarczającym na jakieś większe projekty.

  4. 4. mmazur

    Perl? Zgiń, przepadnij, heretyku!

    Rozumiem tych, którzy się perla nauczyli, wystarcza im do pracy i nie chcą się uczyć nowych rzeczy, natomiast 'młodzież' powinna być edukowana w językach lepszych, żeby nie produkować "executable line noise" :)

  5. 5. bozydar

    Z tego można wnioskować, że znasz tylko Pythona :)
    Trudno mnie jakoś przekonać, że kod napisany w C jest wolniejszy od kodu interpretowanego ( bardziej jestem skłonny do uwierzenie, że PERL jest prawie tak szybki jak C, bo w końcu można potraktować go jako nakładkę na C) ale Python ?
    Proszę o argumenty, naprawde

  6. 6. mmazur

    E, nie, przez 'powolność' miałem na myśli powolność pisania kodu, a nie jego wykonywania.

    Docelowo ten sklecony na szybko pythonowym klejem system zostanie oczywiście przepisany na C w odpowiedniej architekturze, żeby był szybki i skalowalny.

  7. 7. Hawk

    No i zostałem zaszufladkowany jako heretyk ;) I przepraszam bardzo, ale ja się ciągle chce uczyć nowych rzeczy bo cały czas uważam, że tak naprawde to g... umiem. Poważnie. A czemu perl? Bo mogę w nim pisać jak w C, którego składnia jest dla mnie najbardziej intuicyjnz. Za najmniej intuicyjną uważam osobiście składnię javy, a że python mi ją bardzo przymina to... e.e. nie będę pisał dalej żeby nie denerwować fanów pythona :)

  8. 8. mmazur

    Biiij heretyykaaa!

    GOTT MIT UNS!!!!!

    A na poważnie, to jeśli o programowanie idzie, jest *bardzo* wskazane zmuszać się do poznawania różniących się już znanych języków. Bardzo poszerza to horyzonty i znacznie lepiej wtedy widać, które narzędzie jest lepsze do czego (np. ja nie używam wyłącznie pythona, często posiłkuję się shellem, bo jednak jeśli idzie o proste operacje na plikach, to w nim się najszybciej klepie).

  9. 9. Patrys

    Python ma najlepszą składnę ze wszystkich języków - najbardziej naturalną. Kod w pythonie przekłada się 1-1 na schemat blokowy. Do tego ma bajecznie rozwiązane typowe operacje (choćby wyciąganie fragmentu stringa), które w innych językach przypominają mroczne czasy wołania malloca (strcpy, substr, etc.).

  10. 10. Patrys

    (Zapomniałem dodać, że python wymusza poprawną indentację, a to z kolei wymusza pisanie krótkich funkcji, co jest dobre, a niezastosowanie się grozi funkcją, której połowy nie widać na ekranie, bo początek linii wystaje za prawą krawędź. ;])

  11. 11. Hawk

    Well. Przecież nie powiedziałem, że używam tylko perla :) Jest jeszcze wiele innych. Ot perla lubie tam gdzie shell nie wystarcza, lub tam gdzie C to za duzo.

  12. 12. mmazur

    A, tak, typy danych w pythonie to podstawa produktywności.

  13. 13. sprae

    Ze swej strony dodam już tylko, że Python znakomicie się nadaje na framework do łączenia roznych binarnych modułów przetwarzajacych dane 'grupowo'. Dlatego tez dobrze nauczyć się bądz python API, bądz czegoś bardziej rozwiniętego i tworzyc juz tylko genialne rozwiazania ;)))

  14. 14. GiM

    ech coraz więcej pajtonowców wokół (huh na samym SoCu w Pythonie jest 4 Polaków na 24 osoby, czyli całkiem niezły procent, znaczy to, że chyba ten język jest u nas coraz bardziej popularny, zresztą jeżeli w takim porównaniu:
    http://tnij.org/hnx da się samego pajtona i perla, to widać, że ten pierwszy zaczyna prowadzić w PL).
    chyba czas, żeby zainteresować się kolejnym językiem...

  15. 15. XXX

    IMHO duza konkurencja dla pythona jest ruby, uzywajac ruby'ego nie musialbys klepac w powloce ;)

Adde commentarium: (textile lite)