jakoby uz jeden nestacil... http://www.gnu.org/software/flex/
To je jednoduché, Flex byl pojmenován podstatně dříve než si podobný název vymyslela firma Macromedia.
> Flex je komplexnější jazyk než třeba Java nebo C# a přináší více možností bez nutnosti používat mohutný aparát knihoven i na tak základní věci, jako je multitasking.
Pokud se tim multitaskingem rozumi spise podpora multithreadingu, tak Java i C# maji pokud vim tohle v zakladnim API a zadny mohutny aparat knihoven se nekona. Takze moc nechapu, ceho se vytka tyka...
V Javě/C# je prostě třída Thread, jejíž některá metoda je "kouzelná" - VM ji spustí ve zvláštním vlákně.
V Adě a Felxu jsou pro podporu vláken speciální jazykové konstrukce s hromadou klíčových slov. Jinak viz můj článek http://www.root.cz/clanek/1903.
Je to omyvatelne? A jsou jednotlive casti tak velke aby je nemohly spolknout deti do 3 let?
Nektere casti jsou tak velke, ze je, jak vidno, nemuzou spolknout ani o dost starsi programatori. :o)
vzhledem k licenci tohohle softu bych to čekal spíš v rubrice PR :-)
Kde se da najit zneni te licence?
Na www.modflex.com ji nejde najit ani ocima, ani jejich hledatkem.
(A ted to dokonce napsalo "FATAL ERROR: GENERATION STACK TOO THICK" :-| )
http://www.flexlanguage.com/buxus/web/cz/Products/Development-Tools/Flex/LicenceAgreement.html/
...a až bude existovat GPL-kompatibilní implementace pod Linux, tak se zase ozvěte ... a možná už sem ten článek pak bude i patřit...
Nemusela by byt ani GPL kompatibilni. Ale uverejnit clanek o nejakem nikoliv prevratnem ziliontem programovacim jazyku s mizivou uzivatelskou zakladnou, ktery bezi jenom na Windows, na webu zabyvajicim se Linuxem a jinymi unixovymi OS, tomu rikam spravna okurkova sezona.
Nevím jestli je Flex převratný, ale zajímavý je určitě. Třeba má kolem 70ti klíčových slov (snad nekecám). Tedy ne že by zrovna tohle bylo měřítko kvality jazyka, ale ukazuje to na jeho možnosti.
Jinak co se týče licence, tak musíte víc křičet. Mě osobně taky vadí, že zdrojáky nejsou. Oni jsou totiž zvyklí pracovat pro banky :-)
...a banky zdrojaky zajimaji az tehdy, co je najdou na Kazaa...?
No, to ze ma 70 klicovych slov je naopak docela hruza a rozhodne to neukazuje na moznosti jazyka. Spis me to demotivuje, protoze se mi zda, ze cokoliv do jazyka pridat znamena predelat prekladac a pridat si svych 10 dalsich klicovych slov.
Musi ten jazyk byt hrozne slozity se slozitym prekladacem. A dalsi vyvoj bude znamenat (mozna) zmeny a rozsireni syntaxe. Sem uz se Java a podobne jazyky dostaly (NO FLAME)...
Uznavam, ze pro spoustu lidi neni predelavani jazyka beznou praxi, ale snad me omluvi moje laska ke Smalltalku.
Jde čistě o zvolenou koncepci. Některé věci jako meziprocesovou komunikaci jsme dali přímo do jazyka, aby překladač co nejlépe "věděl co chce programátor udělat" a poskytl mu podporu v podobě kontroly správnosti jeho postupu. V jazycích, kde je např. zmíněná komunikace řešená knihovnami se obtížněji řeší takové úlohy jako automatické odhalování chyb a kontrola konzistence programu, protože jsou to pro překladač jen "jakási volání", bez sémantické složky.
Nejsou to okurky ani PRko. Autori jazyka potrebuji testery, tak jsem se uvolila to zverejnit, ze pak se treba nejaci objevi. Sice to, ze to neni GPLkovany ani pod Linux, nevbuzuje moc nadseni, ale kazdopadne je to zajimavy pocin, nerikam ze uzitecny. Prumerny ctenar se pobavi nad tim, ze verozvesti zvestujici nove jazyky (operacni systemy, ...) jeste nevymreli, ctenar s nadbytkem casu mozna i otestuje a vsichni budou spokojeni :)
je to sebechvala na vlastni produkt, nadto jeste pitomouckej. jestli tohle neni presnej popis PR tak uz nevim co. copak v cechach neexistujou zajimavejsi projekty ? co treba http://jezek2.advel.cz/projects/metatheme/ - je to blbinka ale aspon k necemu
Nebuďte tací neurvalci:). Můžeme jednou zas dát něco světu. Kamarád mi u ohně vyprávěl, že flex má mít hodně specifický OOP vlastnosti, i když takových jazyků už nyní je hodně. Název flex i prezentaci flexu coby náhrady php nepovažuji za nejšťastnější, flex se ale může ujmout jinde. Stále existují "šílenci", kteří píší v Module, Smalltalku, ADE. Taková modula 3 měla už před deseti lety užásně navržené knihovny, škoda že se nerozšířila. Místo toho tu máme C nebo Php zbastlené knihovny:-(.
A jako na cem to mam testovat, kdyz to de pod mrkvosoftim windowsem? To muze napadnout akorat vola delat neco takovyho pod windows.
Soulozit. Zeptej se svy pritelkyne, tvrdi se o ni ze ji to celkem bavi.
Viz: http://mozek.cz/phpwiki/index.php?pagename=souloz&action=create
Nic proti Pythonu, ale zkoušel jsi někdy programovat v Adě? To je robustnost, o k teré se ti nesní. A Flex je na tom podobně, jenom s tím rozdílem, že jsou tam některé příjemné moderní věci, které v Adě nejsou.
Je to mozne, ale sila Pythonu je v jednoduchosti, snadne citelnosti a pritom je pro lidi, kteri vidi pod poklicku velice silny.
Konstrukce typu
wr.init_text_writer(^c_output_stream:(sock),^encoder);
c_text_writer:(wr).write_line('GET / HTTP/1.0');
jsou pro pravoverneho pythonistu nesmyslne zasmodrchane. V necem takovem bych asi delat nechtel, to uz stokrat radeji LISP, OCAML nebo Perl.
zajímalo by me, zkousel jsi nekdy nejaky moderni dynamicky typovany jazyk (Python, Ruby) ?
ja si mam dojem pamatuju, ze si kdysi na OSu odmitl dynamicky typovanej jazyk kvuli obave z preklepu :-)
Nevim jestli mi to v celem clanku uteklo, ale porad nechapu v cem je tento jazyk tak bezva. Zdrojaky nejsou open, neni podpora v linuxu (ktera tu zajima vsechny predevsim :) a kde takovou vec pak budu moct spustit? A hlavne, proc se ucit dalsi jazyk? Myslim, ze uz dost kvalitnich jazyku je k dispozici nyni.
asi tak...
nesmyslny jazyk, s nesmyslnou pascal like syntaxi a s nesmyslnou licenci
alternativa k php? cha cha chaaaaa
co ten clanek tady dela nechapu.. mimochodem - jak se v clanku mluvi o jakemsi rozhrani ke knihovnam php - je to licencne v poradku?
IANAL, melo by stacit "nezatajovat", ze tam je volne siritelne PHP, tzn. pokud se to bundluje, staci zminit, ze "This product includes PHP, freely available from http://www.php.net/"
Možná se mi to jenom zdá, ale ten Flex mi připadá jako velmi mírně modifikovaný Pascal. Může se k tomu autor vyjádřit?
kdybysis precetl aspon prvni odstavec tak bys vedel, ze autori se k odkazu pascalu a ady verejne hlasi
Ve skutečnosti je to velmi _značně_ modifikovaný Pascal, vlastně tam z Pascalu zůstalo akorát pár klíčových slov :-)
Když už chci něco pascaloidního...tak proč né pascal? http://www.freepascal.org kterej už mimochodem pro Linux je? a ke kterýmu jsou pytle různejch knihoven na všechno možný. Navíc je šířenej pod GPL, takže nerozumím tomu, proč bych měl sahat po nějaké nové příšernosti, která podporuje akorát Win (který nemám a platit za ně nehodlám) a x86 procesory. (Freepascal na tom není o moc líp, podporuje x86, MC68k, PowerPC a AMD64)? Protože to vymysleli v čechách? Pánové! Vzbuďte se! Národní obrození vám už uteklo...
Když pascalodiní, tak Pascal, to beru. Jenže v Pascalu nejsou výjimky, paralelní procesy, meziprocesová komunikace, přetěžování, makra a já nevím co ještě. V Adě to je (až na ty makra), ale je taková trošku ... jak to říct ... těžko použitelná na malé programy. A je v ní taky pěkných pár podivností. Tak proč neudělat vlastní jazyk, ve kterém to všechno je tak jak má být? A že je zrovna český, to je snad v době globalizace fuk.
> těžko použitelná na malé programy
myslite takove jednoradkove nebo primo z prikazove radky ... v Perlu? :-)
Myslel jsem asi tak tisíciřádkové programy. O "jednořádkových" vůbec neuvažuju, to není programování ale spíš doména různých scriptů. S Adou je trochu problém, že i pro malé a jednoduché programy musí programátor znát a aktivně používat poměrně značnou část vlastností jazyka. To by se u opravdu univerzálního jazyka stát nemělo, pro jednoduchý program by měla stačit malá podmnožina jazyka, třeba zhruba tak na úrovni standardního Pascalu.
V Pascalu (Delphi, FreePascal) jsou vyjimky:D A co rikate treba decku? Me se libi:D :D :D
http://www.digitalmars.com/
V zásadě vám to připadá správně, Flex připomíná Pascal protože je to jazyk pascalského typu (správně by se mělo říkat algolského, ale kdo dneska zná Algol). Modifikovaný Pascal to ale není, podobné jsou jen základní konstrukce. Kdyby vás to náhodou zajímalo, stáhněte si referenční příručku, tam je to podrobněji.
...algolského typu.... ach ano, kdysi jsme se divili, co všichni vidí na té slátanině jménem Pascal. Bohužel, byli to i univerzitní a jinak vysokoškolští profesoři. A to bylo v dobách, kdy už existoval nádherně logicky jasný, rozšiřitelný a modifikovatelný jazyk - Algol68.
Viďte, já to pořád říkám, že kdyby si K&R přečetli něco o Algolu 68, přestali by se plést do programování a vývoj jazyků mohl být dnes o dvacet let napřed :-)
Kdyby se K&R, kteří vytvořili jazyk algolského typu (protože tam Cčko rozhodně patří) přečetli učebnici LISPu, byl by vývoj jazyků o takových 40 let napřed :D
Je zajimave, ze o algolu nevi dnes nikdo nic a cecko vede v programovacich jazycich. Cim to asi bude?
Stejny duvod, proc "vsichni" pouzivaji Windows a Linux je v mensine.
Chtel jste tim rici, ze je to mozne pomerovat kvalitativne?
Nevim jestli si nekdo jeste vzpomene, ale na serveru www.builder.cz pan Tucny propagoval Flex snad v kazdem vlaknu diskuzniho fora. A to tak rok dozadu. Tenkrat oponoval na pripadne argumenty ze timto jazykem jsou udelane softy pro banky a ja nevim co jeste. Kazdej ho uz s tim posilal do pryc, protoze to uz nebyly prispevky, ale normalni SPAM. Proto jsem se divil, ze tady na root mu nechali cely clanek. Muj nazor tenkrat a i dnes je ten, ze jako interni jazyk pro jejich firmu prosim, ale udelat z nej nahradu C, python, PHP apod. to asi ne. Za prve ho zadna firma nevezme jako standard a za druhe chci videt jak nekomu poslu zdrojaky ve flexu v ocekavani ze ho umi, protoze je to proste bezny programovaci jazyk. Pokud by mi chtel nekdo oponovat, rad si s nim podiskutuji, ale asi spis pres e-mail. Ikdyz i tak si myslim, ze bych tady nevytvoril flameware.
Rozšířenost jazyka (všichni umí C..) je jistě důležitá. Ale druhá věc je kvalita vlastního jazyky. A tady se nezlob plain C a PHP jsou oproti Flexu _naprosté_ srágory. Jo kdybys mluvil o C#, Javě, Adě, ObjectiveC, to je jiná.
mno plain C je silne omezene, to je spis trochu vyssi urovnen assembleru :O)
Ale Plain C je zaklad treba C++ a spousta jinych jazyku ma spoustu svych prvku prevzatych z C (trochu Java, Perl, PHP, C++, C#, Javascript ...) proste C je zaklad nad kterym je spousta veci postavena ....
a co se flexu tyce: mno na prvni pohled mi to prijde neprehledne, nutnost u kaxdeho pouziti promenne psat typ? mno .... myslim ze tenhle jazyk nebude moje volba .... a pokud nema podporu na linuxu tak jako by pro me neexistoval ...
U kazdeho pouziti typ samozrejme psat nemusite, i kdyz tak mozna tenhle konkretni priklad vypada. Jde tu o to, ze zde pokazde v podstate "pretypovavate", nebot pozadujete jedno z nekolika rozhrani, ktere dana trida poskytuje, napr. si vsimnete
c_output_stream:(sock).close;
c_input_stream:(sock).close;
Volate oboji na stejnou promennou sock, ale jednou pozadujete zavrit "vystupni cast", pote "vstupni cast", tzn. v obou pripadech volite jiny interface, ktery dana trida vystavuje (pomoci klicoveho slova expose, kdyby vas to zajimalo :-) ).
Aha, tohle mi nebylo jasné. Je ta dvojtečka táž dvojtečka, jako operátor přístupu (tuším tomu říkáte selektor?) k atributu?
Mozna by bylo dobre upresnit par veci. Flex nenavrhli zadni odbornici na bankovnictvi a bezpecnost ale banda pochybnych studentiku (viz pan Tucny) neschopnych udrzet se na skole a zvladnout alespon zaklady informatiky prvniho rocniku MFF UK - tedy zadni odbornici nebo alespon lidi zbehli v programovani prekladacu.
V dnesni dobe je moda navrhnout si vlastni jazyk, dela to koneckoncu kdekdo, ale naprosta vetsina jich do pul roku upadne do zapomneni.
>Podpora pro tento operační systém zatím
>pro Flex není hotová,...
Promiňte, ale proč to tedy dáváte na root? Nebylo by lepší počkat a uveřejnit tento článek, až si to budu moci vyzkoušet na Linuxu? Takhle jsem si sice početl, ale to je tak všechno, co můžu udělat. Škoda.
Protoze potrebuji testery na komercni projekt - Johanka to psala vyse. Hehe - tak uz vim, kam se mam obratit. Kdyz si Johanka bude myslet, ze muj (nas) projekt je dobry napad, staci napsat PR-like clanek na root a mame o testery postarano. Nebo taky vypadne jedno URL z bookmarku, ze. :-(
Je-li vyplodem snazeni komercni firmy neco, co je k volnemu pouziti a nekoho to muze zaujmout, nevidim duvod, proc o tom nenapsat. Vsak root ctou z velke casti programatori, mohou si treba jemne rozsirit obzor nebo naopak rozsirit obzor autorum :)
Pokud to nekoho zajima, za clanek nebylo zaplaceno ani v nem neni reklama na firmu, pricemz ty okurky u nas uz opravdu zacinaji, takze jestli si myslite, ze kdybych sem nedala tohle, objevil by se misto toho nejaky uzasny jiny clanek, mylite se, kde nic neni, ani Johanka nebere :)
Samozrejme kdybych si mela vybrat mezi recenzi Windows XP a nicim, vyberu nic, ale pokud je neco jen "tak trochu konztroverzni", tak nevidim duvod, proc obcas neodbocit. Zajimavost clanku posuzuju ciste svym profesionalnim odhadem :), protoze testovaci skupinu ctenaru k dispozici nemam, nekdy to odhadnu dobre, nekdy blbe.
K reakcim ctenaru samozrejme nejsem hlucha, takze stejne jako uz se neobjevi clanek podobny nedavnemu chvalozpevu na OpenBSD, neprijmu ani clanek podobny tomuto.
Diky za odpoved. Ma reakce byla mozna prilis prudka, vymluvim se na horko. ;-) Asi to beru prilis vazne. Jasne, redakce sama posuzuje co da a co ne a neni to vzdy uplne to, co jista cast povazuje za idealni. Konec koncu, diky i za takovy clanek.
No já nevím, podle vašeho počítadla ten článek do této chvíle četlo přes sedm tisíc lidí, což je nejvíc za dost dlouhou dobu...
Vím, že programování rozumím asi jako koza petrželi, ale připadá mi to, že tu jde jen o to, kdo koho přečůrá. Stále se tu dohadujete, kterej jazyk je lepší, kterej má víc možností, kterej je univerzálnější... Veškerý vaše hašteření bych přirovnal k vrbčákům. úplně je při čtení tohohle fora slyším...
Třebas by to mohl být dobrej jazyk pro profesionální progrmátory, ale kolik jich je a jaký mají možnosti prosadit svůj názor? Dělám v IT v jedný poměrně veký firmě a vím, jak je těžký prosadit jakoukoliv změnu.
A když se ne ten jazyk podívám z pohledu neprofesionála, tak musím říct jen jedno. Jeho prosazení bude hodně těžký. Proč myslíte, že s PHP začínají už 13i - 15i letý děti? V žádným případě nesouhlasím s jejich "modFlex - alternativa PHP"! co se mi bude líp psát:
modflex_request^.writer^.write_line(' <TR>');
nebo
echo "<TR>";
a to je ten nejjedodušší příklad.
Odmítám číst celou diskuzi, protože spousta věcí tam nemá co dělat, ale mám pro vás návrh. Co zkusit napsat jednoduchou - přesně definovanou aplikaci v C, Pascalu, PHP, Flexu...? stopněte si čas, jak dlouho vám to bude trvat, velikoust souboru, počet souborů,.. a udělejte si statistiku... Žádný hodnocení. Výsledkem by měla být jen tabulka s čísly. Ať si to každej přebere jak chce. Hodnocení jednou osobou by bylo dosti neobjektivní. Výsledná tabulka a pod ní anketa. docela by mě zajímal výsledek.. Copak asi vyhraje? Navzájem si jednotlivý jazyky pomlouváte, ale srovnání žádný neexistuje!
PHPkovému příkazu echo odpovídá v (mod)Flexu příkaz write_line, pokud se vám šest znaků navíc zdá jako nepřekonatelný problém, s tím už nic neudělám.
Váš návrh (zcela bez urážky) ukazuje, že programování rozumíte jako koza petrželi. ;-) Hlavní problém je v tom, JAK chcete tu aplikaci definovat? Bude to 3D engine? Aplikace pro vědeckotechnické výpočty? Databázový server? Systém elektronického bankovnictví? Ovladač obskurního hardware? Textový editor pro BFU? atd. atd. atd. Každá z těch úloh má úplně jiné požadavky, pro každou z těch úloh jsou tedy vhodné úplně jiné přístupy a nástroje, včetně programovacího jazyka. Proč někdo neudělá objektivní srovnání mezi Fabií Junior, McLaren MP4-19B, Zetor 9260 a Boeing 737-800? Udělejte objektivní statistiku. Copak asi vyhraje?
Co se čertíte? Vymysleli jsme nový jazyk, osm let ho používali a protože se nám zdálo, že je docela dobrý, uvolnili jsme ho zadarmo komukoliv k použití. Zajímalo nás, jestli se bude lidem líbit a co na to řeknou - toť vše. Se zveřejňováním nových verzí máme určité náklady, tak jsme chtěli vědět jestli vůbec má cenu to dělat nebo jestli si ho nadále necháme pouze pro vnitřní potřebu. A jediný způsob jak dát najevo, že nějaký takový jazyk existuje je to někde zveřejnit. Proto jsme napsali a nabídli článek o novém jazyce. Pokud se divíte, proč jsme se trefovali zrovna do hnízda linuxáků tak proto, že uvažujeme o verzi pro Linux (naportovat to není nijak zvlášť složité), jen jsme netušili, jestli o to budou stát :-)
Ja tomu rozumim, bohuzel v komercnim svete to chodi tak, ze za podobne pruzkumy se plati... a to tak ze ne malo. I mne zarazi, ze se Root uvolil zatahnout do podobneho kolotoce...
Ono se platí za průzkumy na otázku "máme dát něco zadara, je o to zájem a máme se tím okrádat o čas?". Tak takový jsem fakt neviděl ...
Kedze si tu kazdy kope do flex-u kopnem si aj ja. Bol som na prijimaci pohovor vo firme kde sa vyvija(l) tento jazyk. Bola to straaasnaaaa tragedia :-). Ked niekde uvidite ich inzerat usetrite si cas a zbytocne neodpovedajte.
Ano, některé přijímací pohovory jsou skutečně tragické :-)
Myslim ze toto nie je to prave miesto. Ta firma pravdepodobne (podla toho co ponukala) hladala niekoho ineho. Tak kuriozne som ale pohovor este neukoncoval. Pohovor (posledne kolo) koncil asi tak ze sa ma dotycny spytal nieco v zmysle ze na kolko percent to miesto zoberiem ked mi ho ponuknu. Ked som povedal ze 90% to urcite nie je a asi ani 50... prislo nam to obom hodne absurdne a rozlucili sme sa.
Na druhy den mi volala sektretarka ze nic.
Tym nechcem povedat, ze firma je zla pravdapodobne sa jej komercne dari jednoducho hladali nieco ine.
Jednou jsem byl na pohovoru v nějaké firmě a ten se sestával z rozhovoru s nějakým jugoslávcem, co neuměl pořádně česky. Potom mi předhodili hardcopy nějaké obrazovky programu a testovali, zda poznám, v čem to dělali. Odpověděl jsem, že tam jsou prvky standardního Win32 GUI. To se jim nelíbilo, chtěli slyšet, že to je z Accessu. Pokračovalo to podobně. Jen co jsem vylezl ven a vydejchal to, tak jsem jim zavolal, že do takovéhle firmy opravdu nechci. Mám z toho zážitek do dneška.
K nam pred tydenm nastoupil novy programator, vcera podepsal pracovni smlouvu a pul hodiny pote prinesl vypoved. :) Fakt borec ...
Nejak to nechapu. Obavam se, ze lide nepouzivaji C, Java, PHP, Perl pro jejich syntax ale pro to co je v tom jazyku mozne v ramci unosne namahy napsat. Casto tak o vhodnosti jazyka nerozhoduje jazyk sam, ale to co je okolo neho. Jako je velke mnozstvi ruznych modulu (Java), trivialnost a rozsireni (PHP), duraz na nejakou oblast (text+Perl), rychlost a volnost (C). U rady hlavne iterpretovanych jazyku pak o jejich pouzitelnosti rozhoduji veci (moduly) psane v zcela jinem jakyku (vetsinou v C).
Hodne dulezita je u kazdeho noveho jazyka i "tvar" kterou nastavuje okolnimu svetu v podobe nejakeho low-level rozhrani, ktere umoznuje rozsirovat schopnosti jazyka pomoci neceho co jiz exitovalo pred nim (JNI a podobne ve vsech jinych).
Vznikaji stale nove jazyky a vetsinou se snazi neco noveho prinest -- casto v oblasti nejakych pokrocilych datovych typu (pike) nebo ve vztahu k tomu jak jsou zpracovavany (C#, mono), nebo na co a na koho jsou zamereny (PHP) apod.
V tomdle clanku nebyla predvedena jedina zajimava vlastnost a pri tom u neceho takoveho jako je programovaci jazyk by jich tam melo byt alespon deset ;-)
Jinak k autorum: o prehlednosti nerozhoduje begin/end, ale zarovnavani a prace s textem kodu jako s celkem. Viz. treba Python kde zadna zazracna sluvka nejsou, ale i tak ten kod je vzdy i kdyz je programator prase zcela prehledny.
Mluvíte o rychlosti a volnosti céčka, jenže ta volnost je někdy na překážku přehlednosti. Flex je navržený tak, aby "volnost" trochu omezil, aby programátora hlídal a nedovolil mu dělat "podivné" věci - například přiřazení signed a unsigned čísel není ve Flexu dovoleno (resp. musí se explicitně přetypovet). A není to míněno jako buzerace, ale spíš jako připomenutí, že když v programu potřebuju přiřazovat signed do unsigned, tak asi něco není v pořádku s návrhem programu. Takových věcí je ve Flexu plno (říká se tomu silná typová kontrola) a do článku se opravdu všechny nevešly. V manuálu přirozeně popsané jsou.
Flex tedy vznikl, protože jste si nevšimli prepínače "-Wconversion" v gcc? :) (vim, zase trolluju)
To ne, Flex vznikl proto, že jsme chtěli přestat dělat hloupé chyby v aplikacích. Přepínač -Wconversion skutečně neznám, ale předpokládám, že neodstraňuje principiální problém (nebo vlastnost?) céčka, že typedef pojmenuje konkrétní typ, ale nezavede typ nový, z principu nekompatibilní.
No, ten prepinac jenom varuje, kdyz posilate signed/unsigned typ jako argument, a prototyp to ceka jinak. gcc umi jeste varovat kdyz se srovnava signed a unsigned na vetsi/mensi, protoze neni jasne jaka semantika se ma pouzit. Ale mate pravdu i tak, C i C++ ma furu dalsich nedostatku *pro pouziti jako aplikacni jazyk*, a volna konverze signed/unsigned/enum je jenom vrchol ledovce.
Na C se mi snadne pretypovani velice libi. Jeste vice v Perlu.
Predstava, ze by typedef vzdy zavedl nekompatibilni typ a ja bych musel explicitne pretypovavat mezi napriklad pid_t, mode_t, loff_t, ssize_t a int me zadne dodatecne uspokojeni nedava - kdo si ma pamatovat, jak si ktera funkce pojmenovala ten int ktery vraci. Je to zbytecna prace, stejne se to vsechno prelozi na stejny datovy typ.
Taky cim je jazyk ukecanejsi, tim se v nem hur orientuje. Strukturalni prvky jazyka by nemely zabirat zbytecne misto. Je lepsi vystacit si s jednim radkem kodu a jednim komentare, nez to same psat na pet radku s tim ze je to typove koser.
Kdyz se v nejakem jazyce neda udelat nejaka chyba, tak to casto spis vypovida spis o jeho omezene pouzitelnosti. Pamatuju na "programovaci jazyk" Karel, ktery v tomto ohledu dosahl temer dokonalosti...
Jeste neco. C ma prisnejsi kontrolu typu nez by melo mit. Potreboval jsem zarovnat data na okraj stranky a napsal
(write_data + PAGE - 1) & (~PAGE)
ale AND mezi pointerem a integerem neni dovoleny, takze to budu muset napsat o dost sloziteji.
Pritom v implementaci to jsou oboje cela cisla.
Silna typova kontrola ze je nejaka vyhoda? Mozna tak v OOP, pri praci s pameti tezko.
A kdyz uz bych chtel OOP, tak asi v Jave, to je dost rozsirene a zabehane.
V ISO C++ tiez signed a unsigned nejdu priradit bez pretypovania...
u C dela nejaky to % podle me i fakt, ze muzu vzit (gnu)(f)lex a bison a pokud mam uz hotovou BNF gramatiku, tak mam libovolne slozitej parser do nekolika malo minut/hodin (podle velikosti gramatiky)
+cas na funkcni cast podle slozitosti
Generátor parserů je hezká věc, ale z překladače to představuje zanedbatelný objem práce v porovnání s tím ostatním. Daleko víc práce dá jenom samotná definice syntaxe, vůbec vymyslet co a proč vlastně chci. Ostatně osobně dávám přednost parserům ručně psaným.
To souhlasí. Tedy pokud si jazyk navrhujete sám a rozumně. Pokud píšete překladač C (nebo, chraň bůh, C++), zaděláváte si automatickým generováním syntaktického analyzátoru na problémy, protože ty jazyky mají naprosto šílenou gramatiku.
IMHO je yacc/bison nástroj vhodný akorát tak pro výuku atributovaného překladu LALR jazyků, pro práci je ručně napsaný rekurzivní sestup lepší. Není důvod nenavrhovat umělé jazyky jako LL(1). S těmi už existujícími, které LL(1) nejsou, je potíž, no. Nechtěl bych psát překladač Céčka :)
Možná bych se uvolil k použití nějakého jiného nástroje pro automatizaci tvorby překladače (třeba ANTLR, dříve PCCTS, vypadá dobře), ale u rozumných jazyků k tomu v podstatě není důvod. Prohlédněte si třeba parser Ady v GNATu, skvělá ruční práce :)
V podstatě. Ono v podstatě Céčko je totéž co Pascal. Ale:
1. ANTLR generuje kód pro analýzu rekurzivním sestupem (čitelný běžným smrtelníkem).
2. Parser vygenerovaný ANTLR vytváří (může vytvářet) abstraktní syntaktický strom (nikoliv derivační strom).
3. ANTLR umí generovat kód pro průchod stromem.
4. ANTLR pracuje s predikátovými LL(k) gramatikami, díky čemuž je schopen (pochopitelně když mu příslušnou gramatiku předhodíte) vygenerovat parser i pro jazyky, které nejsou LL(k) či LR(k).
Dalo by se pokračovat, tohle jsou hlavní body, na které jsem si vzpomněl. Více informací najdete na webu.
Nechci kázat o tom, jak je ANTLR mnohem kvalitnější a uživatelsky příjemnější, protože jsem ho nezkoušel. Ale rozhodně se mi tak jeví.
<flame>
A mimochodem, ANTLR je public domain, žádná pofiderní GPL licence :)
</flame>
Mno kdyz je programator opravdu prase tak je kod neprehledny at uz je napsan v jakemkoliv jazyce. Je ale pravda ze nektere jazyky (nebudu jmenovat, ale napriklad Perl :o) kdyz je pise prase tak maji o dost vetsi tendence byt naprosto nerozlustitelne nez jine....
<cite>Ukecanost Flexu, která se spolu s dalšími pokročilými vlastnostmi nejlépe zúročí u delších než párřádkových prográmků, je na první pohled patrná.</cite>
ukecanost je pokrocila vlastnost ? _mozna_ ve _vyukovych_ jazycich. ale ladeni opravdoveho velkeho projektu to nijak nepomuze. ukecanost neni prehlednost, je to jen balast ktery lze prehlednout prave jen u trivialnich programu, u slozitejsich projektu vic potizi pomuze skryt nez vyresi.
co tenhle PR shit dela na rootovi ?
neni to otevreny sotware, je to jen "free beer"
neni to linuxova zalezitost a nikdy nebude - mozna to ma sanci na uspech na platforme visualbasicu ale perlu, pythonu a spol. takova kravina nemuze konkurovat.
P.S.: ktery 'pokrocily' jazyky nemaji kompilatory napsany v C ?
Třeba Flex :-). Překladač Flexu je samozřejmě napsaný ve Flexu, to je asi základní podmínka toho aby se jazyk směl nazývat univerzálním jazykem.
a ja si porad myslel, ze prekladac napsany v C bude aspon prenositelny na ruzne platformy, skoda
(ze by chyba v navrhu jazyku? :-)
To není závada. Pokud chci přenášet překladač na jinou platformu, stejně musím napřed upravit generátor kódu. Když to udělám, je pak jedno, že to napoprvé přeložím na původní platformě. Tím se přenositelnost nijak neovlivní. Možná to dokonce půjde i snáz než překládat céčkový program jiným překladačem céčka pod jiným systémem.
prekladac flexu napsany ve flexu? A jak jste zkompilovali uplne prvni verzi prekladace, kdyz jeste zadna zkompilovana verze ve ktery jsme to mohli kompilovat nebyla?
Pokud se nepletu, tak "bootstrap" verze byla v Object Pascalu.
Přesně tak, v Object Pascalu (=Delphi). V něm byly napsány konstrukce nutné pro napsání překladače, pak se přepsal do Flexu a pokračovalo se už ve Flexu.
Mno ale ve chvili kdy si omylem smazete binarky prekladace tak jste nahrany .... muzete zase zacit portovat zpatky do object pascalu :o)
Jo a kdyz nekdo smaze binarky cecka, tak je taky nahrany, muze portovat zpatky do assembleru, a kdyz nekdo smaze binarky assembleru, muze zacit datlovat na prednim panelu...moment, dneska uz zadny predni panel neni, to by byl pruser! :o)
ja sem taky vymyslel novy jazyk, ma uplne jinou syntaxi nez cesina, je to teda zalozeny na cestinek, s prvky vulgarni anglictini hantec nemciny a skreku lovcu mamutu, pravidelne teto jazyk pouzivam tak po osmi pivech, je to vynikaji, jede to aji s linuxem, sirim to pod GPL, kdo ma zajem, at mne posle spam na nopiracy@microsoft.com
Já zas nechápu vás. Céčko je hnusný starý jazyk, který byl v době pármegaherzových procesorů vhodný k napsání jádra OS.
Taky nevím, co pořád máte všichni s tím Open Source? Každý nemá potřebu si dvakrát týdně překládat jádro OS. To, zda je k dispozici zdroják, není IMHO hlavní měřítko kvality produktu.
Asi si koleduju o flame war, ale o příspěvky bez rozumných argumentů zájem nemám.
A ještě něco: Flex _není_ Pascal! (Podobně Ada není Pascal! Stejně tak jako Java není Céčko!)
Vetsina ctenaru netvrdi, ze flex je spatny protoze neni opensource a nebezi pod linuxem, ale vadi jim, ze o flexu se pise na serveru, ktery ma v <title> "linux, open source a free software bez tajemství" :-(
a přesně tomu flex vyhovuje. je totiž free (pro nekomerční použití). a v tom poditulku je navíc uvedeno "nejen" pro linux. takže nechápu CO tedy vadí?
Linux [ http://en.wikipedia.org/wiki/Linux ], open source [ http://en.wikipedia.org/wiki/Open_source ] a free software [ http://en.wikipedia.org/wiki/Free_software ] bez tajemstvi. S tim ze free software je mysleno ve vyznamu free as in "Free Speech" (vzhledem k tomu ze se v tom titulku vyskytuje vedle pojmu open source je to snad jasne). CO konkretne nechapete?
Pokud budete lpet na teto absolutni interpretaci a chapat "free" as a beer ;-) a nejen Linux jako cokoliv, tak potom muze ROOT klidne recenzovat nejnovejsi freeware a shareware pro Wokna XP... :-)
A co takhle nejake clanky o vareni a pestovani kaktusu? Ty se taky muzou nekomu libit.
Vetsina ctenaru netvrdi, ze flex je spatny protoze neni opensource a nebezi pod linuxem, ale vadi jim, ze o flexu se pise na serveru, ktery ma v <title> "linux, open source a free software bez tajemství" :-(
ked programujem, potrebujem zabehnutu platformu
tutorialy,diskusne fora s know-how, support a tak
a nie experimentalny jazyk do ktoreho nevidim a ked mam vyrazny problem tak mi nikto nehelfne, lebo to nikto nepozna
když si chcete hrát a experimentovat, nepotřebujete zaběhnutou platformu. Ostatně takhle se kdysi rozšířil "nezaběhnutý" Linux. Experiment je zábava.
experiment je fakt zabava az dovtedy, kym sa ti prestane nieco fungovat a ti ktori ti za to platia ocakavaju ze to velmi rychlo vyriesis
"Céčko je hnusný starý jazyk, který byl v době pármegaherzových procesorů vhodný k napsání jádra OS."
Tak to je asi nejvetsi hovadina, co jsem tu zatim cetl. :)
No v céčku se dá celkem úspěšně napsat jádro OS asi pořád. Což ale nemění fakt, že to jsou jen sofistikovaná makra do assembleru. A já v assembleru píšu uživatelské aplikace nerad :-)
Céčko bylo zastaralé už v okamžiku kdy ho K&R vymysleli. Kdyby jen trochu studovali literaturu, nemohli něco takového vypustit z klávesnice. To si jen tak udělali pár šikovných maker co jim zrovna assembler dovolil a prohlásili to za jazyk. Že několik let před tím dali Wijngaarden a spol. dohromady jazyk, ze kterého těží konstruktéři jazyků doteď jim asi uniklo.
Ajajaj. Napiste mi v tom svem flexu nebo opevovanem algolu nejaky ten OS a nejlepe realtimovy. Pak muzete mluvit co uniklo K&R.
Neznal jsem. Ovsem asi ani plne nepoznam :-) Hurd je taky dobre navrzeny system, ale pouziva se nekde?
TO je ta potiz. Hurd je dobre navrzeny system (z jisteho teoretickeho hlediska), ktery ovsem bohuzel velice spatne funguje (protoze ta teorie opominula nekolik "detailu").
Stejne tak spousta jazyku je "dobre" teoreticky navrzena, bohuzel se v nich prakticky neda moc programovat, na rozdil od C....
A proč ne, tam přece není žádný principiální problém. Spíš nechápu, proč je tak rozšířená myšlenka, že operační systém nejde naprogramovat v jiném jazyce než nějakém céčku. Pro vybrané technické detaily stejně budu muset použít vložený nebo přilinkovaný assembler ve Flexu stejně jako v céčku.
Principialni problem to jiste neni, ale jestli jsou ty jazyky tak skvele tak proc se v nich ty OS nepisou? :-) Ze by vsichni byli tak blby?
Skutecnost je mnohem jednodussi - cecko zna kazdej, je na vsechny platformy atp. + ti omezenejsi si navic mysli ze programovat OS jde jen v cecku ;-)
Myslím. Céčko pokřivilo náhled na programování spoustě programátorů. Vsadím se, že se najde pořád dost lidí kteří budou do poslední kapky krve bojovat za to, že pole a pointer jedno jsou a vůbec že pointery jsou něco složitého.
Toto mi zas pripomina teorii spiknuti. Kdysi jsem na jednom serveru o technologiich (utopistickych) cetl, ze skoly vychovavaji (ve vasem pripade pokrivuji) inzenyry tak aby mysleli v urcitem paradigmatu a proto doted nemame perpetum mobile :-)
Samozrejme, perpetuum mobile, aspon to druheho druhu, je realizovatelne. Hledej pod heslem "Brownian Motor".
si precti Feynmanovy prednasky z fyziky - dozvis se proc je to nesmysl
Pointer je naprosto trivialni zalezitost a co se tyce poli, tak C zadne nema - ma jen syntakticky cukr okolo pointeru, ktery za pole vydava. Podobne PHP nema pole, ale jenom hashove tabulky, ktere se za pole vydavaji. Myslim ze v C++ nejake pole uz maji, ale radeji pouziju C pointer, protoze delat kontrolu mezi jen tam kde je zapotrebi zrychluje program (a zpomaluje vyvoj ... nikdy bych netvrdil, ze C je idealni jazyk z hlediska rychlosti vyvoje).
Nejvetsi sranda je, ze kdyz jsem se ucil Pascal, pripadalo mi, ze pointery jsou neco magickeho. S Pascalem jsem si nejakou dobu hral. Pak jsem se dostal k Cecku a ucebnici od pana Herouta. Hned byl videt rozdil mezi akademiky a praktikem. Jak bylo najednou vsechno pochopitelne a snadne - prestoze C obsahuje pointerovou aritmetiku a spol.
Ale to je jedno, vysokourovnove jazyky prece pointery nepotrebuji...
Každý procedurální jazyk potřebuje pointery. Zjevné nebo více či méně zamaskované, ale pointer (nebo přesněji řečeno nepřímé adresování) je v téhle kategorii jazyků nenahraditelný. A když je náhodou nemá (Fortran, někdo ho tu zmiňoval) tak se to všelijak obchází třeba nepřímým indexováním polí.
Tak z teto odpovedi jsem vazne jelen. Az dotedka jsem slovem pointer oznacoval adresu na konkretniho mista v pameti, kterou ziskame napriklad zavolanim funkce typu *alloc. Takovou adresu podle me proceduralni jazyky nepotrebuji a pokud se pouziva nekde na urovni, ktera neni pristupna programatorovi v danem jazyce, tak se o pointerech nema smysl bavit.
Bohuzel, autori silne typovanych jazyku obvykle zapominaji na podstatnou vec, totiz ze kdyz necemu jazyk brani, musi poskytovat take prostredky, jak to realizovat v pripade, ze jde o zamer, tyto prostredky museji byt dostupne, standartizovane, efektivni, a dobre zdokumentovane.
Pascal treba dojel na to, ze blbosti jako konverze shortu na dva chary sla sice udelat v TurboPascalu, ale jinde ne, pripadne uplne jinak, a to ani kdybyste se stavel na hlavu. Naprosto priserne IO byla pak druha vec, proc jsem Cecko bral po Pascalu jako pozehnani..
Ve Flexu to samozřejmě jde, ale proč proboha potřebujete konvertovat short na dva chary? Dobře navržená aplikace těžko něco takového bude potřebovat.
pri psani nizkourovnovych zalezitosti docela uzitecna vlastnost
A proc vyzadujete nizkourovnove vlastnosti po vysokourovnovem jazyku?
Podporuje vase cecko nejakou syntaxi cojavimtreba pro atomicky compare&exchange? Ne? Proc ne? Pri psani nizkourovnovych zalezitosti docela uzitecna vlastnost. Ze mam tohle napsat v assembleru nebo pomoci systemovych fci/knihoven? To mate teda pravdu!
A mmch, skladani dvou bajtu do shortu ve flexu delat muzete, kdyz vam to dela dobre. ;-)
1) Atomický compare and exchange IMHO nelze na všech architekturách rozumně implementovat takže do jazyka nepatří.
2) Zařazení -- || -- do jazyka nepřináší nic užitečného a proto patří do knihovny (resp. kvůli efektivitě je vhodné implementovat jako makro ale to je implementační detail).
BTW jak ve Flexu rozumně napsat toto:
#ifdef DEBUG
#define DbgPrint(Message) Print(Message);
#else
#define DbgPrint(Message)
#endif
Síla a genialita návrhu Cčka je v malém množství vhodně zvolených výrazových prostředků které ale umožňují implementovat vpodstatě cokoliv. Je sice vhodné pro lowlevel věci ale vcelku bez problémů umožňuje psát i highlevel věci (i když méně optimálně a člověk si musí hlídat více věcí - garbage collector se občas hodí :-). Problém vysokoúrovňových jazyků je v tom, že dost projektů má svoji lowlevel část a tam tem hl jazyk vysloveně překáží a nebo se tato část napíše v jiném jazyce ale mít projekt ve více jazycích je ehm nepraktické.
Mno v cecku mi treba chybi left a right shift s rotaci ... je tam >> a
gcc ma shifty s rotaci jako jednu z __builtin_* funkci, navic jeho generator kodu vyplivne ror/rol kdyz vidi konstrukce typu (a << n)|(a >> (32-n)), takze nevim co ti chybi..
Mno chybi mi treba to, ze o tom nevim :o)
Zkousel jsem hledat v googlu, ale zminky o takove builtin funkci jsem nenasel. Je to tam uz dlouho, nebo je to neco pomerne noveho?
A taky je to gcc-specific (i kdyz pravda, gcc je vsude, takze to zas tak nevadi, ale do standardu C to dat mohli ... :o)
A precejen konstrukce typu "a ROL n" je prehlednejsi nez (a << n)|(a >> (32-n))
mno v C s makry asi tak max. rol(a,n) ....
Hmm, tak jsem kecal, builtiny jsou na milion jinych veci, ale na ror/rol ne. Ale ten opis funguje, a bude kompatibilni i s obycejnym ceckem.
Odpusťte mi moji nevědomost, ale pořád si takový případ nedovedu vybavit. Můžete něco naťuknout?
BTW, jak se vlastně v céčku daji dva chary do jednoho shortu?
short s;
((char *)&s)[0]=char1;
((char *)&s)[1]=char2;
Nejaky problem ?
Ne, já jen, že se tím občas v céčkařských konferencích nastartuje flamewar :-)))
Jen takova drobnost, ze pokud se ted pokusite
pouzit hodnotu s, dojde k "undefined behavior"
a podle standardu C se muze v programu, ktery
zpusobi "undefined behavior" stat _naprosto_
cokoliv (treba system ("/bin/rm -rf /")).
Velky, nejvetsi asi ten ze to proste v C nemusi fungovat. Podle definice je short vetsi nebo roven charu a mensi nebo roven intu. Kdyz uz tak tam musis minimalne dat podminku na sizeof(short) >= 2 * sizeof(char) (pripadne jen na rovnost, protoze pokud to bude vic tak zbyly bajtiky budou nahodny). Proste C umi spoustu veci ale chce to o nem neco vedet :)
Ve Flexu bych to deklaroval jako
var
s : unsigned 16;
a je po nejasnostech.
To s tim charem mi asi uniklo, myslel jsem (a myslim si porad), ze je dano jenom short <= int <= long. Prenositelna verze udela asi neco takoveho:
s = ((c1 & 0xff)
S charem ti nic neuniklo, ale protoze short <= int tak je mozne ze short == char. A pak priradit dva chary do jednoho shortu pujde docela tezko :)
A ten tvuj priklad moc nebude fungovat pokud c1 nebo c2 bude mit nstavenej horni bit, protoze pak se sign extenduje na short, coz ti udela docela bordel ve vysledku, musis ty hodnoty pretypovat na unsigned typy aby se ti nezvetsovaly se znaminkem, ale s nulama. U c1 to bude problem pokud je short vetsi nez 2 chary, u c2 to bude problem vzdycky kdyz bude short vetsi nez char.
Ano, samozrejme mas pravdu. Ja jsem predpokladal unsigned char jako uloziste pro 8 bitu dat bez dalsi interpretace, co ktery bit znamena, jestli se pouziva primy, inverzni a ja nevim jaky zpusob kodovani cisel atd. A protoze predpokladam, ze sizeof(short) >= 2, zadne dalsi zaludnosti jsem neresil.
Krom velikosti shortu, ma tohle jeste jednu vadu na krase. Na Motorole se to bude chovat jinak nez na Intelu.
A co to radeji vynasobit? (ve smyslu c1*256+c2) Tim se rozdilum LE vs. BE vyhnu, ne?
--
Petr
Coby to neslo. Ked nic ine, spodny char ziskam (short mod 256) a horny (short / 256). Problem je jedine ked sa zbytocne snazite to robit cez pointre a podobne zvrhlymi sposobmi.
Cecko zastarale?
to vravia vsetci co to C neovladaju.
moj nazor je, ze kritizovat moze clovek len to, co ovlada.
ja povazujem za zaklad programovacieho jazyka vyjadrit akukolvek moju myslienku. to, ze pod slovom akukolvek si K&R predstavovali akukolvek zverinu a oplzlosti (forek) ... to je ich problem. dolezite je, ze jazyk ma neobmedzuje.
ak sa autor jazyka snazi kompenzovat nedostatok vlastnej discipliny a strasidenlne priklady z knih povazuje za beznu prax v programovani, potom je to skor drevorubac ako programator.
priklad: citam v tlaci: je statisticky dokazane, ze najviac smrtelnych urazov sa stane na povedzme prednom sedadle spolujazdca.
hmm, tak prva genialna vec, akozto autora aut ma napadne, ze nebudem predne sedadlo montovat do svojich novych bezpecnych aut..
o rok prijde nova statistika ... o dva dalsia ...
oj oj ... a zrazu montujem auta bez sedadiel.
No vidite. A muj nazor zase je, ze tohle si casto mysli ti, kteri ovladaji _jenom_ C.
Ja v C programuju docela rad (z cehoz nevyplyva, ze to je muj nejoblibenejsi jazyk, kterym je mmch Delphi), nemam s tim zadny problem a myslim, ze na jistou skupinu aplikaci je proste nejvhodnejsi. Stejne tak je na jinou skupinu aplikaci vhodna Java, na jinou skupinu aplikaci vhodny cojavim Smalltalk atd. atd. A mam dojem, ze prave tohle uvazovani dela mnohym (ted nemam na mysli nikoho konkretne, natoz primo vas) ceckarum potize. Proste jazyku existuje mnoho, protoze kazdy je vhodny na trochu neco jineho. Co je na tom spatneho?
To, ze vam jazyk (ne)dovoli vsechno, je proste jedna z vlastnosti jazyka. Obecne ani dobra, ani spatna, jde o to, proc a nac to chcete.
Ad "dulezite je, ze me jazyk neomezuje": co tim chcete rict? Jakto ze vas neomezuje? Vy snad muzete napsat treba
"abc" 123 . : cecko je super jazyk? tralala.
? Dobre, tak o neco mene extremni priklad, co treba
char *s = 3.4;
Taky ne? Jaktoze vas omezuje? To je prece spatne! Anebo ne? Ze by slo o miru omezovani? A kde je ta posvatna hranice?
A jeste zaverecna k tomu prirovnani: vite o tom, ze se do mnohych aut montuje omezovac rychlosti? Proc to delaji? Je prece dulezite, aby me auto neomezovalo.
S prvnim odstavcem souhlasim. Na neco je vhodne C, na neco PHP, na neco C++, na neco bash+awk+sed. Mozna ze casem narazim i na problem ktery me presvedci naucit se jiny jazyk, protoze jazyky ktere znam pro nej nebudou vhodne.
Jazyk neomezuje = v jazyce jde zapsat libovolny algoritmus. To je ta posvatna hranice. V praxi se hodi i kdyz muzete napsat libovolny algoritmus aniz by vas jazyk nutil delat konstrukce pripominajici drbani se levou rukou za pravym uchem.
Vite ze s montovanim omezovacu rychlosti do autobusu se prestalo, kdyz se zjistilo, ze vynucene omezeni rychlosti prinasi vyssi nehodovost ?
Mno tak ty omezovace rychlosti v autech ... montuji se treba do Mercedesu, ale tam jsou nastaveny na 250 Km/h, coz zas tak moc neomezuje (mozna nejaky dalnicni silence ....) a u ostatnich aut to bude mozna podobne - vykon motoru mercedesu by asi dokazal vymacknout u silnejsich motoru vic nez tech 250, ale uz by tu rychlost nezvladlo treba rizeni, pneumatiky, nebo ja nevim co ... tak je tam ten omezovac.
Libovolny algoritmus? Takze vam staci treba Turing-complete jazyk? V tom pripade doporucuju treba Brainfuck. (http://www.muppetlabs.com/~breadbox/bf/) :o)
Ve Flexu samozrejme muzete zapsat stejne algoritmy jako v jakemkoli jinem normalnim imperativnim jazyce, jenom je nekdy zapisujete o malinkaty chloupecek jinak. O zadne zasadni omezovani se samozrejme nejedna. To, _jak_ je tam zapisete, a jestli se vam ten styl libi, je samozrejme veci vkusu a tezko se tady muzeme shodnout na objektivni pravde.
Pravda, programovat se da i v turingove stroji a lze v nem naprogramovat vse na co existuje algoritmus, ale tunringuv stroj je spis urcen na teoreticke dokazovani nez prakticke programovani....
Víte co se stalo se sondou Mars Polar Lander? Jeden programátor (asi žádný vypatlanec, když směl dělat pro Boeing) napsal obslužnou rutinu pro výškoměr, která vracela údaj ve stopách. Jiný z NASA ji volal, ale myslel si, že to dostává v metrech. Není to žádný vymyšlený příklad, přes všechny testy se to fakt stalo a NASA přišla tuším o 120 mil. dolarů. Kdyby to nepsali v C++ ale v Adě, "omezující" jazyk by jim nikdy nedovolil přiřadit metry do stop a na chybu by přišli a opravili ji během vteřiny, ani by je nenapadlo, že mohla být fatální.
Programuju dlouho, ale nikdy jsem nenarazil na "jednotky" u integeru.
Stopa je (celo)číselný datový typ. Metr je (celo)číselný datový typ. Ty dva typy spolu nejsou kompatibilní a aby bylo možné uložit hodnotu jednoho typu do proměnné druhého typu, je nutné provést přetypování. Není-li provedeno (což je v případě stop a metrů více než pravděpodobné), překladač hlásí chybu a odmítne program přeložit. V silně typovém jazyce, pochopitelně. Tedy třeba v Adě nebo ve Flexu.
Ty typy je samozřejmě nutno deklarovat, samy od sebe neexistují. Tedy ve většině jazyků, v níže zmíněném Rebolu možná ano :)
Ale prdlačka. V Adě by to nadeklarovali jako typ LandingHeight, integer by to sice nebyl, takže by nešlo zaměnit LandingHeight třeba s LandingPosition, ale na jednotky by se vykašlali a problém by nastal stejně. Takže smůla.
Když programujete v jazyce se silnou typovou kontrolou, narážíte na ně naopak všude. Deklarovat proměnnou dejme tomu jako "holý" int se tam považuje za nečisté programování. Vždycky by měla mít nějaký typ, aby za vás mohl překladač hlídat, jestli ji omylem někde nepoužíváte špatně. Viz ten příklad s družicí, co otevřela padák místo v 1000 metrech v 1000 stopách.
Jenze ty udaje se zpravidla musi CIST z cidel - a tam je naprosto suma fuk jaky mate jazyk, protoze to musite precist znacne nizkourovnove zpravidla po sbernici (a muzete byt rad pokud to budete mit pararelne, protoze seriovy v techto extremich podminkach je sice narocnejsi a pomaly, ale na druhou stranu vice odolny)... Vite, Vas prikald byl hezky, ja mohu dokumentovat uz od Fortranu (spaleni druzic), nic to vsak emeni na tom, ze na Zemi skoro nikdo nema predstavu o jakem programovani se vubec mluvi, jake jsou prostredky a co to obnasi... - zapomente proboha na dnesni CPU, mega ci spise giga pameti... - mate malinky clanek, ktery nelze moc zatizit, malo pameti a jeste vse musite kontrolovat alespon dva a z trikrat, protoze se Vam to muze menit pod rukama (ano mluvim o atomicite a o integrite)
HP to ma na kalkulackach --- kazde cislo moze mat velkost a jednotku.
Pokud by se ovsem nekdo obtezoval v Ade definovat prislusne typy.(Jak vlastne vite, ze nedelali v Ade? V NASA je Ada dost "in"). Obavam se, ze podobnym chybam sebelepsi jazyk nezabrani.
Já mám pocit, že jsem slyšel u této konkrétní nehody, že palubní systémy byly napsány v Adě, jako skoro všechno od NASA.
a) Muzes mi rict co te vede k zaveru ze ten kdo kritizuje C, tak ho neovlada ? Nepochopitelna ceckarska namyslenost, ale velmi typicka.
b) Proc neprogramujes v assembleru ? Vzdyt to cecko je vlastne strasne nepruhledne, dela si co chce a nemuzes v nem vsechno ridit !
c) Vis ze i ten Pascal umi snad vsechny low level zalezitosti co cecko ? Ada. Flex. .....
d) Zakladem prg jazyka je schopnost vyjadrit jakoukoliv myslenku ? Je snad schopnost (dokonce nutnost) prasit primo pamet vyjadrovani nejake myslenky ? Naopak, ve vyjadrovani pokrocilejsich myslenek maji nad nejakym ceckem samozrejme navrch vyssi prg jazyky, ale o tom ty asi moc nevis.
> ale o tom ty asi moc nevis.
Podle stejného vzoru - není tohle zase nepochopitelná necéčkařská namyšlenost, velmi typická? :)
Neni to namyslenost (Branislav je proste ocividne spis zamereny na lowlevel prehazovani biticku nez na design software), a neni ani typicka ;-P
Zobraz cisla 5,25 a 52,5 do pameti na 1 byte. A potom to obracenym zpusobem vypis.
:-)) Nechtel jsem se do tohoto flame poustet, ale tady jste presne vystihl ten problem.
Ccko je skotecne ze softwerove-inzenyrskeho hlediska hrozne, jenze v praxi se v nem da dobre a efektivne psat (no priznavam, ze nektera pouziti jsou masochismus).
Vas jazyk mozna te softwerove-inzenyrske literature vyhovuje, jenze nejste prvni, kdo se o neco takoveho pokousi. Jedno proste nezmenite, programator musi programovat umet a zadny seberobustnejsi jazyk na tom nic nezmeni.
Proc jste nevzali nejaky uz existujici jazyk (ja mam nejradeji Python)? Protoze kazdy z nich ma sve nedostatky? Copak si myslite, ze ten vas nema?
Jo a abych nezapomel, cely Linux ma taky uplne hrozny design ;-) A vlada je uplne blba. Vlastne cely svet nejak spatny design. Kdyby si Buh nedriv poradne precet literaturu...
Kdysi jsme psali systémové programy ve Fortranu. Zná to slovo dneska ještě někdo nebo už je to jen nadávka ?
To si pište! Pro matematické výpočty se používá intenzivně do dneška.
Pravda, ale na pocitani jsou lepsi funkcionalni jazyky. Haskell (Hugs)...
Jo. Na symbolické výpočty. Neslyšel jsem ještě o tom, že by se ve funkcionálních jazycích dělala numerika.
Myslim ze se staci podivat na:
http://wraith.iglu.cz/tmp/flex.png
A dalsi komentar neni ani potreba.
to zas takovy argument neni, kdyz se vynechaji includy a deklarace, tak ty programy jsou skoro stejne dlouhe. jen python je trochu "iniciativnejsi"
jazyk mi prijde celkem normalni a kdyz si zakaznik zaplati, nevidim duvod, proc nenapsat aplikaci v nem (nebo treba v cobolu), samozrejme, kdybych si moh vybirat, tak si ho dobrovolne nezvolim
Marne v tvem prikladu v Pythonu hledam UTF8 kodovani. Kampak se ztratilo?
Ten protipriklad v Pyhtonu proste neni funkcne ekvivalentni prikladu ve Flexu.
To samotne porovnani je podle me blbost, spis me zajimalo, jak by to v Pythonu vypadalo s tim kodovanim :-).
V prvni rade reknete, co, odkud, kam a proc chcete kodovat a potom muzeme resit implementaci.
To neni odpoved na co odkud kam :-)). Ten priklad v recenzi nic takoveho nedela, ani ma ukazka to nedela. Podle toho jak jsem pochopil tu ukazku ja, tak to ekvivalentni je. Jestli ne, uved v cem se to lisi a ja to doplnim.
Mno z tehle diskuze vidim vetsinou alergicke reakce lidi ,kteri se boji zmeny. Ja jsem jen rad ,ze vznikaji nove jazyky. Prinasi to vesinou nove myslenky ( ktere se daji zakomponovat trebas pak do stavajicich reseni). Jen tak dale a preji hodne trpelivosti :))) A to rikam ,ikdyz vetsinou pisu v jave/perlu.
mejte se.
naopak. patvary jako je tohle jsou produktem/nastrojem lidi kteri se boji zmeny a proto nejsou schopni opusit svet pascalu. nove myslenky ? kde ? ja vidim jen neustale nalepovani napadu prevzatych z jinych jazyku ve snaze udelat ze jednoducheho vyukoveho jazyka pouzitelny nastroj.
mno zrovna pascal ma dneska hodne podob. Od stareho pascalu ,prez turbopascal, az po dnesni delphi. Dnesni delphi je klasicky objektovy progr. jazyk podle modelu eifel.)
ten priklad v pythonu otevre socket, posle do nej http prikaz, prijme odpoved a vytiskne ji. co dela zmineny kod flexu jineho ?
<python>
>>> x="žluťoučký šroubeček"
>>> x
'\xbelu\xbbou\xe8k\xfd \xb9roube\xe8ek'
>>> print x
žluťoučký šroubeček
</pytohn>
pokud je to potreba reteze maji metody encode() a decode() ale jak vidno python pracuje v unicode a prekodovani do znakove sady systemu dela automaticky. takze funkce je ekvivalentni. to ze ji neni treba rucne zapisovat jiste nelze povazovat za nevyhodu :-)
Python unicode pouziva nativne. Kdyby bylo nutne prekodovani pak objekt retezec ma metody .encode() a .decode(), ale v prikladu k zadnemu prekodovavani nedochazi.
Nedochazi, vstupni i vystup je ten samy. Presne jako v Pythonu, co se deje uvnitr je irelevantni, dulezite jsou vysledky, tedy vstup/vystup a ty jsou shodne. Jestli chces ukazku s kodovanim, predved neco takoveho ve Flexu, treba vstup v CP1250 a vystup v UTF-8 a ja ti to predvedu v pythonu (bude to jen par znaku navic).
Ano, dekodovani UTF8 streamu z http serveru do unicode stringu, uzivaneho interne, znamena v Pythonu velmi podstatnou zmenu kodu, spocivajici v pridani 3 radku:
from codecs import utf_8_decode
buf = ''
... (uvnitr smycky)
data, buf = utf_8_decode (buf + data)
No ja si myslim, ze modul codecs nabizi velmi slusnou sadu nastroju k prekodovani textu - neni problem si to nastudovat. A hlavne, pythonovske knihovny se vyvijeji podle potreb lidi z praxe pri zachovani klasickych pythonovskych zasad. Pokud ten usmev ma znamenat, ze jste prozrel a prechazite na Python, pak vitejte na palube. :-)
Tohle neni potreba pro dosazeni ekvivalentu ukazky v recenzi a navic je to kanon na vrabce :-).
Souhlasím. Další komentář není ani potřeba. Flex jednoznačně vyhrál :)
Ne, vážně, mám k Flexu své výhrady (chybí mi třeba referenční objektový model), ale ani za nic nezběhnu k jazyku, kde proměnné není třeba explicitně určit typ.
Typ promenne? Jake? Neni to nahodou funkce? Nebo vlastne trida? Nebo nedejboze vsechno zaroven? Pomoc, vsechny jistoty Pascalu se mi hrouti! ;-)
Kdo okusil latentni typovani Pythonu, uz nechce nic jineho...
Vyzkoušel jsem latentní typování Lispu. Je to výborný jazyk a mám ho rád, stejně tak mám ale rád silné statické typování.
Je to ovšem věcí osobního vkusu a nedá se říct, co je lepší. Výhody má obojí pojetí. Já k dynamickému typování při běžném programování (aspoň zatím) nekonverguju.
Mno tak treba v PHP by se napsalo:
readfile("http://localhost");
a efekt je stejny jako u predchozich dvou prikladu :O)
Mno i kdyz ono vzdycky jde najit priklad, ktery jde v jednom jazyce napsat na 2 radky a v jinem jazyce ho napsat pod 15 je temer nemozne.
Nebylo, protoze oba priklady vypisuji obsah na terminal a to se bude v PHP delat tezko :-). Jinak i Python umi nacitat soubor primo z URL, ale to je o necem jinem.
wget -O - http://localhost
Co to ma spolecneho s programovacimi jazyky?
To je skvely, konecne nekdo v tyhle zemi dela neco uzitecneho misto toho, aby sedel v hospode a rikal, ze nema cas !!
Zabyvam se vyvojem e-bankovnich aplikaci a doufam, ze jednoho dne budu delat dobry SW s pomoci vaseho programovaciho jazyka a podpurnych nastroju !
Diky, Stepan o:)
Volba programovacího jazyka je jedno z nejdůležitějších rozhodnutí při návrhu projektu. Špatná volba může být doslova likvidační. Roli zde hraje spousta faktorů - dostupnost programátorských sil, množství knihoven, udržovatelnost kódu, "zaměření" jazyka, náchylnost k chybám, množsví alternativních překladačů a jejich cena (licence).
Já osobně Flex docela znám a vidím jeho kvality. Ale ve Flexu bych žádnou pořádnou aplikaci zatím nepsal - je to moc velké riziko. Uživatelská základna minimální, množství knihoven taktéž. To by mohl bylepšit čas. Co by ale šlo vylepšit (a mělo by být vylepšeno) hned je licence. Použití "zdarma" pro nekomerční produkty je dneska prostě _málo_. Otevření zdrojových kódů by některá rizika mohla snížit - možnost opravit chybu sám je u překladače takovéto rozšířenosti takřka nutnost.
Pokud chce Alsoft s Flexem uspět, musí ho prostě rozšířit, musí vývojáře něčím nalákat. A kvalita jazyka v tomto případě nestačí - konkurence je silná. Zdrojáky musí být dostupné a nějaká základní verze musí být musí být dostupná i pro komerční projekty.
Oni si to v Alsoftu asi ani neuvědomují, Flex je jejich dítě, zdrojáky mají a Ondra Tučný opraví každý problém, co se vyskytne. Jenže my nejsme Alsoft.
Naprosto souhlasim.
Jeste bych doplnil (k tomuto i vsem predchozim prispevkum): nestaci jen doplnit linux/x86. Co pak jine procesory? *BSD? Mac OS X? A tak dale a tak dale...
V dnesni dobe mi prijde ponekud blahove se snazit prorazit s jazykem pod Windows, proti veskere masinerii C++,C#,VB. A pod Linuxem to neni o nic lepsi. O Jave ani nemluve.
I kdyz jazyk to je pekny, to urcite.
Hmm... jeden z mala racionalnich a pritom svobodomyslnych nazoru.
Presne, takovyhle "soukromy" jazyk nikdy nikoho nenalaka, at je sebedokonalejsi.
Nejvice mne pobavilo, ze maji vlastni Webove stranky napsane v PHP. Jejich firemni web je docela dobry, ale to PHP mne dostalo.
Se smeju az se za bricho popadam. Uf malem sem si utrhnul plice. Ted vazne.
Muzete mi rict proc nemate sve stranky napsane ve Flexu ? To mi prijde dost trapne kdyz tu pisete o tom ze PHP je na .... a sami jej pouzivate.
Jinak poznamka k Flexu. Nevim co to tu dela a je mi to celkem jedno.
<vsuvka>
Jen to podporuje to co vetsina cekala. Prechod ROOTa k Internet Info mu neprospel. Posledni dobou mne tu zajimalo minimum clanku.
</vsuvka>
Jen nechapu smysl Flexu. Popravde pokud budu chtit udelat nejakou websluzbu tak si to napisu v necem jako je Delphi jako isapi modul a pojede mi to take pod Windows. Vysledek bude naprosto stejny. Z clanku sem nepochopil co je na tom tak uzasneho, co by neslo napsat v Delphi, C#, atd. Proc bych se mnel ucit takovy bastl kdyz to same se da napsat jinde s jednodusi syntaxi, citelnejsim kodem a v dusledku levneji.
Jo to by me taky zajimalo proc na vlastni web pouzili "blbe" PHP :-) Ryba asi smrdi od hlavy. A co takhle nejaky reference, kde ze se flex pouziva? V jedny bankovni pobocce na stravenky? ;-) Mlha nic nez mlha.
Kompletní elektronické bankovnictví ve více než deseti českých a slovenských bankách, viz http://www.alsoft.cz, produkt OfficeLine
co to konkretne znamena "kompletni elektronicke bankovnictvi"? :))
Corporate banking (point-to-point komunikace se specializovaným klientem), internet banking (přes www), komunikace přes mobilní telefony (SMS, WAP apod.), call centrum a tak. A samozřejmě strana banky, neboli server s návaznostmi na bankovní systém. Plus pár dalších drobností.
kterym bankam jste delali internet banking a s jakymi bankovnimi systemy mate zkusenosti?
Třeba Istrobanka nebo Unibanka na Slovensku. Bankovní systém byl skoro u každé banky jiný, někdy i kombinace dvou systémů v jedné bance. Zpaměti už nevím, jestli o to stojíte, kouknu se v práci, když tak napište na můj mail.
OfficeLine je kompletne elektronicke bankovnictvo? Ten kus neprehladneho, vonkoncom neintuitivno a totalne neflexibilneho softu??? Bola som nutena ten soft pouzivat, videla som, s akou namahou ho rozbehava bezny domaci uzivatel, s akou namahou ho rozbehavaju dokonca aj banky ako take. Je chvalyhodne, ze ste si s nim asi dali hodne prace, ale podla mna to pisal uplny sialenec!!!
Máte pravdu, OL 3.0 *Klient* (tedy to, co má k dispozici korporátní uživatel, nikoli Server = megasoftware v bance, který obsluhuje deset distribučních kanálů současně) neměl zrovna ideální uživatelské rozhraní - cena za kompatibilitu s DOSem... Aktuální verze je na tom podstatně líp.
P.S. Taky patřím mezi ty šílence, co to plasi ;-)
Aha, to je ten základ, které si bez MSIE ani neu*? A pokud už náhodou ano, tak je stejně jen velmi omezeně využitelné, protože počítá s tím, že klient má MSIE?
Mozna budu vypadat uple hloupe a bavite se na mnohem vyssich sferach... ale OfficeLine je ten klient co pouzivaji rodice "na banku"?
Ano, jest tak. A všechno co se jmenuje .prg je tam psané ve Flexu.
Tak mi prominte ale jak sem to videl(a byl nucen chvili pouzivat) tak sem myslel ze to parta pubertaku zbastlila v Delphi(omluva delphi, nemyslim to zle) UI te aplikace je otresne - hnus. Chcete konkretne nebo to sami priznate? Nebo GUI neni ve flexu?
To jste tak vypatlani ze (jenom) Intelu a Micorosoftu rikate standard?
Nemyslím, že bychom byli zrovna vypatlaní, ale celkem nesporný fakt je, že Intel i Microsoft mají největší market-share... Čemuž se holt dost jiných, malých firem musí přizpůsobit.
Linuxovou verzi Flexi jsme už jednou měli rozchozenou, ale pak jsme to na čas zmrazili, protože nebyl čas udržovat paralelně dva targety v situaci, kdy se dost silně vyvíjely low-level části. Až tohle bude dostatečně stabilizované, budou mít další platformy zelenou.
Me prijde, ze autor NEPROPAGUJE modFlex jako nejaky zazrak.
Autor clanku primo pise:
"modFlex je zatím čerstvý produkt, má své nedokonalosti,
uživatel například občas narazí na neimplementované
rysy jazyka, představuje ovšem první kámen skládačky
produktů, kterou chceme kolem Flexu vybudovat."
Cili priznavaji, ze vylezli s nejakou betou, a zajimaji je nazory ostatnich (tedy tech, co budou mit cas a chut si s tim hrat). Nevim, proc by meli stavet web na svem produktu, kdyz vedi, ze je teprve "ve vyvinu".
Opravdu mi neprijde, ze by se autor snazil tvrdit, ze timto clankem na rootu nabizi zazracny produkt, ktery spasi svet, jakkoli mu to mnohe reakce podsouvaji :-)
Je to hloupé, uznávám, ale náš web jsme měli hotový dříve než se zrodil nápad udělat distribuci modFlex. A proč předělávat co funguje (aspoň většinou)?
Třeba proto, že tím dáte ostatním najevo, že váš produkt je vyzrálý a nebojíte se ho použít. Ze stejného důvodu, z jakého MS portoval Hotmail z unixů na Win servery, i když ho to stálo šíleně peněz a bylo třeba o hodně víc železa, aby to utáhlo stejně, jako ty unixy.
Opravdu se nebojíme používat Flex - kompilátor Flexu je napsaný sám v sobě (prapůvodně byl v ObjectPascalu). *modFlex* je ovšem celkem novinka a už z toho titulu jsme ani nemohli stihnout si v něm vyvinout redakční systém, který bychom potřebovali pro náš web (jen customizace a nasazení Buxusu, na kterém teď náš web jede, trvalo skoro půl roku).
Pokud by se našli lidi, kteří by chtěli dělat na open source redakčním systému v modFlexu, určitě to budem podporovat a budem se jim snažit vyjít vstříc.
Nejsem ten kdo muze hodnotit prinos podobneho jazyka do jeho dusledku, sam za sebe muzu prohlasit ze aktivne zvladam perl, php a okrajove C, ale myslim si ze novy jazyk neprinese nic noveho, mozna jen vetsi zmatek.
Troufam si rict ze v perlu a php lze napsat vcelku dobre vse co je treba a prehlednost kdu je vzdy zavisla na programatorovi ne na jazyce, nepisu to pro ostatni, ale pro funkcnost.
K C si netroufam se vyjadrit, pouzivam jej jen k programovani jednocipu, coz je dost specificke tema a rozhodne nejsem guru, mozna prave naopak.
Zajimavy clanek. Jen bych doporucil autorum se ze "studijniho hlediska" poohlednout po jazyku Rebol(www.rebol.com) ktery je podle meho "hudbou budoucnosti".
Ma ho na svedomi skvely systemovy architekt Carl Sassenrath (tvurce snad prvniho opravdu multitaskoveho OS pro osobni pocitace - Amiga OS) a stravil nad jeho designem jiz pres 20 let.
Jadro jazyka obsahujici 45 datovych typu, ~12 komunikacnich protokolu(TCP,HTTP,FTP,IMAP,NNTP atd.atd.) a spoustu dalsich zajimavych vlastnosti existuje pro vice jak 40 platforem a ma pouze kolem 250Kb). Exituje mimo jine i verze obsahujici krome tohoto jadra i 32-bitovy graficky kompozitni engine vcetne effect pipeline(vse SW rendering z duvodu crossplatfomnosti) a kompletni GUI nadstavbu pomoci niz lze psat UI aplikace jejichz velikost zdrojoveho kodu je minimalni.(tato verze jazyka ma jiz necelych 500Kb)
Pro ty kteri chteji mit rychly obrazek "co to umi?" doporucuji:
http://www.rebol.com/rebolintro.html
Pro ty kteri chteji videt primo zdrojove ukazky reseni ruznych ukolu je tento link:
http://www.rebol.net/cookbook/
Kadopadne drzim autorum Flexu palce. Vyvoj programovaciho jazyka je prece skvela zabava!
PS: Drive nez me tu zacne nekdo flejmovat, rad bych upozornil ze ac Rebol neni Open Source, vetsina produktu je volne siritelna ke stazeni a uzivani. Navic tvurci jazyka maji tendenci postupne uvolnovat dalsi vlastnosti z komercnich do free verzi.
Dalsi vec kterou bych chtel zduraznit je, ze nejsem zadny dealer ani z Rebolu neprofituji a nesnazim se nikomu Rebol vnucovat. Jen me napadlo ze by bylo zajimave se zminit o dalsich alternativach v oblasti jazyku nove generace a doufam ze Rebol muze jiste nekoho zaujmout.
Mno na rebol jsem kdysi taky koukal, prijde mi co do syntaxe silne odlisny od C, C#, C++, Perlu, Javy, PHP, Haskellu, LISPu, Pascalu nebo cehokoliv s cim jsem se kdy setkal .... a pomerne i neprehledny.
Rebol syntaxe vychazi zcasti ze syntaxe LISPu. Jeho revolucnost podle mne tkvi mimo jine v polymorfii, moznosti vytvareni vlastnich sub-jazyku(tzv dialecting) a snad hlavni ideou ze "kod muzou byt data a data zase mohou byt kodem" .
V dobe kdy jsem se ucil psat v Rebolu jsem byl minimalne zatizen syntaxi z "C based" jazyku. Byl to vlastne Rebol ktery me primel vratit se k progrmovani zpet(zacinal jsem s BASICem, pozdeji asemblerem...). Mozna i proto jsem byl schopen napsat online sachovy cgi system behem 1. mesice prace s Rebolem a za dalsi 2 mesice vlastni windowing system (http://www.rebol.cz/~cyphre/swissnap01.jpg).
Podle meho prehlednost je spise dana porozumenim "filozofie" daneho jazyka. Z vlastni zkusenosti(a zkusenosti ostatnich, kteri zkusili a vzapeti propadli Rebolu) muzu rict ze tento jazyk patri mezi velmi rychle naucitelne. Cas potrebny k vyjadreni myslenky neni blokovan jako v jinych jazycich barierou ruznych struktur,rozhrani a dalsich low-level zalezitosti ktere v dnesni dobe byly jiz tisickrate znovu objeveny a napsany. Vse je navrzeno usporne, jednoduse a logicky takze tvurce programu se spise soustredi na danou ulohu nez na to koli desitek veci je potreba inicializovat pro otevereni oknoveho dialogu...
V soucasne dobe uz mam take navic zkusenosti s Javou, C/C++ a dalsimi jazyky s timto typem syntaxe a nemuzu rict ze by me delalo problem s prechodem z Rebolu. Kazda syntaxe ma sve logicke zduvodneni(i kdyz musim priznat ze napriklad takove PHP se svoji hojnosti $ me moc nevytrhne ;)), je to spise otazka zvyku, zaziti a hlavne pochopeni.
Kazdy jazyk ma sve plus a minus. Je hlavne dobre rozlisit co chceme programovat a dle toho take patricny jazyk pouzit. Rozhodne bych nikomu nedoporucoval pouzit Rebol pro psani hi-tech 3D grafickych her a dalsich pocetne narocnych simulaci na tyto casti kodu samozrejme pouziju C/C++ nebo asembler. Rebolu muzu ale vrele doporucit pro vetsinu dalsich aplikaci z oblasti webu, internetu, grafickych rozhrani a vsech dalsich beznych aplikaci obzvlaste kdyz potrebujete danou aplikaci udelat kvalitne, multiplatformne a v kratkem casovem horizontu.
"kdyz potrebujete danou aplikaci udelat kvalitne, multiplatformne a v kratkem casovem horizontu", tak pouzijte ruby. je pod gpl :-)
Mno pokud chcete oo jazyk, se statickou typovou kontrolou a ukecanosti podobnou Pascalu, tak bych byt vami sahl po Eiffelu :)
Jenže v Eiffelu chybí spousta věcí, které jsme v jazyce chtěli mít.
Flex nemá jen statickou typovou kontrolu. Dynamické typové kontroly a podrobné run-time typové informace jsou stejně důležité a považuju je za jednu z nejdůležitějších vlasností Flexu (a moderních jazyků obecně).
Mimochodem, je velice zajimave ze se v jednom dni sesly na Rootu dva jazyky z naprosto opacneho konce spektra. Ze na to jeste nikdo nereagoval?
Skoda, mohl by to byt jeste zajimavejsi flamewar, protoze pokud by Pavel Krivanek porovnaval misto s Javou s Flexem (a emoce by byly srovnani umerne), tak by asi nebyl otisknutelny.
Je to krasna ukazka, ze existuje cela skala nazoru a kazdy ma neco do sebe.
otázka: díval ses na Nový český progamovací jazyk
odpověď: Jo, no comment
...takže asi tak
Neznate nekdo nejakou peknou stranku, kde by byly popsany nejruznejsi kategorie programovacich jazyku, s priklady, vysvetlenim ruznych typu programovacich jazyku etc.? rad cesky, ale zkousnu i english... dekuji
neni tohle trochu divny???
kdyz mam pak funkci vrat_mi_dalsi a pouziji ji na "stejnym radku", tak dostanu stejne vysledny :// podivne...
jinak ale co zatim procitam dokumentaci, tak mi to trochu pripomina rozdil mezi C++ a D ... tohle vypada jako logicky nastupce oo-pascalu...
Poznámka
V Flexu se automaticky předpokládá, že funkce vrací v rámci jednoho výrazu při stejných
parametrech vždy stejný výsledek. Jinak řečeno to znamená, že například výraz
ziskej_cislo(x)+ziskej_cislo(x) překladač považuje za plně ekvivalentní
výrazu 2*ziskej_cislo(x) a podle toho také provádí případné optimalizace výrazů.
Oblíbená "céčková" konstrukce getbyte(soubor)+256*getbyte(soubor) je
tedy ve Flexu chybná!
(viz: dokumentace str. 35)
A ja teda vubec mozny tam naprogramovat funkci typu "random"?
Po pravde receno se mi tahle myslenka taky moc nelibi (mmch v optimalizatoru se zatim neuplatnuje), ale jde proste o terminologii.
Od matematicke funkce taky nepredpokladate, ze bude vracet pokazde jinou hodnotu. Predikat v Prologu taky musi pokazde vratit pro stejne vstupy totez (IIANM).
Kdyz je to funkce, vraci to pro stejne vstupy totez.
Tudiz random nebude funkce, ale procedura s vystupnim parametrem, nebo to bude funkce, jejimz parametrem bude seed (=predchozi nahodne cislo), cimz dosahnu i toho, ze nebudu mit nekde mysteriozne skrytou stavovou promennou (jak v cecku dosahnete nekolika nezavislych RNG, resp. thread-safe RNG?).
jak v cecku dosahnete nekolika nezavislych RNG, resp. thread-safe RNG?
jednoduse, naprogramuju si vlastni :O)
bud v C++ kde to bude trida a jednotlive generatory jaji instance, nebo v C++ proste nejaky struct co bude obsahovat seed a ten bude jako jeden z parametru. Naprogramovat zakladni random typu
seed=seed*konst1+konst2;
return "nejake nizsi bajty ze seed"
je pomerne jednoduchy.
BTW od standardniho randomu obvykle neocekavam nejakou nezavislost nebo opakovatelnost, proste cekam nahodna cisla (i kdyz ve skutecnosti jsou jen vice ci mene pseudonahodna pokud nemam hardwarovy generator sumu nebo tak neco)
No jiste, ze si muzu naprogramovat vlastni, to je snad jasny.
Tomu generatoru chybi nejaky ten mod, takhle to uplne idealni nebude. ;-)
Ano, obecne tam musi byt mod (no na ten jsem pozapomnel, jinak by ty cisla lezly do nekonecna), ale tady pocitame s 16/32/64/buhvikolika bitovou aritmetikou, kde se mod (2^pocetbitu) dela tak nejak automaticky :O)
No to ja samozrejme s 16/32/64/buhvikolika bitovou aritmetikou pocitam, jenze pokud ji pouzivas jako nahradu mod, tak neber dolni bity, protoze nejsou moc nahodny (presneji receno, 1 dolni bit ma periodu nejvyse dve, tzn. bud je porad stejny, nebo se pravidelne strida 0,1,0,1, ..., 2 dolni bity maji periodu nejvyse 4, 3 dolni bity 8, ...). Bud ber horni bity, nebo tam dej modulo treba 2^32-1.
Ale ted uz jsme offtopic i na tehle diskuzi. :-)
Upřímně řečeno toto pravidlo je zatím stále "ve vývoji" - jinými slovy si to možná ještě rozmyslíme ;-) Fakt je ten, že Flex má bojovat s chybami a zavést konstrukci, která bude sice formálně dobře zdůvodněná, nicméně velké části programátorů přijde jako minimálně nezvyklá, by mohlo chybám spíše napomáhat... A jak už psal Petr Kadlec, tak optimalizátor toto pravidlo zatím nevyužívá.
Zda se mi, ze tato diskuse efektvine blokuje praci mnoha lidi firmy alsoft. ;-) Takhle se "bit" za pravdu je opravdu krasne. :-)
Do jazyka moc nevidim, ale slysel jsem o nem od jendoho z tvurcu zajimave veci. Z prikladu mi prisel dost neprehledny, ale asi to bude tim, na co jsem zvykly.
Kazdopadne jazyk samotny (jeho syntaxe) jeste nic neznamena. Dulezite je to, co je kolem nej a co muze jeho uzivateli pomoci - komunita vyvojaru, mnozstvi dostupnych knihoven, rychlost a kvalita implementaci novych standardu (kolem xml, databazi, ...) atd. Hadam, ze tohle vse flex nema a nejspis jeste dlouho mit nebude.
Děcka!
Až to bude fungovat pod Linuxem, bude k tomu kompletní dokumentace (aspoň v HTML, když ne v PDF), tak si to rád nainstaluju a rád se to naučím.
Některé konstrukce Vašeho FLEXu se mi fakt móóóc líbí!
Jsem příznivcem nativního programování, z Javy a C# dostávám kopřivku, jen si na ně vzpomenu, ale některý programy prostě v Assembleru a C nenapíšu, páč to jde rozsahem do miliónů řádků a vo tom to neni, protože je to neudržitelný kód a jakákoli větší změna má za následek přepsání 1/3 (jedné třetiny) kódu...
Mějte se fajn, držím Vám palce!!!
Have a lot of fun! (The SuSE default:-)))
Co je to za jazyk kdyz jeste neni v 99bottles?
http://www.99-bottles-of-beer.net/
Ada bola vytvorena Pentagonom, aby zjednotila jazyk pouzivany v americkych ozbrojenych silach. Boli na to vynalozene miliardy, obrovske mnozstvo jazykovedcov a programatorov a tusim 20 rokov. Problem je v tom, ze si tam kazdy pridal to, co zarucene programotar potrebuje. Teda sa jazyk nafukol do neuveritelnych rozmerov. To je jediny problem. Musite poznat obrovske mnostvo informacii, kym vytvorite neaky program. A kto sa ma ucit...
Preco to pisem? Flex z mojho pohladu redukuje Adu. A samozrejme pridava nove veci.
Mate moju plnu podporu!
P.S.: Na to, aby sa jazyk dal lahko naucit, musi byt primerane zlozity (mnostvo klucovych slov nie je to prave orechove). Nezabudnite na vektorovu algebru! Osobne mi chyba integracia databazi (kopa jazykov.... ale to je ina debata).
P.S.: Ponuka Vas jazyk neaku silnu stranku oproti inym jazykom?