Názory k článku
Vývoj PHP 6
no nevim ...
celé vláknoNo aspon ze konecne zlikviduji ty magic_quotes...
Re: no nevim ...
celé vláknoRe: no nevim ...
celé vláknoRe: no nevim ...
celé vláknoRe: no nevim ...
celé vláknoPodobne s register_globals...
Re: no nevim ...
celé vláknoRe: no nevim ...
celé vláknoObchadzat? preco? IMHO, je to skor problem pouzitych kniznic, ktore viedia aj neviedia o kodovani dokumentu...
Re: no nevim ...
celé vláknoNe, vážně, s Unicode a kódováním je v PHP5 pořád spoustu "sraní" (omlouvám se, ale je to nejvýstižnější). Některé problémy viz: http://www.kosek.cz/temp/unicode.pdf
Re: no nevim ...
celé vláknoPython
celé vláknoRe: Python
celé vláknoRe: Python
celé vláknoRe: Python
celé vláknoRe: Python
celé vláknoA obcas jsou i pripady, kdy je pro prehlednost lepsi pevnou konvenci na nekterem miste programu opustit a naformatovat to trochu jinak.
Napriklad ja si "znackuju" kod nulovym indentem jako "tenhle kus chce prepsat/odstranit". Coz treba v pythonu asi nepujde ....
Re: Python
celé vláknoRe: Python
celé vláknoTak tedy jupí :-(
celé vláknoRe: Tak tedy jupí :-(
celé vláknonový jazyk
celé vláknoBral bych to jako výzvu a šanci opustit PHP jako "jazyk pro lamy" a pustit se do nějakého SKUTEČNÉHO jazyka.
ps. Jakub Vrána se konečně našel. Místo kontroverzních a neumělých pokusů něco naprogramovat (s diskutabilními výsledky) začal psát souhrnné články (viz i minulý o 5.1), které mu viditelně jdou. Sice jsou proloženy jeho subjektivními osobními komentáři se kterými se dá diskutovat, ale jinak pokrývají vše podstatné.
Re: nový jazyk
celé vláknoUTF-16
celé vláknoJsem zvedavy, jak to bude PHP zvladat, napriklad Java (resp. knihovny nad ni) s tim ma dost problemy.
Pravda vsak je, ze pouziti UTF-8 by bylo (alespon v nasem jazykovem regionu) pametove vyhodnejsi.
Re: UTF-16
celé vláknoRe: UTF-16
celé vláknoRe: UTF-16
celé vláknoUTF-8 je sice pro určitě texty úspornější, ale je pomalejší na zpracování, protože se musí pracně hledat hranice znaků. UTF-16 je v tomhle přeci jen lepší, protože v mnoha řetězcích se znaky s kódem nad U+FFFF nevyskytují, a lze tak pracovat v režimu 1 znak = 16 bitů. Pouze pokud je v řetězci nějaký znak, který musí být zapsaný jako surrogate pair, přene se na pomalejšé mód, který to umí ošetřit.
Z dlouhodobějšího hlediska bych se nedivil, kdyby jazyky a operační systémy začaly používat pro interní reprezentaci UTF-32/UCS-4. Na zpracování je to nejjednodušší a pamět je levná.
Mnohem zajímavější jsou v Unicode operace jako porovnání řetězců, protože před porovnáním se musí text znormalizovat, aby se eliminovaly alternativní zápisy stejného textu ("á", versus "a" + "akcent čárka nad písmenem").
Re: UTF-16
celé vláknoa utf-32/ucs-4 .... pamet je sice levna, ale ve chvili kdy mam obrovsky kusy textu tak uz muze byt rozdil jestli zaberou 500mb, 1gb nebo 2 gb .... zase pristup "dame uplne vsude ucs-4" asi nepujde ... nehlede na to ze diakritika (nebo jine "podivne" znaky) ve jmenech souboru je prasarna a mela by se vymytit a ne podporovat.
Re: UTF-16
celé vláknoRe: UTF-16
celé vláknoto ze cely text najprv precitam a potom vyhodnotim ktoru funkciu zavolat, ci pomalu a ci rychlu?
hmm, inteligentne riesenie, len co je pravda.
Re: UTF-16
celé vláknoRe: UTF-16
celé vláknoRe: UTF-16
celé vláknoUtf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknoPro mě to prozatím pro komunikaci s okolním světem vyhrálo dosti pěkně navržené UTF-8, interně (na úrovni jazyka a knihoven) ovšem bojuji s UTF-16.
Re: Utf8
celé vláknoNa svych strankach pouzivam utf-8 (krome tech starych, kde pouzivam to kodovani ve kterem kdysi vznikly), interne pokud mozno taky :o)
Re: Utf8
celé vláknoRe: Utf8
celé vláknoRe: Utf8
celé vláknofor a break
celé vláknoSi dělaj kozy, ne? Všude to bude fungovat, jen v PHP ne.
Takže budu hledat v cyklu FOR i = 1 to 1000000 něco, na pozici 3 to najdu, a cyklus poběží až do milionu.
Vážení, while fakt nejde jako náhrada použít vždy!
To zas vymyslel nějakej magor...
Re: for a break
celé vláknoRe: for a break
celé vláknoRe: for a break
celé vláknoNo, ma vubec "break $var" realne pouziti?
Je fakt, ze dycky pujde nahradit necim typu "if ($var==1) break;if ($var==2) break 2;" jen to bude vic psani :o)
Re: for a break
celé vláknoAni jsem netušil, že taková prasárna v PHP šla.
Re: for a break
celé vláknoRe: for a break
celé vláknoRe: for a break
celé vláknostejne FOR i WHILE jsou zbytecne - opravdovi muzi to resi rekurzi. ;]
Re: for a break
celé vláknoRe: for a break
celé vláknoRe: for a break
celé vláknoPHP
celé vláknoRe: PHP
celé vlákno2) je to velmi jednoduše použitelný na "lehký" aplikace, úkoly a databáze, a ještě jednodušejc naučitelný (+ všude jsou tuny příkladů - i když prasáckejch příkladů bez ošetřených vstupů apod. je taky dost, když člověk ví základy a neštuduje z učebnice PHP3, bezpečnostním chybám se vyhne).
Re: PHP
celé vláknoad 2) Jednoduchost PHP je jenom zdánlivá tím spíš, že se až moc mění neustále pod rukama. PHP je ve skutečnosti jen nekonzistentní nalepovák na nalepováku. Osobně si myslím, že existuje mnoho použitelnějších možností na "lehký" aplikace. Několik let jsem intenzívně psal v PHP a teď tvrdě pracuji na tom, abych se s PHP pokud možno už nepotkal. Jistěže není problém PHP zkrotit, ale proč zůstávat u něčeho, co není dobré?
beznadejna patlanice
utf
celé vláknoRe: utf
celé vláknotakhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoInterviewer: What is your past experience.
Applicant: I wrote PHP for a Web Site
Interviewer: PHP. What the fuck is a PHP. We write programs here. We need programmers. You write scripts. We don't have any jobs for Scripters.
Applicant: Well scripting is like programming, 'cept there's no accounting, no data management, no reporting, but there are a lot of kewl pictures on the web site I scripted, er programmed. Do you have snackies and scooters here?
Interviewer: We need programmers here. Get the fuck out of my office moron.
Applicant: Wanna shoot some pool?
Interviewer: SOMEBODY CALL SECURITY.
Applicant: I no some kewl porn sites.
Interviewer: (As he puts his foot in the applicants ass) GET THE FUCK OUT OF MY OFFICE YOU MORON!
------------------------------------------
... a nejen s phpckarem... ale v ramci objektivity i s patlakem co ma nasprtanou microsofti certifikaci ale neumi programovat. Z vlastni zkusenosti si myslim ze absolventi jinych skol nez MUNI,CVUT, MFF a VUT jsou jako zamestnanci programatori dosti slabi a vytvareji neprehledne a neciste systemy. Algoritmy, prehlednost a programatorkska kultura, to je to o co ve skutecnosti jde.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknonekdo se tu ptal v cem tak sexy piseme kdyz nemame radi PHP - ja osobne radsi v ASP.NET, problem je za na nektere free projekty je problem sehnat server s M$ operacnim system tak to pisu v PHP, ale ma to sakra mezery to psani v PHP
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoNelíbí se mi ovšem ten příspěvek od Elite. Tenhle "expert" by měl přijít na exkurzi do naší firmy, kde se vyvíjí informační systém v Perlu (mod_perl). To je taky skript, ale ten systém má špičkový návrh i kód. Jazyk nedělá programátora, stejně tak jako škola.
Nechci nějak vyzdvihovat UPOL, ale co se týče teoretických informatických předmětů (numericke metody, paradigmata programování, matematická logika, fuzzy logika a aplikace, neuronové sítě, vyčíslitelnost a složitost, lambda kalkul...) si myslím, že je to škola asi nejlepší. Bere se to poměrně do hloubky. Horší to je s praxí, projekty máme docela snadné.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoProgramator by mel umet skriptovaci jazyk, to je samozrejme silna zbran pro rychly vyvoj, mel by take umet nejake komercni prostredi - dnes tedy Javu nebo .NET, ale zaroven by mel rozumet klasice - cecko, kompilace, linkovani, princip volani funkci operacniho systemu.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoTak nevím, ale ten původní příspěvek se snad ani jinak nedal pochopit, než jako útok proti skriptovacím jazykům. Navíc zkušený programátor ví, jak malý rozdíl je mezi PHP a kompilovaným jazykem. V podstatě by stačilo odbourat pouhých pár vlastností (např. eval, $$var) a bylo by možné PHP překládat.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoodporucam do pozornosti perl 6 a diskusie k tomu :-))
ok, uznavam, je mozne, ze si autori perlu dali prilis vysoke ambicie, ale ak sa im podaril niekedy v tomto storoci 6-tku dokoncit, klobuk dole.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoTo je jako pokus o definici programátora, jo? Pak věz, že programátor je člověk s přirozeným citem pro algoritmy. Dobrý programátor zná i pozadí (matematika, složitost, vyčíslitelnost, programovací paradigmata...) a alespoň jeden programovací jazyk (+ platformu). To ale není nutná podmínka -- programátoři tu byli, ještě nebyly počítače (a Ty na světě).
Existoval-li by nějaký takovýto (ryzí) programátor, jsem přesvědčen, že pokud by tě snad přijali do nějaké softwarové firmy (pánbůh s nimi) a šel by tam i náš ryzí jedinec, tak by Ti zcela jistě šéfoval. Říkal by Ti, co máš dělat. Už z tvých příspěvků je patrné, že postrádáš mnoho rysů programátora (a možná i rysů logicky uvažujícího člověka).
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoCenim si lidi kteri znaji algoritmy a vnitrni princip veci, a ne jenom naucene postupy bez znalosti myslenek ktere jsou za tim.
Opravdu nechapu vase vypady proti moji osobe.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoKonec diskuse s někým, kdo není schopen rozumných argumentů a posílá příspěvky pod různými neregistrovanými uživateli (viz předchozí příspěvek). Ty "elito" mezi programátory --- jsi jelito :-) H0WK
ps - Příště až budeš chtít zase něco někam napsat, nad svým textem se pořádně zamysli a dvakrát si to po sobě přečti, než něco pošleš. Ušetříš si nekonečné obhajování, že "jsi to vlastně tak myslel".
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoA taky nevim proc mi tykate, neznam vas a ani znat nechci.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoProgramator, který v rámci své pracovní náplně nepoužívá skriptovací jazyky je umět nemusí, pokud nemusí vyvíjet v komerčním prostředí tak o něm také nic vědět nemusí (proč bych měl proboha .NETit? .NET nemám rád:) etc.
Programátor by měl mít altoritmické myšlení a vědět něco o složitosti. Aby byl dobrý, měl by znát i něco o překladači, kterým se jeho zdrojáky budou překládat. Bohužel je to v současné době právě spíš tak, že lidi se hlavně učí .NET, C#, Eclipse, ale napsat stavovej automat neumí :D
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoZáleží na konkrétním projektu a režimu, který tam vládne. Je programátor zároveň ten, kdo celý systém navrhuje nebo jenom implementuje návrh do nějakého jazyka? Dělá analýzu a komunikuje i se zákazníkem? ...
Jistě je rozdíl mezi programátorem jádra operačního systému, programátorem webové aplikace a programátorem maker v office.
Ti druzí dva jistě ke své práci nepotřebují znát příliš o překladačích a stavových automatech. A přesto se nazývají (a jsou) programátory.
Vývoj programátorského mainstreamu prostě jenom dál pokračuje na vyšší úroveň abstrakce. Začalo to strojovým kódem pokračovalo přes assembler, vyšší jazyky, přes objekty a různé skriptovací jazyky...
Každá z vyšších úrovní umožňuje o něco snadněji programovat některé úlohy (a tím ve stejném čase zvládnou vytvořit funkčně komplexnější software), ale jiné úlohy omezuje nebo znemožňuje a ty jdou lépe řešit na nižších úrovních.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoco se tyce te kvality na upol, bych mel urcite vyhrady vzhledem k poslednimu personalnimu zemetreseni.
k tematu dodam jenom to, ze perl je jeste vetsi splacanina nez PHP a Larry Wall je na to patricne hrdy! nazyva to postmodernim jazykem! navic PHP vzniklo jako zjednodusenina perlu ;] takze ta diskuze me pripada malinko mimo.... kruh se uzavrel...
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vlákno"co se tyce te kvality na upol, bych mel urcite vyhrady vzhledem k poslednimu personalnimu zemetreseni."
zase tu udajnou kvalitu popiras?
Toz, uz nehul!
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoJabko, kdy pojede konečně BanánaLinx.kom? :-D
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknojsem taky z Olomouce a zajimalo by mne, ktera firma vyviji informacni system pod mod_perlem.
Neco podobneho se chystam taky zavest, tak zjistuji jak jsou na tom ostatni.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknojsem taky z Olomouce a zajimalo by mne ktera z firem vyviji informacni system po mod_perlem.PS:Chystam sa taky na neco podobneho.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoTeď si zkus něco poslat pod mojí "novou identitou", opičáku :-)))
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoPrávě jsi nám všem předložil důkaz, že tady píšeš pod jinými nicky. Obrázek si udělá z tohoto threadu každý sám...
Příště používej hlavu, docela jsi mě překvapil. Myslel jsem, že nenaletíš. Přecenil jsem tě, jelito...
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoProgramatorska kultura? Ech, to uz nikdo nezna.
Cesta je zjednodusovani a nikoliv zeslozitovani.
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoTi z vás kteří Lisp znají (pan Hegenbart?) mi možná dají za pravdu že návrhové vzory jsou vlastně jistou implementací "higher order" programování, programátorského stylu funkcionálnich programovacích jazyků. Pokud takové jazyky považujete za akademické, pak vězte, že během posledních pár let jejich vlastnosti nenápadně přebírá "mainstream" (viz inference typů a lambda v novém C#).
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoTak je to spravne, pokud nezabere celni utok po cele fronte, je nutno provest zdanlivy ustup a naslednou infiltraci :-)
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vlákno^[:fun |
[:f | fun value: [:arg | (f value: f) value: arg]]
value: [:f | fun value: [:arg | (f value: f) value: arg]]]
value: [:rec |
[:n | n < 1
ifTrue: [1]
ifFalse: [n * (rec value: n - 1)]]]
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoPotom ještě z Lispu konečně odstranit naprosto zbytečné seznamy snadno nahraditelné páry, to pak nahradit lambda kalkulem a pak jen s blaženým úsměvem sledovat, how David and Vassili get rid of this Universe ;-)
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoRe: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknotakova "uprava" Lispu uz existuje a jmenuje se Unlambda - http://www.madore.org/~david/programs/unlambda/
Pravda, kod byva trosku necitelny, ale zato je to osekane o vsechny zbytecne jazykove konstrukce :-)))
Re: takhle budu jednat s phpckarem co mi prijde na pohovor
celé vláknoGOTO
celé vláknoThe name "goto" is misleading, and often associated with BAD THINGS(tm). Because our proposed solution is not a real GOTO construct, we will instead reuse the "break" keyword, and extend it with a static label.
No to je gól. :-D Raději tomu budeme říkat jinak, protože to jméno má špatnou pověst, přestože bychom tomu dali úplně stejnou funkčnost, i kdyby se to mělo pořád jmenovat GOTO. No to je mi logika. :-D
Re: GOTO
celé vláknoRe: GOTO
celé vláknoRe: GOTO
celé vláknoRe: GOTO
celé vláknoRe: GOTO
celé vláknoJa vim, "moderni" jazyky maji problemy s predavanim parametru, takze se ten rozklad na podproblemy dela slozite. Je to skoda, protoze napriklad takovy Forth vede prave k systemu programovani "rozdel a panuj" (a tento princip vlastne vedl ke vzniku celeho OOP).
Re: GOTO
celé vláknoNe vzdy je ucelne drobit to do nejakych podfunkci a cpat tam return ... jednak predavani parametru, jednak nekdy i prehlednost.
Re: GOTO
celé vláknoTakze jen nejak nechapu jaky je rozdil umet se ztratit v 30ti promennych dejme tomu o 2^30 stavech a moznych pruchdech pro optimalizaci vypoctu nad vicerozmernym prostorem nebo v deseti goto a 5ti promennyma s priblizne stejnym poctem moznych pruchodu, az na to, ze vysledny kod v pripade pouziti goto se vleze na vyrazne min stranek a ve finale se v nem lip orientuje.
Re: GOTO
celé vláknoRe: GOTO
celé vláknoA že to jazykově nesedí, to nevadí? "break blah" - copak to přeruší nějaké "blah"? Já myslel že "goto blah" je sémanticky angličtinářsky správně. Ale dneska máme toho newspeaku hromadu, a kromě toho, co si dělá PHP je mi celkem jedno. Jen z toho trošku "unbellyfeeluju" :-D
Re: GOTO
celé vláknoSemanticky je to nejhure udelane v Jave, tam aby zakryli, ze break je vlastne GOTO, dokonce umistili label do jine pozice, nez na kterou se skace :-)
Re: GOTO
celé vláknoRe: GOTO
celé vláknocall-with-current-continuation je zase lepší než pouhý setjmp a longjmp, protože i uloží/obnoví stack, takže můřu skákat i úplně mimo aktuální funkci, a dokonce i níže a napříč a můžu se do volané funkce vrátit i zpětně. ;-)
Re: GOTO
celé vláknoRe: GOTO
celé vláknoJa vsak nejsem v zadnem pripade zastancem GOTO a ani breaku pres vice smycek - GOTO jsem nepouzil uz peknou radku let a break pres vice smycek stejne neni v C-cku podporovany a v Jave, kdyz na podobnou konstrukci narazim, pouziju Forthovskou zasadu "rozdel a panuj" :-)
Naproti tomu predcasny vyskok z jedne smycky se pouziva dost casto, protoze to nahrazuje vlozene podminky a slozitejsi testy na zacatku/konci.
Re: GOTO
celé vláknoKdyz uz tak mavate tim assemblerem, zkuste se podivat, co vam to vase Forthovske "rozdel a panuj" vygeneruje za obludnosti na tema predavani argumentu do funkce. Forth je na to delany (snad), ale C proste NE. V C obcas musite obetovat trochu teoreticke cistoty kodu tomu, aby to nebylo line jak mrcha. Docela by me zajimalo, jak si s tim poradi Java JIT ...
Oproti tomu break pres vic smycek nahrazuje houf naprosto zbytecnych testu nasledujicich vnitrni smycku.
Re: GOTO
celé vlákno...que? Viděl jste Forth aspoň z rychlíku? Kdyby totiž ano, pak bystě těžko něco takového mohl napsat. Režie Forthu na předání parametrů je nulová, režie návratu z funkce (slova) taky.
Re: GOTO
celé vláknoPro pripad ze by vam to nebylo jasne, napisu to jeste jednou: zkuste se podivat, co vam to vase Forthovske "rozdel a panuj" vygeneruje v ostatnich jazycich (nez je Forth) za obludnosti na tema predavani argumentu do funkce. Rikal jste, ze ho pouzivate v Jave misto vicenasobneho breaku a mel jsem podezreni, ze by jste ho doporucil i v dalsich jazycich, treba v C misto goto.
Re: GOTO
celé vláknoRe: GOTO
celé vláknoBat se zapouzdrani mozna ano, ale zapouzdrovat pokazde, kdyz chcete pouzit dvojity break, ne. Tedy, jak je u optimalizace obvykle, zalezi na dalsich okolnostech - konkretne treba na poctu argumentu. Osobne me sice nenapada pripad, kdy by zapouzdreni bylo rychlejsi, ale verim ze takovy existuje. Krome toho pokud je vnitrni funkce static inline, muzete spolehat na to, ze ji prekladac vlozi zpatky a tim ziskate "cistci" kod za cenu trochu casu pri prekladu (tedy levne).
Re: GOTO
celé vláknoRe: GOTO
celé vláknoRe: GOTO
celé vláknoNicméně, právě proto v dnešních jazycích goto je. Myslím si totiž, že snaha za každou cenu obcházet goto v jazyku, který není nijak extra čistý ani v jiných směrech je bláznovství. Co třeba tohle?
http://www.cprogramming.com/tutorial/goto.html
http://www.exim.org/mail-archives/exim-dev/2005-August/msg00003.html
http://youngbloods.org/essays/argument_for_goto.html
Re: GOTO
celé vláknoAno, Ccko je jazyk jineho typu nez forth a obchazet v nem goto je nesmysl. Pro vetsi aplikace je to jazyk dobry, ale nikoliv vyborny. Bohuzel obecny vyborny jazyk zatim neexistuje - tim myslim, ze zatimco pro nektere projekty je vybornym jazykem Java nebo C++, pro mnohe je stale nejlepsi C i se svymi nevyhodami.
Uvedena situace je snad docasna a lze ji zmenit vylepsenim java JIT a C++ kompileru.
Re: GOTO
celé vláknoJak uz jsem psal v prispevku nize, predavani parametru je v TECHTO PRIPADECH reseno i v C-cku primitivne pres registry, ve skutecnosti se totiz pouzije inline funkce a dopad na vykonnost to nema zadny. JIT take pouzije inline funkce, takze se zadne casove ani prostorove narocne predavani parametru nekona.
Jinak cecko preklada na ruzne architektury, u nichs se napriklad takove obludnosti, jako je stack-frame ani nedaji rozume pouzit, takze slozitym predavanim parametru (ala x86) se neda argumentovat.
Re: GOTO
celé vláknoRe: GOTO
celé vláknoJa jsem byl po dlouhou dobu zastancem cecka, alespon co se tyce programu s naroky na rychlost, ale posledni verze JIT ("server" verze) me presvedcuji o tom, ze preklad s analyzou behu programu je pro mnoho veci vyhodnejsi - holt se az za behu zjisti veci, ktere prekladac pri kompilaci "statickeho" zdrojaku nemuze vedet :-)
Re: GOTO
celé vláknoPosledni CVS verzi Sun Javy jsem netestoval, ale IMHO stale plati, ze zatimco po delsim behu uz je program zoptimalizovany (kontroly mezi poli vyhazene na zaklade zjisteni, ze k prekroceni mezi nedojde a podobne), pri spousteni noveho kodu je porad rezie Javy dost vyrazna. Ano, pro mnoho velkych projektu to nevadi, protoze se to v celkove dobe behu ztrati ... ale obecne to neplati.
Re: GOTO
celé vláknoJa jsem JITko testoval na verzich 1.4 a 1.5, ta jedna-petka mela aplikovane nejake bug-fixy, ale urcite to neni nejnovejsi vec, spis tak o rok pozadu. Ano, ta rezie je opravdu velka, takze pro mensi utility, ktere se casto pousti, se to nehodi (to je jedna z veci, ktera mi na cele platforme Javy hodne vadi). Na druhou stranu napriklad TomCat nebo JBoss spousti Javovske servlety rychleji, nez Apache Perlovske skripty :-).
BTW, vzdycky jsem povazoval kod vylezly z cecka za "neprenositelny" v tom smyslu, ze cecko je vlastne urceno k tomu, aby se mezi platformami prenasely zdrojaky a ne binarky, u kterych se preklad provadi tak, ze se zvoli "nejmensi spolecny jmenovatel" vsech cilovych platforem. Protoze preklad binarky pro predem nezname platformy prakticky vzdy vyprodukuje neefektivni kod, napriklad dnes je porad popularni preklad pro i386, dnesni procesory toho umi podstatne vice (MMX, SSE2, pipelining atd.). Takze distribuce binarky, pokud to tedy neni osetreno nejakymi testy a vyberem spravne vetve kodu podle procesoru (objemova neefektivita), to cecko strasnym zpusobem degraduje, nehlede na to, ze nektere veci nejdou na i386 vubec napsat (napriklad multiprocessing ma podporu v jedne instrukci az i486, ale ten se stejne na platforme PC moc neujal). Z toho vyplyva, ze duraz na efektivitu prelozeneho kodu je na uzivateli (resp. jeho spravci), ktery by mel preklad provest tak, aby to bezelo co nejrychleji (-O3, -march atd. atd.).
Nebo se na celou efektivitu muzeme vyflaknout a pouzivat moderni i lety osvedcene dynamicke jazyky, ve kterych se aplikace pisou mnohem rychleji nez v cecku a nehrozi pritom to, ze jsem zrovna nedavno objevil v jedne bezne prodavane aplikaci za cca 120 000 Kc dosti usmevny memory leak.
Re: GOTO
celé vlákno...que? Viděl jste Forth aspoň z rychlíku? Kdyby totiž ano, pak bystě těžko něco takového mohl napsat. Režie Forthu na předání parametrů je nulová, režie návratu z funkce (slova) taky.
Re: GOTO
celé vláknoJasne, goto je v C-cku omezene a je to tak dobre, o tom se snad nehadame :-) Implementace v assembleru je velmi podobna smyckam a podminkam, takze zadne "prasarny" navic se nekonaji, v tomto by taky nemel byt problem.
V C-cku je predavani parametru v _TECHTO_PRIPADECH_ stejne jako ve Forthu, alespon u slusnych prekladacu. Jde o to, ze ty volane procedury/funkce jsou v 99% tak primitivni, ze se stejne vsechno preda v registrech a vlastne o predavani nemuze byt rec, protoze se prelozi jako inline.
Opravdu jde pouze o cistotu kodu, vsechnu spinavou praci nechame na prekladaci ci JIT.
Kdyz jsem u toho JIT: zrovna pred cca dvema tydny jsem neco podobneho zkousel kvuli porovnani rychlosti Javovskeho a C-ckovskeho kodu. Vypadalo to asi takto:
for (int j=0; j!=10000; j++)
for (int i=0; i!=10000; i++)
for (int k=0; k!=10000; k++)
volejfunkci(i,j,k);
// sorry za ty !=, maji tam byt mensitka, ale Root to zdrbe
C bez inline funkci bylo samozrejme neskutecne pomale, ovsem s inline funkcemi se rychlost ceckoveho a Javovskeho kodu uplne srovnala (rozdily cca 5%), takze JIT uz automaticky inline funkce rozezna, a to bez jakychkoli modifikatoru (zadne final ani static).

