abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:33 | Bezpečnostní upozornění

    Byla vydána verze 0.81 telnet a ssh klienta PuTTY. Opravena je kritická bezpečnostní chyba CVE-2024-31497 obsažena ve verzích 0.68 až 0.80. Používáte-li klíč ECDSA NIST P521 a použili jste jej v PuTTY nebo Pageantu, považujte jej za kompromitovaný.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Komunita

    Hra MineClone2 postavena nad voxelovým herním enginem Minetest byla přejmenována na VoxeLibre.

    Ladislav Hagara | Komentářů: 0
    včera 19:11 | IT novinky

    Společnosti Avast Software s.r.o. byla pravomocně uložena pokuta ve výši 351 milionů Kč. Tu uložil Úřad pro ochranu osobních údajů za neoprávněné zpracování osobních údajů uživatelů jejího antivirového programu Avast a jeho rozšíření internetových prohlížečů (Browser Extensions), k čemuž docházelo prokazatelně po část roku 2019.

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 15:55 | Zajímavý článek

    Bylo vydáno do češtiny přeložené číslo 714 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Pozvánky

    V sobotu 20. dubna lze navštívit Maker Faire Jihlava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Zajímavý software

    Knihovna pro potlačení šumu RNNoise byla vydána ve verzi 0.2. Kvalitu potlačení lze vyzkoušet na webovém demu.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    FRRouting (FRR) (Wikipedie), tj. softwarová sada pro směrování síťové komunikace, fork Quagga, byl vydán ve verzi 10.0.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Nová verze

    Julian Andres Klode vydal APT (Advanced Packaging Tool) ve verzích 2.9.0 a 2.9.1. Jedná se o vývojové verze nové větve APT 3.0. Vylepšuje se uživatelské rozhraní. Přidány byly barvičky. Aktuální náhledy a vývoj lze sledovat na Mastodonu.

    Ladislav Hagara | Komentářů: 3
    14.4. 17:00 | Komunita

    Miguel de Icaza se na svém blogu rozepsal o vložitelných herních enginech. Kdysi slibné projekty UrhoSharp a Urho3D jsou již mrtvé. Zůstává Godot. Aktuálně vývojáři řeší Pull request #90510 s návrhem knihovny LibGodot.

    Ladislav Hagara | Komentářů: 0
    14.4. 03:44 | Nová verze

    Byla vydána nová verze 5.0 linuxové distribuce Lakka, jež umožňuje transformovat podporované počítače v herní konzole. Nejnovější Lakka přichází s RetroArchem 1.17.0.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (59%)
     (13%)
     (2%)
     (25%)
    Celkem 393 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Google Go – 1. narozeniny

    13. 1. 2011 | Jan Mercl, Ondřej Surý | Programování | 10713×

    „Do not communicate by sharing memory; instead, share memory by communicating“ – zahajujeme seriál o programovacím jazyku Go.

    Obsah

    Společnost Google představila veřejně svůj jazyk Go o trochu víc než před rokem, v listopadu 2009. Mezi autory jazyka patří např. Rob Pike nebo „otec zakladatel“ Unixu Ken Thompson. Na oficiální domovské stránce jazyka Go je k nalezení mnoho užitečných informací jako třeba několik různě pokročilých tutoriálů, odkazy na prezentace a blog, kompletní formální specifikace jazyka, apod.

    U oné specifikace je snad zajímavé poznamenat, že se vejde na sice trochu delší, ale přece jen jednu webovou stránku. Nejde ani tolik o rozsah, ale spíše o to, že specifikace Go, což není úplně obvyklé, je určena pro čtení a studium programátora a nahrazuje tak i něco ve stylu „referenční příručky jazyka“, která u jiných programovacích jazyků typicky nemá, či obvykle nemívá, úplnost specifikace. Z uvedeného plyne téměř nutně, že definice syntaxe i sémantiky jazyka Go je poměrně pravidelná, obsahuje jen málo základních konceptů, které jsou ale navrženy tak, aby při kompozici složitějších, leč často se vyskytujících konstrukcí, pokud možno žádný podstatný nechyběl.

    Pokud navštívíte výše zmiňovanou domovskou stránku Go, tak v tom momentě ve skutečnosti využíváte aplikaci godoc, která je určena pro práci s dokumentací zdrojových kódů Go z příkazové řádky, ale umí se chovat i jako i webový server. Přestože jeden z autorů jazyka loni potvrdil, že Go se v rámci společnosti Google používá pro opravdové nasazení, je webový server Go domovské stránky jedinou takovou konkrétně potvrzenou a známou aplikací.

    Následující text, dnes jen jeho první část, je míněn jako letmé shrnutí pro programátory a částečně jako snad užitečný rozcestník. Podrobnější informace, ukázky kódu atd. viz odkazy na domovské stránce Go.

    Přehled některých vybraných vlastností jazyka Go

    link

    Kategorizace

    link

    Go je imperativní (neboli též procedurální) programovací jazyk, podobně jako třeba C, Java, Pascal, Basic, ... Program v Go je sadou příkazů, které mění stav procesu/aplikace. Na opačné straně pomyslné hranice tohoto rozdělení stojí více či méně čistě funkční programovací jazyky z nichž mezi ty dobře známé patří např. LISP.

    Logika rozhodování, která se používá třeba u příkazů if, for, je standardní booleovská, tedy dvouhodnotová a Go se zde opět drží v tradičních mezích výše uvedené rodiny typických procedurálních jazyků.

    Hodnoty s typem funkce (ukazatel na funkci) jsou v Go objekty první kategorie:

    • Je možné je ukládat do proměnných i složených datových struktur.
    • Lze je předávat jako parametry volání jiné funkce i jako návratovou hodnotu funkce.
    • Funkce jde vytvářet v době provádění programu.
    • Identita hodnoty funkčního typu není závislá na žádném identifikátoru, tj. Go zná anonymní funkce – funkční literály.

    Do Go by díky tomu nemělo být zas až tak těžké přepsat implementaci některých algoritmů, které jsou ve funkčních programovacích jazycích někdy mnohem kratší a/nebo elegantnější v zápisu.

    Syntaxe

    link

    Gramatika jazyka Go je navržena s cílem minimalizovat kód a maximalizovat jeho čitelnost (to druhé je samozřejmě z definice čistě subjektivní kategorie, přesto vděčný zdroj četných flame wars). Součástí distribuce je nástroj pro standardní formátování kódu: http://golang.org/cmd/gofmt/ a http://research.swtch.com/2009/12/gofmt.html.

    Bloková struktura, tj. příkaz sestávající z libovolného počtu jiných příkazů, je stejná jako v C nebo Javě, tedy je uzavřena ve složených závorkách. Příkazy se ukončují středníkem (opět jako v C). Určitě příjemné pro programátora je, že v naprosté většině míst lze ukončovací středník ze zápisu vypustit. Jistou daní za takové pohodlí je nutnost dodržení některých konvencí. Odměnou za jejich respektování je pak to, že kompilátor automaticky vloží středníky na správná místa.

    Deklarace typů nejsou ve stylu C. Používají se sice C ukazatelové konvence (*) avšak s pořadím převážně jako v Pascalu a dalších jazyků z dílny profesora N. Wirtha. Důvodem je i v tomto případě zlepšení čitelnosti. Ano, jistě je to opět subjektivní záležitost, ale tentokráte podpořená i trochou teorie. Byla by jistě škoda na konci právě odkazovaného článku přehlédnout jeho úplně poslední odkaz. Tam se totiž dozvíte, proč se programátorovi při čtení deklarací typů v Go hlava nezatočí. Doufám, že mi laskaví příznivci jazyka C prominou.

    Použitelnost oficiální distribuce

    link

    Vývojářský tým Go uvolňuje nová vydání obvykle každý týden nebo jednou za dva týdny a vydané verze lze označit za docela stabilní. Množství nacházených chyb je myslím přiměřené rozsahu projektu, jejich odstraňování bývá docela rychlé. Zázemí velké společnosti se na vlastnostech vývoje tohoto open source projektu projevuje nesporně příznivě.

    Přesto Go ještě není určeno pro produkční nasazení. Důvodem je jiná nestabilita a to jazyka jako takového. Při svém výslovně uváděném a zdůrazňovaném experimentálním statusu si autoři Go zatím mohou dovolit zasahovat do definice jazyka i způsoby, které nejsou zpětně kompatibilní s existujícím kódem třetích stran. V silně aktivní diskuzní skupině Go se návrhy na některé úpravy probírají prakticky denně a autoři jazyka občas výslovně uvádějí úmysl a/nebo ochotu měnit jej k lepšímu i za cenu „rozbití“ staršího kódu, pokud nabudou přesvědčení o účelnosti takové změny. K odhadem asi minimálně tuctu takových změn již za krátkou historii jazyka i skutečně došlo.

    Asi nejvýznamnější zpětně nekompatibilní změnou jazyka Go bylo opuštění původní zcela volné podoby (free form) zápisu kódu. Bylo to ovšem výměnou za novou možnost nepsat téměř žádné středníky ukončující příkazy (viz předchozí kapitola „Syntaxe“). Free form zápis, tak jak je znám u jazyků C, Java nebo třeba Pascal, dovoluje libovolně formátovat kód pomocí oddělujících „bílých“ znaků. Typicky to jsou mezery, tabulátory, konce řádků, ale také komentáře, pokud nemají hodnotu z pohledu sémantiky programu.

    Změna směrem k omezení úplně volné formy byla velká a úměrné tomu byly zpočátku i vášně většiny lidí o ní diskutujících. Z „historického“ pohledu je docela zajímavý první příspěvek Roba Pikea ve vláknu, ve kterém ohlašuje úmysl vývojářů změnu uskutečnit a přidává podrobný pohled na to, co všechno se tím změní. Jazyk kupříkladu přišel o možnost automatického spojování sousedících řetězců (tak jako v C). To dle debat nevadilo skoro nikomu. Nadále už také nebylo dle návrhu možné rozdělovat (dlouhé) výrazy s binárními operátory kdekoli, ale pouze tak, že operátor v takovém případě musí „viset“ na konci řádku. Pokud by jím, jak bylo dříve možné, začínal až řádek následující, opět by došlo k automatickému vložení ukončovacího středníku a původní kód by nešel dále kompilovat. Nejhorší možný případ by ovšem byl, pokud by stávající kód i nadále kompilovat šel, jen s tichou změnou sémantiky programu. I tuto katastrofickou variantu Rob ve svém návrhu bere do úvahy. Ale ani „nesvobodné“ umísťování operátorů, čárek oddělujících položky seznamu apod. nedokázaly dohromady vyvolat a dodnes občas vyvolávat bouře. Přitom jde ve skutečnosti opravdu jen o pouhý zvyk. Kdo tuší, že řeč je o „brace style“, tak to odhadl naprosto správně.

    V dnešní podobě Go (už) nemáte možnost, napsat otevírací složenou závorku bloku, kterou začíná tělo funkce nebo např. složený příkaz po if kdekoli jinde než na stejném řádku jako je hlavička funkce nebo příkaz. A řekněme, že odhadem polovina z desítky (nebo snad desítek?) běžně se vyskytujících stylů psaní složených závorek je má přitom až na řádce následující. Výsledkem třaskavého mixu těchto dvou skutečností bylo, že někteří členové diskuzní skupiny golang-nuts protestně páchali virtuální, závorkově rituální sebevraždy. Považovali mj. totiž za nezbytně nutné oznámit všem ostatním několika tisícům odběratelům této e‑mailové konference, že s Go kvůli této změně navždy, neodvolatelně a do smrti končí. R.I.P.

    Pro otrlé zvědavce ukázka mezní (ze strany odpůrce nových omezujících pravidel) vyhrocenosti debaty na vývojářské konferenci mezi autory jazyka a autorem implementace navrhované změny, která měla opětně dovolit psát alespoň částečně free form Go.

    Cílové systémy/architektury, instalace ze zdrojových kódů, externí kód

    link

    Pro překlad jazyka Go jsou k dispozici různé kompilátory, pojmenované dle konvencí Plan9, tj. podle cílové instrukční sady procesoru – 5g (ARM), 6g(AMD64) a 8g(386), souhrnně se jim říká také „gc“. K nim příslušejí další nástroje (linkovací programy 5l, 6l, 8l, assemblery, 5a, 6a, 8a atd.). Kromě požadovaného procesoru samozřejmě kompilátor ještě musí vědět na kterém operačním systému má být vytvořená binární aplikace spouštěna. Oficiální distribuce Go podporuje zatím tyto kombinace OS a procesoru:

    • darwin/386
    • darwin/amd64
    • freebsd/386
    • freebsd/amd64
    • linux/386
    • linux/amd64
    • linux/arm (neúplná implementace)
    • windows/386 (neúplná implementace)

    Používání knihoven vytvořených jinými kompilátory v C ABI umožňuje nástroj cgo. Je možné z Go volat funkce C knihoven a možná jsou i zpětná volání Go funkcí z C knihovny (callbacks). Tato obousměrná interakce je trochu ztížena přepínáním zásobníků a vláken na hranici Go a C světů, takže se hodí nejlépe tam, kde C kód vykonává relativně hodně činnosti v porovnání s ne zcela zanedbatelnou režií přepnutí. Vhodný příklad je třeba využití libgtk, nevhodným je pak jakákoli často volaná lineárně prováděná C funkce v rozsahu pár desítek řádků.

    Postup pro získání celého Go zdrojového stromu, sestavení a provoz uvedených kompilátorů, resp. celého řetězce „gc“ nástrojů je na webu golang.org.

    Další implementací kompilátoru jazyka Go je gccgo, což je nový Go frontend pro GNU gcc v blížícím se vydání 4.6. Gccgo umožňuje za určitých okolností přímou vazbu deklarací a přímé volání mezi Go a C kódem, tedy s menší režií než „gc“ kompilátory. Bližší podrobnosti k této problematice jsou uvedeny v sekci „C Interoperability“ návodu pro získání gccgo zdrojové větve gcc, sestavení a provoz gccgo.

    Gccgo překladem Go zdrojového kódu do vnitřní reprezentace gcc získává pro Go potenciálně všechny cílové platformy gcc. To byla ta dobrá zpráva. Na druhé straně se za to zatím platí třeba i tím, že kód z gccgo používá pro gorutiny NPTL vlákna. Hodí se tedy lépe pro problémy, které jsou implementovány s omezeným počtem gorutin. Vlákna mají o hodně větší nároky na paměť i na přepnutí než gorutiny, podrobněji se o tom dozvíte v druhé části článku.

    Kompilace vs. interpretace

    link

    Jazyk svým návrhem nijak nebrání implementaci obou možností. Naopak by se dalo říct, že v obou případech jsou některé vlastnosti Go výhodné. Např.:

    • Go má statický systém typů – to je samozřejmě velké plus pro efektivitu kompilovaného kódu. Ale i z interpretru odpadá jakékoli další než prvotní rozlišení typu hodnoty. Interpretr může být jednodušší a zároveň potenciálně rychlejší protože při interpretaci není už třeba typy hodnot kontrolovat při každém přístupu – dynamická změna typu není možná.
    • Konverze typů, třeba z celého čísla na hodnotou v plovoucí čárce, jsou v Go vždy explicitní. Při interpretaci tedy není nutné kontrolovat typ cíle a/nebo typy operandů a podle něj/nich případně hodnoty/výsledky operace konvertovat.
    • Zpracování Go zdrojového programu kompilátorem i interpretrem nepotřebuje znalosti o tom, jak se v tomhle místě programu má vykládat nějaký operátor, jestli v právě daném kontextu není náhodou platná třeba uživatelská definice jeho přetížení. Go toto nemá, byť se tato vlastnost stále diskutuje a může se v něm tedy někdy objevit.
    • Go nemá žádné preprocesorové direktivy, žádné kompilační proměnné, žádná makra ani žádný jiný (pseudo)kód, který se interpretuje při/před kompilací. Z toho opět vychází méně složitý kompilátor i interpretr. Avšak nejen to. Může být nadstavbový jazyk kompilátoru programovacího jazyka překážkou smysluplné interpretace programovacího jazyka samotného? Bohužel může. Laskaví příznivci jazyka C++ mi doufám prominou.

    Implementace poskytovaná společností Google je kompilovaná do nativního kódu se statickým linkováním (přinejmenším v případě „gc“ kompilátorů 6g,...). Součástí distribuce je také modul interpretru, který ale ještě neimplementuje celý jazyk. Jak je možné, že po roce od prvního vydání (modul eval je v Go od prvního vydání) je tento modul stále ještě nehotový? O pár řádků výše se hovoří o nepřítomnosti direktiv, maker a podobných konstrukcí v Go. Nepřímý důsledek toho je, že v Go tedy neexistují a existovat ani nemohou žádné hlavičkové soubory (dívám se na tebe, Cčko). Neexistují-li hlavičkové soubory, je pohodlná cesta pro modulární kompilaci přes přítomnost exportovaných definicí v objektovém kódu (v angličtině „object code“, který nemá nic společného s objektovým programováním, viz též Wikipedii). To není žádná novinka, třeba Delphi se svými .dcu soubory dělá přesné totéž už hezkou řádku let. Odměnou za definice, jejichž import při kompilaci nevyžaduje syntaktickou analýzu textu, případné opětné vytváření AST a interpretaci jeho sémantiky, je rychlost kompilace.

    Pokud v Go program A importuje modul B, který importuje modul C, pak zkompilovaný objektový kód modulu C obsahuje všechny exportované entity modulu C. To je zatím celkem standardní záležitost. Zkompilovaný objektový kód modulu B obsahuje totéž pro B, ale i všechny entity z C, které jsou přes B také viditelné. Například v B je exportovaná funkce, která vrací hodnotu typu, který je exportován z C. Program A nemusí C importovat vůbec, ale při kompilaci A, se objektový kód C použije až pro sestavení/linkování. Pro vytvoření objektového kódu A není objektový kód C potřeba (navíc si představme A jako levou rekurzi celé situace). Vynechány teď byly některé implementační detaily, které kontrolují třeba verzování apod., protože se dostáváme k důležitému poznatku. Pokud kompilujeme modul/program, který importuje N jiných modulů, kompilátor potřebuje: a) jen binární resp. strojově formátovaná data b) jen z N dalších modulů. Například v C a C++ jde přitom o N kořenů stromů závislostí na dalších zdrojových souborech pomocí #include a v nich dále vnořených #include atd. Náročnost zpracování takového stromu při kompilaci může snadno růst exponenciálně s velikostí projektu. V Go nejde o strom, ale o vektor a je zaručen nejvýše lineární růst složitosti kompilace.

    Tím se konečně dostáváme k odpovědi na otázku o pár odstavců výše. Typická doba kompilace Go modulu na obyčejném počítači je pod 100 ms, typická doba sestavení Go programu je pod 1 sekundu. Kompilace programátory v Go zdržuje tak málo, že tlak na dokončení oficiálního interpretru je malý. I v hypotetické aplikaci používající Go jako skriptovací jazyk je dobře představitelné Go „skript“ bleskově on-demand zkompilovat před jeho „interpretací“.

    Závěr této části

    link

    Dnešní téma bylo větším dílem pohled na Go jako takové a jeho konkrétní implementace. V příští části se zase naopak dostaneme více k přehledu o samotnému programování v Go, tedy například jaké typy, hodnoty a konstrukce s ním lze vytvářet, co by na něm kodéra asi mělo nebo možná mohlo zaujmout. Například co chtěl básník říci sloganem v záhlaví článku.

    Laboratoře CZ.NIC

    O autorech

    Jan Mercl a Ondřej Surý pracují v Laboratořích CZ.NIC, výzkumném a vývojovém centru správce české národní domény.

           

    Hodnocení: 94 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    13.1.2011 09:38 JS
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    No, na to, co predvadel Rob Pike ve sve prezentaci na Google Tech Talks o jistem svem prototypu programovaciho jazyka (jehoz jmeno si nepamatuji), totiz jak elegantne vyuzivat kooperativni mikro-multitasking a komunikaci pres roury, me Go dost zklamalo. (Mozna to bude tim, ze nativni kooperativni multitasking je jedna z mala veci, ktera mi chybi v Lispu.)

    Rad bych, aby me clanek presvedcil o opaku, ale zatim to nevypada. Go na me pusobi jako neco, co mohlo byt jakz-takz zajimave v 80.letech, ale dneska?
    13.1.2011 11:09 Ondřej Profant | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Obecně vzato souhlas (technicky to není ohromující), ale otázkou je jestli tato tenká linii mezi interpretem kompilátorem nebude klíčová marketingově. Prostě budou se vyvíjet skripty, které budou hezky běžet všude a final se zkompiluje a bude ještě rychlejší. Když se k tomu připočítá nenáročnost na HW... kdyby byla slušná podpora modulů, tak by go mohl překlenout mezeru mezi skriptovacími jazyky, funkcionálními a klasickými nízkoúrovňovými, kde se příznivci hádají, že je zbytek pomalu, nesrozumitelný etc. Tato potencionální univerzálnost by mohla být docela zajímavá pro mnoho lidí.
    13.1.2011 11:41  
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    zde plati tzv. prvni Kasprzakova veta:

    'pro pouziti jazyka jsou rozhodujici knihovny a moduly. A proto perl.'

    Veta byla v roce 2005 doplnena o tzv. 'Ponkracovu vyjimku'

    'c++ stoji za hovno'
    13.1.2011 14:56 Vskutečnosti Saýc | skóre: 7
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Taky bych uvital spis serii clanku o erlangu nebo haskellu nez nejakej googli bastl co je v zasade nadstavba Ccka.

    Ale to bych je asi musel napred napsat, heh.

    A "k cemu se da dnes pouzit LISP" by byla taky husta serie clanku.
    13.1.2011 15:32 Ondřej Profant | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Haskell ale má: http://haskell.cz/, což je výborná stránka.

    No leda, že by někdo přeložit více toho seriálu a nebo knihu Real World with Haskell... to bych bral, přecijen je pro mě čeština pohodlnější.

    Zas duplicitní články jsou na nic.
    13.1.2011 22:28 Bystroushaak
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Mezeru o které mluvíte podle mě pěkně překlenuje D.
    Bedňa avatar 14.1.2011 10:14 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Díki za ten link, celkom som sa začítal a zistil som že to na čo som nadával pri C++ už niesom sám sme dvaja :-)
    KERNEL ULTRAS video channel >>>
    18.1.2011 23:50 Erbureth | skóre: 21
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Bedňa avatar 20.1.2011 07:30 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    On nemyslel dať to do názvu stránky, ale napríklad ako je na tej wiki hneď prvá veta.
    Vítejte na stránkách které si kladou za cíl poskytovat v češtině informace o programovacím jazyku D.
    KERNEL ULTRAS video channel >>>
    13.1.2011 10:18 sivlk | skóre: 15 | blog: sivlk
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Super clanok, uz sa tesim na dalsi diel.
    13.1.2011 11:03 vvv
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Uprimne, jazyk od lidi co resi 2-rozmernou syntax jazyka a narizuji format kodu kvuli tomu, aby par lidi nemuselo psat stredniky, by toho musel nabizet hodne dobreho, abych mi stal za vyzkouseni.
    Jakub Lucký avatar 13.1.2011 11:24 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Třeba Python :-P
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    13.1.2011 12:02 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    +1

    presne python... zatial sa nenasiel jazyk, ktory by ma oslovil tak silno ako python. V pythone ani stredniky netreba, ani zatvorky... ani deklaracia premennych neni potrebna... paradigmov vas nikto neobtazuje... jednoducho v pythone pisem tak ako mi huba narastla... a co sa nativneho kodu tyka, tak to riesim tak, ze do windowsovych distribucii svojich programov, ktore su haklive na rychlost zabalim aj mingw a compilujem si CPython ako treba... takze Go vs. Python: 0:1 (alebo skor 0:100)...
    13.1.2011 12:40 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Prosim? Python Vas oslovil? Vsak v Pythone si nemoze byt clovek isty ani tym, ci program nahodou nezhavaruje koli preklepu v nazve premennej alebo funkcie. Funkciu ocakavajucu 2 argumenty je mozne v kode programu zavolat s 3, 4 alebo aj 10 argumentmi. A co Python na to? Jednoducho nic, tvari sa ako keby bol kod v poriadku - az do momentu, ked ho ide vykonat.

    Go vs Python: 1:1
    alblaho avatar 13.1.2011 12:59 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    To je otázka přístupu. Kdo chce statické kontroly, neprogramuje v Python, ale v Adě, nebo aspoň v Javě. Všechno má své pro a proti.

    Člověk musí vědět s čím zachází a použít správné prostředky, třeba unit testy jsou velmi užitečné.
    13.1.2011 13:17 nyam
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    az do momentu, ked ho ide vykonat.
    no to je jaksi vlastnost interpretovanych jazykov kolega. svojim sposobom silne typy a kompilacne chyby su implicitne unit testy, ktore nemusite robit.
    13.1.2011 13:34 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    az do momentu, ked ho ide vykonat.
    no to je jaksi vlastnost interpretovanych jazykov kolega.
    Skor by som povedal, ze to je vlastnost iba urciteho (relativne maleho) poctu programov napisanych v dynamickom jazyku. Rozhodne to nie je vlastnost vsetkych programov, dokonca v realnom svete to nie je ani vlastnost vacsiny programov.

    To, ci program pre svoje fungovanie nutne potrebuje dynamicke crty Pythonu, je vlastnost toho konkretneho programu. Neprijemna zaludnost Pythonu z tohto pohladu je, ze Python dynamickost *vnucuje* aj programom, ktore tu dynamickost vobec nepotrebuju (a takych programov v Pythone, ktore to nepotrebuju, je vacsina).
    14.1.2011 00:21 anonym
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Neprijemna zaludnost Pythonu z tohto pohladu je, ze Python dynamickost *vnucuje* aj programom, ktore tu dynamickost vobec nepotrebuju (a takych programov v Pythone, ktore to nepotrebuju, je vacsina).
    Lol, vetsih hovadinu jsem letos necetl. Hned archivuju, at se mame nad cim s kolegy bavit :D Proste lol
    14.1.2011 11:02 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Neprijemna zaludnost Pythonu z tohto pohladu je, ze Python dynamickost *vnucuje* aj programom, ktore tu dynamickost vobec nepotrebuju (a takych programov v Pythone, ktore to nepotrebuju, je vacsina).
    Lol, vetsih hovadinu jsem letos necetl. Hned archivuju, at se mame nad cim s kolegy bavit :D Proste lol
    Ocividne Ste sa ani len naznakom nesnazili pochopit, co som tym myslel. Gratulujem, len tak dalej.
    15.1.2011 14:56 anonym
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Bohuzel nemohu nasledovat tenhle vymysl chore mysly. Sorry! :D
    alblaho avatar 13.1.2011 13:42 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Vtip je právě v tom, že ty unit testy "musíte" tak jako tak udělat i pro staticky typované programy.

    Jinak Python je dynamicky typovaný, ale má silný typový systém. Není to PHP.
    13.1.2011 18:32 Sten
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    To ale nedělá jenom Python, tak se chová většina interpretovaných jazyků. Pokud tu chybu detekujete, klidně ale můžete odchytit příslušnou výjimku a třeba i najít podobně pojmenovanou funkci, spustit ji a doufat, že tentokrát to půjde.
    grubber avatar 14.1.2011 01:40 grubber | skóre: 6 | blog: grubber | Břeclav / Brno
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Světe div se, dynamicky typovaný jazyk se nechová jako staticky typovaný! Ach, ta hrůza! A jak si někdo vůbec může dovolit takový jazyk používat?! Staticky typovaný jazyk je přece lepší ve všech ohledech!

    (Sarkasmus, kdyby to někdo nepochopil.)
    alblaho avatar 13.1.2011 12:55 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Nezlob se, ale "pisem ako mi huba narastla" mi zní jako "prasit".

    Python je výborný jazyk, ale absence deklarace proměnných není od toho aby se ušetřilo psaní, ale spíš důsledek dynamické povahy jazyka.

    A Python ani není zas tak jednoduchý jazyk. Dekorátory, generátory, __metaclass__... s tím se dá blbnout až jde hlava kolem. Ale zase je to jenom důsledek dynamičnosti.
    13.1.2011 13:11 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    ved presne to mam na mysli: "s tím se dá blbnout až jde hlava kolem" ... cokolvek co si vymyslim, to napisem a ono to proste funguje. Prave ta dynamicka povaha jazyka je to co je na nom vynikajuce. A multiparadigmovost samozrejme. A tie dekoratory, generatory, __metaclass__... su super, pretoze 1) maju jednoduchu syntax, 2) ak aj nieco v pythone nejde napisat tak aby sa mi to pacilo (schvalne nepisem, aby to bolo prehladne, nakolko je to subjektivne), tak vdaka tymto konstrukciam mozem "doplnit" moznosti, ktore inak nemam k dispozicii. Pricom ale treba pripomenut, ze vzdy mam moznost volby. bez tych dekoratorov a pod. sa da bez problemov fungovat. A samozrejme, ze "pisem ako mi huba narastla" = "ked chcem mozem prasit"... vdaka tomu, ked potrebujem rychlo nieco len tak skusit, nemusim robit velky refaktoring... neviem, ako to popisat, tak aby to bolo zrozumitelne, ide mi len o to, ze python mi dovoluje "prasit", netlaci ma do prisnej povinne logickej struktury (ktora moze byt logicka pre designerov jazyka, ale nemusi byt logicka pre mna), ale mi ponechava slobodu...
    13.1.2011 13:21 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    ... neviem, ako to popisat, tak aby to bolo zrozumitelne, ide mi len o to, ze python mi dovoluje "prasit", netlaci ma do prisnej povinne logickej struktury (ktora moze byt logicka pre designerov jazyka, ale nemusi byt logicka pre mna), ale mi ponechava slobodu...
    Zaujimalo by ma, kolko programovacich jazykov Ste sam osobne vytvorili alebo pomohli vytvorit, ked tych designerov tak kritizujete.
    13.1.2011 13:24 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    styri ;) z toho dva sa komercne vyuzivaju... takze tudy cesta nevede :(
    13.1.2011 13:46 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    styri ;) z toho dva sa komercne vyuzivaju... takze tudy cesta nevede :(
    Zaujimave. Napriek tomu, myslim, ze by tadialto mohla ta cesta predsa len viest ...

    A su to vsetko interpretovane dynamicke jazyky bez typoveho systemu? A su to vsetko general-purpose jazyky, alebo special-purpose?

    Podla mojho nazoru (a skusenosti), staticky typovany general-purpose jazyk s kompilatorom si vyzaduje niekolko rokov prace. (Napriklad: jazyk Go je vo vyvoji cca 2-3 roky.)

    Aky algoritmus pre alokaciu CPU registrov Ste pouzivali?
    13.1.2011 14:07 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Aky algoritmus pre alokaciu CPU registrov Ste pouzivali?
    Tohle bych vůbec neřešil a použil bych cizí backend.
    13.1.2011 16:16 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    vsetko je special purpose... to je vec pohladu... vzdy som musel riesit parser, a vzdy som potreboval bloky prikazov, funkcie, a podmienene spracovanie. a vzdy som potreboval riesit typovanie premennych... a nepovedal som ako dlho to trvalo a ako intenzivne sa na vyvoji pracovalo... pokial viem, tak jeden z dvoch jazykov na ktorom sa este stale pracuje sa vyvyja uz 5tym rokom, a druhy nad ktorym uz nemam kontrolu, som ja robil (na samom zaciatku) rok a ten projekt teraz nacina 7. rok existencie.

    Ok... a nemienim sa viac zaoberat tym, ze by som mal dokladovat ako si vobec dovolim kritizovat nieciu pracu. Ked vyjadrim svoj nazor, tak ho vyjadrujem v presvedceni ze mam pravdu, ak mi niekto dokaze ze ju nemam, alebo mam len ciastocne, tak svoj nazor upravim a priznam si svoj omyl. Nie je pre mna, nikdy nebolo a nikdy ani nebude, protiargument, ze ak som nieco nerobil, tak neviem o tom nic... Hoci to aj moze byt pravda, argumentaciu tohto typu nikdy neuznam.

    Btw. Ani od kritikov sa neziada aby natocili film, alebo napisali piesen, alebo namalovali obraz. A predsa vydajdruju svoj subjektivny nazor, jednoducho preto, ze na to mame pravo.
    13.1.2011 19:38 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Hmm, no dobre, ale musite uznat, ze doposial Ste o vlastnostiach tych jazykov nenapisali takmer nic. Len tak pre zaujimavost, mozete odpisat, ci niektory z tych jazykov ma kompilator implementovany v tom jazyku, ktory kompiluje?

    Napisali Ste:
    [Python ma] netlaci do prisnej povinne logickej struktury (ktora moze byt logicka pre designerov jazyka, ale nemusi byt logicka pre mna)
    Tejto vete vobec nerozumiem. Napriklad Python neumoznuje programatorovi explicitne specifikovat rozmiestnenie dat v pamati pocitaca. V niektorych situaciach to moze byt na obtiaz, a moze to tlacit programatora do pozicie, v ktorej by sa radsej nenachadzal. Dali by sa najst aj dalsie obmedzujuce vlastnosti jazyka Python (nema double-dispatch pre binarne operacie, Python interpretere nie su (z dost dobreho dovodu) napisane v Pythone, atd). Zoznam veci, ktore Python programatorovi neumoznuje vyjadrit, a veci ktore z urciteho dovodu nie je vhodne implementovat v Pythone alebo pre Python, je dostatocne dlhy.

    Vyhlasenia ako "Python ma netlaci do prisnej povinne logickej struktury" sa mi zdaju prilis silne na to, aby som im uveril.

    PS: Preferujem staticky typovane jazyky, a mam silny odpor k redundandnemu vykonavaniu CPU instrukcii (je jedno ci z dovodu pomaleho algoritmu alebo pomaleho programovacieho jazyka).
    13.1.2011 20:19 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Napriklad Python neumoznuje programatorovi explicitne specifikovat rozmiestnenie dat v pamati pocitaca. V niektorych situaciach to moze byt na obtiaz, a moze to tlacit programatora do pozicie, v ktorej by sa radsej nenachadzal.
    tak rekni rovnou, ze python je k nicemu, protoze to neni C++
    Python interpretere nie su (z dost dobreho dovodu) napisane v Pythone, atd).

    pypy
    PS: Preferujem staticky typovane jazyky, a mam silny odpor k redundandnemu vykonavaniu CPU instrukcii (je jedno ci z dovodu pomaleho algoritmu alebo pomaleho programovacieho jazyka).
    to musi byt pekne nudne programovani.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    Luboš Doležel (Doli) avatar 13.1.2011 20:46 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    to musi byt pekne nudne programovani.
    Mno, spíš zodpovědné.
    grubber avatar 14.1.2011 01:38 grubber | skóre: 6 | blog: grubber | Břeclav / Brno
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Tejto vete vobec nerozumiem. Napriklad Python neumoznuje programatorovi explicitne specifikovat rozmiestnenie dat v pamati pocitaca. V niektorych situaciach to moze byt na obtiaz, a moze to tlacit programatora do pozicie, v ktorej by sa radsej nenachadzal.
    Když je programátor idiot a neumí si pro danou úlohu správně zvolit jazyk, dobře mu tak.
    Dali by sa najst aj dalsie obmedzujuce vlastnosti jazyka Python (nema double-dispatch pre binarne operacie, Python interpretere nie su (z dost dobreho dovodu) napisane v Pythone, atd).
    Double dispatch je v Pythonu možný, i když není součástí jazyka. Interpret Pythonu napsaný v Pythonu existuje. Nejdřív by sis měl o tématu něco nastudovat, než začneš plácat blbosti.
    Zoznam veci, ktore Python programatorovi neumoznuje vyjadrit, a veci ktore z urciteho dovodu nie je vhodne implementovat v Pythone alebo pre Python, je dostatocne dlhy.
    To se dá prohlásit o libovolném programovacím jazyce.
    14.1.2011 11:02 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Dali by sa najst aj dalsie obmedzujuce vlastnosti jazyka Python (nema double-dispatch pre binarne operacie, Python interpretere nie su (z dost dobreho dovodu) napisane v Pythone, atd).
    Double dispatch je v Pythonu možný, i když není součástí jazyka. Interpret Pythonu napsaný v Pythonu existuje. Nejdřív by sis měl o tématu něco nastudovat, než začneš plácat blbosti.
    Zabudli Ste poznamenat, ze transformacia PyPy (predpokladam, ze myslite PyPy) interpretera do C trva asi tak pol dna a zaberie viac pamate ako je adresny priestor 32-bitoveho CPU. Toto nie su dva "dost dobre dovody", preco Python interpreter NIE je vhodne implementovat v Pythone?

    Inac, proti implementovaniu Pythona v Pythone nemam vyhrady. Ked problem takehoto typu niekoho bavi a vidi v tom zmysel, tak mu nijako nebranim, aby sa tym zaoberal. Ja osobne by som take nieco nerobil, pretoze to je podla mna akosi bez zmyslu.
    Zoznam veci, ktore Python programatorovi neumoznuje vyjadrit, a veci ktore z urciteho dovodu nie je vhodne implementovat v Pythone alebo pre Python, je dostatocne dlhy.
    To se dá prohlásit o libovolném programovacím jazyce.
    S tym suhlasim.
    grubber avatar 14.1.2011 01:43 grubber | skóre: 6 | blog: grubber | Břeclav / Brno
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Pán ráčí být tak trochu všeználek, co? Nevím, proč by Ti měl kolega efi.yunah dokazovat, že rozumí návrhu programovacích jazyků, když Ty sám mu očividně nerozumíš. Můžeš se ohánět termíny jako "algoritmus pro alokaci registrů CPU" jak chceš, ale pokud budeš zároveň psát blbosti jako "interpretované dynamické jazyky bez typového systému", tak budeš akorát k smíchu.
    14.1.2011 08:28 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Vdaka... ;) mne sa moc nechce rozculovat sa dalej...

    Len k vysvetleniu toho co som myslel tym, ze pythom ma netlaci do nejakej konkretnej struktury... je to jednoduche, ked chcem pisat proceduralne, pisem proceduralne, ked chcem objektovo, pisem objektovo, ked chcem mat one-class-per-file, tak aj to mozem robit, ked nechcem, tak nemusim... taktiez, python mi dovoli vramfi funkcie si dodefinovat dalsie funkcie... ked chcem rozsirit nejaky objekt, neni problem doplnit veci aj priamo do instancie... atd atd... proste mi dovoli robit co si zmyslim a neobmedzuje ma.

    Vsetky tie kraviny okolo priamej spravy pamate a neviem co, tak to je zjavne, ze kolega evidentne ripak, vobec nepochopil rozdiel medzi gramatikov jazyka, a compilatorom jazyka a proste vsetky tie veci okolo... to sa neda len tak dvomi vetami zhrnut...
    14.1.2011 11:02 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Problem bude asi v tom, ze Ste si mysleli, ze na tomto fore mozete len tak nieco "placnut" bez toho, aby Ste potom dokazovali, ze to ma nejake racio.

    Mna by teda zaujimalo kolko z tych ludi, co tu na plne usta kritizuju programovacie jazyky a specialne jazyk Go konfrontovali svoje nazory s autormi jazyka Go. Moj predpoklad je, ze nikto. Na rozdiel od takychto ludi, o mojich osobnych nazoroch o niektorych crtach jazyka Go a jeho implementacie autori jazyka Go aj vedia.
    14.1.2011 13:25 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Nuz, budem si sypat popol na hlavu cely tyzden a dufat, ze ked nieco este niekedy poviem alebo napisem, ze sa nenajde niekto prudko inteligentny, kto si vysvetli moje slova po svojom a potom ma bude hodiny presviedcat o tom, ze jeho pochopenie mojej myslienky je spravne a moje chapanie mojej vlastnej myslienky je hlupost...

    neviem co na tom neni jasne: tvrdim, ze syntax jazyka python je taka, ze mi dovoli strukturovat programy uplne podla mojej vlastnej lubovole... ako ste pan kolega prisli preboha na to, ze to ma nieco docinenia s compilerom, ci dokonca z managementom pamate, registrov a bohviecim este... vzdy som si myslel, ze pomocou jazyka vyjadrujem svoje myslienky v urcitej forme. Kazdy jazyk mi dovoli ine formulovanie (ine strukturovanie) myslienok. A programovaci jazyk python mi dovoluje formulovat aj chaoticky, aj usporiadane.

    dufam, ze uz je to teraz jasne...
    14.1.2011 11:02 a
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    pokud budeš zároveň psát blbosti jako "interpretované dynamické jazyky bez typového systému", tak budeš akorát k smíchu.
    Asi Vam nedoslo, ze "interpreter vs. kompilator", "dynamicke crty" a "(compile-time) type checking" programovacieho jazyka su viacmenej ortogonalne vlastnosti - z coho zrejme vyplyva, ze je mozne ich pouzit v jedinom slovnom spojeni tak, aby toto slovne spojenie davalo zmysel.
    Saljack avatar 13.1.2011 12:19 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Mě to prostě příjde jako pěkná pitomost, když už jednou mají syntaxi se středníkem, proč to proboha změnili. Přínos nulový, bordel obrovský.
    Sex, Drugs & Rock´n Roll.
    Saljack avatar 13.1.2011 12:22 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Jo to jsem se celkem na ty články o Go těšil, ale tohle mi to tak znechutilo. Si usmyslí, že psát složené závorky je blbost, tak je vypustí?
    Sex, Drugs & Rock´n Roll.
    13.1.2011 16:45 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    A proč je psát? Proč psát něco, co je nadbytečné?
    13.1.2011 17:26 Jiří J. | skóre: 34 | blog: Poutník | Brno
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny

    To je pravda! Navrhuji udělat seznam nejběžnějších činností, jaké může procesor dělat a tento seznam zakódovat do co nejmenšího množství bitů. Jo počkat, ono už to existuje. Proč v tom případě existují jazyky jako asm, C, Pascal, Perl, Python, Java, ..., když můžeme psát instrukce i s operandy přímo na úrovni bitů?

    Já nevím, co třeba abstrakce, aby se v tom mohl vyznat i tak primitivní tvor, jako je člověk? Proč psát závorky, když nejsou potřeba? Inu, zas to samý, člověk je bez závorek moc otevřenej a lítá sem a tam a pak se nesoustředí na práci. To je věda pane, fakt že jo. :-)

    13.1.2011 20:24 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    To jsou kecy úplně mimo. Odstranění nadbytečných znaků jako složené závorky kolem odsazených bloků naopak kód zpřehleňuje, odsazení je jasnější než závorky (je to vidět hned, lidi vidí text 2D a nejsou dobří v hledání a matchování párových znaků v něm). Programy v Pythonu se čtou dobře, složené závorky by byly rušivé.
    Josef Kufner avatar 13.1.2011 23:48 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Na složené závorky mi nesahej! To jsem takle jednou přesouval trošku větší kousek kódu z jedné funkce do druhé na jinou úroveň odsazení a zjistit, co všecko mám kam umístit nebylo vůbec jednoduché. Kdyby tam byly závorky, tak stačí ťuknout do rovnítka a editor to srovná sám. Bez nich je editor bezmocný a já mám zbytečnou práci.
    Hello world ! Segmentation fault (core dumped)
    14.1.2011 19:43 Mintaka
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    A nebylo to náhodou použitím nevhodného editoru?

    Posunutí bloku kódu v Pythonu pro mě znamená označit blok kódu (pokud ho odněkud kopíruji tak bych se obešel i bez toho označování) a pak už jen klávesou zkratku na posun celého bloku.

    I tak se to může jevit jako náročnější operace, než někam přidat nějakou závorku. Z dlouhodobého hlediska jsem však rád, protože když se k tomu kódu za čas vrátím, v jakémkoliv jeho místě vidím podle odsazení kde jsem a nemusím hledat závorku.

    Život mě vymáchal ve více než 30 programovacích jazycích (včetně různých makro-jazyků), někde více, někde měně.

    Vzhledem k tomu, že zdrojový kód je určen především pro lidi, každý jazyk, až na experimenty typu Brainfuck nebo Whitespace, by měl být přehledný. Měl by umožňovat i snadné editování.

    Ale lidé jsou různí, vyhovují jim různé věci. Není tedy divu že, existují různé programovací jazyky.

    15.1.2011 00:29 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    +1

    Posunutí bloku řádků, aspoň ve Vimu (na ten jsem zvyklý já), rozhodně není náročnější operace. Naopak, nejlíp se pracuje s celými řádky. Řešit nějaké závorky a jiné breberky je otrava, člověk si lehce nějakou omylem odmaže atd., práce s bloky řádků je bezproblémová.

    Tyhle věci záleží na editoru, je nesmysl dávat něco do syntaxe jazyka jenom proto, že to nějakému určitému editoru vyhovuje. Jazyk vytváříme pro programátory, ne pro hloupé editory.
    Josef Kufner avatar 15.1.2011 18:39 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Ach ano. Můžu označit blok a posunout ho celý. To je to nejmenší. Ale co se asi tak stane, když se při tom označování o kousek seknu a nevšimnu si toho hned? Při posunu většího kusu se to může stát celkem lehce, tím spíš, když přesouvám těch kusů více najednou. Výsledek je ten, že program dělá blbosti, ale z pohledu mého i překladače je syntaxe i odsazení správně. Teprve až delší zkoumání ukáže, že támhle jsem při odsazování do toho ifu přidal o řádek víc nebo míň...

    Kdepak, už nikdy více. Navíc přítomnost závorek ještě neznamená, že kód je nepřehledný a špatně odsazený. Já při četní po závorkách vůbec nekoukám. Občas se hodí, když je více bloků uzavřeno najednou. Ale jakmile dojde na přeformátovávání nebo rozsáhlejší úpravy, tak nějaké odsazování je samo o sobě na nic.
    Hello world ! Segmentation fault (core dumped)
    15.1.2011 20:21 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    A nedá se vytvořit makro, které by vždycky vybralo celý blok? Není to nic, co by musel dělat (chybující) člověk - ať už je ten blok vymezený závorkama, nebo odsazením.
    Josef Kufner avatar 16.1.2011 02:09 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Příklad:
      if bla bla:
        neco 1
        if abc:
          neco 11
          neco 12
        sem budu přesouvat
        neco 2
    
      for xyz:
        if ble ble:
          tohle chci
          tohle taky
          neco 3
        neco 4
    
    A co se stane po přesunu toho kousku kódu, který nemá jen dva řádky, ale mnohem víc a ještě to psal někdo jiný?

      if bla bla:
        neco 1
        if abc:
          neco 11
          neco 12
          tohle chci
          tohle taky
        sem budu přesouvat
        neco 2
    
      for xyz:
        if ble ble:
          neco 3
        neco 4
    
    Tak a teď mi řekni, jak to má editor poznat… ?

    Přitom by to mohlo vypadat takto:
      if bla bla {
        neco 1
        if abc {
          neco 11
          neco 12
        }
          tohle chci
          tohle taky
        sem budu přesouvat
        neco 2
      }
    
      for xyz {
        if ble ble {
          neco 3
        }
        neco 4
      }
    
    Rozdíl? Otevírací závorka místo dvojtečky a navíc jen uzavírací závorka, která funguje podobně jako tečka za větou.

    Výsledek: Na první pohled je vidět, kde je chyba. Není potřeba vůbec nic číst, prostě to je vidět. Na první pohled a klidně i během scrollování.

    Navíc ta chyba tam ani není, takže je možné kód ihned vyzkoušet a teprve potom řešit formátování (což se hodí např. při zjišťování, kde je chyba).
    Hello world ! Segmentation fault (core dumped)
    16.1.2011 13:10 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Tohle ve vimu vůbec není problém. Stačí zmáčknout ]x, kde x je příkaz vložení, typicky je to ]P (vložení před kurzor) nebo ]p (vložení za kurzor) a vim automaticky přizpůsobí vkládaného bloku řádku, na kterém vkládám. Takže:
    1. x - vyjmu řádky
    2. přesunu se na řádek "neco2"
    3. ]P - vložím řádky nad "neco2" (odsazení bude stejné jako u neco2)
    16.1.2011 13:11 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    *oprava: vim automaticky přizpůsobí odsazení vkládaného bloku řádků
    16.1.2011 13:14 imploder | skóre: 11
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Navíc ta chyba tam ani není, takže je možné kód ihned vyzkoušet a teprve potom řešit formátování (což se hodí např. při zjišťování, kde je chyba).
    Vložit to správně a mít tím formátování vyřešené hned, má taky něco do sebe :-)
    14.1.2011 18:03 __dark__
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Asi protože to není nadbytečné...
    13.1.2011 12:39 čeněk
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    To je skoro k pláči, že se lidi u nového jazyka zabývají tak nepodstatnou věcí jako je psaní závorek a středníků. Vypouštění středníků je v dnešní době celkem oblíbené (viz. Scala, interpretované jazyky). Dá se na to bezbolestně zvyknout a přechod zpět k C syntaxi také není problém.
    Saljack avatar 13.1.2011 12:45 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Tady se ale nejedná o to jestli na to jde zvyknou (jde), ale že to nemá žádný význam a přináší to problémy.
    Sex, Drugs & Rock´n Roll.
    13.1.2011 13:19 efi.yunah
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Podla mna, ale tie problemy si sposobuju designery jazyka... nie je mi jasne, preco by sa compilator nemohol pozriet za IFom, FORom, alebo deklaraciou funkcie/struktury ci tam je novy blok ({...}), alebo single-liner a podla toho tam da alebo neda bodkociarku. To mi pride uz zvrhle, ak compiler predpoklada ze ma doplnit chybajucu bodkociarku po kazdom "prikaze", a nerozmysla nad tym, ci ten prikaz je if, alebo for, alebo while, alebo co to je... tak isto je to s tymi operatormi ... nevidim v tom logiku ziadnu.
    13.1.2011 13:40 čeněk
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Jaké problémy? Je to jednoznačně definovaná gramatika popsaná ve specifikaci. Žádný problém nevidím. "Výhoda" je, že není potřeba psát středník za každým příkazem.
    13.1.2011 18:39 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    A vystupem clanku je pro mne to, ze nejlepsim jazykem je awk, protoze mu jsou stredniky uplne jedno. :-)
    13.1.2011 18:39 Sten
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Podle mě je Go jazyk úplně na ho…uby, po jejich jako-Javě je to jenom další googlovina (control everything). Snaží se být něco jako Python, ale není to Python (tak alespoň odebrali středníky, ať to podobně vypadá). Snaží se být jako C++, ale není to C++ (chybí metaprogramování, které je nejsilnější stránkou C++, i když většina takzvaných C++ programátorů ho neovládá). A ty chytré řeči o délce kompilace (jako kdyby byla kompilace důležitější než běh — konkrétně programy používající Boost Spirit se sice kompilují hodně dlouho, ale taky potom běží hodně rychle) jenom ukazují, že ani jeho vývojáři pořádně neví, co vlastně chtějí. Přijde mi to celé jako jeden velký hype.
    Josef Kufner avatar 13.1.2011 20:09 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    No nevím, ale kdykoliv jsem viděl program v C++, který využíval možnosti C++ alespoň ze čtvrtiny, tak mi z toho bylo celkem nevolno.
    Dokonalosti není dosaženo tehdy, když už není co přidat, ale tehdy, když už nemůžete nic odebrat.
    — Antoine de Saint-Exupéry
    Hello world ! Segmentation fault (core dumped)
    14.1.2011 13:45 Sten
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Máte pravdu, nic se nemá přehánět a nejspíš jste narazil na lasagna code (příliš mnoho vrstev). Ale při dobrém návrhu jsou šablony velké plus, které mi zatím ve všech ostatních staticky typovaných jazycích chybělo.
    14.1.2011 15:30 Foo Bar | skóre: 14
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Rád bych tak na okraj poznamenal, že cílem článku nebylo jen čtenářům nijak vnucovat, či argumentovat, že je lepší nebo horší než jazyk xyz, ale představit zajímavou technologii. Každý jazyk má své pro a své proti, a kvalifikované a informované rozhodnutí o využití např. Go je vždy lepší než rozhodnutí na základě emocí, k čemuž (tj. k informovanosti) by měl přispět i tento článek :-).

    Jediné, co mě trochu mrzí je, že místo diskuze o jazyce Go, která by mohla být zajímavá, se v komentářích rozběhla diskuze o Pythonu...tedy spíš flamewar.

    Takže pokud byste měli třeba nějaký (konstruktivní) návrh, čemu se v příštím díle seriálu o Google Go věnovat, nebo se chcete na něco (konstruktivně) zeptat, tak máte ještě chvíli čas než začneme na dalším díle pracovat. Honza Mercl (primární autor článku) vám jistě rád vyhoví nebo rovnou odpoví.

    Díky, Ondřej Surý
    14.1.2011 15:54 sivlk | skóre: 15 | blog: sivlk
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Ja som par minut skusal GO asi pred pol rokom. Chcel by som nejaky binding na Cairo alebo nieco podobne. Vtedy este nebolo, ako je to teraz?
    14.1.2011 16:28 jnml
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Chcel by som nejaky binding na Cairo alebo nieco podobne.

    Na Go Dashboardu vidím gocairo, ale nic víc o tom nevím - nikdy jsem to bohužel nezkoušel. Navíc se nedávno dost pozměnilo 'cgo' a podle data poslední změny modulu bych čekal, že bude potřebovat upgrade. Tady s libcairo někdo něco poměrně nedávno podniká, možná by pomohl - zkuste ho třeba kontaktovat nebo se na cairo zeptat ve stejném mail listu - možná se někdo ozve.

    Instalace pomocí goinstall:
    $ goinstall bitbucket.org/dethe/gocairo/
    14.1.2011 18:26 __dark__
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Opravdu nechápu, proč si tvůrci tohoto jazyka vymysleli vlastní syntax, a nepoužili "industrial" C++/C#/Java. Myslím si, že kdyby to udělali, mohli zaujmout velké množství vývojářů. Mě osobně jazyk Go z těchto důvodů nezaujal (Zkousl jsem Python, ale toto fakt ne).

    Ale abych jen neprudil, konečně nějaký staticky typovaný jazyk pro Linux/BSD!
    14.1.2011 19:59 JS
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Co to vyse uvedene D? Sice se to asi hned ucit nebudu (na nizkourovnove veci mam v nejblizsi dobe v planu pouzit Forth nebo C, a na vysokourovnove, kterych je vetsina, Common Lisp nebo Python), ale musim uznat, ze je to zajimave (mozna tomu chybi makra, nevim, jak je to daleko z te schopnosti poustet funkce pri kompilaci, ale mozna by se dalo pomoci toho spousteni pri kompilaci spoustet i samotny kompilator, a bylo mozne implementovat rozumny makro system).
    16.1.2011 19:13 __dark__
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Jazyk D se nechytil, podle mě tedy ztráta času o něm vůbec přemýšlet :)

    17.1.2011 17:07 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    D je perfektní jazyk, jen jeho verze 1.0 není nic moc a 2.0 je vývojová .. takže říkat, že se nechytil, je vcelku předčasné. :) osobně plánuju napsat svůj projekt v D 2.0. Co jsem sledoval situaci kolem kompilátorů apod, tak se zlepšuje hodně rychle.
    15.1.2011 16:03 peterh
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Ja to vidim tak, ze cela pointa Go je implementacia formalneho CSP. A CSP ma dost vyhodu v tom, ze sa tam da formalne dokazovat. Go sa mi zda pre google ako vyhodne, ale pre ludi co nemaju doma clustre s 10k strojmi to je dost nanic.
    Ja som sa s tym chvilu hrat a zaver je, ze ostavam pri jave, ked uz tak sa naucim c#, s tym sa da aspon uzivit..
    16.1.2011 13:28 jack
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Podle mě je Go velmi zajímavý jazyk. Už jen proto, že za projektem stojí lidé jako Rob Pike(pracoval například na Plan 9 from Bell labs) a Ken Thompson(byl u vývoje unixu). Důvody, proč Go nepřebírá syntaxy "industrial" jazyků jako C++/Java atd.. uvedl Rob Pike například v tomhle videu http://www.youtube.com/watch?v=5kj5ApnhPAE&feature=related Velmi doporučuju se na to kouknout...
    16.1.2011 18:53 JS
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Zajimave. Pak ho asi chapu, muj problem s Go pak asi spociva spis v tom, ze mi neni zcela jasna jeho vyjadrovaci sila. Python byl na zacatku take pomerne jednoduchy a od te doby tam mnohe predelali a dodelali.
    16.1.2011 19:39 __dark__
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    fiktivní;)
    17.1.2011 10:08 Foo Bar | skóre: 14
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Tohle mě pobavil v komentářích k tomu videu:

    "the D and Go people should pool their efforts, merge the two and call it 'The GoD Programming Language'"
    18.1.2011 08:20 JS
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Ovsem to je asi stejne naivni jako cekat, ze priznivci C a C++ spoji sve sily. :-)
    18.1.2011 08:18 JS
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    Hm, tak jsem na to Go koukal trochu podrobneji, a musim uznat, ze je to velmi zajimave. Jejich pristup k interface povazuji za krok spravnym smerem (coz naznacuje i to, jak chytre to resi nektere problemy, jako treba kolekce). A kanaly jsou proste paradni vec.

    I kdyz si myslim, ze tim, jak je to nove, bude trvat par let, nez se naplno projevi ruzne nedostatky. Coz je trochu (i kdyz pochopitelna) nevyhoda.
    12.1.2022 11:20 메이저놀이터추천
    Rozbalit Rozbalit vše Re: Google Go – 1. narozeniny
    I will bookmark your web site and take the feeds additionally…I am satisfied to search out a lot of helpful information right here in the publish, we want work out more techniques on this regard, thanks for sharing. 메이저놀이터추천

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.