Vykon jsem s troskou sebezapreni ochoten uverit, ale bezpecnost C/C++ je legendarni. Neco tak spatne navrzeneho z hlediska bezpecnosti aby clovek pohledal.
Vlákno názorů ke zprávičce Google představil programovací jazyk Go
Re: výkon a bezpečnost známou z C a C++
Odkdy jsou vubec vykon a bezpecnost zalezitosti jazyka?
Re: výkon a bezpečnost známou z C a C++
Odjakživa? :-)
Re: výkon a bezpečnost známou z C a C++
Je to tak – výkon záleží na kompilátoru a bezpečnost na programátorovi…
Re: výkon a bezpečnost známou z C a C++
Chceš říct: Bohužel záleží na programátorovi…
Re: vykon a bezpecnost znamou z C a C++
Cili vykon nezalezi na programatorovi? Cili kdyz programator jednou pouzije spojove seznamy nebo bubblesort a podruhe haldu nebo quicksort, vykon bude stejny a zalezet jen na kompilatoru?
To mas nejakej lepsi kompilator, ne? Umi resit taky halting problem?
Re: vykon a bezpecnost znamou z C a C++
:DD Takovej kompilator bych taky bral :DD
Re: výkon a bezpečnost známou z C a C++
Ehm, napište mi například v Javě aplikaci, která bude trpět problémem Buffer Overflow. Naopak v C ji napíšete velice snadno (a často aniž byste si to uvědomil).
Re: výkon a bezpečnost známou z C a C++
Takle (v konkrétních příkladech) to samozřejmě platí, ale obecně se velmi málokdy dá říct, že jazyk A je bezpečnější (výkonnější) než jazyk B. Krom toho, ten příklad nedokazuje, že Java je bezpečnější než C, ale spíš to, že v C je těžší napsat program, který je v tomto ohledu (buffer overflow) bezpečný. Nebo ještě jinak – těžko lze tvrdit: „je to v jazyce XY, tak je to výkonné a bezpečné.“ Tyhle věci záleží mnohem víc na programátorovi, nasazení, úloze, knihovnách, administrátorovi.
Re: výkon a bezpečnost známou z C a C++
>Krom toho, ten příklad nedokazuje, že Java je bezpečnější než C, ale spíš to, že v C je těžší napsat program, který je v tomto ohledu (buffer overflow) bezpečný.
V podstatě jinými slovy říkáš, že je java bezpečnější:)
V javě samozřejmě jde napsat útok typu buffer overflow, protože nakonec běží na stejném hardwaru jako program v C, ale je to prakticky nemožné(je třeba najít chybu v jvm a potom nějakým způsobem využít v javovském programu).
Re: výkon a bezpečnost známou z C a C++
> V podstatě jinými slovy říkáš, že je java bezpečnější:)
Neříkám, připouštím, že v jednom konkrétním případě, je program méně ohrožen chybou programátora.
Re: vykon a bezpecnost znamou z C a C++
Kolik kilowattu ma teda to C vykon?
A v cem se vubec meri ta bezpecnost? V energii strely ktera to prostreli?
Re: výkon a bezpečnost známou z C a C++
nemylsi tou bezpecnosti ze to dokaze upravit program tak aby to nepadalo?:D a nehmatalo do pameti kam nema..oproti jinejm ktery vam to dovoluji..
Re: výkon a bezpečnost známou z C a C++
to ja naopak neverim moc tomu vykonu. O bezpecnost C++ bych se nebal, nikdy jsem nemel zadny vaznejsi problem, vlastne uprimne, mne osobne se bezpecna aplikace v C++ dela lip nez v PHP. Podle mne s bezpecnosti C/C++ maji problemy jen lide co jsou a) patlalove b) pouzivaji nevhodnou metodiku vyvoje a nastroje pro vyvoj
Re: výkon a bezpečnost známou z C a C++
Kdo tohle pripustil v C, je zlocinec, ktery by mel byt exemplarne popraven tim nejnechutnejsim znamym zpusobem. Slova bezpecnost a C/C++ by se nemely objevovat v jedne spolecne vete. A to jsem jen u jednoho operatoru. Treba o ukazatelich by se daly psat eseje.
Jiste, genialni programator napise kod vzdy bezpecne, ale genialni programator neexistuje, a proto by jazyk mel byt od pocatku navrzen s tim, ze jej budou pouzivat omylni lide.
Re: výkon a bezpečnost známou z C a C++
Vite ze Assembler je take programovaci jazyk? To je asi velmi spatne navrzeny, protoze v nem jdou delat chyby.
Svet neni CB, vse ma sva uskali, chce to pouze programatora, co si je uvedomuje. Uznavam, ze treba u open source to je trochu castejsi problem, protoze kdektery jouda se do projektu zapoji, pokud chce.
Re: výkon a bezpečnost známou z C a C++
Assembler se bezpecnosti snad vubec nezabyva, navic to neni vyssi programovaci jazyk, takze ten argument moc nechapu.
Asi se shodnem, ze JAVA nebo Python je bezpecnejsi jazyk nez C, protoze nektere zhovadilosti tam udelat proste nejdou. Neznamena to ale, ze se v tech jazycich pisou programy bez chyby :-)
Re: výkon a bezpečnost známou z C a C++
if ( a = b ) je docela sikovna moznost, prave pokud mate spravne nastroje a metodiky.
Takhle jak jste to napsal bez dalsi zavorky gcc hodi warning pri kompilaci, a pak jeste existuji veci jako splint a valgrind. To k tem nastrojum.
A pokud programujete s UnitTesty, tak vam nefunguji testy i kdyby to proslo skrz nastroje, takze to je ta cast s metodikou.
Na druhou stranu kdyz nactete ze vstupu od uzivatele 4096B, tak vite ze mate 4kB binarnich dat.. v PHP kdyz parsujete treba POST request a nedate si bacha na kodovani a validaci, tak vam treba nekdo podstrci nevalidni UTF-8 string ktery treba zpusobi ze vase dalsi kontroly neprokousaji pres cely obsah vstupu a nasledne vam premaze celou databazi. Porad myslite ze Buffer Overflow v C je nejvetsi zlo sveta? Ja myslim ze bezpecny jazyk neexistuje. Jsou jen aplikace ktere maji tak malo chyb, ze na ne nikdo neprijde a ty vypadaji bezpecne. Bez ohledu na programovaci jazyk.
Samozrejme kdyz upatlate 100 radkove C++ bez navrhu, testovani a dodrzovani urcite metodiky, tak nejspis budete mit v prumeru aspon jednu chybu na 10 radku, z toho 20% bude zpusobovat padani aplikace. U javy je jediny vetsi rozdil v tom ze to tolik nepada, mnozstvi chyb bude jen malinko nizsi, jenom se projevi mirneji. Co je nekdy jeste horsi, protoze si je pak nemusite vsimnout. Je pravda ze stejna aplikace ma obvykle v Jave kratsi zdrojovy kod, takze tam prijde dalsi snizeni absolutniho poctu chyb.
Ale rikat ze C/C++ je nebezpecne a Java je fajn je jako rikat ze F1 je nebezpecna a cestovni BMW je fajn … ale zkuste v 150km/h napalit do svodidel s F1 a pak s BMW (a hlavne to nezkousejte v opacnem poradi).
Re: výkon a bezpečnost známou z C a C++
>U javy je jediny vetsi rozdil v tom ze to tolik nepada, mnozstvi chyb bude jen malinko nizsi, jenom se projevi mirneji. Co je nekdy jeste horsi, protoze si je pak nemusite vsimnout.
Já bych řekl, že to je přesně naopak. Java hodí výjimku, pokud se děje něco nekalého, ale v C/C++ se může stát, že program běží dál se špatnými daty a chyba se projeví jenom občas(např. překročení mezí polí, čtení neinicializovaného ukazatele). V podstatě jediná věc co mě napadá, která by mohla skrýt místo chyby je prázdný blok catch a to lze napsat v obou jazycích.

