Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Bobs 24. 08. 2013, 19:51:16
-
Nepochybuji, že se nějaké takovéto téma tady už probíralo mnohokrát, obdobně jako na miluionšesti dalších místech všude možně po internetu, tak mě teda nenadávejte, ale berte třeba jako téma-oddechovku. :)
V čem nejraději píšete scripty a proč? Jaký scriprový jazyk je podle vašeho názoru nejlepší aby byl rozumně syntakticky jednoduchý, čitelný, dobře laditelný, výborně kompatibilní (tzn. aby prostředí pro běh scriptů existovalo pokud možno na všechny větší Linux i BSD distribuce a nemělo žádné větší závislosti) a v neposlední řadě i to svižně běhalo? Nemusí to mít žádnou schopnost tvorby GUI aplikací, prostě jen scripty - musí to výborně to spolupracovat s cli utilitama, dobrou podporu regulárních výrazů, atd...
Shell (+další standardní utility)? Perl? Ruby? Python? Ještě spíš něco jinýho?
-
za mne Python, duvod:
miluju syntaxi... kod od "prasete" v pythnu je citelnejsi nez ve vetsine jinych jazycich... a syntaxe kdy odsazeni je vlastne {} etc.. mi proste vyhovuje :-) hlavne kdyz clovek pouziva editor ktery mu zprisni syntax jeste o pythonovske doporuceni .... (povinne vyzaduje docstringy, max. delku radku, pocet mezer mezi funkcemi/metodama)
pro mene poradne jako jsem ja to znamena ze ten script je i po roce rychle pochopitelny a citelny! -> k nezaplaceni :D
-
Jo ... Perl bude tou spravnou demonstraci prehlednosti. Preferovat muzes co chces, treba tcsh + python, ale jakmile prijde potreba Awk, musis zladnout i Awk, Perl nebo Bash.
Python, protoze ritualni sebevrazda rozctvrcenim vlastni silou mi prijde casto hummanejsi, nez-li Perl, obzvlaste, psal-li to nekdo jiny.
-
Bash + awk + sed........... A kdyz uz to po sobe nechapu ani ja, je cas toho aspon kus prepsat v pythonu.
-
Co říkáte na tcl? Eclipse má kvalitní plugin s prostředím pro vývoj v tomhle jazyce.
-
Ja "skriptujem" v C.
-
1) BASH – to je základ, funguje všude (případně se můžeš omezit na sh pro ještě větší kompatibilitu) a roury jsou prostě nepřekonatelné – spojíš pár příkazů pomocí | a máš úplně nový program. Prostě UNIX.
2) Perl – pokud ti přestane stačit BASH. Je taky skoro všude. Dají se v něm dělat různá kouzla, nepotřebuješ sed, awk, grep, wc atd. protože všechno už máš v Perlu… na zpracování textu asi ideální.
-
Co říkáte na tcl? Eclipse má kvalitní plugin s prostředím pro vývoj v tomhle jazyce.
Asi neslapnes vedle. Jazyk je jednoduchy, primocary, na Linuxech vsude, zavislost tak max standardni C knihovny, pokud nepocitame zavislosti ruznych rozsireni, coz jsou prave interface k nejakym dalsim knihovnam, ale to plati snad obecne. Na druhe strane spousta zajimavych rozsireni je v baliku tcllib, ktery je sam napsany v Tcl. Regularni vyrazy jsou, CLI aplikace volas pres exec, GUI v Tk (to pouziva i Python). Da se pouzit i na Windows (vcetne GUI).
-
Co říkáte na tcl? Eclipse má kvalitní plugin s prostředím pro vývoj v tomhle jazyce.
Nemam s tim moc zkusenosti, ale spis bych to nedoporucoval. Je to mrtve. Ve sve dobe (~80 leta) to bylo relativne elegantni. Dnes je to (pokud nekdo za 10 let zasadne nepredelal runtime) zoufale pomale (prepisovani retezcu) a ma to sice jednoduchou, ale o to hur citelnou syntaxi (treba prirazovani promennych). GUI v Tk je vylozene osklive.
Pro v podstate vsechny vyhody, ktere TCL prinasi, existuji lepsi reseni. Pokud hledas jednoduchost prefixove syntaxe, zkus spis Scheme nebo Common Lisp. Pokud chces snadno vlozit skriptovaci jazyk do aplikace, zkus jazyk Lua. Pokud hledas siroce pouzitelny skriptovaci nastroj pro tvorbu drobnych nastroju nebo jako lepidlo, urcite Python (muj favorit) nebo Ruby.
-
kvoli prenositelnosti bourne shell (nie bash), grep (nie gnu grep), sed (nie gnu sed), awk (nie gnu awk). 8)
za bash-only skripty by som autorov strielal do kolien, pretoze po precitani tam nikdy nie je nic, co by neslo napisat v sh >:(
-
za bash-only skripty by som autorov strielal do kolien, pretoze po precitani tam nikdy nie je nic, co by neslo napisat v sh >:(
Asi neradi mrhaji casem na kraviny jen proto, aby nekomu fungovaly ve zkriplenem shellu typu dash.
-
za bash-only skripty by som autorov strielal do kolien, pretoze po precitani tam nikdy nie je nic, co by neslo napisat v sh >:(
Asi neradi mrhaji casem na kraviny jen proto, aby nekomu fungovaly ve zkriplenem shellu typu dash.
Všímám si, že se v linuxovém světě rozmáhají způsoby, pro které linuxáci vždycky kritizovali windowsáky... ("No a co, že to je Win32 aplikace? Proč mrhat časem, aby to někomu fungovalo ve zkripleném Linuxu?")
Spousta ne-linuxových systémů prostě bash vůbec nemá. A největší radost je, když skript začíná "#!/bin/sh" a pak je plný bashismů - ideálně ještě na takových místech, že zapíše někam, kam vůbec neměl, popřípadě smaže úplně jiný adresář než měl... Autora prostě zjevně vůbec nenapadlo, že taky existuje něco jiného než Linux...
-
Spousta ne-linuxových systémů prostě bash vůbec nemá.
To mě opravdu mrzí... Tak si ho doinstalujte.
A největší radost je, když skript začíná "#!/bin/sh" a pak je plný bashismů - ideálně ještě na takových místech, že zapíše někam, kam vůbec neměl, popřípadě smaže úplně jiný adresář než měl... Autora prostě zjevně vůbec nenapadlo, že taky existuje něco jiného než Linux...
No, já tam píšu
#!/usr/bin/env bash
a kdo bash nemá, tak si ho holt buď doinstaluje, nebo si to může přepsat pro ty zkriplené shelly (http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/). Příklad, použitelný vs. debilní "posix" shell:
${var/foo/bar} vs. $(printf '%s\n' "$var" | sed 's/foo/bar/')
drink=(pivo vino slivovice) vs. ??? Smula, woe... to neumim.
-
ak sa da doinstalovat bash, preco nie rovno python?
-
ak sa da doinstalovat bash, preco nie rovno python?
Velikost/závislosti? Jinak, já ti nevím, ale tenhle mezeroidní jazyk mi nikdy k srdci nepřirostl.
-
To mě opravdu mrzí... Tak si ho doinstalujte.
To je přesně to myšlení, o kterém jsem mluvil a které bylo kdysi výhradní vlastností Windowsáků. "Nemáte Windowsy? Sere pes!" a proti tomu stálo "Pojďme to napsat přenositelně nebo přímo platformně-nezávisle, ať má uživatel svobodu".
A teď? Systemd je by-design linux only. Posix? Sere pes. Tak aspoň LSB? To je vykopávka, kterou stejně nikdo nedodržuje. Hald, dbus, udev... Cože? Že byste chtěli /usr mountovat přes nfs? Ale jděte, to už přece dávno nejde... raději si nasaďte bootování přes Grub2 - konfigurace má sice deset tisíc řádků, ale to neva, protože vám ji vygeneruje skript. Cože, že ten skript na vaší platformně nefunguje? Sere pes.... Teda... ehm, chtěl jsem říct: A kde je chyba? Na řádku 8525 vygenerovaném skriptem číslo 23, konkrétně na jeho 567 řádku? Aha, tak my se na to podíváme. Ale teď ne, naše priorita je Linux... Jo, nechtěli byste zkusit Wayland? Ten je bezva! A brzy na něj přejdou úplně všichni, na Xkách už nepojede nic. Cože? Že vy na vaší platformně nemáte KVM? Tak si ho doinstalujte! Jo aha, on je linux-only. No tak sere pes no :)
-
Plul bych s proudem: na malicke veci bash, nad jednu az dve vnorene ridici struktury Python.
Pokud jsou nejake specialni pozadavky, tak neco jineho, ale vyse uvedena dvojice pokryje tak 90% pripadu levou zadni.
-
Jsem se tak zabral do stylizace, že jsem dal všude "mně", velké sorry všem grammar nazis :)
-
To mě opravdu mrzí... Tak si ho doinstalujte.
To je přesně to myšlení, o kterém jsem mluvil a které bylo kdysi výhradní vlastností Windowsáků. "Nemáte Windowsy? Sere pes!" a proti tomu stálo "Pojďme to napsat přenositelně nebo přímo platformně-nezávisle, ať má uživatel svobodu".
Tak jistě, uživatel má svobodu si to přepsat nebo poslat patche. A pokud budou patche ve stylu mnou uvedených příkladů (je to sice třikrát delší, hůř čitelné, pomalejší, náchylnější na překlepy a potřebuje to externí program, ale zato je to POSIX-compliant, případně, protože to shell neumí, tak budeme dělat černou magii s eval), tak ho s nima pošlu taky k šípku. A ve finále to dopadne tak, že to sice bude POSIX-complaint, ale pak přijde nějaký vopruzák s tím, že to sice je POSIX OK, ale dash tohle a tohle neumí/dělá jinak, a busybox verze kamenné uhlí tohle taky neumí nebo dělá jinak, takže je ještě potřeba upravit tohle a támhleto, aby to fungovalo.
Sorry, ale jako pokud si pro sebe budu psát nějaké skripty s tím, že je zveřejním pro ostatní, tak si je holt napíšu v tom, co mi vyhovuje, a tak, aby bylo pro mne čitelné a co nejjednodušší. Fakt se nebudu mořit s nesmyslným POSIXem jen proto, aby to bylo ! "přenositelné", to za ten čas a znepřehlednění/ztrátu funkčnosti vážně nestojí.
P.S. On někdo touží po tom, aby systemd fungoval na BSD? Sice to moc nesleduju, ale těch davů zájemců jsem si fakt nevšim. Je spousta lidí, co to nechtěj ani na Linuxu. ;D
-
Fakt se nebudu mořit s nesmyslným POSIXem jen proto, aby to bylo ! "přenositelné", to za ten čas a znepřehlednění/ztrátu funkčnosti vážně nestojí.
TO jsem přesně říkal, ne? :)
-
Přijde mi, že zase hledáte nějakou všeobecnou, universální pravdu…
IMHO je potřeba brát ohled na to, k čemu ten skript slouží – kompatibilita je dobrá věc, ale ne za každou cenu, nemusí se to přehánět.
Když si budu psát skript pro sebe nebo pro firmu, kde na všech strojích máme nějaký moderní GNU/Linux, tak ať tam jsou klidně BASHismy.
A naopak když budu psát skript – třeba doplňkový k nějakému programu – který chci zveřejnit a který budou lidi pouštět na všem možném od nějakých prastarých SunOSů, přes různá BSDčka, další UNIXy až po dnešní GNU/Linuxová distra… tak by to mělo být co nejvíc přenositelné, i za cenu toho, že některé věci nebudou zapsané tak elegantně.
-
pred deseti lety vsichni uchcavali z perlu a php.
moc se mi s tim nectelo zacinat, ale dneska jsem zjistil, ze python je fajn!
hafo knihoven, rychla prototypizace :-)
-
Když si budu psát skript pro sebe nebo pro firmu, kde na všech strojích máme nějaký moderní GNU/Linux, tak ať tam jsou klidně BASHismy.
Tak jasně, pokud si někdo píše něco jenom pro svoji potřebu, tak ať si to píše klidně v morseovce, do toho mi fakt nic není :)
-
No jasne odteraz všetko čo napíšem budem písať cross-platform aby BSD,atp. nemuseli pohnúť ani prstom pri adaptácii mojich skriptov.
To je zas samé fňukanie odkedy všetko čo vyprodukuje/adaptuje BSD funguje OOB v Linuxe? Hammer? ZFS? , dtrace?
Pointa leží v tom BSD len doháňa to čo v Linux-e už dávno je a navyše mám strach že BSD chce systemd,udev atp.
-
No jasne odteraz všetko čo napíšem budem písať cross-platform aby BSD,atp. nemuseli pohnúť ani prstom pri adaptácii mojich skriptov.
Tak zaprvé nemluvím za BSD, k tomu nemám nejmenší právo, ale sám za sebe.
Mám pocit, že dřív se trochu víc myslelo na to, že OSS komunita je omezená a tak je fajn neduplikovat úsilí. Bývalo chloubou, že něco jelo i na BeOSu. Dneska už se nemyslí ani na kompatibilitu mezi různými Linuxy... (Wayland/Mir, AppArmor/SELinux atd. atd.)
Samozřejmě pokud ti nezáleží na ničem jiném než tvém oblíbném distru Linuxu, tak tě nikdo nemůže nutit psát věci jinak. Je to tvoje svobodná volba. Já si nad tím můžu jenom povzdechnout, což dělám :)
To je zas samé fňukanie odkedy všetko čo vyprodukuje/adaptuje BSD funguje OOB v Linuxe? Hammer? ZFS? , dtrace?
Tak doufám, že vnímáš rozdíl mezi FS a skriptem co se týče úrovně závislosti na kernelu... A ZFS a dtrace je hodně blbej příklad, protože ty vznikly v komerční firmě, která neměla nejmenší motivaci pomáhat Linuxu, naopak. Myslím, že licenci schválně zvolili tak, aby to do Linuxu vložit nešlo.
Pointa leží v tom BSD len doháňa to čo v Linux-e už dávno je
Když myslíš :)
a navyše mám strach že BSD chce systemd,udev atp.
Ale já jsem přece neřekl, že někdo chce systemd. V současné podobě by ho asi chtěl dost málo kdo. A co se týče udev, FreeBSD mělo správně napsané devfs už dávno, zatímco Linux zkusil prvně špatné devfs, potom teprve udev.
-
Jak naznacuje MP, pointa nixovejch systemu prave je v jejich vzajemne kompatibilite, znovupouzitelnosti a absenci nutnosti znovuvynalezat kolo. Pokud je nekdo zamindrakovanej natolik, ze touzi psat kod, kterej zamerne nepobezi na jinejch platformach tak ats, nicmene nikdo ho nenuti ten kod vubec zverejnovat. V tom pripade je jasne, ze takovy uzivatel neuznava zakladni principy open source technologii a je to jeho vec. Na druhou stranu v realnem provozu se casto nespravuje jen jedna platforma nebo distro ale hned nekolik a to pak adminovi samotnemu usetri spoustu casu a usili, pokud je schopen napsat sve skripty cross platformove.
-
No jasné za komunistov bola tráva zelenšia povýšené
Nakoniec vysvitlo že ani BSD/Solarisu atp. nezáleží ani nikdy nezáležalo na kompatibilite resp. portovaniu na ostatné plaformy
Čo sa týka znovu použíteľnosti skús to vysvetliť tu. A nezabudni sa staviť aj v Fedore
https://wiki.freebsd.org/GPLinBase
-
to Ramtech:
No a co tim chtel jako basnik rici? Ja se tady nezastavam zadny platformy, tedy ani BSD/Solarisu jak tady predhazujes a navic fakt, ze se BSD snazi zbavit GPL licencovaneho softwaru a prejit plne na BSD licenci mi prijde pomerne jasnej a logickej. Ten prechod neprobiha kvuli reseni nejaky kompatibility nebo nenavisti k GPL softwaru jako takovemu, ale ciste z licencnich duvodu.
Je jasny, ze portovat skripty mezi OS je hudba utopicka, nicmene pokud to jen trochu mozne je tak proc se tomu zamerne vyhybat. Nestaci uz snad rozdilnost nastroju u jednotlivych OS? Je ta vzajemna nevrazivost mezi uzivateli skutecne nutna?
-
Nakoniec vysvitlo že ani BSD/Solarisu atp. nezáleží ani nikdy nezáležalo na kompatibilite resp. portovaniu na ostatné plaformy
No tak na kompatibilitě musí především záležet vývojářům jednotlivých softů. A různým vývojářům na ní samozřejmě záleží různě. Pokud některý vývojář záměrně napíše makefile jenom pro BSD make, aby nasral Linuxáky, tak na něj ten můj povzdech samozřejmě platí taky.
Nicméně rozdíl je (podle mého pocitu) taky v tom, že lidi z *BSD světa mají tendenci volit jednoduchá, funkční řešení, která člověk nemusí měsíc hackovat, aby je vůbec rozjel, čili "portace" na Linux spočívá třeba v tom, že se někde změní nějaká cesta nebo header file.
Jednu dobu jsem třeba používal Scrotwm. Moc hezká věc. Ani ./configure hell nepotřeboval. A jak složité je použít ho na Linuxu, na to se kařdý může podívat sám: https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/spectrwm
Čo sa týka znovu použíteľnosti skús to vysvetliť tu. A nezabudni sa staviť aj v Fedore
https://wiki.freebsd.org/GPLinBase
Nechápu pointu. FreeBSD projekt prostě považuje licenci GPL2 za příliš restriktivní a GPL3 za vyložené zlo. Čili GPLed sw používá afaik jenom tam, kde neexistuje adekvátní náhrada pod svobodnější licencí. Poslední dobou se třeba intenzivně pracovalo na nazhrazení gcc clangem. Na tom je něco špatně?
( viz např. http://unix.stackexchange.com/questions/49906/why-is-freebsd-deprecating-gcc-in-favor-of-clang-llvm )
A s Fedorou je co? Že je ve FreeBSD k dispozici jako jeden z možných základů pro linuxovou emulaci? A to se taky nesmí? Nebo kde je problém?
-
Jenom k *BSD a GLP3 - Apple drží v OS X staré veze GLP2 softu, protože odmítá použít GLP3 (aspoň z toho, co vím) - A přepisovat se jim to asi nechce..
-
to MP:
Problem neni nikde. Kdo chce psa bit, hul si vzdycky najde ;D
-
To kde ste nasli tychto dvoch panov? Narafali? Psovi nic?
No jasne odteraz všetko čo napíšem budem písať cross-platform aby BSD,atp. nemuseli pohnúť ani prstom pri adaptácii mojich skriptov.
To je zas samé fňukanie odkedy všetko čo vyprodukuje/adaptuje BSD funguje OOB v Linuxe? Hammer? ZFS? , dtrace?
Pointa leží v tom BSD len doháňa to čo v Linux-e už dávno je a navyše mám strach že BSD chce systemd,udev atp.
Asi neradi mrhaji casem na kraviny jen proto, aby nekomu fungovaly ve zkriplenem shellu typu dash.
http://www.youtube.com/watch?v=x4nHGyPyiLs&t=28 (http://www.youtube.com/watch?v=x4nHGyPyiLs&t=28)
-
Zpátky k tématu:
perl
Je to jeden z mála scriptovacích jazyků, kde při návrhu nebrali deklaraci proměnné jako zbytečnou řádek navíc. Díky tomu je čitelnost o 50% lepší a 80% unit testů, které v php/python/ruby testují typo, si ušetříš.
-
shell, awk, python.. každé se hodí na něco jiného, není univerzální jazyk