OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 16:39

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 159 ]  Přejít na stránku Předchozí  1 ... 4, 5, 6, 7, 8, 9, 10, 11  Další
Autor Zpráva
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 10:38 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Jiiira píše:
Panda38 píše:
Bezpečnost software v C se zajistí jinými hlídacími prostředky, to nezajistí dostatečně interní kontrola nějakého interpereteru.
Přestože s tebou nesouhlasím, tohle mne zajímá - jaké prostředky máš na mysli?
Jeden z velmi dobrych prostriedkov ako znizit pravdepodobnost chyb pri programovani je napriklad pozapinat vsetky kontroly vo Visual Studiu. Dalsia moznost je na svoj zdrojak postvat analyzacny program Lint ktory zdrojak podrobne zanalyzuje a odhali potencialne miesta problemov.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 10:43 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Busy píše:
Co ti brani pisat v cecku program tak, ako by si ho pisal v paskale ?

Tohle:
Kód:
int p[10],a=10;

p[a]=12345;

Pascal to hlídá automaticky. A kam že se teda zapsalo číslo 12345? ;-)

Pěkné čtení o Adě: https://www.root.cz/serialy/programovaci-jazyk-ada-pro-uplne-zacatecniky/

P.S. Lint jsem na moje malé prográmky nikdy nepoužil, dokáže tuhle chybu odhalit?

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Naposledy upravil faraon dne 08.09.2018, 10:45, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 10:45 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
C má výhodu v tom, že má mnohem blíž k assembleru než jiné jazyky. Což souvisí i s tím, že výstupem C překladače je nejdříve mezikód v assembleru, který se pak přeloží do strojáku. Dá se snáz spolupracovat s nižšími úrovněmi. C kód je vlastně něco jako makra pro assembler. Programátor má plnou nadvládu nad programem, aniž mu do kódu zasahuje nějaká "vyšší úroveň". Neumím si představit např. napsání obsluhy přerušení v nějakém tom "vyšším" jazyku, jde to vůbec? V C se dá snadno spolupracovat s procesorem. Např. GCC překladač má krásnou možnost vnoření inline assembleru do C kódu s možností definovat obecně registry a proměnné, překladač je přidělí až sám tak aby mohl kód optimalizovat - tuhle možnost jsem nikde jinde neviděl, jiné překladače umí jen běžný inline s pevně určenými registry a pak kód nejde optimalizovat. V C se dá snadno řídit hw procesoru jako správa a hlídání paměti, watchdog, dma. A snadno se dá prošpikovat sw kontrolami, aniž to nějak významněji zatěžuje chod. Všechny "opravdové" operační systémy jsou napsané v C/C++. ... Hlídání rozsahu pole program značně zpomaluje a neumožňuje volný přístup k paměti, řízený jen programátorem.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:08 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.06.2013, 20:26
Příspěvky: 2487
Has thanked: 115 times
Been thanked: 424 times
Panda38 píše:
C má výhodu v tom, že má mnohem blíž k assembleru než jiné jazyky.
To tady, jak sis mohl všimnout, nikdo nezpochybňuje, spíš naopak. Ale nijak to neimplikuje větší bezpečnost či robustnost.

Panda38 píše:
A snadno se dá prošpikovat sw kontrolami, aniž to nějak významněji zatěžuje chod.
Pořád jsi neřekl, jakými...? ;)

Panda38 píše:
Všechny "opravdové" operační systémy jsou napsané v C/C++.
No to asi ne, možná všechny ty, které znáš, ale operačních systémů je mnoho...

Panda38 píše:
Hlídání rozsahu pole program značně zpomaluje a neumožňuje volný přístup k paměti, řízený jen programátorem.
Ale tohle nemyslíš vážně, viď že ne? Překročení rozsahu pole, tedy chyba sama o sobě, že má být prostředkem pro volný přístup k paměti? Ale fuj...

_________________
"Je lepší rozsvítit byť jen malou svíčku, než jen proklínat temnotu." (Konfucius)

www.zxsparrow.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:12 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.06.2013, 20:26
Příspěvky: 2487
Has thanked: 115 times
Been thanked: 424 times
Busy píše:
Jiiira píše:
Nabízí se ovšem otázka ... velký posun v důležitosti od efektivity k bezpečnosti ... vytvořit jazyk zároveň bezpečný i efektivní .. programovací jazyk, kde se ledacos ohlídá ...

Proto jsem zmiňoval Pascal, od kterého jsem zvyklý právě toto očekávat. 8-)
Krasna uvaha, urcite si si s nou dal vela prace ... ale ja sa opytam: Co ti brani pisat v cecku program tak, ako by si ho pisal v paskale ? Bez hackerkych vychytavok, bez potencialne nebezpecneho pointeroveho zonglovania - proste program bude vyzerat tak ako keby si ho 1:1 preklopil z paskalu. A tym padom bude rovnako bezpecny ako napisany v paskale :)

Vždyť to je taky cesta, kterou jsem zvolil - a tady to dokonce veřejně deklaruju 8-) . Navíc diskuse v tomto vlákně mě v tom rozhodnutí ještě utvrdila... ;)

_________________
"Je lepší rozsvítit byť jen malou svíčku, než jen proklínat temnotu." (Konfucius)

www.zxsparrow.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:20 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
faraon píše:
Busy píše:
Co ti brani pisat v cecku program tak, ako by si ho pisal v paskale ?
Tohle:
Kód:
int p[10],a=10;
p[a]=12345;
Pascal to hlídá automaticky. A kam že se teda zapsalo číslo 12345? ;-)
Nikam, ak si v kompileri zapnes kontroly rozsahov indexov pre polia, tak ta na to upozorni.
Btw. automaticke kontroly nemam rad, cloveka to obcas obmedzuje. Podla mna je lepsie, ak si nejaku kontrolu / vlastnost mozes zapnut alebo vypnut podla toho ako potrebujes.
(to je tiez dovod preco neuznavam vyrobky od nakusnuteho jablka, ale to je uz uplne ina tema)
Jiiira píše:
Vždyť to je taky cesta, kterou jsem zvolil - a tady to dokonce veřejně deklaruju 8-)
Tak potom je vsetko v poriadku a nie je dovod cecko kritizovat :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:28 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Ak v paskale spravis
Kód:
var cislo: integer;
    pointer: ^integer;
begin
  pointer = @cislo;
  Inc(pointer);
  pointer^ := 1234
end
Kam sa zapise 1234 ?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:35 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
K tomu už je potřeba znásilňovat ukazatel, nestačí jen hrábnout do pole. A samozřejmě znám: http://www.logix.cz/michal/humornik/Pojidaci.Kolacu.xp :lol:
Citace:
- Kompilátor provádějící kontrolu překročení mezí polí. Takové kompilátory dusí tvořivost, znemožňují většinu zajímavých použití příkazu EQUIVALENCE a znemožňují dělat změny operačního systému zadáním záporného indexu. A co je nejhorší, kontrola překročení mezí snižuje efektivnost.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 11:39 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
Jiiira píše:
Panda38 píše:
Všechny "opravdové" operační systémy jsou napsané v C/C++.
No to asi ne, možná všechny ty, které znáš, ale operačních systémů je mnoho
Všechny "opravdové" operační systémy jsou napsané v C/C++ (plus ASM): Windows, Linux, Unix, OS X, Andorid. Systémy psané v něčem jiném bývají jen amatérské pokusy bez rozumného uplatnění. A to proto, protože C má blízko k assembleru a nedoplňuje do kódu něco, nad čím by programátor neměl dostatečnou kontrolu.

Jiiira píše:
Panda38 píše:
Hlídání rozsahu pole program značně zpomaluje a neumožňuje volný přístup k paměti, řízený jen programátorem.
Ale tohle nemyslíš vážně, viď že ne? Překročení rozsahu pole, tedy chyba sama o sobě, že má být prostředkem pro volný přístup k paměti? Ale fuj...
Většinou je potřeba dělat s polem bez známé velikosti, kdy překladač nemůže znát rozměr, program ho zná až za chodu. Hlídání indexu je většinou nevyužitelné a jen zbytečně zpomaluje chod programu. Příklad - přijme se paket s neznámou strukturou a teprve až program zjistí o který paket se jedná a přetypuje ukazatel na známou strukturu. To se špatně zajišťuje bez možnosti přetypování nebo s hlídáním rozsahů kompilátorem.

Využitelnost: "dobrý" kompilátor je spíš pro slabší programátory, kteří si neumí věci ohlídat sami. Dobří programátoři si ošetřují vše sami a proto používají "slabé" jazyky jako C a assembler.

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 19:08 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 994
Bydliště: Praha
Has thanked: 63 times
Been thanked: 372 times
faraon píše:
Java a bezpečnost? V Javě naprogramovaný Android je nejzavirovanější systém ze všech, který už dávno překonal i desítky let trvající dominaci Widlí... Ani na PC to není lepší, ementál je proti Javě hermetický.
A na bezpečné programy je tu už 40 let Ada.


A je to opravdu Javou, nebo slaví větší úspěch sociální inženýrství, falešné aplikace, či spousta výrobků bez jakékoliv možnosti aktualizace systému?

Android není napsaný v Javě, má jen rozsáhlé API pro tvorbu aplikací v Javě (takové telefony ale existují od dob JavaME). Jádro je psané v C. Pro Android lze i běžné aplikace psát v C/C++, ale bezpečnější to asi moc nebude. Systém samotný je často děravý. Navíc je nejpoužívanější, tak se na něj útočí prakticky neustále.

Když trochu odbočím, pořádně mne štve, že pro Android neexistuje normální JRE s knihovnami Swing a AWT.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 08.09.2018, 21:18 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Dobrá otázka. Ale za tohle céčkový kernel nemůže:
https://www.cnews.cz/java-uz-je-zase-derava-oprava-neexistuje-radeji-ji-deaktivujte-oziveno/
http://magazin.stahuj.cz/java-je-opet-derava-na-hacknuti-stacil-jeden-vikend/
https://www.itbiz.cz/zpravicky/java-je-derava-i-po-nedavne-oprave
https://www.lupa.cz/clanky/derava-java-je-siroce-zneuzivana-pro-utoky/
https://www.root.cz/zpravicky/dalsi-exploit-pro-diru-v-jave-je-na-prodej/
https://www.chip.cz/novinky/java-a-flash-deravy-a-deravejsi/

Spíš bych hledal tady:
https://web.archive.org/web/20130611094053/http://www.itnews.sk/spravy/software/2008-01-17/c87894-programatorske-schopnosti-absolventov-klesaju-problemom-je-java
http://www.zdrojak.cz/clanky/nebezpeci-java-skol/

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 09.09.2018, 08:42 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 994
Bydliště: Praha
Has thanked: 63 times
Been thanked: 372 times
faraon píše:


Odkazované články bohužel neodkazují na žádné podrobnosti (tak nevíme jestli problém byl v VM, knihovnách či něčem jiném). Jeden zmiňuje chybu v reflexi, což je samozřejmě nedílná součást jazyka jako takového. S Javou SE se dodává hromada knihoven (z větší části jsou psané v Javě, něco je v C) a tam samozřejmě chyby jsou a budou.

Java sama o sobě má základní bezpečnostní mechanismy (každé aplikaci lze přiřadit security manager, ale je to stejné jako u firewallů - není to 100% ochrana a obojí může obsahovat chyby)

U kritických programů v C/C++ je třeba klást důraz na metody mimo překladač - nástroje typu VALGRIND hodně pomohou, ale zejména na velice důkladné testování. Ale hlavně psát kód pořádně a aplikovat metody defenzivního programování tam kde je to vhodné (vstupy z nepřátelských zdrojů - uživatel, soubory, databáze, síť). To ale vůbec není snadný úkol.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 09.09.2018, 09:55 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Jo, i ty bezpečnostní mechanizmy obsahují chyby, a používají se dostatečně? Jsou vůbec javovské kódovací opice a googliči metod schopní tyhle věci správně a vždy použít? Viz zejména poslední odkaz. Ani překladatel toho článku sice se vším v něm nesouhlasí, ale rozhodně je to dobrý důvod k hlubokému zamyšlení.

Ještě bych přidal dvě starší věci, nesouvisející přímo s Céčkem:
http://kuna4.mk.cvut.cz/36jui/PomstaNerdu.html
https://neil.fraser.name/news/2013/03/16/

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 09.09.2018, 10:32 
Offline
Profík
Uživatelský avatar

Registrován: 31.08.2014, 16:27
Příspěvky: 994
Bydliště: Praha
Has thanked: 63 times
Been thanked: 372 times
Sám nevím, jak bych výuku programování uchopil. Podle mého názoru je jako nutný základ prvořadá znalost datových struktur a algoritmů, i to prokleté "programování na papír". Ovšem pro praxi je zase nutné znát konkrétní vývojová prostředí a knihovny. Ten kdo má základ si je osvojí poměrně rychle.

Možná v matematice by se algoritmům mohli žáci a studenti věnovat. Kdo mi kdy ve škole ukázal algoritmus na krácení zlomků a algoritmus na řešení soustav rovnic, že. Nebo se aspoň na sčítání "pod sebou" podívat jako na jednoduchý algoritmus.

Nerad to přiznávám, ale třeba Turbo Pascal se mi pořád jeví jako docela dobrý nástroj na výuku programování. Lze v něm programovat naivně, strukturovaně, procedurálně, modulárně a tak trochu objektově. Navíc se aspoň ze začátku není třeba probírat hromadou balastu nesouvisejícím s programem samotným - založení projektu atd. Taky je třeba, aby žák či student rozuměl operačnímu systému - souborový systém apod.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Programování v C
PříspěvekNapsal: 09.09.2018, 11:21 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Jo, tak nějak. A "objektově" od TP5.5. Tady se to zrovna zvrhlo podobným směrem: https://forum.root.cz/index.php?topic=19526.45 Ale mám tu někde jednu starou učebnici Pascalu, kde je programování založené na goto, a je to dost strašný pohled!

Jenže jak vysvětlím souborový systém někomu, kdo od čtyř let vegetuje na nějakém šmatlafounu, a nechce mi uvěřit ani to, že ty fotky co udělal vlastně vůbec nemá v mobilu, ale jsou někde na druhém konci světa v cloudu? Moc se divil že bez WiFi si je u mě ani neprohlédne.

Mimochodem, krácení zlomků jsem neměl rád, dokud jsem nezjistil k čemu je občas dobré v běžném životě. A obyčejné vytýkání před závorku jsem vyloženě nesnášel :lol:

Co říkáš na tohle: https://www.respekt.cz/spolecnost/zacina-revoluce-ve-vyuce-informatiky-jak-byste-obstali-v-testu Kdyby tomu neudělali od začátku antireklamu tím, že se bude učit "programování" od první třídy, tak by to vypadalo mnohem sympatičtěji. Ještě jak to poberou dnešní učitelé.

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 159 ]  Přejít na stránku Předchozí  1 ... 4, 5, 6, 7, 8, 9, 10, 11  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz