Re: Jádro pudla (Cernobily svet) :-)

Ales Prochaska prochaska@alsoft.cz
Sobota Březen 4 10:41:46 CET 2006


Je napsanej v příšeným C. Já to zkusím vysvětlit, ale prosím nebijte
mě, jestli z toho bude nějaký flame.

C si historicky nese už od svého vzniku jeden podstatný problém, totiž
že nemělo pole. V manuálu se sice psalo, že pole má ale není to tak -
mělo jen několik syntaktických featur jak neexistenci pole obejít
(mluvím hlavně o pointerové aritmetice (pak jsou tam ještě nějaké
nepodstatné drobnosti jako že index pole v závorkách je vlastně
ekvivalentní dereferenci pointeru s přičteným indexem)). Milovníci C
povýšili význam pointer = pole na základní pravdu a stavební kámen
vesmíru a tato původně dočasná záplata (sami Kernihgan s Ritchiem
psali, že v příští verzi C tento nedostatek odstraní) se dodnes táhne
celým vývojem jazyků typu C a různými návaznostmi způsobuje problémy
kde může. Přitom její odstranění by nezpůsobilo žádné podstatné
problémy kromě nevole milovníků kryptických kódů.

Pak mám v C spadeno ještě na několik blbinek (typu postinkrement,
operátor čárka, princip že přiřazovací výraz má hodnotu apod.), ale
výše uvedené je to nejdůležitější.

Aleš Procháska

> 4.3.2006, 10:08:46

> Dobry den
> "som z toho aksi zmeteny"

> Nechci vyvolavat zadny flame, berte tohle prosim jako stupidni dotaz
> nepouceneho laika, ale neni nahodou ten super bezpecny Linux/Unix taky
> napsanej v tom prisernym C ?
> Muzete mi to prosim nejak jednoduse a polopaticky vysvetlit ?

> S pozdravem Pavel
>   mailto:gatilo@centrum.cz

> --
> Ales Prochaska napsal:

>> Jenže překladač lze napsat tak, aby systémy ochrany paměti využíval.
>> Stačilo by aby se někdo zamyslel hlavou a udělal dejme tomu překladač,
>> který bude možné přepnout do nějakého módu "safe C++" (když už teda né
>> tu Adu nebo nějaký lepší jazyk), což bude céčko s nepatrně pozměněnou
>> syntaxí, beztak převážně v místech do kterých rozumně uvažující
>> programátor raději nikdy nezabloudí :-)

>> Aleš Procháska

>>> Jak to funguje doopravdy:

>>> Základem je tzv. flat model, kdy segment programu, dat i zásobníku se překrývají po celé délce.
>>> Program sice nemůže k cizím datům, ale sám sebe přepsat může a může taky jakákoli svá data
>>> spustit jako program...

>>> Co to má společného s ANSI C?

>>> Pointery neobsahují segmentovou část adresy, takže C lze používat jen s flat modelem.
>>> Zásobník nelze smysluplně limitovat, protože má-li být limit nad 2 GB (opakuji, limit zásobníku
>>> určuje nejnižší povolenou adresu), budou pointery do něj odkazující záporné:-)

>>> A co XP a SP2?

>>> To je tak trochu "narovnák na vohejbák" - při spuštění programu se zásobník inicializuje
>>> pokaždé na trochu jinou adresu, takže nemůže přetéct předem definovatelným způsobem:-)

>>> Uf... tak pro dnešek mám dost:-)

>>> PH




>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list@list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list



>> --

>> Checked by AVG Free Edition.
>> Version: 7.1.375 / Virus Database: 268.1.2/274 - Release Date: 3.3.2006

>  

> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list





Další informace o konferenci Hw-list