The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Дэниэл Бернштейн выступил с инициативой создания Си-компилят..., opennews (??), 22-Дек-15, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


5. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +6 +/
Сообщение от Deepwalker (??), 22-Дек-15, 14:09 
Rust, D, или что-то такое — в любом случае если C четко определить семантику кругом, то это уже не будет C.
Ответить | Правка | Наверх | Cообщить модератору

7. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Аноним (-), 22-Дек-15, 14:17 
Отличная идея! Давайте назовём его Java. Хотя, постойте…
Ответить | Правка | Наверх | Cообщить модератору

53. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от Чаёвник (?), 22-Дек-15, 16:14 
Джава это такой электровеник со встроенным веником GC, который постоянно тормозит, жрёт ресурсы и падает, огороженный буллшитом со всех сторон. Не нужно совать некомпетентное мнение туда, где вы не компетентны
Ответить | Правка | Наверх | Cообщить модератору

75. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –1 +/
Сообщение от Аноним (-), 22-Дек-15, 18:10 
> Джава это такой электровеник со встроенным веником GC, который постоянно тормозит, жрёт
> ресурсы и падает, огороженный буллшитом со всех сторон. Не нужно совать
> некомпетентное мнение туда, где вы не компетентны

Вы определитесь — вам производительность или {undefined, unspecified} behavior, а потом уже раздавайте советы о том, что кому куда совать.

Ответить | Правка | Наверх | Cообщить модератору

89. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +1 +/
Сообщение от www2 (ok), 22-Дек-15, 18:55 
А как предсказуемое поведение повлияет на производительность?

Вот это вот:

int i = 5;
i = ++i + ++i;

Медленнее работать будет? Велико упущение. Нормальный программист не пишет код, результат которого не может сам смоделировать в голове. Если есть сомнения в приоритетах операций - использует скобки или последовательное выполнение. Или даже ставит скобки просто для ясности, чтобы у других не было сомнений в том, как работает код.

Проверка на выход за пределы массива? Принудительная инициализация переменных нулями? Но ведь можно делать это по-умному - инициализировать только если где-то происходит использование значения до инициализации или размер массива меняется, а конечный индекс массива заранее неизвестен.

Например, в этом случае достаточно сделать одну проверку:
for(i = 0; i < n; i++)
  m[i]++;

Проверка должна быть одна, до выполнения цикла, что n * sizeof(m[0]) меньше полного размера m. Оптимизация не противоречит безопасности. Компиляторы фортрана раньше умели на этапе компиляции сумму арифметической прогрессии, посчитанную в цикле, оптимизировать до известной формулы. А если там только константы фигурируют, то и вообще - на этапе компиляции результат посчитать. Но можно, конечно, по-тупому делать, каждое значение i проверять. В яве, кстати, не так делается?

Ответить | Правка | Наверх | Cообщить модератору

101. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от pavlinux (ok), 22-Дек-15, 19:57 
> Проверка должна быть одна, до выполнения цикла, что n * sizeof(m[0]) меньше полного размера m.

А кто гарантирует, что ( n * sizeof(m[0]) < TYPE_MAX) ?

Да, можно сделать доп. проверку:

if (TYPE_MAX/sizeof(m[0]) < n && (n * sizeof(m[0] < m))

Можно заоптимизить и превратить в битовые маски, про которые
через неделю сам забудешь, что они значат.  

---

Хотите быстро и безопасно - пишите на Ada

Ответить | Правка | Наверх | Cообщить модератору

102. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Аноним (-), 22-Дек-15, 19:59 
> А как предсказуемое поведение повлияет на производительность?
> Вот это вот:
> int i = 5;
> i = ++i + ++i;
> Медленнее работать будет? Велико упущение. Нормальный программист не пишет код, результат
> которого не может сам смоделировать в голове. Если есть сомнения в
> приоритетах операций - использует скобки или последовательное выполнение. Или даже ставит
> скобки просто для ясности, чтобы у других не было сомнений в
> том, как работает код.

Медленнее будет работать проверка указателя перед его первым использованием.
Медленнее будет работать проверка на знаковое целочисленное переполнение.
Медленнее будет работать проверка того, не превышает ли величина сдвига ширину типа данных, которые сдвигают.
Медленнее будет работать проверка того, не выполняет ли программист целочисленного деления на ноль (а деление на ноль с плавающей запятой — не всегда некорректная операция, и потребует ещё одной дополнительной проверки).
Медленнее будет работать проверка того, не выполняет ли программист целочисленного деления INT_MIN на -1.
Медленнее будет работать проверка размера variable length array при каждом обращении.
Медленнее будет работать проверка того, выравнен ли указатель, перед каждым его разыменованием.

А ещё в C есть случаи неопределённого поведения, природа которых лежит в особенности реализации аппаратуры. Предлагаете ввести надстандарт над всеми ISA?

А ещё есть C++ со своей кучей интересных случаев.

> Проверка на выход за пределы массива? Принудительная инициализация переменных нулями?
> Но ведь можно делать это по-умному - инициализировать только если где-то
> происходит использование значения до инициализации или размер массива меняется, а конечный
> индекс массива заранее неизвестен.

И на времени компиляции такой анализ совсем не отразится?

> Например, в этом случае достаточно сделать одну проверку:
> for(i = 0; i < n; i++)
>   m[i]++;
> Проверка должна быть одна, до выполнения цикла, что n * sizeof(m[0]) меньше
> полного размера m.

Проверка должна быть одна, но быстрее не делать её вообще.

> Оптимизация не противоречит безопасности. Компиляторы фортрана раньше
> умели на этапе компиляции сумму арифметической прогрессии, посчитанную в цикле, оптимизировать
> до известной формулы. А если там только константы фигурируют, то и
> вообще - на этапе компиляции результат посчитать.

Компиляторы C и сейчас это делают.

> Но можно, конечно, по-тупому
> делать, каждое значение i проверять. В яве, кстати, не так делается?

Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

106. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +1 +/
Сообщение от pavlinux (ok), 22-Дек-15, 20:42 
>  В яве, кстати, не так делается?

А что вы до Явы докопались, она в NASA, точнее уже на Марсе, на марсаходах работает.  


Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

117. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –1 +/
Сообщение от Аноним (-), 22-Дек-15, 22:34 
откуда инфа?
Ответить | Правка | Наверх | Cообщить модератору

146. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +1 +/
Сообщение от Онаним (?), 23-Дек-15, 13:57 
Вот ты тёмный, братишка. Ещё скажи что не в курсе о том что питон на луне вместе с жабой побывал.
Ответить | Правка | Наверх | Cообщить модератору

147. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –1 +/
Сообщение от Andrey Mitrofanov (?), 23-Дек-15, 14:25 
>питон на луне вместе с жабой побывал.

Мерзкие, склизкие, земноводные ... гады!!  #зависть

Ответить | Правка | Наверх | Cообщить модератору

173. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от pavlinux (ok), 25-Дек-15, 00:51 
Google: nasa mars java
Ответить | Правка | К родителю #117 | Наверх | Cообщить модератору

112. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –2 +/
Сообщение от Вареник (?), 22-Дек-15, 22:03 
> Джава это такой электровеник со встроенным веником GC, который постоянно тормозит, жрёт
> ресурсы и падает, огороженный буллшитом со всех сторон.

Написали helloworld на Java? А сопровождать сотни тысяч строк кода на C++ приходилось? Дружить десяток либов? Или что-то сложнее одной формочки на WinAPI?

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

116. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +1 +/
Сообщение от Чаёвник (?), 22-Дек-15, 22:34 
Не осилили лабы в политехе, как и все Си-хейтеры? Ассемблер тоже завалили? Паскаль и джава - дружба на века?
Нормальные либы и нормальный код прекрасно сопровождаются и интегрируются в другие решения. Даже если написаны на так не любимом вами С/С++. Более того бОльшая половина софта только так и работает. Чего я не могу сказать о сопровождении кода написанного дивизией мартышек на любом ЯП с низким уровнем вхождения.
Ответить | Правка | Наверх | Cообщить модератору

132. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от Бармаглот (?), 23-Дек-15, 01:53 
Шура, не трогайт белоснежный Си своими кривыми приплюснутыми лапами
Ответить | Правка | Наверх | Cообщить модератору

137. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от Классический Анонимух (?), 23-Дек-15, 07:25 
"Более того бОльшая половина софта"

БОльшая половина - это сильно. А бигдата - это меньшая половина? Она почему-то сплошняком на жабке писана. Видимо, тоже лабы на си не осилили. И банковское серверное ПО аналогично.

Ответить | Правка | К родителю #116 | Наверх | Cообщить модератору

141. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –1 +/
Сообщение от Чаёвник (?), 23-Дек-15, 11:18 
Бигдата? Мммм... Я забыл, каждый день он нужен тысячам мильёнов для ежедневных задач. Даже косынка без этих сферических предсказаний в вакууме на основании с потолка взятых данных не работает. Да. И всё равно там рулит не джава, а Python и R
Извращенские банки могут писать своё серверное ПО на любой грабле, на которую они готовы наступать ежедневно. Я даже видел их вакансии по 300$ за штуку. Мне этого даже на квартплату не хватит. Опять же им видимо пользуются сотни тысяч пользователей ежедневно дома и на работе, да? Из какого репозитория можно скачать? А на малинке или телевизоре пойдёт? А на топовом смартфоне? Мы конечно закроем глаза на то, что половина "джава приложений" банков кроме винды вообще нигде не работает, не говоря уже о удобстве и качестве. Многих реально работающих с этим УГ сказочно заололохали так же калечные ключи ЭЦП, которые конфликтуют с любым другим софтом, без которых банковский джавасофт и нафиг не нужен. Короче там всё разваливается постоянно, как карточный домик. Распил такой распил.
Ответить | Правка | Наверх | Cообщить модератору

154. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –1 +/
Сообщение от Anonim (??), 23-Дек-15, 17:29 
> А бигдата - это меньшая половина? Она почему-то сплошняком на жабке писана. Видимо, тоже лабы на си не осилили.

Мне вот интересно, что нынче студентота подразумевает под бигдатой? SAP? Или уже и Oracle? А вы слышали, как эти компании имплементируют новые фичи? Да, сначала на жабе, а потом, если фичей начали пользоваться, переписывают на C в следующей версии.

Ответить | Правка | К родителю #137 | Наверх | Cообщить модератору

138. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  –2 +/
Сообщение от Классический Анонимух (?), 23-Дек-15, 07:27 
> Джава это такой электровеник со встроенным веником GC, который постоянно тормозит, жрёт
> ресурсы и падает

У меня первый телефон, 15 лет назад, был с игрушками и приложениями на джаве. С апп. конфой в духе 2МБ ОЗУ. Не очень-то значит и жрёт.

И где ж в это время пропадал великолепный си?! :(

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

142. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Чаёвник (?), 23-Дек-15, 11:35 
> У меня первый телефон, 15 лет назад, был с игрушками и приложениями
> на джаве. С апп. конфой в духе 2МБ ОЗУ. Не очень-то
> значит и жрёт.

Да, такие маленькие убогие кастратики, типа Siemens M55 и Sony X100. Помню носили их тогда вёдрами чинить. На любой чих и багу в приложении система сыпалась и делала морду кирпичём. Причём прилаги хоть и были написаны на Java, но jar от одной модели телефона легко не работал на другой модели телефона в рамках даже одного производителя. Лучшее их применение было - звонилка с функцией подключения в качестве GPRS-модема через датакабель. От Java там одна насмешка.
К счастью весь этот ужас канул в историю.

> И где ж в это время пропадал великолепный си?! :(

На топовых смартфонах на тот момент вполне лидировавшей Нокии крутился Qt уже тогда.
На тех же блекберрях хотя и есть возможность накидать на Java, но вполне себе есть SDK с C/C++ для тех кто разрабатывает не веб-мордочки.

Ответить | Правка | Наверх | Cообщить модератору

8. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +1 +/
Сообщение от angra (ok), 22-Дек-15, 14:27 
Перечитай новость еще раз. Речь идет о поведении компилятора, а не о изменениях в стандарте языка. Более того, если глянуть оригинал, то окажется, что там даже о сохранении ABI говорится.
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

18. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +4 +/
Сообщение от Crazy Alex (ok), 22-Дек-15, 14:50 
Он эе по факту пытается стандартизировать undefined, unppecified и impleentation defined behaviour - естественно, это покушение на стандарты. Не факт, что это плохо (C вообще по нынешним временам позволяет слишком уж много неопределённости), но решать это надо не новой реализацией, а именно новым стандартом. Там для большей части implementation defined, например, есть всего два-три варианта, возможных в реальной жизни - можно их формализовать и в хидерах отдавать какой именно используется.
Ответить | Правка | Наверх | Cообщить модератору

76. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Аноним (-), 22-Дек-15, 18:13 
> но решать это надо не новой реализацией, а именно новым стандартом.

Во-первых, это нельзя решать ни новой реализацией (очевидно), ни новым стандартом — во втором случае старый код, собранный новым компилятором, может внезапно изменить свою семантику. Во-вторых, стандарты на предмет устранения неопределённого поведения должны быть пересмотрены одновременно для C и C++: пересматривать их только для одного языка из двух просто опасно по той же причине, упомянутой выше.

Ответить | Правка | Наверх | Cообщить модератору

129. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Crazy Alex (ok), 23-Дек-15, 01:07 
Ерунда.

1) стандарт врубается по соответствующему ключику. Если ты не знаешь, что за код ты суёшь компилятору и с какими ключами - это профнепригодность.

2) Если ты суёшь плюсовому компилятору сишный код - и так будь готов к сюрпризам, совместимость давно не полная. Если нет - то какие поблемы? Надо просто раз в жизни запомнить, что C и C++ - это два разных языка, у них свои компиляторы, у каждому - свой набор ключей компиляции и все совпадения в общем случае случайны и не гарантированы, а не писать как девочка-рекрутер "C/C++".

Ответить | Правка | Наверх | Cообщить модератору

148. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от freehckemail (ok), 23-Дек-15, 14:30 
Да, он покушается именно, что на стандарт: его действительно надо доопределить.

Однако новый компилятор вообще говоря идея не плохая. Всё дело в том, что для доопределения стандарта, нужно знать, как именно доопределить его. Стало быть, вопрос встанет в выборе между несколькими вариантами доопределения. И выбор одного или другого может повлечь некоторое количество подводных камней, сразу не очевидных. Так что лучший вариант -- это действительно написать компилятор, и расбираться с этими неочевиными проблемами по мере их обнаружения.

Об этом, кстати, писал Реймонд в "Соборе и базаре": когда ты начинаешь писать нечто, ты на 100% заранее не знаешь, что должно получиться в результате твоей работы. Поэтому, чтобы понять, как именно надо доопределить стандарт, надо создавать тестовый образец компилятора: это приблизит к пониманию того, что надо сделать.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

77. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от Аноним (-), 22-Дек-15, 18:17 
> Более того, если глянуть оригинал, то окажется,
> что там даже о сохранении ABI говорится.

Некоторые любят решать уже решённые проблемы.


http://ispras.linuxbase.org/index.php/ABI_compliance_checker
https://www.sourceware.org/libabigail/

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

82. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +2 +/
Сообщение от angra (ok), 22-Дек-15, 18:30 
Некоторые любят придумать чушь за автора и научить его, как эту чушь исправить, вместо того, чтобы все-таки узнать, что на самом деле говорил автор. Ведь для этого придется напрячь мозг и прочитать много(аж целая страничка) букв.
Ответить | Правка | Наверх | Cообщить модератору

87. "Дэниэл Бернштейн выступил с инициативой создания Си-компилят..."  +/
Сообщение от Аноним (-), 22-Дек-15, 18:53 
> Некоторые любят придумать чушь за автора и научить его, как эту чушь
> исправить, вместо того, чтобы все-таки узнать, что на самом деле говорил
> автор. Ведь для этого придется напрячь мозг и прочитать много(аж целая
> страничка) букв.

У языка как такового нет ABI. ABI есть у программ и библиотек, диктуемое отчасти спецификацией на программно-аппаратную платформу, отчасти — исходным кодом этих программ и библиотек. Говорить об ABI в контексте языка не имеет смысла, так что высказываемые автором опасения ничем не отличаются от рядовой ситуации обеспечения совместимости ABI между программами, собранными двумя произвольным компиляторами (Microsoft C++ Compiler и clang на Windows), или при обновлении исходного кода произвольной библиотеки с void foo(const char* x) на void foo(char* x).

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру