В GnuTLS 3.3.3, 3.2.15 и 3.1.25 (http://www.gnutls.org/news.html), свободной библиотеке с реализацией протоколов SSL, TLS и DTLS и функций для работы с различными типами сертификатов, устранена опасная уязвимость (http://www.gnutls.org/security.html#GNUTLS-SA-2014-3) (CVE-2014-3466). Проблема проявляется (https://bugzilla.redhat.com/show_bug.cgi?id=1101932) только при использовании библиотеки в клиентских системах при попытке установки защищённого соединения с сервером, подконтрольным злоумышленнику.
Уязвимость вызвана отсутствием (https://www.gitorious.org/gnutls/gnutls/commit/688ea6428a432...) корректной проверки размера идентификатора сеанса в функциях read_server_hello() и _gnutls_read_server_hello(), которые используются для обработки сообщения ServerHello в процессе установки защищённого соединения. Отправка сервером пакета со слишком большим идентификатором может привести к повреждению областей памяти приложения. Не исключается возможность использования уязвимости для организации выполнения кода атакующего.
Также можно отметить выпуск (http://lists.gnu.org/archive/html/help-libtasn1/2014-05/msg0...) используемой в GnuTLS библиотеки Libtasn1 3.6, в котором устранены три уязвимости (CVE-2014-3467 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3467), CVE-2014-3468 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3468), CVE-2014-3469 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3469)). Уязвимости могут привести к краху приложения при обработке специально скомпонованных данных в формате ASN.1. Кроме того, компания Red Hat обратила внимание (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3465) на уязвимость (CVE-2014-3465) в GnuTLS, которая может привести к разыменованию NULL-указателя и краху приложения при обработке x509-сертификата с некорректным OID-идентификатором. Проблема была устранена 4 месяца назад в выпусках GnuTLS 3.1.20 и 3.2.10 без публикации отчёта об уязвимости.URL: http://openwall.com/lists/oss-security/2014/05/30/2
Новость: http://www.opennet.me/opennews/art.shtml?num=39901
> серьёзной уязвимостинужно срочно менять весь штат погромиздов openssl и gnutls.
Нужно менять няшную сишечку на более безопасный язык.
тоже верно
> тоже верноХуерно, все такие не купаться прям иксперты - программисты ssl/tls у них бдылокодеры, СИ понимаешь плохой, сами только на опеннете могут онанировать, зато совершенно точно сказали в чем порблема.
я ващет ядро разрабатываю
Пушечное, видимо.
АНБ опенчует.
Опять же, ведроиды рутовать можно.
Например такой как C# или Java, которые убивают процентов так 25 общей производительности программы ? Набыдлокодить можно на любом языке, главное уметь вовремя найти этот код и исправить его. Ваш аргумент не может быть причиной перехода с более-менее идеального языка на всякие там изделия оряклятины и мекрософта.
"А 1000 знаков в минуту можете? - Могу, но такая фигня получается..."
Ну почему же обязательно C# или Java. OCaml например - хороший безопасный Си-заменитель. Там есть, конечно, некоторое количество функциональных фишечек, но пользоваться ими необязательно.Кстати, по поводу производительности - вы плохо себе представляете среднестатистический код на Си, с которым и хороший компилятор мало что может сделать, кроме застрелиться от огорчения. Можно вытянуть на Си и поболее 25 процентов относительно .Net или JVM, но это хорошо умея, хорошо понимая, и аккуратно измеряя - что в природе почти не встречается.
Посмотрел синтаксис вашего OCaml и подумал пор себя "Уж лучше тогда уже пожертвовать производительностью. чем писать на перле"
О производительности я я сужу по работе программ в целом, как работает та или иная программа, которая выполняет одно и то-же действие или конкретный алгоритм на разных ЯП. Сравнения производительности различных ЯП можно найти в той-же сети :)
Это вы смотрели в стандартное "OCaml - это такой лиспохаскель, сейчас мы вам расскажем про сладкие монадки", а я ведь заранее предупредил.> лучше тогда уже пожертвовать производительностью. чем писать на перле
В 2014 году писать на перле и жертвовать производительностью - это одно и то же. А так-то с ним всё хорошо, даже вот и монадки есть, если кому надо - http://9ch.in/monads/
> Сравнения производительности различных ЯП можно найти в той-же сети
Так вот у OCaml с ней всё как раз очень хорошо. Разве что GC не параллелится по ядрам, ну так в Си его вообще нет.
Я не смотрел примеры программ на этом языке, но тут с невооруженного взгляда видно, что он из разряда языков, синтаксис у которых такой-же страшный, как у перла, возможно даже более прогрессивный чем перл в плане запутанности. Честно говоря даже не представляю, как должен будет перевернуться мир, чтобы он вытеснил Си, хоть в чем-то :)
>> Так вот у OCaml с ней всё как раз очень хорошо. Разве что GC не параллелится по ядрам, ну так в Си его вообще нет.В языке, которым управляет только лишь программист и только от него зависит результат выполнения программы, этого и не нужно
> Я не смотрел примеры программ на этом языке, но тут с невооруженного взгляда видноЗамечательная фраза. Сразу вспоминается Пастернак.
> из разряда языков, синтаксис у которых такой-же страшный, как у перла
У перла синтаксис Си-подобный, как известно.
Может быть у вас какие-то нестандартные понимания страшности?
Вы не любитель APL случайно?> В языке, которым управляет только лишь программист
А вы посмотрите на досуге что там получается у того же банального gcc с -O3 и прочими -msse3 на выходе.
А потом посмотрите как это выполняется на современном out-of-order процессоре, с branch predictions и многоассоциативным кэшами.
Степень вашей уверенности в контроле программиста за ситуацией может сильно поменяться.> и только от него зависит результат выполнения программы
Результат - он и в декларативных языках останется тем же, хотя порядок вычислений там вообще не определяется явно.
>> У перла синтаксис Си-подобный, как известно.
>> Может быть у вас какие-то нестандартные понимания страшности?Вы случаем не забыли, как вообще выглядит синтаксис Си, может всё-таки посмотрите пример helloword на си и на перле, чтобы начать различать эти два языка ?
У меня, впрочем как и у всех людей вполне стандартные понимания того, как должен выглядеть синтаксис языка, на котором в последующем кто-то должен будет писать и судя по целевой аудитории OCaml, нестандартными взглядами обладают как раз те, кто на нем пишут свои программы. Лично мне было бы затруднительно на нем что-либо писать и тем более читать
>> А вы посмотрите на досуге что там получается у того же банального gcc с -O3 и прочими -msse3 на выходе.Я стараюсь не использовать флаг -O3, так как он напрочь вычеркивает некоторые внутренние оптимизации в самой программе, считая их лишними
>> Результат - он и в декларативных языках останется тем же, хотя порядок вычислений там вообще не определяется явно.Всё верно, каждый компилятор по-своему вычисляет порядок действий инструкций и по-своему описывает алгоритм их использования
> чтобы начать различать эти два языкаА вы не собираетесь начать различать смысл слов "подобный" и "идентичный"?
> У меня, впрочем как и у всех людей
[citation needed] - с результатами опроса всех людей.
> стандартные понимания того, как должен выглядеть синтаксис языка
И как же он должен выглядеть? И не могут ли существовать разные синтаксисы?
> на котором в последующем кто-то должен будет писать
Пишет ли кто-то на чём-то кроме Си, по вашему мнению?
> Лично мне было бы затруднительно на нем что-либо писать и тем более читать
Тут сомнений нет, действительно. Если для вас у Си и перла сильно отличающийся синтаксис, малейшие отклонения от единственно знакомого для вас действительно могут представлять непреодолимые трудности.
> Я стараюсь не использовать флаг -O3, так как он напрочь вычеркивает некоторые внутренние оптимизации в самой программе, считая их лишними
И какой же вариант работает быстрее на том же i7 - ваш или gcc-шный?
И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?
Или вы научились писать SIMD-инструкции прямо на Си?
господа, может вы перестанете? если кто-то неумеет готовить си, ссзб, он и на бейсике налажает. хватит пенять на си, коль руки не из того места. согласен с оратором, в сях программер рулит тем, что он делает. полностью. а как и насколько квалифицировано - это уже другой вопрос.
что же касается gcc-специфичных оптимизаций, имхо вопрос оффтоп. и да, дамы и господа, упираясь в компиляцию кода gcc с оптимизациями вы забываете, чт огенерят трансляторы/компиллеры других языков
салют!
> если кто-то неумеет готовить си, ссзбТак практически никто и не умеет. И, к сожалению, ЗБ он не только СС, а и пользователям его творений.
> он и на бейсике налажает
Налажает, да вреда от того много не случится.
> в сях программер рулит тем, что он делает. полностью
И вам почитать про современные процессоры. И компиляторы.
> упираясь в компиляцию кода gcc с оптимизациями вы забываете, чт огенерят трансляторы/компиллеры других языков
Нет, не забываем, с чего вы взяли?
Вероятно, вы имеете в виду что генерят они что-то очень медленное и плохое. Ну вот посмотрите, например, что генерит LuaJIT из такой вот высокоуровневой конструкции>[оверквотинг удален]
>0bcaffd0 movaps xmm5, xmm7
>0bcaffd3 movaps xmm7, xmm1
>0bcaffd6 addsd xmm7, xmm5
>0bcaffda ucomisd xmm7, xmm0
>0bcaffde jnb 0x0bca0024 ->5
>0bcaffe4 movaps xmm5, xmm7
>0bcaffe7 mulsd xmm5, xmm5
>0bcaffeb addsd xmm6, xmm5
>0bcaffef jmp 0x0bcaffd0 ->LOOP
>---- TRACE 1 stop -> loopСовсем неплохо, на мой скромный взгляд.
Оверквотингом было сочтено вот что:> require "fun" ()
> -- calculate sum(x for x^2 in 1..n)
> n = 100
> print(reduce(operator.add, 0, map(function(x) return x^2 end, range(n))))
>> А вы не собираетесь начать различать смысл слов "подобный" и "идентичный"?А вы ?
>> И как же он должен выглядеть? И не могут ли существовать разные синтаксисы?Вы когда-нибудь решали какие-либо задачки по программированию на олимпиадах ? вы не заметили одну особенность - в каждой задачке вам приведен пример на таких языках, как:
a) Алгоритмический
b) С
c) Basic
Синтаксис этих языков является наиболее понятным и знания этих языков по сути имеются у процентов так 99% программистов. Написав бы там простенький алгоритм на вашем OCaml, много ли кто смог его прочитать ?>> Пишет ли кто-то на чём-то кроме Си, по вашему мнению?
Я, например, на ассемблере иногда
>> Тут сомнений нет, действительно. Если для вас у Си и перла сильно отличающийся синтаксис, малейшие отклонения от единственно знакомого для вас действительно могут представлять непреодолимые трудности.
Конечно же у Си и перла очень много всего общего, даже вот этот пример, взятый с лурка :
"`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`"
Просто прекрасно демонстрирует схожесть с Си, может и в Си нынче можно не использовать типы данных и даже операторы в коде ?>> И какой же вариант работает быстрее на том же i7 - ваш или gcc-шный?
Конечно же же мой, неужели какой-то там компилятор сгенерирует код лучше меня
>> И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?Вы хоть немного понимаете, как работают эти флаги оптимизации и каким именно образом они получают более оптимизированный код по сравнению с компиляцией без этих флагов ? Думаю вам документация расскажет по-лучше меня обо всем.
>> Или вы научились писать SIMD-инструкции прямо на Си?Как говорится - опыт, всё приходит с опытом..
>А вы ?А мы различаем. Поэтому употребили термин "Си-подобный", а не какой-либо иной.
Если вы незнакомы с иными синтаксическими семействами, то, разумеется, мельчайшие несовпадения будут вам бросаться в глаза.>когда-нибудь решали какие-либо задачки по программированию на олимпиадах ?
Разумеется, нет. В цирке тоже не выступал.
>a) Алгоритмический
>b) С
>c) BasicКакие-то убогие у вас олимпиады. Вы б лучше в ICFP поучаствовали, оно и веселей. Заодно б узнали хотя бы ML- и Lisp-подобные синаксисы, для общего развития. Не знаю что такое "алгоритмический", но у C и Basic синаксис схожий.
>Синтаксис этих языков является наиболее понятным и знания этих языков по сути имеются у процентов так 99% программистов
Ну да, Си-подобный. Такой же у перл, PHP, и чего только не.
И что?>Написав бы там простенький алгоритм на вашем OCaml, много ли кто смог его прочитать ?
Да кто угодно смог бы. Вы главное в функциональные дебри не лезьте, пишите как на Си, и всё будет хорошо и понятно.
let rev_inplace ar =
let i = ref 0 in
let j = ref (Array.length ar - 1) in
(* terminate when the upper and lower indices meet *)
while !i < !j do
(* swap the two elements *)
let tmp = ar.(!i) in
ar.(!i) <- ar.(!j);
ar.(!j) <- tmp;
(* bump the indices *)
incr i;
decr j
doneВсей разницы - разыменование ссылки, которые вместо указателей, не * а !, и скобочки лишние не нужны. И стрелочка для присваивания.
>этот пример, взятый с лурка
Вы понимаете что если вы не сможете примерно такое же написать на Си, то вы его не знаете?
>Конечно же же мой, неужели какой-то там компилятор сгенерирует код лучше меня
Пример в студию?
>Вы хоть немного понимаете, как работают эти флаги оптимизации и каким именно образом они получают более оптимизированный код по сравнению с компиляцией без этих флагов ?
Так вы код оптимизируете выставлением флагов компиляции? Но код при этом генерируете сами? Но -О3 при этом не используете?
Я запутался.>>> Или вы научились писать SIMD-инструкции прямо на Си?
>Как говорится - опыт, всё приходит с опытом..Рассказывайте, рассказывайте.
>> А мы различаем. Поэтому употребили термин "Си-подобный", а не какой-либо иной.
>> Если вы незнакомы с иными синтаксическими семействами, то, разумеется, мельчайшие несовпадения будут вам бросаться в глаза.Если бы различали, язык бы не повернулся назвать перл - Си подобным языком.
Я предпочитаю изучать только те языки, которые по своему синтаксису более походят на язык программирования, а не на смесь конструкций из разных скриптовых языков, издали напоминающих perl
>> Разумеется, нет. В цирке тоже не выступал.А не похоже!
>> Какие-то убогие у вас олимпиады. Вы б лучше в ICFP поучаствовали, оно и веселей. Заодно б узнали хотя бы ML- и Lisp-подобные синаксисы, для общего развития. Не знаю что такое "алгоритмический", но у C и Basic синаксис схожий.Во всем мире проходят подобные олимпиады, если вы ни в одной не участвовали, поучаствуйте, заодно и посмотрите, что из себя представляют стандартные ЯП.
Именно потому, что синтаксис и Си и бейсик схож, их туда и добавили, можно хоть интуитивно разобраться если что-то непонятно, с вашими то предложениями о замене Си на OCaml, без трехтомного учебника по этому Яп не обойтись..>> Ну да, Си-подобный. Такой же у перл, PHP, и чего только не.
>> И что?У перл синтаксис Си-подобный ? Там где-то мой пример на перле завалялся чуть-выше, но вы видимо даже не поняли, что это код на перле, наверное подумали лихом, что какой-то бессмысленный набор символов случайно накатал..
>> Да кто угодно смог бы. Вы главное в функциональные дебри не лезьте, пишите как на Си, и всё будет хорошо и понятно.
Да ну,конечно же все "обычных" программистов ? Увидев бы подобный пример где-нибудь на олимпиаде, у меня бы появилось острое желание настучать по рукам тому, кто написал этот нелогичный кусок символов, логику которого видимо дано понять только "самым одаренным"
>> Вы понимаете что если вы не сможете примерно такое же написать на Си, то вы его не знаете?
А где я писал, что я пишу на перле ? Чтобы написать нечто подобное, у меня должен быть 80 лвл в дзене перла, чтобы хотя бы его разобрать на операторы и переменные. Увидеть точно такой-же пример на Си можно ? чтобы я на раз убедился, что я его не знаю
>> Пример в студию?
Давно там, вас ждут
>> Так вы код оптимизируете выставлением флагов компиляции? Но код при этом генерируете сами? Но -О3 при этом не используете?
Я сам себе компилятор. конвертирую код на Си в чистейший машинный код и да, как вы уже догадались, у меня на клавиатуре всего две кнопки - 1 и 0.
> язык бы не повернулся назвать перл - Си подобным языкомЯ не называл перл Си-подобным языком. Это могло бы вас смутить. Я лишь напомнил вам о том что перл имеет Си-подобный синтаксис.
> стандартные ЯП
Без комментариев.
> Увидеть точно такой-же пример на Си можно ?
Сколько угодно. http://www.ioccc.org
>> Сколько угодно. http://www.ioccc.orgПростите, но вы точно правильно воспринимаете мои посты ?
Я вас попросил мне дать точно такой-же пример, как я вам дал на перле который исключает любые операторы и типы данных, а вы мне даете ссылку на коллекцию обфусцированных сорцов, которые я итак могу прочитать. Вот даже специально распарсил сорец под названием "birken"(http://www.ioccc.org/2013/birken/):
char*_ = "'""/*";
#include <stdio.h>
int E,L,O,R,G[42][21],h[2][42][21],g[3][8],c[42][42][2],f[42];
char d[42];
void v( int b,int a,int j) {
printf("\33[%d;%df\33[4%d""m ",a,b,j);
}
void u() {
int T,e;
for(T=0; T<42; T++)
for(e=0; e<21; e++)
if(h[0][T][e]-h[1][T][e]) {
v(e+4+e,T+2,h[0][T][e]+1?h[0][T][e]:0);
h[1][T][e]=h[0][T][e];
}
fflush(stdout);
}
void q(int l,int k,int p) {
int T,e,a;
L=0;
O=1;
while(O) {
for(T=0; T<4&[ T++) {
e= k+c[l] [T][0];
h[0][L-1+c[l][T][1]][p?20-e:e]=-1;
}
for(T=0; T<4; T++) {
e=k+c[l][T][0];
a=L+c[l][T][1]+1;
if(a==42 || h[0][a][p?20-e:e]+1) {
O=0;
}
}
for(T=0; T<4; T++) {
e= k+c[l][T][0];
h[0][L + c[l][T][1]][p?20-e: e]=g[1][f[p?19+l:l]];
}
L++;
u();
}
for(T=0; T<42; T++) {
for(e=0; e<21; e++)
if(h[0][T][e]<0) break;
for(a=0; a<21&&e==21; a++) {
for(L=T; L; L--) {
h[0][L][a]=h[0][L-1] [a];
}
h[0][0][a]=-1;
}
}
u();
}
int main() {
int T,e,t,r,i,s ,D,V,K;
printf("\33[2J\33[?25l");
for(T=0; T<8; T++)
g[i=1][T]=7-T;
R--;
for(T=0; T<42; T++)
for(e=0; e<21; e++)
G[T][e]--;
while(fgets(d,42,stdin)) {
r=++
R;
for(T=0; T<17; T++) {
e=d[T]-48;
d[T]=0;
if ((e&7)==e) {
g[0][e] ++;
G[R][T+2]=e;
}
}
}
for(T=0; T<8; T++)
if(g[0][7-T]) {
t=g[i][O];
g[i][O++]=g[i][T];
g[i][T]=t;
}
for(T=0; T<8; T++) g[2][g[i][T]]=T;
for(T=0; T<R+i; T++)
for(e=0; e<21; e++)
if(G[T][e]+i) G[T][e]=g[2][G[T][e]];
for(T=0; T<19; T++)
for(t=0; t<2; t++) {
f[T+t+T]=(T["+%#,4" "5>GP9$5-,#C?NX"]-35)>>t*3&7;
for(e=0; e<4; e++) {
c[T][e][t]=("5'<$=$8)Ih$=h9i8'9" "t=)83)l4(99(g9>##>4(" [T+t+T]-35)>>e*2&3;
}
}
for(T=0; T<15; T++) {
s=T>9?21:(T&3)-3?15:36;
for(e=0; e<s; e++)
for(t=0; t<2; t++)
c[T+19][e][t]="6*6,8*6.608.6264826668865::(+;0(6+6-6/8,61638065678469.;88))()3(6,8*6.608.6264826668865:+;4)-*6-6/616365,-6715690.5;,89,81+,(023096/:40(8-7751)2)65;695(855(+*8)+;4**+4(((6.608.6264826668865:+;4+4)0(8)6/61638065678469.;88)-4,4*8+4(((60(/6264826668865:+;4-616365676993-9:54+-14).;./347.+18*):1;-*0-975/)936.+:4*,80987(887(0(*)4.*""/4,4*8+4(((6264826668865:+;4/4-4+8-4)0(8)6365678469.;88)1/(6*6,6.60626466686:8)8-8*818.8582/9863(+;/""*6,6.60626466686:4(8)8-8*818.8582/9863(+;/,6.60626466686:8-818.8582/9864*4+4(0())+;/.60626466686:8/8380/7844,4-4*4+4(0())69+;/0626466686:818582/9864.4/4,4-4*4+4(0())+;"
[e+E+e+t]-40;
E+=s+s;
}
for(T=0; T<45; T++) {
if(T>i) {
v(2,T,7);
v(46,T,7);
}
v(2+T,44,7);
}
T=0;
for(e=0; e<42; e++)
for(t=0; t<21; t++)
h[T][e][t]--;
while(R+i) {
s = D=0;
if (r-R) {
for(T=0; T<19; T++)
if (G[R+i][T]+i) V=T/2;
else if(G[R][T]+i) s++;
if(s) {
if(V>4) {
V=9-V;
D++;
}
V+=29;
for(T=0; T<20; T++)
q(c[V][T][0],c[V][T][i],D);
}
}
for(T=0; T<19; T++)
if((L=G[R][T])+i) {
O=T-L;
e=O>9;
t=e?18-O :O;
for(K=0; K<((t&3)-3? 16:37); K++)
{
if(K) {
L=c[t+19][K-i][0];
O=c[t+19][K-i][i];
}
q(L,O,K && e);
}
}
if(s)
q(c[V][20][0], c[V][20][i], D);
R--;
}
printf("\33[47;1f\33[?25h\33[40m");
return 0;
}
Как появится время, обязательно изучу этот пример.
На си так тоже можно:
long long n,u,m,b;main(e,r)char **r;{f\
or(;n++||(e=getchar()|32)>=0;b="ynwtsflrabg"[n%=11]-e?b:b*8+
n)for(r=b%64-25;e<47&&b;b/=8)for(n=19;n;n["1+DIY/.K430x9\
G(kC["]-42&255^b||(m+=n>15?n:n>9?m%u*~-u:~(int)r?n+
!(int)r*16:n*16,b=0))u=1ll<<6177%n--*4;printf("%llx\n",m);}
Все эти примеры можно разобрать на составные части простым форматером текста и потом уже можно будет их спокойно прочитать. Товарищ пытался от вас добиться такого-же синтаксиса как в перле, состоящий из одних символов
>На си так тоже можно:or(;n++||(e=getchar()|32)>=0;b="ynwtsflrabg"[n%=11]-e?b:b*8+
Это все ерунда. Проблема в том что на ц можно
for(i<9; i=0; i++)
В Си можно всё!, но кое-что просто не нужно делать, например это :)
>(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)Эммм...
>И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?https://www.linux.org.ru/forum/development/10452829/page5
Тут конечно некислая доля наркомании, но идея понятна
Спасибо, веселый тред.
А пальцем можно показать где gcc вычеркивает вручную сделанные ассемблерные оптимизации?
> А пальцем можно показать где gcc вычеркивает вручную сделанные ассемблерные оптимизации?Просто есть большой шанс, что ваши вручную сделанные оптимизации на асме будут работать медленнее чем gcc-шные:
http://quetzalcoatal.blogspot.ru/2014/04/if-you-want-fast-co...
Это я и пытался товарищу объяснить. Но безуспешно, разумеется.
> OCaml напримерИли Genie.
А он там вообще живой? Палочкой тыкали?
> безопасный Си-заменительКак резиновая женщина?
> убивают процентов так 25 общей производительности программыИ тут ты такой с пруфами.
В случает Java пруфом является наличие VM. 25% там или нет, но невозможно заставить код в VM работать на той же скорости, что и идентичный по функциональности нативный код.
На самом деле C#, Java и вообще любой язык с промежуточным представлением и JIT-компилятором можно весьма ощутимо ускорить, если выкинуть жрущие те самые проценты производительности переходы в ядро (а это не только стек, но и состояние MMU, что _дорого_) и обратно на каждом syscall-е и переключении контекста потока. Ведь если есть изоляция на уровне "виртуальной машины" ничего не мешает эту "виртуальную машину" держать в пространстве ядра. Были даже какие-то экспериментальные ОС (в основном на шарпе, он, как ни странно, несколько лучше подходит для системного программирования за счёт того что стековые структуры и указатели там таки есть) реализующие эту идею.
Например, Ада, Модула-2 - хорошие кандидаты для написания надёжного ПО
Тогда уж на Coq или Agda, если о заведомой фантастике. Или на Charity, чтоб уж сразу.
> Тогда уж на Coq или Agda, если о заведомой фантастике. Или на
> Charity, чтоб уж сразу.Как бездарно ты разбазариваешь свою эрудицию!
Хотите записаться на платную консультацию?
Скажите прямо, кого нам стесняться.
Нэт! Си - стандарт программирования
Был. Когда-то.
>Нужно менять няшную сишечку на более безопасный язык.Нет! Нужно менять подход к делу.
Все люди склонны ошибаться. И никакое тестирование, а так-же различные методы анализа кода, не уберегут достаточно большой и сложный проект от ошибок. К сожалению, пока не изобрели ИИ, ошибки подобного рода будут всегда и в любом сложном ПО. Хотите большей надёжности - придётся жертвовать производительность.
>Все люди склонны ошибаться. И никакое тестирование, а так-же различные методы анализа кода, не уберегут достаточно большой и сложный проект от ошибок. К сожалению, пока не изобрели ИИ, ошибки подобного рода будут всегда и в любом сложном ПО. Хотите большей надёжности - придётся жертвовать производительность.Если ставить практическую задачу научиться строить безопасные системы на Си, то приходишь к ряду простых решении. Можно, к примеру, взять себе за правило написания функции или макросов доступа к данным переменных (или указателей структуры) с корректной проверкой границ доступа сразу после объявления структуры (то есть где-то после этапа проектирования но до начала реализации прикладной логики). Это не проблема того что люди склонны ошибаться, это личные проблемы хреновой организации процессов отдельного человека. Чтобы выработать подобные навыки - надо заниматься этими вопросами на деле, а не скрываться за созданием мусорного кода на всяких питонах и жабе.
>>Нужно менять няшную сишечку на более безопасный язык.Надо менять прокладку между сиденьем и клавиатурой, раз не могут пользоваться таким гибким языком, а Перекладывание ответственности на инструмент говорит лишь о дилетантстве в данной области.
Так уже озаботились.
"Разработка OpenSSL, OpenSSH и NTP будет профинансирована Фондом поддержки ключевых открытых проектов" - http://www.opennet.me/opennews/art.shtml?num=39885
> Так уже озаботились.Там не _меняют. Там платят тем, что есть и _добавляют новых.
Чтоб поменяли, надо Майкрософту ещё больше денег дать (намёк Анониму#1), а уж они тогда...
Ну нельзя ж так сразу людей выгонять.
Сначала аудит, а потом уж оргвыводы, по результатам аудита.
> Ну нельзя ж так сразу людей выгонять.
> Сначала аудит, а потом уж оргвыводы, по результатам аудита.Выгонять нельзя. Только не потому, почему ты думаешь. Они там все - добровольцы, во-первых. А во-вторых, число этих добровольцев и так ограничено, чтобы их гнать.
Может быть, кроме тех друх несчастных, которым МС подрядилась платить. И не добровольцы, и погонит их МС в любой момент, и набрать по объявлению -- без ограничения. И спасибо МС за наш счастливый опен-эс-эс-элинг.
Ну так по-добровольчески попробовали уже - известно что получилось.
Теперь посмотрим что получится по-человечески, за деньги.