> 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...
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 :-)
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 :)
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:-(.
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.
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.
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.
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 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.
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.
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 :-) ).
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.
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.
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 :-)
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.
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.
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.
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 ?
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.
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!)
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?
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.
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.
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..
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 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) ....
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 :)
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.
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.
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í.
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 :)
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)
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.
:-)) 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...
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
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.
<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 :-)
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).
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. :-)
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.
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.
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.
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í.
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 ;-)
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 :-)
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.
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.
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.
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)
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 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:-)))
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?