• ú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: když ani neexistuje shoda na tom, o co se hádáme - hadame se o tohle:

    [ XCHAOS @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] Obecně práce s textem (což bylo původní zaměření celého C)

    Coz jsem uz davno vyvratil jako blabol. Ted uz cela "debata" je jenom o tom, ze se snazis tu pitomost, cos napsal, zamaskovat a predstirat, ze vlastne je o neco jineho. Kdy se objevila string.h fakt nema zadnou relevanci.

    Linuxový kernel dodnes nemá k dispozici standardní (userspace) knihovnu, ale pouze určité paralely, které jsou popsané v kernel headers. - coz mi prijde zase jako jeden z tvejch zblebtu, ktery ukazujou, ze moc vlastne netusis, o cem mluvis, ale hrozne rad motas dohromady ruzny odborny vyrazy, ktery nekde zaslechl. Mozna by se dal pomoci Markovovejch retezcu napsat docela slusnej simulator XChaose 8))
    REDGUY
    REDGUY --- ---
    XCHAOS: bohužel si ale vygooglil stejně málo o tom, jestli string.h - ale to je uplne a naprosto irelevantni. C vzniklo jako jazyk pro implementaci UNIXu, tecka, hotovo. Tvuj blabol ze "původní zaměření celého C byla prace s textem" je tim proste jednoznacne vyvracenej (plus samozrejme i tim, ze jeste dneska, po skoro padesati letech vyvoje, je C zcela na prd co se prace s textem tyce). To jestli "string.h" existoval od zacatku nebo ne, je proste nepodstatny. Je to jen tvoje klasicky mlzeni, ktery ma zakrejt puvodni blabol.
    XCHAOS
    XCHAOS --- ---
    REDGUY: jak můžeš tvrdit, že jsem se mýlil, když ani neexistuje shoda na tom, o co se hádáme?

    teoreticky bych se mýlil, kdyby nějaká knihovna na práci se stringy v C předcházela první zdroj financování pro Unix. Toto se zdá nepravděpodobné, protože Unix byl podle všeho původně napsaný v assembleru a teprve _později_ byl kernel portován do C (jako první kernel jakéhokoliv OS, ale nicméně, není tedy pravda, že Unix by od začátku byl vyvíjen v C) a teprve _později_ jak jsem doložil, začaly být do C portovány i systémové utility (velmi zhruba svět toho všeho, z čeho se později staly GNU utils).

    Jestli jsem to byl já, kdo tvrdil, že Unix byl hned od začátku naprogramován v C, tak to jsem se spletl (akorát se už nepamatuju, co jsem přesně tvrdil - a popravdě, nepamatoval bych si to ani kdyby to byla náhodou pravda :-)

    Linuxový kernel dodnes nemá k dispozici standardní (userspace) knihovnu, ale pouze určité paralely, které jsou popsané v kernel headers.

    Slavná Stallmanova představa systému GNU jako "mikrokernelového systému", tedy velmi zhruba, jak se mi to jeví dnes, říkala asi něco až tak provokativního a šokujícího, jako že by i při programování kernelu mohla být k dispozici celá standardní knihovna a ne jen její osekaná verze (toto je popravdě tak málo radikální požadavek, s přihlédnutím k tomu, jak moc barebone nástroje standardní knihovna nabízí, že vůbec nechápu, jak se na celý ten problém, který působil mlhavě už za mého mládí, mohou dnes koukat třeba mladí programátoři, kterým je ještě o 30 let méně, než mě...)

    Zpět k userspace: kdy se přesně objevilo něco, co by připomínalo string.h nebo standardní knihovnu, podle mě pořád nevíme ani jeden z nás-
    XCHAOS
    XCHAOS --- ---
    REDGUY: ok, takže Unix byl nejdřív v assembleru a pak byl přepsaný do C, budiž. Původní Unix byl ale jen hračkový systém, ale posléze začal být jeho vývoj financován v rámci projektu na zpracování textů.

    bohužel si ale vygooglil stejně málo o tom, jestli string.h existovalo v "původním C" napsaném na "původním Uniuxu", nebo jestli se featury, aspoň trochu připomínající standardní knihovnu používanou v 80tých letech, objevily až v důsledku toho, že na Unixu s kernelem přepsaným z assembleru do C začaly být základní (textové, jaké jiné) systémové utility taky přepisovány z assembleru do C (což, jak jsem vygooglil, nastalo až _posléze_, až když byl do C portován kernel)
    REDGUY
    REDGUY --- ---
    XCHAOS: že by se bývala standardní knihovna objevila až později po kernelu? pořád žádný jednoznačný důkaz - Dukaz ceho? O tomhle debata vubec neni. Zase xchaosovske mlzeni a presouvani goalpostu. Klasika. Napsal jsi blabol, ja ti dokazal, ze to byl blabol. Takze misto "uh oh, mylil jsem se" zacnes placat neco o tom, jestli stdlib byl az po kernelu? LOL 8)))
    XCHAOS
    XCHAOS --- ---
    http://csapp.cs.cmu.edu/3e/docs/chi
    Writing the Unix kernel in C had given us enough confidence in the language's usefulness and efficiency that we began to recode the system's utilities and tools as well

    hmm, hmm, hmm spousta zajímavýho čtení... že by se bývala standardní knihovna objevila až později po kernelu? pořád žádný jednoznačný důkaz... C-style null terminated stringy byly feature od samého začátku, ale kdy se objevily funkce ze string.h? (zvlášť když makra preprocesoru byly ještě dlouho jen "optional"...) hmm, hmm...
    REDGUY
    REDGUY --- ---
    XCHAOS: Je celkem překvapivý, jak málo se dá na internetu vygooglit o historii jazyka C kromě obecných keců. - ano, pochopitelne, pokud se rozhodnes ignorovat veci, ktere vyvraceji tvoje blaboly, tak tezko neco vygooglit. Tohle jsou taky obecne kecy? Kdyz to jasne rika, ze C vzniklo kvuli impementaci Unixu na PDP-11? Zvlastni, pise se to primo na te wikipedii, kterou jsi citoval. Jakpak to, ze jsi to prehledl? 8)))


    The origin of C is closely tied to the development of the Unix operating system, originally implemented in assembly language on a PDP-7 by Dennis Ritchie and Ken Thompson, incorporating several ideas from colleagues. Eventually, they decided to port the operating system to a PDP-11. The original PDP-11 version of Unix was developed in assembly language. The developers were considering rewriting the system using the B language, Thompson's simplified version of BCPL.[11] However B's inability to take advantage of some of the PDP-11's features, notably byte addressability, led to C. The name of C was chosen simply as the next after B.

    The development of C started in 1972 on the PDP-11 Unix system[13] and first appeared in Version 2 Unix.[14] The language was not initially designed with portability in mind, but soon ran on different platforms as well: a compiler for the Honeywell 6000 was written within the first year of C's history, while an IBM System/370 port followed soon.


    Nebo co tenhle uryvek z predmluvy k K&R? Taky "tezko vygooglit", protoze rika neco, co se ti nelibi? 8)))


    REDGUY
    REDGUY --- ---
    XCHAOS: C bylo před tím, než se stalo nativním jazykem operačního systému Unix, popravdě celkem dost okrajová záležitost. - C _VZNIKLO_ jako jazyk Unixu. Mas to doslova a do pismene napsany na ty wikipedii nebo treba v predmluve k K&R. "Pred tim" to nebyla nejaka "okrajova zalezitost", ale proste neexistovalo. Takze tolik asi k tomu, kdo kolik vi o historii C 8)))

    Tahle tvoje Trumpovsko-Babisovska stranka je proste fascunujici. Ja ti ukazu zdroj, kterej jednoznacne dokazuje to, co rikam a ty presto znovu a znovu opakujes svuj blabol. Opravdu tomu veris? Mas nejakou selektivni slepou skrvnu, ktera zakrejva fakta, ktery se nehodi do tvoji ideologie? Nebo proste vis, zes placnul blbost, ale nemas odvahu to priznat?


    budu si psát o čem chci - zatímco ty, pokud to tu budeš dál tapetovat, dostaneš ban. - no samozrejme. Dat ban je mnohem jednodussi, nez kuprikladu vysvetlit [ REDGUY @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] nebo [ REDGUY @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] . No tak, sup sup, dej mi banana, at ti nikdo nerusi tvoje megalomansky sneni o tom, jak se lidi budou ucit programovat ctenim kodu, generovaneho prekladacem xJazyka 8))))))
    XCHAOS
    XCHAOS --- ---
    viz:
    C (programming language) - Wikipedia
    https://en.wikipedia.org/wiki/C_(programming_language)#History
    Also in 1972, a large part of Unix was rewritten in C.[15] By 1973, with the addition of struct types, the C language had become powerful enough that most of the Unix kernel was now in C.
    ...
    The large number of extensions and lack of agreement on a standard library, together with the language popularity and the fact that not even the Unix compilers precisely implemented the K&R specification, led to the necessity of standardization.

    Výzkum, jak vypadala "standardní knihovna" (která by v té době stěží byla "standardní") v roce 1973 (kdy jsem se mimochodem narodil :-) by tedy mohl být velice zajímavý. Podle mě v počátích internetu ještě pořád mohly existovat nějaké staré online zpřístpněné mirory, kde by to bývalo šlo ještě dohledat.. dnes by to ale byly už jen mirory mirorů mirorů...
    XCHAOS
    XCHAOS --- ---
    Je celkem překvapivý, jak málo se dá na internetu vygooglit o historii jazyka C kromě obecných keců.
    Ano, první standardizace, ANSI C norma, vznikala v letech 1983 až 1989. "tradiční C" mělo několik poměrně zásadních odlišností oproti ANSI C (i když oproti jazykům s vyšší mírou abstrakce jde o nepodstatné detaily).
    The History of the C Programming Language
    https://www.techopedia.com/the-history-of-the-c-programming-language/2/32996
    http://ee.hawaii.edu/~tep/EE160/Book/chapapx/node7.html
    History of C Language - javatpoint
    https://www.javatpoint.com/history-of-c-language

    Co se mi ale nedaří najít, je historie standardní knihovny: tvrzení, jestli se práce se stringy objevila ve standardní knihovně kvůli Unixu, nebo jestli bylo rozhodnuto použít pro Unix C standardní knihovnu, která už práci se stringy obsahovala, se mi teda nedaří rozhodnout tak ani onak
    XCHAOS
    XCHAOS --- ---
    REDGUY: popravdě, nemyslím si, že o přesné historii okolnosti rozvoje a šíření Céčka víš o moc víc, než já.

    C bylo před tím, než se stalo nativním jazykem operačního systému Unix, popravdě celkem dost okrajová záležitost. doslova ten "kapotovaný assembler", jak kdekdo rád vykřikuje. Myslím, že zejména tehdejší libc abychom si moc nerozeznali...

    Co přesně obsahovaly header fajly a knihovny dostupné pro C, než se se v něm začal psát Unix (jádro + soubor systémových utilit), to by byla zajímavá programátorská archeologie (která by nás podle mě překvapila teda oba dva).

    REDGUY: budu si psát o čem chci - zatímco ty, pokud to tu budeš dál tapetovat, dostaneš ban.
    XCHAOS
    XCHAOS --- ---
    REDGUY: popravdě, nemyslím si, že o přesné historii okolnosti rozvoje a šíření Céčka víš o moc víc, než já.

    C bylo před tím, než se stalo nativním jazykem operačního systému Unix, popravdě celkem dost okrajová záležitost. doslova ten "kapotovaný assembler", jak kdekdo rád vykřikuje. Myslím, že zejména tehdejší libc abychom si moc nerozeznali...

    Co přesně obsahovaly header fajly a knihovny dostupné pro C, než se se v něm začal psát Unix (jádro + soubor systémových utilit), to by byla zajímavá programátorská archeologie (která by nás podle mě překvapila teda oba dva).

    REDGUY: budu si psát o čem chci - zatímco ty, pokud to tu budeš dál tapetovat, dostaneš ban.
    REDGUY
    REDGUY --- ---
    Hele, XChaosi, myslis, ze bys misto placani nesmyslu o vzniku C mohl odpovedet na neco podstatenho? Treba [ REDGUY @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] nebo [ REDGUY @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] ? Nebo je to zase dalsi priklad toho, ze nepohodlny otazky zarputile ignorujes a misto toho radsi mlzis o prkotinach?
    REDGUY
    REDGUY --- ---
    XCHAOS: Ano. _NASTROJE_ na zpracovani textu byly napsane v C. To ale fakt neznamena, ze na zpracovani textu bylo zamerene C.

    třeba POSIX regexpy jsou implenentované přímo v libc - akorat ze POSIX prisel az dost dlouho po vzniku C, takze irelevantni mlzeni.

    jak se v 70tých letech pracovalo se stringy např. ve Fortranu. - spatne, protoze Fortran je jazyk pro vypocty. Dost pitomej argument.

    Unix se tedy rozhodli implementovat v C, protože z dostupných jazyků nejlépe podporovalo práci se stringy... - HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA. Jezis, ty ses proste fakt idiot. Par zprav dozadu mas primo citat z wiki, jak to bylo ve skutecnosti. A presto takhle blabolis....

    Ale jasne, mozna to vis lip. Takze prosim nejakej overitelnej zdroj a oprav wikipedii. Sup sup, prece nechces, aby tohle byl dalsi priklad tvyho zmatenyho blaboleni 8))))
    XCHAOS
    XCHAOS --- ---
    REDGUY: tyhle nástroje byly napsané v C, a když jsme u toho, třeba POSIX regexpy jsou implenentované přímo v libc. Vývoj nebyl přímočarý, ale C skutečně ve své době nabízelo knihovnu pro práci se stringy jako součást standardní knihovny (byť se dnes chytáme za hlavu nad tím, jak je špatná). Zkus si zjistit, jak se v 70tých letech pracovalo se stringy např. ve Fortranu... nemluvě o jazycích, u kterých se předpokládalo, že je použije koncový uživatel, tzn. např. Basic.

    Hmm, že C vzniklo jako jazyk pro implementaci operačního systému pro PDP11, to vím.. ale zadáním operačního systému Unix bylo pracovat s texty. Unix se tedy rozhodli implementovat v C, protože z dostupných jazyků nejlépe podporovalo práci se stringy... (a to zejména s přihlédnutím k tehdejším omezeném výkonu počítačů, nedostatku paměti, apod.)

    Debata, jestli bylo dřív vejce nebo slepice je zajímavá, ale sám připouštíš, že C bylo vytvořené, aby mohl být implementovaný operační systém. Samozřejmě, že můžeš tvrdit, že dle kanonické mytologie byl operační systém potřeba, aby mohla být implementována hra Space Travel :-)) ale fakticky Bell Labs začal do Unixu lejt prostředky, když měl zadání na systém na zpracování textů.

    (Otázka samozřejmě je, kdy začalo C vypadat tak, že bys ho možná poznal a že by překompilovalo nějaký tvůj zdroják... jestli už před Unixem, nebo až dlouho potom)
    REDGUY
    REDGUY --- ---
    XCHAOS: nástroje pro tu práci s textem tehdy byly napsané v C - Aha. A procpak se asi nastroje pro praci s textem, jako sed nebo awk, vubec psali? Kdyz podle tebe bylo pro praci s textem urcene C? Podle tebe bylo C tak zamereny na praci s textem, ze si tenkrat radsi napsali sed, awk a dalsi veci protoze... proc? Protoze se nudili? 8))))

    A kdyz jsme u toho "neco si precti", co kdyby sis prectel treba tvoji oblibeneou wikipedii?

    The original PDP-11 version of Unix was developed in assembly language. The developers were considering rewriting the system using the B language, Thompson's simplified version of BCPL.[11] However B's inability to take advantage of some of the PDP-11's features, notably byte addressability, led to C. Doslova a do pismene, C vzniklo jako jazyk pro implementaci operacniho systemu. A to jsem si myslel, ze aspon o tom C neco vis. A pritom je to zase klasika: meles nesmysly o vecech, kterejm nerozumis a kdyz placnes pitomost, nejsi schopnej to priznat a jen se do toho zaplejtas dal a dal a dal...

    A jako obvykle, velmi hlasite a usilove trapne mlceni o tech podstatnych otazkach. Hlavne to zamlzit a odskrolovat pitomostma o tom, jak C bylo na "praci s textem 8)))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ... dokonce i celého Unixu. nástroje pro tu práci s textem tehdy byly napsané v C, takže logicky, C mělo třeba silnější stringovou knihovnu, než co já vím - v té stejné éře Fortran. Něco si o tom přečti.
    REDGUY
    REDGUY --- ---
    XCHAOS: v C je čárka , taky například operátor a ne nějaká základní konstrukce jazyka. - v C neni carka zakladni konstrukce jazyka? Operatory nejsou zakladni konstrukce C? Jo, od cloveka kterej si mysli, ze "práce s textem byla původní zaměření celého C" lze takovou pitomost ocekavat 8))

    stejně jako ve funkcionálním jazyce všechno je funkce - ne, neni. Prosim, prestan placat o vecech, kterym nerozumis.

    teď už zbývá jen začít - ver mi, nemuzu se dockat 8))) Nejakej casovej odhad? Ale kdybys predtim odpovedel na tech par otazek, co jsem tady napsal, bylo by to super. Rozumis, varianta "trapne mlceni" je nejnudnejsi mozna 8))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ty to hrozně hrotíš. instrukce je vlastně takový operátor bez návratového hodnoty ... šokující zjištění: v C je čárka , taky například operátor a ne nějaká základní konstrukce jazyka.

    stejně jako ve funkcionálním jazyce všechno je funkce, tak je syntaxi jazyka možné poskládat čistě jen z operátorů :-) zápis by pak trochu připomínal regexpy (ne, že by pro mě byly srozumitelné, většina z nich... ale to mi nebrání snažit se vymyslet turing-complete regexpy :-))

    ano, jistě metody zabudované, nativní třídy (jako string v Pythonu) jsou v jazyce jiná kategorie, než základní flow control struktury jazyka. na druhou stranu: a co jako? máš nějakou jinou motivaci sem psát, než snažit se dokazovat, že vše co napíšu je kravina?

    ANT_39: já k tomu směřoval vždy.. vždy mi zajímalo, co je "uvnitř" programovacích jazyků... pochopit, co je uvnitř Basicu nebo C nebylo při znalosti základních instrukcí assembleru zas tak těžké, ale pochopit jak jsou implementované abstrakce vyšších jazyků je výzva (a hlavně soutěžení s nima, třeba co do výkonu).

    stručně řečeno.. teď už zbývá jen začít
    REDGUY
    REDGUY --- ---
    Hele, dalsi vec:

    je to spíš zacílené na původní vývoj. třeba i jen hračkového kódu. nic velkého.
    Já uvažoval o něčem jednodušším, bližším skriptovacím jazykům, po kterých dnes sáhne většina vývojářů, když se rozhodnout napsat jen něco malého

    Co to znamena? Cim se lisi jazyk pro "hrackovy kod", "nic velkeho", "neco jen maleho" od jazyka pro "velke veci"? Protoze kdyz se podivam na ty skriptovaci jazyky, o kterych mluvis, tak ty moderni, rekneme Python, Ruby, Perl, Node.js nijak na "maly" veci omezeny nejsou. Muzu v nich stejne dobre psat oneliner, storadkovej one-off bastl i obrovskej web-scale projekt. S tim tedy, ze to "moderni" znamena vlastne "poslednich dvacet let". Takze, v cem bude omezenej tvuj jazyk? A hlavne... neni to tak trochu idiotske, uz od zacatku ho vedomne omezovat? Proc by do nej nekdo jakkoliv investovat cas a usili? Kdyz neco zacnu, ono se to ujme a budu to potrebovat vyrust z "neco maleho" na "neco velkeho", tak zjistim, ze jsem v hajzlu, protoze xChaos svuj jazyk navrhl jen na "male veci"? A neni tak trochu v rozporu tohle omezeni s tim, cos rikal o prinosu kompilovani do C? Ze ted si budu prekladat do PHP a pozdejc, az budu potrebovat vetsi vykon, tak do C? Neni nahodou dost pravdepodobny, ze okamzik "potrebuju kompilovat do C" prijde zhrube ve stejne dobe, jako okamzik "uz to neni hrackovy, maly projekt, ale neco vetsiho"? Povidej, vysvetluj 8))
    Kliknutím sem můžete změnit nastavení reklam