@haskellru

Страница 1280 из 1551
Ilya
18.06.2018
12:13:08
Аж стало интересно вживую посмотреть на этот "экстремально нечитаемый код, где все состоит из макросов со всякими нелокальными goto и прочим. Полное адище" Я правильно нагуглил https://github.com/richgel999/miniz ? @nexmean

У нас в JetBrains эксперимент проводили - переписали библиотеку miniz с Си на Rust (ну не С++, а Си, окей). miniz - это сейчас типа самая убероптимизированная inflate/deflate либа, быстрее zlib. Соотв. inflate/deflate - это чистая числодробилка. Есть массив байт на входе, нужно получить другой массив байт на выходе. Только алгоритм реализуй. Ну эта "убероптимизированность" miniz выражается в т.ч. в экстремально нечитаемом коде, где все состоит из макросов со всякими нелокальными goto и прочим. Полное адище. На Rust переписыали буквально по одной функции - Rust с Си превосходно линкуется. Т.е. БУКВАЛЬНО по одной функции переписывали, линковали и прогоняли тесты. Т.е. один в один вся реализация и структура программы сохранены остались. Как переписано было все, уже начали рефакторить. Короче получился очень красивый и читаемый код, просто ни в какое сравнение с оригиналом. Кроме того, блягодаря расту получаем статически гарантируемый type/memory safety. А дальше уже стали ЕГО ОПТИМИЗИРОВАТЬ ЕЩЕ. Потому что код читаемый, понятно что как работает и зачем нужно - можно оптимизивароть. А когда у тебя все на макросах с goto и небезопасно - там хуй что поймешь и боишься что-то трогать. В итоге у нас на 10-20% быстрее оригинала по разным бенчам. ДА, НА РАСТЕ БЫСТРЕЕ ЧЕМ НА СИ. А секрет прост - раст не меньше чем Си дает контроля за тем, какой там код будет сгенерен. Ты пишешь код, и понимаешь, что у тебя в ассемблере будет в этом месте. При этом type/memory/thread safety и вообще красивые абстракции.
к этому

A64m
18.06.2018
12:13:25
да не в портабельности дело 1) ллвм это фактически кланговый бекенд, шаг влево - шаг вправо от плюсов и все работает уже не так хорошо 2) ллвм даже когда нормально работает не лучший плюсовой бекенд

Alexander
18.06.2018
12:13:50
Аж стало интересно вживую посмотреть на этот "экстремально нечитаемый код, где все состоит из макросов со всякими нелокальными goto и прочим. Полное адище" Я правильно нагуглил https://github.com/richgel999/miniz ? @nexmean
Да я хз, нам пасту в чатик скинул разраб из житбрейнс, ссылку на код он не скидывал. Сам нашёл этот кусок, посмотрел, увидел где же мог раст быть лучше для этой задачи.

Google
Leonid
18.06.2018
12:13:59
надо расту -fvia-c

Mikhail
18.06.2018
12:14:09
Но с прозрачностью в итоге похуже в gcc. Могут сделать закладку майнящую биткоены

A64m
18.06.2018
12:15:17
но если все идет как идет, наверное, в обозримом будущем ллвм будет во всем лучше гцц

Mikhail
18.06.2018
12:16:29
Я так глубоко не копал, но мне кажется нас ждут истории с непрозрачными компиляторами

Солидити вот точно компилится как-то не так, тащит метаданные в код

Leonid
18.06.2018
12:17:56
а вы фольгой проц оберните

Ilya
18.06.2018
12:21:09
Да я хз, нам пасту в чатик скинул разраб из житбрейнс, ссылку на код он не скидывал. Сам нашёл этот кусок, посмотрел, увидел где же мог раст быть лучше для этой задачи.
ну понятно:) просто похоже на то, что паста какая-то с душком:)) ибо греп по репе даёт всего 8 нахождений кейворда goto, из которых 7 штук находится в одном файле и все как один выглядит так: if (...) { mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); goto handle_failure; } где сама метка везде одна и та же: handle_failure: mz_zip_array_clear(pZip, &file_data_array); return MZ_FALSE; которая, очевидно, как раз сделана для УЛУЧШЕНИЯ читаемости (так-то ничего не мешало впендюрить это очищение и ретурн вместо goto) И в остальном код тоже довольно чистенький и понятный. Вывод напрашивается простой: либо это вброс, либо в JetBrains работают просто какие-то терминальные анскиллы (извините), если для них это — "экстремально нечитаемый код, полное адище".

Alister
18.06.2018
12:21:11
A64m
18.06.2018
12:22:35
честно скажу, код который не подходит под характеристику "экстремально нечитаемый код, полное адище" я видел только на паре-тройке ФЯ

Leonid
18.06.2018
12:23:28
в яваскрипте

Google
A64m
18.06.2018
12:24:53
по большому счету, "экстремально нечитаемый, полное адище" это первое что ассоциируется у меня со словом код

агда, скала, раст?
тут 0 фя из 3. ну, если считать пруф ассистент Я, то 1 из 3

Darwin
18.06.2018
12:26:13
тут должна быть эта ссылка: http://govnokod.ru/

(онтопик там тоже есть)

A64m
18.06.2018
12:27:39
да, "экстремально нечитаемый, полное адище" можно написать на любом языке. и почти на всех нельзя не написать

kana
18.06.2018
12:28:08
что значит "почти"

на каком можно не написать?

A64m
18.06.2018
12:28:34
почти на всех нельзя

kana
18.06.2018
12:28:58
исправил, ох уж эти двойные отрицания

A64m
18.06.2018
12:29:15
на фя иногда можно

Alexander
18.06.2018
12:29:53
на фя иногда можно
ну хз, алгоритмы всё же проще описывать в императивном стиле, не?

A64m
18.06.2018
12:30:02
нет

Александр
18.06.2018
12:32:17
https://github.com/0x7CFE https://github.com/kpp
Да, кстати. С Димой Кашициным мы общаемся, и он как раз сменил плюсы. Теперь пишет на Расте за деньги.

A64m
18.06.2018
12:32:46
платит, чтоб писать на расте?

Александр
18.06.2018
12:33:22
Ему платят, очевидно.

A64m
18.06.2018
12:33:46
повезло

Евгений
18.06.2018
12:34:07
Скорее всего очередной блокчейн пишет

Александр
18.06.2018
12:34:31
Не знаю

Евгений
18.06.2018
12:34:42
Ну или в купибилете работает

Google
Ilya
18.06.2018
12:35:11
Скорее всего очередной блокчейн пишет
Раньше был принцип 'Everything is better with Bluetooth', а теперь 'Everything is better with Blockchain'

Alexander
18.06.2018
12:35:15
Мне, кстати, интересно, а сегодня блокчейн индустрию формальная верификация не интересует?

Ilya
18.06.2018
12:35:24
Раньше был принцип 'Everything is better with Bluetooth', а теперь 'Everything is better with Blockchain'
даже велосипед на блокчейне есть, крутишь педали, а он майнит https://hightech.fm/2018/06/17/bicycle

Leonid
18.06.2018
12:35:37
Алексей
18.06.2018
12:36:04
Стану программистом вашего блокчейна

Yuriy
18.06.2018
12:36:07
Мне, кстати, интересно, а сегодня блокчейн индустрию формальная верификация не интересует?
в Cardano всё формально верифицировано. или тебя вся индустрия вместе взятая интересует?

Yuriy
18.06.2018
12:36:39
На ликвиде?
хз, пусть лучше @dshevchenko расскажет

Maxim
18.06.2018
12:36:52
http://www.well-typed.com/blog/2018/05/semi-formal-development/ ну я бы не назвал это формальной верификацией

Alexander
18.06.2018
12:37:47
в Cardano всё формально верифицировано. или тебя вся индустрия вместе взятая интересует?
Ну больше индустрия в целом. Всё же блокчейн крайне критичен к безопасности. Стоит, например, вспомнить инцидент с парити, когда милионы амеркинских рублей оказались безвозвратно залочены.

Denis
18.06.2018
12:37:55
что там рассказать нужно?

Denis
18.06.2018
12:38:14
А, про формальную верификацию...

Yuriy
18.06.2018
12:38:21
что там рассказать нужно?
у вас блокчейн верифицированный?

Denis
18.06.2018
12:38:51
формальная верификация (например, на Liquid) заявлена как одна из будущих идей

но пока она не воплощена в жизнь

Tony
18.06.2018
12:39:47
есть пару проектов кто поверх Солидити делает верификацию

Alexander
18.06.2018
12:40:51
> есть блокчей на идрисе > репа с одним файлом, и тот README.md

Leonid
18.06.2018
12:41:08
заканчивай уже с картинками

Google
Евгений
18.06.2018
12:41:55
заканчивай уже с картинками
Есть стирающий стикеры бот?

Leonid
18.06.2018
12:42:18
или память

Mikhail
18.06.2018
12:42:23
Admin
ERROR: S client not available

Слава
18.06.2018
12:42:38
Десктопный клиент скайпа, вроде бы (можно уточнить), на плюсах целиком написан (или, как минимум, был написан несколько лет назад). Это не мешало ему съедать кучу памяти и тормозить :)
А когда он был написан на Дельфи, он не тормозил и потреблял куда меньше памяти. Именно тогда скайп приобрел популярность.

Alexander
18.06.2018
12:42:43
Есть стирающий стикеры бот?
я и сам могу, только намекните

Евгений
18.06.2018
12:43:04
Ну в общем не надо стикеров, у нас тут это не приветствуется

вобще в БЧ смартах она очень нужна - кто умеет это делать пишите в ЛК есть работа ;)
Будут платить деньги за написание тотального языка? :О

? animufag ?
18.06.2018
12:44:34
Есть стирающий стикеры бот?
да но вроде его решили не добавлять

Mikhail
18.06.2018
12:45:27
вобще в БЧ смартах она очень нужна - кто умеет это делать пишите в ЛК есть работа ;)
У меня есть проект собственного компилятора солидити в байткод EVM на хаскеле. Готовы спонсировать?

Alexander
18.06.2018
12:45:55
Будут платить деньги за написание тотального языка? :О
Так можно же на Coq доказывать, а писать хоть на питоне, не?

A64m
18.06.2018
12:46:30
интересно, почему нет опции не отображать стикеры? явно же их ненавидит каждый второй

Mikhail
18.06.2018
12:46:49
Или хотя бы поменьше размером, да

Alexander
18.06.2018
12:46:59
тогда часть чятиках будут абсолютно пустыми

Евгений
18.06.2018
12:47:28
тогда часть чятиках будут абсолютно пустыми
И так половина моих чатов абсолютно пустые. И ничо

A64m
18.06.2018
12:47:38
вроде для стикера есть соответствующий значек/слово

Anton
18.06.2018
12:47:52
Мне, кстати, интересно, а сегодня блокчейн индустрию формальная верификация не интересует?
Судя по моему опыту, интересует. Довольно часто приходят офферы на эту тему. Проблема только в том, что заказчик сам не знает чего хочет, ему надо чтобы “была формальная верификация”

Евгений
18.06.2018
12:48:50
Так можно же на Coq доказывать, а писать хоть на питоне, не?
По-моему верифицировать код сложнее, чем писать на тотальном языке

Google
A64m
18.06.2018
12:49:31
По-моему верифицировать код сложнее, чем писать на тотальном языке
понятно, что верифицировать сложнее, чем не верифицировать

Евгений
18.06.2018
12:50:15
Писать на тотальном языке это верифицировать

A64m
18.06.2018
12:50:24
не совсем

Vladimir
18.06.2018
12:50:35
По-моему верифицировать код сложнее, чем писать на тотальном языке
а вот обьясните, как работает этот процесс. Ты пишешь на любом говнокоде, потом переписываешь на Coq и получаешь верификацию?

kana
18.06.2018
12:50:40
"верифицировать завершаемость" наверное, а не корректность

Mikhail
18.06.2018
12:51:31
Писать на тотальном языке это верифицировать
Туда тотальный язык не попрет. Специфика EVM. Никакой хаскель туда не ляжет

Vladimir
18.06.2018
12:51:32
"верифицировать завершаемость" наверное, а не корректность
А Coq позволяет верифицировать корректность?

Anton
18.06.2018
12:51:34
а вот обьясните, как работает этот процесс. Ты пишешь на любом говнокоде, потом переписываешь на Coq и получаешь верификацию?
нет. на кок формулируешь спецификацию, пишешь код, а потом доказываешь теоремы, говорящие о том, что код соответсвтует спекам

Tony
18.06.2018
12:51:38
А еще часть из них хотят платить в той же криптовалюте, что и разрабатывается. ?
О да - год назад моя почта разрывалась от таких. Напишите нам проект и смарт и проведите IСO выведите на биржи, а мы вам токенов наших будующих отсыпем процетов Х)))

A64m
18.06.2018
12:51:40
с такми же успехом можно сказать, что писать на типизированном языке и запускать, проверяя не зацикливается ли - то же самое что верифицировать

Anton
18.06.2018
12:52:11
Software Foundations

A64m
18.06.2018
12:52:18
т.е. проверка соотвествия некоей спецификации при этом происходит, но спецификация довольно неинтересная

Alexander
18.06.2018
12:52:18
о, надо бы дочитать

Страница 1280 из 1551