V anketě čtenářů Linux Journalu o nejlepší programovací jazyk roku 2018 zvítězil opět Python, stejně jako v minulém roce. Druhý je C a třetí C++. Hlasování probíhalo na Twitteru.
V anketě čtenářů Linux Journalu o nejlepší programovací jazyk roku 2018 zvítězil opět Python, stejně jako v minulém roce. Druhý je C a třetí C++. Hlasování probíhalo na Twitteru.
Python je oblubeny preto, ze sa uci na skolach a vacsina studentov ho teda ovlada. Pokial by sa ucil iny jazyk, bol by oblubeny ten. Taketo ankety nic nehovoria. Je to rovnake, ako ked najoblubenejsi textovy editor je Word, pretoze sa uci na skolach a ludia su lenivi sa nieco ine naucit.
Skor by som povedal ze Python je dnes uz viac menej nutnost pre trochu pokrocilejsich pouzivatelov ktory pouzivaju nejaku svoju aplikaciu z jednoducheho dovodu. Dnes uz dost vela aplikacii pouziva na skriptovanie prave Python. Dnes uz kazdy trochu "vecsi" tool umoznuje robit pluginy/skripty prave v Pythone.
Jak padlo, Python je (mimo jiné) ideální na "teď chci spachtit, co mi udělá nějakou práci" - profiltruje data, udělá nějakou proceduru/sekvenci a hlavně, mohu to snadno zarchivovat, přiložit k dokumentaci a díky interpretační nátuře, to nějak pojede, i když cíl není x86. V tu chvíli kdy potřebuji IDE a kompilátor, abych mohl něco přenést/upravit je jasné, že raději 50x pomalejší Python, pokud čék nehoní výkon, což na PC málokdy (prakticky nikdy). C mám na mikrokontroler.
Python jsem se ve škole neučil. Naučil jsem se jej zcela sám a preferuji jej všude kde to jde (a je vhodné) oproti všemu ostatnímu co jsem se kdy učil a dříve používal (Java, C, C++, Perl, PHP, Javascript). Ten jazyk je prostě úžasný a skvěle univerzální. V práci i doma už jedině Python (tam kde je potřeba nízkoúrovňový přístup, třeba pro embedded věci, pak Cython).
Python sa da naucit za mesiac, na C alebo Javu treba pol roka, na dokonalost treba 10 rokov. O puzitelnosti by vypovedala anketa napr. o tom v com tvoria programatori projekty. A bolo by treba rozdelit male programy do 100 riadkov stredne do 10000 riadkov a velke nad 10000. Tam by sa ukazalo na co je Pyton dobry :-)
V te ankete neni uveden celkovy pocet hlasujicich. Pripadne kriteria. Zminuji tam twitter, link nedali. Odhadnu-li maly pocet ucasniku, tak prvni 3 plati, ostatni maji v podstate stejne rozlozeni.
Zajimave by bylo zjistit v cem ma ten linuxjournal naprogramovane stranky :)
Jinak je to predpojata propagace pythonu, protoze vetsina webu bezi v php.
Sharp je lehkej, dobrej na naučení, ale také má své meze využití. Sharp toho také dost neumí a na vysokých školách se to učí o sto šest jen proto, aby se naučilo přemýšlet své vlastní cesty či řešení.
Což znamená, že vlastně ty ankety jsou k ničemu, když nevíte co bylo vysledného.
Možno ma zabijete, ale ja Python považuju za najhorší jazyk,... Naopak za najlepšie jazyky považuju Scala, Go, JavaScript (i když nekterý ho nepovažujú za programovací jazyk, teda on je to vlastne skriptovací jazyk), potom C++, C#, Java, Ruby, atd atd, a až na nekde na konci se váli Python spolu s pár ďalšími exotickými neznámymi programovacími jazykmy. (To je moj názor), teraz očakávam že ma všetci ukameňujú.
:-) na Tvoj názor sa dá pozrieť z dvoch rovín a) používaš to, čo Ti vyhovuje b) ešte si neprenikol do vnútornej harmónie a krásy pythonu :-), ale to sa časom zmení. Teraz vážne - python sa napr. v oblasti biofyziky pred 20-timi rokmi rozšíril ako náhrada pravekých basic-ov - pre spracovanie a vizualizáciu dát. Aj v súčasnej dobe, ak je treba jednoducho a rýchlo uplácať programík na načítanie nejakých dát z databázy alebo dákej krabice, nejako ich pomlieť a potom zobraziť a nepotrebujem k tomu n semestrov informatiky, tak v pythone je to asi najjednoduchšie - no a s podporou mrakov balíkov a knižníc začína tuším úspešne nahrádzať na školách napr. Matlab a na niektorých ne-IT odboroch sa vyučuje ako základ programovania.
To chroustání dat se dá velice dobře udělat v Perlu, případně (pokud je nad tím nějaká matematika či rovnou statistika) v R. A pokud chci grafiku, tak to jistí metapost (včetně toho, že Perl i R umějí coby "grafický výstup" programové sekvence pro metapost (hlavně definice polí proměnných), k nimž se pak už jen dopíše výkonný kód, který z toho udělá obrázek.
Klobouk dolů, že ovládáte a znáte tolik programovacích jazyků, že je dovedete tak dobře seřadit a ohodnotit. Já se věnuji programování od roku 1990 a setkal jsem se prakticky pouze s těmito jazyky: Karel, Basic pro 8-bity, Pascal (v dobách MS DOSu), C/C++, Java, C#.
Myslím to tak, že těm jazykům aspoň trochu rozumím a něco většího jsem v nich sám napsal. Nepočítám to, že jsem třeba v Perlu napsal jeden prográmek a v Javascriptu opravoval v jednom prográmku chyby.
Tak by som navrhoval do textu spravicky napisat nieco ako Podla Linux journal ktory je zamerany hlavne na administratorov je najlepsi programovaci jazyk Pyton, aby to slovicko "najlepsi" nepoburovalo programatorsku obec. Ked sa v spytate deti ake knihy su najlepsie tak odpoved bude obrazkove, keby ste anketu urobili na filozofickej fakulte tak odpoved bude knihy Immanuela Kanta.
O povinnosti jsem nic nepsal, spis jde o to, ze se rozsiruje a zpresnuje podpora typovych anotaci (viz PEP 526). Ze bude v ramci nekolika pristich let, psal samotny Guido, spekuluje se o tom, co se prida/zmeni. Existuji naznaky, ze bude v CPythonu plugin pro JIT (viz PEP 523).
Co se tyce "buzerace", tak v oblasti deklarace/anotace typu existuje spektrum povinny explicitni typ - typova inference - nepovinny explicitni typ - dynamicky typ. Python se presunul ze ctvrte skupiny do treti. Tam skoro jiste i zustane, ale s podporou IDE to otypovani moc bolet nemusi.
</i>Priamociaro, elegantne, bez balastu ...<i>
Skutocnost je taka, ze sa nepriamo volaju owrapovane c-ckove libky, tak trosku kostrbato a nekonzistentne, balast tam je tiez ...
Ako, minusko som nedal, lebo proti pythonu nic nemam, aj ho rad pouzivam. Len to nie je zrovna elegantny, alebo "lean" programovaci jazyk. Je to dost hruby nastroj a tazsie sa ohyba. No jednoduche veci spravis rychlo.
A v tom to je, složité věci převést na jednoduché.
Volání C-čkových knihoven nemůže být nikdy konzistentní, protože navzájem konzistentní nejsou ty knihovny, které vznikly mimo Python.
To máte jako s javascriptem, Python k C přidal to, co ES6 do javascriptu a od té doby se s ním dá pracovat bez nějakých dalších obezliček. Pozornost autorů už není tolik zaměřena na dopracovávání prvků jazyka, které v něm nejsou, ale na tvorbu nových doménových abstrakcí.
To je ale případ C, který je ještě jednodušší než Python. Tam už ta jednoduchost vede často k vytváření obludných konstruktů, zvláště pomocí maker.
Naopak Python má tak sofistikovanou strukturu, že podobnou patologii potlačuje.
Dynamičnost a z ní plynoucí jednoduchost jazyka nevadí, vezměte si příklad ze samurajů, jejich sofistikovaný a univerzální nástroj - katana, neimplikuje samuraje nešiku bez disciplíny, ba právě naopak. Tady její stvořitel došel k univerzální hypertrofované ostrosti na úkor specializace nástrojů, což naopak vyžaduje po samuraji dodatečnou porci disciplíny a fortelu.
Je stále problém, ale ne tak velký, jako v případě CPythonu bez GILu: https://www.youtube.com/watch?v=P3AyI_u66Bw
Přesně tak.
Pro mě je Python dobrý jako scriptovací nástroj pro automatizaci testů a jako jakási obdoba rychle dostupného starodávného interpreteru Basicu - pokud člověk rychle potřebuje napsat nějaký výpočet apod.
K ostatním věcem se moc nehodí a za jeho syntaxi by měly být pro autory zavedeny tělesné tresty.
Módní vlny přicházejí a odcházejí, Céčko zůstává...
Paradoxně C ve své době byl něco jako Python, jednoduchý skriptovací jazyk na systémové programování. Plnokrevným jazykem té doby byl Fortran, nebo univerzální PL/1 a ten měl begin a end a neměl složené závorky, Fortran zase místo toho jen čísla řádků a skoky.
Python zase jen ty otravné složené závorky i to otravné begin a end ubral. Stejně se neorientujete podle závorek, nebo begin a end, ale podle zalomení textu.
Nejelegatnější zůstává stále lispovská notace, protože vystačí s nejméně výrazovými prostředky.
Evoluce:
00000 000010101010
00101 000101011010
0000 NEXT: NOP
0002 LOAD R1, 5
0004 LOAD R2, 0
0006 ADD R1, 2
0008 SUB, R1, 1
0010 JNZ NEXT
10 NEXT: A = A + 2
20 GOTO A-5 > 0, NEXT
while (a < 5)
begin
A := A + 2;
end;
while (a < 5) {
a = a + 2;
}
while a < 5:
a += 2
Perl je ale mnohem mladší než PL/1. Je to jiná generace. Skriptovací jazyk je pojem až z dob internetu. Předtím se tomu spíše blížil JCL, nebo na RSXu ICP. Aby se to operátorům usnadnilo a dal se jim do ruky plnohodnotný jazyk vznikl ABC a z něj Python.
Ale programovalo se i v tom ICP. U nás třeba vznikla tuším, že relační databáze REDAP, což byly relační databázové operace rozdělené do samostatně spustitelných úloh a logika byla slepená právě ICP, což byl vylepšení "job control language" o proměnné, příkazy if, for atd. Bylo to docela elegantní řešení.
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í.
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.
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.
<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.
Ja nevim. Nejlepší proč? Nejlepší na co? Python je základ, protože má skvelej ekosystém, kterej přilákal spoustu chytrejch lidi. Podobně je na tom dneska JavaScript, kterej jako jazyk obsahuje spoustu nesmyslu, kterejch se naštěstí postupně snažit zbavit. Na druhý straně existujou krásný jazyky, který nemaj knihovny, nedají se naučit tak rychle jako Python, ale v určitejch, občas trochu bizarních věcech, jsou nedostizny. Tyhle ankety jsou v každým případě dobrý k tomu, aby člověk, co neví, zjistil, co se naučit, aby našel práci.