• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    REDGUY
    REDGUY --- ---
    XCHAOS: V cam je tedy podle tebe vyhoda null terminated stringu pri tzv "on-the-fly" zpracovani? Musim ho mit v pameti, pamet musi byt predalokovana (resp. pokud neni, musim ji reallocovat v obou pripadech)? Kde je konkretni vyhoda? Nejak mi to z tveho vysvetlovani neni jasne, prosim, vysvetli to podrobneji.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: mno, můžeš mít předalokovanou paměť... ale někde musíš mít uloženou tu délku, a postupně jí zvyšovat, jak ti načtený kus stringu přibývá.

    a tady by bylo závislé na konkrétní implementaci, jestli by si algoritmus pokaždé sahal na místo, kde je uložená délka stringu - a nebo jestli by si to okopíroval do proměnné na začátku.

    samozřejmě, u toho postupného načítání vznikne stejný problém, kdyby si chtěl třeba zavolat strlen() na začátku - jenže právě "tradiční" čtení null-terminated stringů je většinou "zleva doprava" - a ne, že se nejdřív zeptáš jak je to dlouhé.

    možná, že "výhoda" o které mluvím, hrála v těch 70tých letech větší roli, než dneska... těžko říct, moc si neumím představit, jak se tehdy doopravdy programovalo.

    JACHYMKO: hmm, vzhledem k tomu, že filename bývá dlouhé řádově max. desítky bajtů (tvrdý limit je tuším 256, nebo tak něco), tak zrovna TOHLE nevidím největší bottleneck POSIX API :-) (jako že několik vážných bottlenecků tam jinak existuje... hlavně, že se občas kvůli celkové koncepci práce se streamy a soubory kopírují větší bloky dat sem tam po paměti, když by se to _teoreticky_ dalo udělat jinak, apod.)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Jak s nim chces pracovat, s ohledem na jeho umisteni v pameti? Bude mas predalokovanej mrak pameti do ktery ho sosas (a pak muzes mit fixed length), nebo to reallocujes jak to jde, a pak s nim nemuzes delat vubec nic, protoze ti skace pameti jak nadmuta koza.
    XCHAOS
    XCHAOS --- ---
    (je to opět odbočka k mému filosofování o tom, že algoritmy pracující s případy, kdy "víme, kolik toho bude", jsou úplně jiná kategorie, než algoritmy třídy "nevíme, kolik toho bude...)
    XCHAOS
    XCHAOS --- ---
    jako já jsem o tomhle přemýšlel docela hodně, a musím se null-terminated stringů v některých ohledech zastat. především: ve chvíli, kdy se string začíná zpracovávat, vlastně ještě vůbec nemusíme vědět, jak bude dlouhý !

    dnes si všichni představují, že string na začátku vždycky musí být _někde_ v paměti... ale to prostě není pravda. null-terminated string může vznikat a být spracováván on-fly, a jeho zdrojem může být nějaké sériové zařízení (dnes nejčastěji TCP stream, historicky třeba sériový port...). V podstatě díky koncepci null-terminated stringu můžeme např. pracovat se stringem, jehož začátek už dorazil v prvních packetech - zatímco konec je pořád ještě na cestě.
    REDGUY
    REDGUY --- ---
    Co takhle misto off-topic spamu o historii DOSu od nejmenovaneho trolla neco k veci? 8)

    The Most Expensive One-byte Mistake - ACM Queue
    http://queue.acm.org/detail.cfm?id=2010365
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: jak říkám, nejsem windowsolog, ale můj obecný pocit byl, že to stálo za hovno.

    chápej, zkus si něco vyhrabat, jak se programovalo v Borland C++ 3.1 pro Windows 3.1 ... co všechno bylo potřeba inicializovat, apod.

    a pak ti někdo ukáže Unix, ve kterým je stdin, stdout a stderr, a hudba se dá hrát tak, že pošleš obsah souboru na /dev/audio ... v polovině 90tých let prostě nebylo těžké rozhodnout se pro Unix.

    později se použitelnost woken diskutabilně zlepšila, ale prostě programátorsky jsem to už nijak zvlášť neřešil: elegance základní unixové architektury je značná, i když uživatel-neprogramátor to bude mít potíže ocenit. (blbý je, že v dnešní událostma řízený době to už není taková sláva, no..)
    ANT_39
    ANT_39 --- ---
    ANT_39: A ten strom odkazu, co od tam vede, taky neni spatnej, btw.
    REDGUY
    REDGUY --- ---
    JACHYMKO: Ono obecne The Old New Thing je drobne cteni. Pro me nejzajimavejsi tam je ten neustalej (az do nedavna?) duraz Microsoftu na zpetnou kompatibilitu skoro za kazdou cenu a dusledky, jaky to ma. Sice to neni pristup kterej bych zvolil ja, ale plne je chapu.
    ANT_39
    ANT_39 --- ---
    JACHYMKO: Dik za odkaz.
    XCHAOS
    XCHAOS --- ---
    ANT_39: preemptivní multitasking v DOS boxech začínal jakž-takž fungovat pod Windows 95... ale pořád byly problémy (nebo složitosti) s grafikou a komunikačními drivery pro modemy... paradoxně nejčastějším zadáním multitaskingu tehdy ale bylo "chci stahovat něco přes modem a u toho gamesit svojí oblíbenou DOSovskou hru" :-) (mluvím o roce 1995)
    ANT_39
    ANT_39 --- ---
    JACHYMKO: Zajimavy, mel jsem o tom podobny predstavy jako XCHAOS... v te dobe jsem programoval v basicu na atari, takze jsem o tom dohromady nic nevedel, ale vzdy jsem mel za to (hlavne na zaklade toho, co jsem slysel), ze tam preempce nefungovala.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: ehm, no tak kdo tehdy zkoušel trochu víc to multitaskování ve Windows 3.x, tak právě radši rychle přešel na to Desqview, nebo tak něco :-)

    jsem myslel, že 32bitový byly až Windows 95 ... nevím, nejsem windowsolog, pouze si pamatuju, že to bylo třeskutě nepoužitelný, a pro skutečně produkční účely se na běžně dostupných konfguracích (typu 4 MB RAM, apod.) používal MS-DOS ještě hluboko v polovině 90tých let.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: tak Windows 3.x samozřejmě byly DOS, že jo. a tím bych tuhle offtopic debatu fakt ukončil.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: co je "původní PC" ?

    krátce jsem měl přístup k více či méně obskurním 286kám, ale moje první vlastní PC byla 386ka. v té době jsem Linux neznal - ale faktem je, že na stejné architektuře (486ky, Pentia) šlo s pomocí vyzrálejšího Linuxu s jádrem 2.x postavit vcelku stabilní, na dálku administrovaný internetový server.

    to bych nenazval jako "bastl určenej primárně na hraní" - ve skutečnosti, na konci 90tých let v době dot com boomu vydělal ten "spíchnutej" bastl nainstalovanej na secondhand PC připojený do netu leckomu miliony, šťastlivcům jako Google pak rovnou miliardy.

    a naproti tomu - hlavním argumentem pro nasazení MS-DOSu a později Windows byla dostupnost kvalitních her :-) s vyděláváním peněz to bylo složitější (ano - šlo je vydělat tím, že si prodal spoustu PC s MS-DOSem a později Windowsy nějaké rozsáhlé kancelářsky-orientované firmě: ale vydělat peníze koupí této platformy - to už byla jiná kapitola...)

    takže při posuzování toho, co přesně v 90tých letech naplňovalo kategorii "bastl na hraní" bych byl opatrný. ano - na desktopu možná, a v 90tých letech málokoho napadlo použít PC jinde než na desktopu. Ale někteří z těch, které to napadlo, jsou dnes multimilionáři. I díky Linuxu.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: jo, a nezapomínej taky na nutnost držet kompatibilitu s psacím strojem. té se i v 90tých letech přikládal velký význam, a co teprve v 80tých... :-)
    XCHAOS
    XCHAOS --- ---
    BLAMI: co to je "počítačový panic" ? dnes se malé děti učí zacházet s poměrně složitými mobily dříve, než vůbec jdou třeba do školy, nebo tak... předvést dětem příkazovou řádku bude něco jako mě ukázat ten telefon rozmontovaný (konkrétně starý, klasický mechanický telefon - jo, v tom jsem uměl "spravit" mechanicky zaseklé zavěšovací vidlice a možná seřídit zvonění :-)

    opravdu jednoduchý systém pro začátečníky byl 8bit CP/M, když jsme u toho. oproti MS-DOSu neměly diskety ani adresáře, a hodně logické bylo i zavádění programů do paměti (vše tam stačilo staticky zlinkovat a spouštět od adresy FFH :-)

    každá další éra byla více jednodušší pro toho, kdo chtěl počítače jen používat jako uživatel - případně používat pro vývoj (jednoduchých) aplikací nějaké hotové (složité) vývojové prostředí. ale jiná věc je pochopit, jak věci fungují: a tady skutečně pochopit sekačku na trávu může být jednodušší, než pochopit motor ze stíhačky.

    problém je, že MS-DOS používal motor ze sekačky na trávu pro pohon seriózně se tvářícího sportovního letadla. zatímco Linux by spočátku jen ten motor ze stíhačky -ale bez té stíhačky okolo, dalo se s ním max. jezdi dokola po runwayi na kolečkách od sekačky na trávu :-)
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: to jsem taky zkoušel - a měl jsem aspoň 6 virtuálních konzolí, které se nekousaly :-)

    jasně, nebyly pro to tehdy aplikace... tak jsem v 90tých letech nějaký čas používal kombinaci MS-DOS + Desqview (takový pseudo-multitasking). na svou dobu - resp. proti všemu, co bylo k dispozici jako alternativa - to nebylo špatné - ale prostě už tehdy bylo patrné, že Linux je opravdový operační systém, a tamto jen narychlo spíchnutý bastl.
    BLAMI
    BLAMI --- ---
    XCHAOS: ja teda nevim ale jsem za DOS dost vdecnej. V dobe kdyz jsem byl malej a vicemene uzivatel, byl natolik jednoduchej ze jsem ovladani pocitace rychle ovladl a mohl se vrhnout na slozitejsi ukony. Predstava ze bych jako pocitacovy panic usedl za Linux me trochu desi. A pak i z ty edukativni stranky jsem za nej rad. Kdyz jsem se ucil chapat co takovej operacni system a potazmo celej pocitac jak dela, DOS byl zase natolik jednoduchej, ze jsem pomerne rychle ziskal naivni predstavu :)
    XCHAOS
    XCHAOS --- ---
    MS-DOS byl stupidní systém, že jo... prostě co se hudby týče, měl jsem se asi narodit tak o 20 let dříve... ale co se osobních počítačů týče, tak o 20 let později.
    Kliknutím sem můžete změnit nastavení reklam