May 2025

S M T W T F S
     123
45678910
11 12131415 1617
18 1920 21222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Tuesday, April 21st, 2020 12:46 pm
Читаю сейчас книгу про то, как устроен Ethereum VM. Поразительная вещь - разрабатывая систему с нуля во втором десятилетии 21 века, люди умудрились сделать так, что там возможны и integer overflow/underflow, и uninitialized memory reference, и race conditions - в несколько извращённой форме, поскольку система по дизайну однопотоковая, но таки удалось!
Можно говорить, что проблема в компиляторах типа solidity, которые компилируют такой код без всяких проблем, а сама VM не виновата (от чего всё равно не легче, кстати), но хотя бы с overflows можно и на уровне VM бороться.

И, разумеется, все эти проблемы в реальных контрактах могут стоить владельцам реальных - ну т.е. воображаемых, но для них вполне реальных - денежных потерь. И уже стоили. Собственно, мега-форк экосистемы на Ethereum и Ethereum Classic произошёл именно из-за одного такого бага. Там, кажется, попятили виртуальных печенюшек на сумму в 50 млн. Конечно, вряд-ли все 50 млн можно будет обналичить, да и не факт, что вообще что-то можно будет, но сама по себе история впечатляет.

Такое впечатление, что опыт последних 30 лет никого ничему не научил. Т.е. я понимаю, что сделать систему без багов невозможно, все дела, но когда речь идёт о граблях, на которые наступают уже много десятилетий, может можно хотя бы не раскладывать их прямо на дороге?
Wednesday, April 22nd, 2020 03:24 am (UTC)
No surprises. It was built by 18-20 year old kid who won tons of CS competitions but who never worked in a real software engineering company. I see code like this all the time from new grads in the first 12-18 months ;)
lxe: (Default)
[personal profile] lxe
Wednesday, April 22nd, 2020 03:49 am (UTC)
The word is "hipsters".
Wednesday, April 22nd, 2020 03:47 am (UTC)
Ну вот странно, блин.
Может быть сейчас уже, когда чуть что и раст в руках, вещи как-то поулучшатся. Бутерину, конечно, не до надежности было, да и...
Wednesday, April 22nd, 2020 04:49 am (UTC)
А кто их будет слушать? Вот меня на работе желающих слушать почти нету. Ну чо там, type safety, она же не фиксит никакой баг. Вот будет баг...

Ох, как все это достало, конечно.
Wednesday, April 22nd, 2020 08:02 am (UTC)
Что хорошо для отсеивания тупых необязательно лучший выбор для финансового софта (если не требуется высочайшей производительности)


Wednesday, April 22nd, 2020 04:29 pm (UTC)
Джоэль имеет в виду, что тем, кого ищут писать финансовый софт, не надо идти учиться в университет - достаточно техникумов.
Wednesday, April 22nd, 2020 08:15 am (UTC)
Качество дискуссии так себе, особенно позабавил мап-редьюс.
Wednesday, April 22nd, 2020 06:20 am (UTC)
Да, могли бы. Я вообще не понимаю такой херни как "неинициализированная переменная".
Wednesday, April 22nd, 2020 08:06 am (UTC)
Для этого надо хорошо разбираться в перформансе.
Wednesday, April 22nd, 2020 08:09 am (UTC)
Потому, что везде хуяк-хуяк и в продакшен.
Де факто системы с гарантиями стали делать только недавно. См. го и раст.
Если открыть C++ там все так плохо, что той Солидити срать и срать.
И комитет по C++ прогоняет такую пургу, что стыдно.
Из всех чуваков по VM которых я знаю норм мозги есть только у авторов KVM и Линуса Торвальдса.
Все остальное - ну такое.
Wednesday, April 22nd, 2020 08:57 am (UTC)
> Если открыть C++ там все так плохо, что той Солидити срать и срать.

Это бессмысленное утверждение, т.к. цель и смысл C/C++ состоят в возможности написания максимально производительного софта на portable языке высокого уровня.

Это как сказать "в гоночной машине все так плохо - в столб на ней врежешься мало не покажется".

Wednesday, April 22nd, 2020 12:29 pm (UTC)
Это очень поверхностное понимание.
Я про тонкости стандарта, написанные астронавтами, которые в жизни не разрабатывали ничего.
Thursday, April 23rd, 2020 04:16 pm (UTC)
Знаете, мне тут по долгу службы пришлось окунуться в эппловский Свифт, где все это решено, и обернуто бантиками, так я жду-недождусь, когда, наконец, этот проект закончится и мне удастся вернуться к С/С++ и Винде, где можно наступить на мину, особенно когда пишешь код для ядра, но зато не чувствуешь себя как в концлагере и где все зависит только от тебя, а не от дяди и его понимания "правильного кода". Может, я такой олдтаймер и анархист, но вот.
Thursday, April 23rd, 2020 07:30 pm (UTC)
А было ведь такое: Visual Basic 6. Прибили гады... Эх, где те золотые времена...
Thursday, April 23rd, 2020 11:24 pm (UTC)
> все зависит только от тебя, а не от дяди и его понимания "правильного кода"

На петоне попеши, там за тебя даже форматирование язык решает!
Пороха не нюхали!!!
Wednesday, April 22nd, 2020 03:06 pm (UTC)
Да-да. Когда-то что-то такое я слышал про джаву.
На моё имхо, язык не только не заменит межушный нервный узел, но и отнюдь наоборот- чем больше будут уповать на то, что вот теперь-то на (D,F, Go...) будет по-другому и всё станет хорошо, тем глубже будет "хотели как лучше, а вышло как всегда" (с).
Thursday, April 23rd, 2020 12:28 am (UTC)
Есть очень много менеджеров которые вполне хорошо пишут на sql. И вообще это действительно самый лёгкий и понятный язык из всех.
Thursday, April 23rd, 2020 07:58 am (UTC)
Ну. Я знаю точно об одном проекте по анализу сейлзов где два чувака делали примерно одно и то же. На питоне и на сиквеле.
Проект на сиквеле без тестов почти. На питоне как обычно 50% кода тесты. Питонский после этого ломался постоянно (при изменения ессно). А сиквел работал как по рельсам. И кода в нем было в 5 раз меньше.
Т.е. сиквел и легче и более защищен от идиотов.

Или можно смотреть с другой стороны: жабаскрипт на порядок сложнее сиквела, но в среднем на нем пишут такие макаки, что туши свет.
Edited 2020-04-23 08:03 am (UTC)
Thursday, April 23rd, 2020 11:06 am (UTC)
как человек, когда-то написавший проект в 50 000 строк кода на MS TransactSQL, я абсолютно этому не удивлен
Thursday, April 23rd, 2020 03:23 am (UTC)
"Израильский SQL-сервер всегда отвечает запросом на запрос"

Thursday, April 23rd, 2020 11:03 am (UTC)
а-а-а !

made my day
Thursday, April 23rd, 2020 01:56 pm (UTC)
C++ 2017 - это тоже война и немцы.
Wednesday, April 22nd, 2020 02:12 pm (UTC)
Где-то я встречал теорию, что из-за того, что количество программистов растет очень быстро, просто не хватает людей в предыдущем поколении, чтобы передать опыт. И новое поколение повторяет все ошибки предыдущего.
Edited 2020-04-22 02:13 pm (UTC)
Thursday, April 23rd, 2020 05:19 am (UTC)
Какие могут быть баги в системе, в которой "code is law"? Это не система упала из-за ошибки, это у пользователей ошибочное мнение, что она должна была продолжать работать, а система упала вполне штатно.
И основной конфликт форка был из-за того, что идейные пуристы никакого нарушения не признали - если система позволила увести деньги, то значит это была совершенно законная сделка.
Thursday, April 23rd, 2020 07:19 am (UTC)
Ну, некоторым был нужен, так что драма во время форка была внушительная. Получился весьма занятный эксперимент, когда крупная криптовалюта практически идеально разделилась на две независимые, одна из которых для "потребителей", видящих в ней финансовый инструмент, а вторая для "криптовалютных энтузиастов" которым важнее всего соответствие изначально объявленным криптовалютным ценностям и которые составляли изначальный костяк сообщества. Что характерно, потребительская сейчас стоит в ~30 раз дороже энтузиастской.
Но в целом, это было очень самоуверенно, делать ключевым пунктом идеологии проекта то, что если поведение кода не соответствует спецификации, то ошибка в ней, а не в коде.
Thursday, April 23rd, 2020 06:29 am (UTC)
У Эфира есть такое количество непреодолимых катастрофических проблем (тот же рост блокчейна), что Виталик и компания пребывают в состоянии экзистенциального ужаса, на фоне которого все остальное мелкие баги.