Vlákno názorů ke zprávičce Nejlepší programovací jazyk podle čtenářů Linux Journalu? Python od Bench - Každý jazyk má své. Já osobně nemám rád...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 10. 4. 2018 14:03

    Bench (neregistrovaný)

    Každý jazyk má své. Já osobně nemám rád jazyky, které vyžadují, aby cílový uživatel měl nainstalovaný nějaký framework [.NET] nebo (nedej bože) virtuální stroj [Java]. Co se mě týče, tak pokud potřebuji udělat něco pod Windows, tak používám AutoIt - skriptovací jazyk, vytváří i EXE soubor, takže je to snadno distribuovatelné. Pokud něco dělám pod Linuxem, tak pokud to jde, tak kombinace shellu a awk, pokud ne, tak Python (také umí vytvořit spustitelný soubor bez přítomnosti interpreteru). Jak Python, tak AutoIt mají možnost vytvářet i GUI a tím pádem i uživatelsky přítulné aplikace. Pokud ale potřebuji něco solidního a multiplatformního, tak C++ s knihovnou wxWidgets.
    Ti, co tvrdí, že Python je dobrý jenom na to, něco rychle splichtit, ale nedají se v něm dělat seriózní aplikace, by si měli stáhnout program Calibre, který slouží jako knihovna elektronických knih. V podstatě celý program s výjimkou loaderu a pár rutin, je napsaný v Pythonu.
    Každý by si ale měl zvolit to, co mu vyhovuje. Programovacích (a skriptovacích) jazyků je celá spousta a nebudu odsuzovat někoho, komu vyhovují jiné jazyky. Já jsem dlouhou dobu hledal a vybíral, až jsem se ustálil na tom, co vyhovuje mně osobně. Ale rozhodně nebudu odsuzovat někoho, kdo píše třeba v Javě nebo v Delphi. Důležité je, co ten dotyčný v tom jazyce dokáže.
    Python jako jazyk se mi líbí, i když jsem šplhal po zdi, když jsem převáděl svoji aplikaci z Pythonu2 do Pythonu3. Tam, kde mi Pythoně vrátil list, tam mi Python3 vrátil iterátor, apod. Životnost Pythonu2 ale končí a tak bude zase jen jediný Python.
    Z jazyků, které mě zaujaly, stojí za zmínku třeba lua, bohužel autoři (díky tomu že umožňují vytvořit pole dvojím rozdílným navzájem nekompatibilním způsobem s následným rozdílným chováním operátoru #) vytvořili nedeterministický jazyk a tím mě přinutili, že jsem luu opustil. Jinak bych asi luu dodnes používal, protože má v sobě implementováno funkcionální programování na takové úrovni, která mi v Pythonu chybí.

  • 10. 4. 2018 14:49

    KarelI

    Takže ty nechceš cílového uživatele aby si instaloval běhové prostředí, protože předpokládáš, že pro něj bude jednodušší vyměnit celý systém pro který jsi vygeneroval binárku. Zajímavé :-)
    Ten tvůj příspěvek se jen hemží tím, že neustále řešíš na jakém systému jsi a na jakém je koncový uživatel.

    Můžu říct z vlastní zkušenosti - je možné (a mnohem jednodušší) dělat desktopovou aplikaci tak, že uděláš jednu binárku, uživatel si nainstaluje interpret a absolutně neřešíš co má za HW a systém. Prokazatelně ten můj produkt provozují na všemožných verzích macos, win a linux včetně RPI. Nemusel jsem pro to dělat vůbec nic navíc.

  • 10. 4. 2018 15:00

    Bench (neregistrovaný)

    Proč by měnil celý systém? Já jako programátor se přizpůsobím jeho požadavkům. A když těch uživatelů bude víc, tak s C++ a wxWidgets vytvořím z jednoho zdrojáku binárky pro všechny cílové systémy a každý si vezme, co chce.

  • 10. 4. 2018 17:57

    KarelI

    Tak pokud opravdu na požádání zkompiluješ na jakoukoli platformu, tak tím to řešíš. Ale pak to znamená, že buď generuješ pro každý release nějakých 10 binárek, ale spíš to je tak, že uživatelé na nepodporovaném systému prostě půjdou jinam a ani se to nedozvíš.
    Ve výsledku to je víc práce pro tebe a víc práce i pro uživatele, protože si vždycky musí vybrat tu správnou, což ne vždy dovedou.

  • 11. 4. 2018 10:51

    sajfi

    <i>Python jako jazyk se mi líbí, i když jsem šplhal po zdi, když jsem převáděl svoji aplikaci z Pythonu2 do Pythonu3. Tam, kde mi Pythoně vrátil list, tam mi Python3 vrátil iterátor, apod. Životnost Pythonu2 ale končí a tak bude zase jen jediný Python.</i>

    Mě zas přechod z Py2 na Py3 připadal jednoduchý. 2to3 se snaží udělat převod bezpečnějším způsobem na úkor výkonu, třeba metody slovníku keys(), values() a items(), které v Py2 vrací list a v Py3 generátor, zabalil do listu, aby zachoval chování - např. dct.values() -> list(dct.values()). Takže stačilo mít kód rozumně pokrytý testy, prohnat ho přes 2to3, podívat se přes git diff co se změnilo a ručně z některých míst odebrat třeba to zabalení do list(), když se kolekcí iterovalo jen jednou a to bylo celé. Více času zabralo zabalíkovat si některé Py3 libky, které v Debianu chyběly.