• úvod
  • témata
  • události
  • tržiště
  • Přišli jste skrz odkaz na příspěvek, který již neexistuje.

  • 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
    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.
    XCHAOS
    XCHAOS --- ---
    offtopic, ale stejně určitě pro leckoho zajímavé:

    MS-DOS is 30 years old today | ExtremeTech
    http://www.extremetech.com/computing/91202-ms-dos-is-30-years-old-today

    jo... kdybych býval měl v -nácti přístup k Linuxu, a nemusel se potýkat s MS-DOSem ... :-)
    XCHAOS
    XCHAOS --- ---
    Sacred language - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/Liturgical_language
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Shell tim neco (nevyjimkovyho) handluje, napriklad. Ale co ja vim, ja sem windowsak :-)
    XCHAOS
    XCHAOS --- ---
    heleďte jedu na dovolenou, asi ode mě budete mít chvíli klid. čau.
    XCHAOS
    XCHAOS --- ---
    ISTEVE: tedy, to moje try { } je implementované právě pomocí setjmp/longjmp - takže těžko říct. na co se to používá jiného kromě odchytávání chyb hlouběji ve funkcích, to fakt nevím.
    ISTEVE
    ISTEVE --- ---
    XCHAOS: Dovol mi vypichnot jeden bod: "goto a setjmp/longjmp is right out. | Místo toho je k dispozici struktur try { fail() } except() { } vzdáleně podobná C++, Javě nebo Pythonu, která jejich funkčnost plně nahrazuje,"

    Opravdu si myslis, ze v C plne nahradis setjmp/longjmp pomoci try/fail/except ala exception handling v C++?
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Hele, koukals na ten link na pure C implementaci toho auto-release poolu? Podle mne to resi vesmes vsechno co se snazis vyresit ty, akorat to neni tak leaky abstraction.
    REDGUY
    REDGUY --- ---
    XCHAOS: napíšeš kód, který to vůbec neřeší - a když pak potřebuješ ten kód z nějakého důvodu zasmyčkovat (např. z CGI skriptu uděláš FastCGI skript, u webové aplikace) - tak tu smyčku celou dáš do jednoho velkého forget - Normalni clovek by si v takovehle situaci (kdyz uz by to chtel resit hnusnym hackem a ne spravne) napsal jednoduchej wrapper nad malloc, kterej by kazdej alokovanej blok pridal do nejakyho spojovyho seznamu a funkci, ktera by pak na konci te smycky vsechno v tom seznamu uvolnila. Jak to resi XChaos? Napise necitelny makra(*), ktery zmrzacej C a prinutej ho ridit se spoustou omezeni a vyjimek. Takhle vypada ta "inovace" ktere se tolik branim? 8)))

    (*) samozrejme, ne "napise", ale "vysni si", protoze skutecna implementace neexistuje a dlouho existovat nebude. Kolik dalsich problemu se objevi az/pokud to napise, to je uplne jina kapitola. Ostatne, je to legracni kolik problemu jsem ti nasel v kodu, ktery jeste neexistuje 8))

    XCHAOS
    XCHAOS --- ---
    REDGUY: éééééé... ty jo, asi takhle: napíšeš kód, který to vůbec neřeší - a když pak potřebuješ ten kód z nějakého důvodu zasmyčkovat (např. z CGI skriptu uděláš FastCGI skript, u webové aplikace) - tak tu smyčku celou dáš do jednoho velkého forget { } (a předtím inicializace proměnných té aplikace bude pochopitelně před tím forget { } ).

    víceméně kdybys viděl desing-patterns pro které je to určené, tak by ti vše bylo jasnější (doufám). a neříkám, že nemáš svůj díl pravdy ! (představ si typicky načítání ze souboru - potřebuješ typicky většinu věcí zahodit, ale to co hledáš, ponechat v paměti, a neztrácet čas kopírováním.. já uvažuju o nějakém recycle(), které by dokázalo uvolnit paměť z kontextu ... jako že plošná dealokace by byla rychlá, ale existovala by možnost vyhodit i dílčí flák paměti, byť ne vždy by to bylo efektivní...)
    REDGUY
    REDGUY --- ---
    XCHAOS: jednoduše se paměť uvolní na konci programu ROFL. Cili tvoje oblibene leaky. Na co v tom pripade potrebujes vlastni knihovnu kdyz presne to same umi malloc sam ale fakt nechapu.

    Prosim, neutikej od otazky: proc by kdokoliv krome tebe mel pouzivat alokaci pameti pres tve kontexty? Jak bys to propagoval? Je to slozitejsi, omezuje to, mrzaci to C, kde je vyhoda? (krome velmi osobniho "nemuzu pred Redguyem priznat ze to je na nic", samozrejme)
    XCHAOS
    XCHAOS --- ---
    BTW precedentem pro "registraci něčeho, co se má udělat nakonec", je funkce atexit() které se předávají handlery na funkce které se mají zavolat při exit() .. v C prakticky každou slepou uličku už někdo prošlapal.

    pokud udělám obecné queue() na zařazení čeho si do fronty, tak to bude velké dobro, protože pak by se to vykonalo při každém escape() z jakéhokoliv scope - v podstatě v céčku chybí nějaké "atbreak" a "atreturn", které by bylo ekvivalentní tomu atexit()
    XCHAOS
    XCHAOS --- ---
    REDGUY: jednoduše se paměť uvolní na konci programu - asi jako když použiješ malloc() bez free() :-) (jak myslíš, že teď kompiluju ty svoje testovací progámky, když kontexty ještě nemám hotové ? :-)

    takhle, jestli mi to přijde jednodušší... kdysi dávno mě C okouzlilo právě tím malým množstvím základních stavebních kamenů. teď mi ale přijde, že některé stavební kameny tam poněkud chybí... samozřejmě jsou lidi, co si radši všechno DIY stylem poslepují sami z deseti instrukcí a dvaceti kanonických knihovních funkcí, a jsou lidé, kteří nemají problém naučit se nějakých 200-300 příkazů a předdefinovaných funkcí v nějakém vyšším jazyce, s tím že ty knihovny pak "všechno dělají za ně" - a oni se mohou tvářit, že všechno dělají sami.

    někdo vozí auto do servisu, někdo si je schopen většinu základních závad opravit sám - co víc k tomu chceš slyšet ? není důvod, proč by to v případě psaní kódu mělo být jinak: někdo to poslepuje z prefabrikovaných kompenent, a je spokojen, jak to vyřešil, někdo jiný zase chce rozumět úplně všemu a do detailů vše řešit sám.

    já nikoho nesoudím, pouze cílím na "šedou zónu" mezi těmito dvěma extrémy.
    Kliknutím sem můžete změnit nastavení reklam