[00:18:42] <valexey_> ага-ага, а еще подтверждает локальный пик смертности у мужчин примерно в 20-22 года.
[00:19:09] <valexey_> info21, как обычно, все сильно упрощает. при всем уважении, он в этой теме не компетентен.
[01:39:17] <valexey_> https://www.youtube.com/watch?v=2gQ3P5BpLjQ
[01:39:20] <valexey_> хе
[01:39:27] <valexey_> блин, 2008 год. или даже 2005
[02:28:00] <valexey_> https://www.youtube.com/watch?v=yhiTB2Dp85Y
[02:28:07] <valexey_> еще немного 2007 года
[02:30:17] <valexey_> https://www.youtube.com/watch?v=P0NTV2mbJhA
[03:25:54] <valexey_> а вот детальный проезд яндекс.беспилотника: https://www.youtube.com/watch?v=rTKEkztFJPs
[07:22:13] <prospero3000> Внутри Яндекс-авто монитор стоит.
[07:22:37] <prospero3000> И судя по тому, как он повороты видит -- слепышок пока.
[07:22:57] <prospero3000> Да и прямо видит метров на 30-40 только.
[07:23:14] <prospero3000> А при повороте -- вообще не видит.
[07:23:28] <prospero3000> Тесла на 70 км/ч гоняет.
[07:23:32] <prospero3000> Уже.
[07:23:55] <prospero3000> Мерседес, Вольво -- до 90 по шоссе.
[07:24:03] <prospero3000> В боевых условиях))
[07:26:05] <prospero3000> Я видимо, чего-то недогоняю. Почему они промышленный ПК в автор стесняются поставить?
[07:26:13] <prospero3000> Неужели вера?))
[11:49:37] <valexey_> prospero3000: промышленные ПК обычно не имеют на борту мощных игровых видеокарт
[11:49:48] <valexey_> а без таких видях оно работать не будет
[11:50:16] <valexey_> обзор там 360 градусов - там же лидар
[11:50:40] <prospero3000> Обычно нет. Возьмём DSP, не?
[11:53:26] <valexey_> нет. DSP не справится
[11:53:59] <valexey_> там же нейросетки крутятся
[11:54:29] <prospero3000> Щютник. В радиолокационной станции "Наяда-5мп" проц в 200 МГц обсчитывает карту радиусом 180 кми держит 300 целей, а тут DSP не хватит.
[11:55:07] <valexey_> я объяснил почему
[11:56:14] <prospero3000> Спец DSP хватит за глаза. Любого. Причём, судя по картинке -- нейросейт там пипец просто.
[11:56:54] <prospero3000> Rf;tncz? d Ueukt 'nj gjybvf.n/
[11:56:55] <valexey_> ты как в DSP нейросетку засунешь?
[11:57:04] <prospero3000> Кажтся в Гугле это понимают не плохо.
[11:57:13] <prospero3000> Не знаю. Гугль смог.
[11:57:51] <prospero3000> https://habrahabr.ru/post/321946/
[11:58:23] <prospero3000> Цитата:"ensorFlow 1.0 с моделью нейросети нового поколения Inception поддерживает аппаратное ускорение на DSP Hexagon в мобильных процессорах Qualcomm Snapdradon 820. Скорость работы приложений вроде Prism и программ машинного зрения увеличится в 8 и более раз, а энергопотребление снизится в 4 раза. Фильтры от нейросетей можно будет накладывать на видео почти в реальном времени"
[11:58:42] <valexey_> оно довольно дохлое. для машинки не годится
[11:58:58] <valexey_> то есть да, это лучше чем на CPU гонять, но хуже чем на видяхе
[11:59:18] <prospero3000> Не важно, как построен DSP-чип: нейросеть, свёртка, фильтр. Это всё тот же DSP. Тупой, мощный ,прямой как палка.
[12:00:02] <prospero3000> Помня о том, чт ов промышленный ПК видяху не запихнёшь, DSP чипов можно напихать пару десятков.
[12:00:05] <valexey_> нейросеть это не то как построен чип, это то, чем чип занимается
[12:00:16] <prospero3000> А это не одно и тоже?
[12:00:35] <valexey_> не. вот на CPU тоже можно нейросети гонять.
[12:00:46] <prospero3000> И после завершения запихивания DSP -- не позориться с айпадами.
[12:01:09] <prospero3000> Что делает ,и как построен -- это одно и тоже.
[12:01:15] <valexey_> ну, короче, я объяснил почему в экспериментальных авто пром. компы не юзают.
[12:01:26] <valexey_> в серийных же - да, будет промышленное решение какое-то.
[12:01:34] <valexey_> но до этого еще прыгать и прыгать
[12:02:30] <valexey_> ну и конфигурация при экспериментах реально часто меняется. такое железо, сякое железо.. смысла в пром компе просто нет
[12:02:44] <prospero3000> А в планшете есть??))))
[12:02:55] <prospero3000> Неросети гонять?))
[12:02:57] <valexey_> а планшет и не тянет пока эти задачи
[12:03:14] <prospero3000> Хм. Видео от Яндекса с тобой категорически не согласно))
[12:03:27] <valexey_> ы?
[12:03:37] <prospero3000> Так то.
[12:05:28] <valexey_> а где там планшет? :-)
[12:06:03] <prospero3000> Аххахаха!!! На 15 сек -- на крыше головка крутится!!)) А я не обратил внимание))
[12:06:25] <prospero3000> 28 сек -- и далее.
[12:07:30] <valexey_> на крыше лидар крутится
[12:08:01] <valexey_> эмм.. это монитор. обычный DELL в салоне установлен
[12:08:05] <valexey_> 22 или 24 дюйма
[12:08:08] <prospero3000> Если они эту крутящуюся говоку не уерут - -так и будут на 20 к/ч ездить))
[12:08:14] <valexey_> комп - в багажнике, как обычно
[12:08:41] <valexey_> ну, гугл с такой же штукой ездит. убер, лифт, nuTommy - стандартно
[12:08:56] <prospero3000> Пока эта головка у них будет, до тех пор я на яндекс-такси ездить не буду))
[12:09:06] <prospero3000> И других тоже.
[12:09:58] <prospero3000> Неужели вмест остационарной камеры ,в которой ничего не сломается -- выгодней такую балду ставить??
[12:11:03] <prospero3000> Там явно кадра 3 в секунду обработка. Лидар с камерами не нужен.
[12:11:21] <prospero3000> Там расстояние сотня метров.
[12:11:33] <prospero3000> Потолок. Чтобы затормозить успеть.
[12:12:09] <valexey_> нет,не 3 в секунду
[12:12:16] <valexey_> кроме того, там три лидара, а не один
[12:12:23] <valexey_> насколько я понимаю
[12:12:34] <valexey_> в конце апреля - был сетап с одним
[12:12:49] <prospero3000> Как не 3 раза в секунду, если он с такой скоростью вращается??
[12:13:36] <prospero3000> Да инфракрасный прожектор спереди/сзади/по бокам -- и хорошь. Любая тупая камера с фильтром -- хватит за глаза.
[12:26:02] <_valexey_> prospero3000: скачай udacity или kitti датасет да глянь сколько там раз в секунду обновление
[12:26:39] <_valexey_> Там тот же лидар используется
[12:28:24] <prospero3000> Лидар на расстоянии до 400 метров -- не нужен.
[12:30:08] <_valexey_> А после? :-)
[12:33:32] <prospero3000> А после -- можно задействовать. Так как туман, инфракрасный прожектор нужен с киловатт, очные приборы наблюдения тоже слишком грубы.
[12:34:07] <prospero3000> Лидар эффективен на расстоянии от 1,5 до 12 км.
[12:34:31] <prospero3000> Меньше и бинокля хватит, больше -- сильное рассеянме атмосферы.
[12:35:26] <_valexey_> Лидар, какой тут используется, абсолютно бесполезен на таких расстояниях
[12:38:05] <_valexey_> Слишком разреженное облако точек будет, если будет вообще
[12:38:26] <_valexey_> Также лидар проблематично использовать например если идет снег
[12:46:46] <_valexey_> Но конечно на одном лидаре никто не ездит.
[14:48:22] <valexey> статья про полезные варнинги которые не включаются через -Wall и -Wextra: https://kristerw.blogspot.ru/2017/09/useful-gcc-warning-options-not-enabled.html
[14:48:27] <valexey> а теперь скажите, что Оберон безопасней :-)
[15:28:56] <prospero3000> int foo(int a) { int b; if (a == 0) b = 42; else if (a == 0) b = 43; return b; }
[15:29:04] <prospero3000> Хм...
[15:29:22] <prospero3000> Ладно, прям по месту тыкаю.
[15:29:39] <prospero3000> if (a == 0) <- вот это гавнище. Сразу нет.
[15:30:32] <prospero3000> Следующий кусок -- b = 42; использование константы -- стальной линейкой по рукам. Сразу.
[15:31:22] <prospero3000> b = (a == 0) ? 42 : 42; -- сложное действие в строке? Ещё раз раскалённым утюгом по рукам.
[15:32:38] <prospero3000> int foo(int a) { a = a || 0xf0; return a; -- возврат логичесого значения вместо целого при квалификации результата, как целое? Гавнище.
[15:33:43] <prospero3000> if (a < 0 && a < 0) return 0; return 1; А вот здесь -- поведение верное. Почему тут должен быт ьварнинг вообще?
[15:34:07] <prospero3000> квалификатор интеджер, варнинг высосан из пальца.
[15:34:23] <prospero3000> И кстати, два реторна -- гавнище.
[15:35:19] <prospero3000> -Wnull-dereference -- ещё одно гавнище п оопределению.
[15:36:21] <prospero3000> Дальше и смотрет ьне буду. Си -- это сплошное гавнище недостойное серьёзного внимания. Ну, может, с точки зрения психиатрии, или падаванам учебный фильм показывать ,как расстреливают насильников за говнокод.
[16:10:15] <valexey> дык NULL дереференс в обероне тоже как бы никуда не девался
[16:10:17] <valexey> оберон от этого всего ну никак не гарантирует и не уберегает
[16:13:18] <valexey> а чем IF a = 0 THEN -- является говнищем?
[16:13:36] <valexey> кажется ты что-то не понял из статьи :-)
[16:15:13] <prospero3000> Ссылка в Обероне, даже если NULL -- не может быть связана с типом, для которого она не предназначена.
[16:15:41] <prospero3000> IF a = 0 THEN не является говнищем, а очень даже хорошая конструкция.
[16:15:53] <valexey> и-и? никто не помешает сделать дереференс и схлопотать UB (в частном случае это будет трап, а иногда и не будет)
[16:16:26] <prospero3000> Трап в такой ситуации ты получишь однозначно. И это превосходно!)
[16:16:57] <valexey> в сообщение о языке ничего про такой трап не написано
[16:17:06] <valexey> так что будет неявный UB :-)
[16:17:52] <prospero3000> Не сказано. Но нормальные люди сразу его реализовывают. Без дурных вопросов, а надо это или нет.
[16:18:15] <valexey> Ладно. вот вам еще тестирование машинки: https://www.youtube.com/watch?v=43-I4MLn0MQ
MIT. 2007 год. Хороший полигон. Хороший тест.
[16:18:48] <valexey> ну я и говорю - неявный UB в обероне в этом случае. неявный - потому, что в описании языка вообще ничего про этот случай не сказано.
[16:19:12] <valexey> и кто-то может решить, что будет трап :-D и будет полагаться на это.
[16:19:20] <prospero3000> Ты женой своей пользуешься, или соседа?
[16:21:56] <valexey> я людьми не пользуюсь. человек - не вещь
[16:22:45] <prospero3000> Хорошо, ты со своей женой не пользуешься, или соседа женой не пользуешься?
[16:36:43] <valexey> да я и тобой не пользуюсь, чо уж там.
[16:37:28] <prospero3000> Тогда получишь трап 200%))
[16:37:54] <prospero3000> А трап ,по определению, лучше, чем старт в космос.
[16:38:11] <prospero3000> Иногда быть космонавтом очень больно)
[16:39:35] <valexey> водителем тоже :-)
[16:40:11] <prospero3000> Это уже детали. Чужим инструментом нормальные люди не пользуется. А вдруг чо сломаешь?
[16:56:09] <prospero3000> Кстати, поскольку сейчас тетрис на русский переделываю, мысль по ходу движения. Переменная указателя должна в коде выглядеть вроде этого: уФигура
[16:56:39] <valexey> венгерка?
[16:57:08] <prospero3000> Да. Гениальная штука.
[16:57:42] <prospero3000> цВысота туКлетка тСтакан
[16:58:26] <valexey> ТОберон
[16:58:40] <prospero3000> Нет. тОберон.
[16:58:47] <prospero3000> Или туОберон
[16:59:21] <valexey> ты не понял. венгерка и на типы распространяется. чтобы тип отличить от переменной, присобачиваем буковку Т перед названием
[16:59:23] <prospero3000> Префикс с маленькой. Чтобы точно знать, где префикс ,а где уже точно название.
[16:59:38] <prospero3000> тОберон = тип Оберон
[16:59:49] <prospero3000> цВысота = целое Высота
[17:00:30] <valexey> а если у тебя будет тип тТочка?
переменная типа Точка будет тогда тоже тТочка, что не здорово
[17:00:32] <prospero3000> тип можно и так назвать: ТОБерон
[17:01:12] <prospero3000> Да. Не здорово. Но если префикса нет -- это уже точно переменная юзверевского типа
[17:01:29] <prospero3000> А вот что такое ТОБ???
[17:01:43] <prospero3000> и что означает название типе ерон?
[17:02:37] <valexey> ну, кусок Херона, видимо :-)
[17:02:58] <prospero3000> Как тольк оначинается "видимо" -- дурное решение.
[17:02:59] <TRUE> венгерка маст дай
[17:03:27] <prospero3000> венгерка -- маст хэв.
[17:03:32] <valexey> поддерживаю. венгерка суксь
[17:03:44] <valexey> как бывший приверженец оной говорю :-)
[17:03:50] <TRUE> это мусор, который мешает чтению кода и работе IDE
[17:04:09] <valexey> ну, работе IDE не мешает, а вот что мусор - это да.
[17:04:10] <prospero3000> Это фильтр, которой облегчает понимание.
[17:04:50] <TRUE> и ещё кое-кто против неё потому, что она занимается антиабстрагированием.
[17:04:58] <valexey> угу
[17:05:00] <TRUE> разабстрагированием
[17:05:02] <valexey> т.е. и поэтому тоже
[17:05:28] <valexey> и каждое изменение типа, ведет к переименовыванию переменных, что хреново.
[17:05:51] <TRUE> этот фильтр "облегчает понимание" только в случае, если есть привычка давать переменным извратские имена
[17:06:04] <prospero3000> Гоните дружно в ряд.
[17:06:05] <valexey> ну и если инструментарий разработки совсем уж убогий.
[17:06:16] <valexey> и язык тоже
[17:07:00] <TRUE> и придумана она была для Си, у которого с типами проблема. Почти всё, что угодно может быть целым числом. И этот префикс позволяет понять, что же конкретно это целое в действительности обозначает
[17:07:18] <prospero3000> Есть базовые объекты обработки, привязанные к конкретной реализации мира. И хоть вы тресните, но на этом уровне абстракция будет дружно течь.
[17:07:27] <valexey> ну, собственно в WinAPI любили этим обмазываться
[17:07:51] <prospero3000> Не идиоты. Им то на кусок масла с хлебом хватает.
[17:08:01] <prospero3000> Учитесь ,пацаны!)
[17:08:10] <valexey> lpstrSomeStr - няшно!
а если это еще и член класса...
m_lpstrSomeStr;
[17:08:11] <prospero3000> (* как жить надо *)
[17:08:46] <prospero3000> Правильно. Потому что число префиксов не может быть больше 10.
[17:09:05] <valexey> чего уж не больше 255...
[17:09:46] <prospero3000> Потому что базовых сущностей с десяток максимум. И то, целое и дробное -- имеют два подвида ,что в корне не верно.
[17:11:24] <prospero3000> Зачем какието префиксы переменной, типа этой:
стакан.ряд.Текущ_Получ()
[17:11:59] <TRUE> valexey> ну, работе IDE не мешает
я не имел в виду, что IDE ломается, но поиску в IDE оно мешает. Сначала нужно весь префикс набрать, а уже потом название сущности. Если говорить точнее, то это мешает пользователю с удобством пользоваться поиском в своей IDE
[17:12:23] <valexey> ну, в принципе есть же поиск по подстроке
[17:12:27] <prospero3000> Хм. Ты серьёзно? максимум два символа префикса мешают?))
[17:12:38] <valexey> в clion по кр. мере есть. т.е. это не сильно помешает. но будет раздражать, да
[17:13:22] <prospero3000> ц дц дв б т ту у м п.. л.. г..
[17:13:29] <prospero3000> И всё.
[17:13:40] <valexey> вызовите скорую! в prospero3000 приступ эпилепсии!
[17:13:46] <prospero3000> Они нужны только дя привязки абстракции к реализации.
[17:13:49] <valexey> "ц дц дв б т ту у м п.. л.. г.." - :-)
[17:14:59] <prospero3000> Поздняк. Пошёл домой уже))
[17:15:21] <prospero3000> Выдержитсь там! И хорошего вам настроения!
[17:15:55] <valexey> и вам туда же и того же :-)
[17:16:06] <prospero3000> Не так. И вас туда же ,и вас тем же.
[17:17:39] <TRUE> весь смак абстракции - её не надо ни к чему привязывать
[18:08:19] <prospero3000> Это невозможно. Мы живём в реальном мире, и абстракция есть упрощённое отображение мира.
[18:39:31] <valexey> напомнило:
"В отгороженной территории (где те, кто не учит английский язык и где строго запрещён алкоголь и порнография) у них натуральный каменный век. Что особенно интересно для нас – нет абстрактного мышления. Причём на том уровне, что два эвкалипта будут называться одним словом, три эвкалипта – другим (это другой объект), а две акации и три акации – тоже новые слова, не имеющие общего со счётом. То есть каждый счётный объект до понятия «много» – это новое слово. В этом плане мне запомнился выучивший английский парень, объясняющий, какие у него тут рядом водятся крокодилы:
— В этой реке водятся шестиметровые крокодилы. Пятиметровые крокодилы. Четырёхметровые крокодилы, — он сосредоточился, чтобы никого не пропустить, — Трёхметровые крокодилы. Двухметровые крокодилы. И ещё однометровые крокодилы!"
[18:42:14] <prospero3000> Парень шарит.
[18:49:50] <valexey> кажется оберонщики как те аборигены. они ж тоже всё делаеют как можно проще и мыслят вот конкретно.
[18:49:59] <valexey> не давая запудрить мозги левыми абстракциями.
[18:51:28] <prospero3000> Нет, не верно) Оберонщики прекрасно понимают, что абсолютные абстракции могут быть только в математике. А в информатике размерность числа "при" упрётся в объём доступной памяти.
[18:51:57] <prospero3000> ..".пи"...
[18:52:11] <valexey> не факт, кстати.
[18:52:24] <prospero3000> Факт.
[18:52:39] <valexey> неа. число может быть ленивым
[18:54:02] <prospero3000> Когда дело дойдёт до 10^10^10^10 знака после запятой -- ленивое число в Си поймает сегфолт.
[18:54:12] <valexey> с чего бы?
[18:54:36] <prospero3000> С того, что памяти не хватит на такое представление.
[18:55:06] <valexey> эмм.. число ленивые. следовательно не нужно его держать в памяти.
[18:55:06] <prospero3000> Наш мир -- не идеальная абстракция. Он ограничен.
[18:55:42] <prospero3000> Для хранения -- нет. Для использования -- никуда ты не денешься.
[18:57:39] <valexey> денешься же
[18:58:28] <prospero3000> Нет. Если "пи" динамически посчитать можно, то результат точно где-то хранить надо.
[18:58:38] <prospero3000> Привет сегфолту.
[18:59:02] <valexey> не надо же. операции с ленивыми числами дают ленивые числа
[18:59:20] <valexey> кстати, переполнение памяти, это не сегфолт. как бэ.
[19:00:23] <valexey> ладно, это всё скучно. а вот тут немного показывают устройство саморулящейся машинки: https://www.youtube.com/watch?v=lULl63ERek0
[19:00:54] <valexey> 2007 год. пилили - полтора года.
[19:01:46] <prospero3000> Разумеется, ленивые числа, всё такое. Результат совсем не ленивый.
В данном случае, это не переполнение памяти (что это вообще такое? Как её можно переполнить?) Это нарушение границ СЕГмента памяти.
Полили -- полтора города? А на хрена?
[19:03:34] <valexey> в смысле? полтра года для SDC в общем то не большой срок
[19:03:47] <valexey> на текущий момент эту тему пилят уже 12 лет :-)
[19:04:50] <prospero3000> Лидар там даёт около 10 оборотов в минуту. На 70 км/ч мёртвая зона будет 2 метра с каждой стороны.
[19:05:15] <prospero3000> Зачем поливать и получать полтора города??
[19:05:22] <valexey> 10 оборотов в МИНУТУ?
[19:05:33] <valexey> там шо. один оборот 6 секунд длится?
[19:05:43] <prospero3000> Упсь . в секунду.
[19:06:07] <valexey> кто кого поливал? я говорю ПИЛИЛИ, т.е. деали машинку, софт писали полтора года.
[19:06:19] <prospero3000> Ах вот оно что)))
[19:06:53] <prospero3000> Шкодили автопилот. Как-то лучше воспринимается)
[19:07:09] <valexey> на 70 км/ч мертвая зона, очевидно 2 метра только спереди относительно земли и других неподвижных предметов.
[19:07:42] <prospero3000> А боковые дороги больше не существуют?
[19:07:43] <valexey> ну, там не только автопилот шкодить - весь сетап надо было придумать. собрать, оттестить, замонтировать. похачить авто надо было также, чтобы робот мог управлять ей.
[19:07:58] <valexey> а какая скорость у боковой дороги? мы же вбок не движемся.
[19:08:04] <prospero3000> Опоры в полобхвата?
[19:08:16] <valexey> если нам в бочину летит самолет со скорость 1000 км/ч то мертвая зона ВНЕЗАПНО не 2 метра :-)
[19:08:17] <prospero3000> А если второстепенная дорога?
[19:08:45] <prospero3000> А если на боковой укурок за баранкой?
[19:08:46] <valexey> алсо у человека мертвые зоны больше.
[19:09:00] <valexey> скорость реакции человека - 1-2 секунды вообще.
[19:09:05] <valexey> люди - тормоза те еще.
[19:09:10] <prospero3000> Ну уж скажете.
[19:09:20] <prospero3000> 0,3...0,5 сек.
[19:09:35] <prospero3000> Зато у людей нейронная сеть мощнее.
[19:09:36] <valexey> стандартно считается - 1 секунда. у новичков 2.
[19:09:42] <valexey> это когда за рулем человек.
[19:10:12] <valexey> нейронка у людей general purpose и с вождением довольно хреново справляется, ибо не для того эволюционировала
[19:10:52] <prospero3000> Это по ППД специально завышено. Рефлекс приобретается за пару недель. Без проблем.
[19:11:23] <prospero3000> Человек проигрывает только в физике.
[19:11:23] <valexey> но рефлекс тормозной. и не всегда верный
[19:11:52] <prospero3000> Да, из-за истощения -- может быть тормозной.
[19:11:57] <valexey> особенно в незнакомой ситуации. а знакомых аварийных ситуаций у людей практически не бывает. ибо не тренеруются в таких ситуациях
[19:12:00] <valexey> а машина - тренеруется
[19:12:22] <prospero3000> Машина -- не Бог. Тесла доказала)
[19:12:31] <valexey> а у теслы нет лидара :-)
[19:12:36] <prospero3000> А человек бы тогда -- справился.
[19:12:46] <valexey> ну и у нее уровень автономности не пятого уровня
[19:13:03] <valexey> гм. нет, не справился. водитель тоже тот грузовик не увидел.
[19:13:42] <prospero3000> Лидар -- тупиковый путь. От него скоро все откажутся. Водитель дятлов был. Он кино смотрел, пока автопилот на 86 км гнал.
[19:14:26] <valexey> ну да. примерно с тем же успехом он бы впилился на обычном авто.
[19:14:38] <valexey> ведь в инструкции теслы сказано. что машина сама не ездит. что нужен контроль.
[19:15:15] <valexey> ну ничего, вышел патч, теперь в такой ситуации тесла просто останавливается.
[19:15:20] <valexey> когда водитель дятел
[19:15:34] <valexey> а потом функция автопилота отключается, если он таки реально дятел.
[19:15:59] <prospero3000> Человек вечно верит в непогрешимость машин, каждый раз забывая -- идеальная абстракция разваливается об физические ограничения машины.
[19:16:33] <valexey> вообще, гугл прав, когда в гугле решили, что машина либо полностью должна ездить сама (пятый уровень) либо ей должен управлять человек. иначе человеку быстро становится скучно следить за машиной и он не следит => аварийность повышается.
[19:17:05] <valexey> поэтому гугл будет делять только пятого уровня решения. и вроде бы в октябре уже запускают такси безчеловечное.
[19:17:09] <prospero3000> Это было понятно с самого начала.
[19:18:09] <prospero3000> Самый хороший человек постепенно оскатинивается, если нет контроля. Человек снизу -- типичное животное.
[19:18:50] <prospero3000> Значит соски в тиски надо зажать так, чтобы не продохнуть было.
[19:20:53] <valexey> https://voyage.auto/
[19:23:22] <valexey> гм. наврал. это не гугл. это спиноф udacity
[19:24:03] <prospero3000> На оутсорсе сидят, наверняка.
[19:24:12] <valexey> эти - нет.
[19:24:26] <valexey> это ж считай университет
[19:24:39] <prospero3000> Они у Гугла на подсосе, тем более -- универ.
[19:24:41] <valexey> вот крупные автопроизводители - вот они по контрактерам скребут
[19:25:00] <valexey> нет, у гугла же свой такой спиноф - Waymo
[19:25:14] <valexey> зачем им конкурента растить?
[19:25:38] <prospero3000> Гугл три языка пилит. Устраивают конкуренцию на кто выживет.
[19:26:27] <valexey> что ж тогда они с убером то судятся, вместо того, чтобы им помогать? :-)
[19:26:52] <prospero3000> Тююю...
[19:27:21] <prospero3000> Когда паны дерутся, у холопов головы с плечь летят.
[19:27:38] <prospero3000> Волк волку пасть не перегрызёт.
[19:28:00] <prospero3000> Пока толстый худеет -- худой околеет.
[19:28:32] <valexey> мда.. бывает.
[19:28:58] <prospero3000> Шоу маст гоуон.
[19:56:17] <vlad2> Оставлю и свое мнение: венгерка - гавно
[19:56:52] <vlad2> Имеет смысд для слапотипизированных языков типа С (без плюсов) или асма какого.
[20:00:18] <valexey> кстати, в питоне может тоже смысл имела бы.
[20:00:25] <valexey> т.е. когда у тебя статических типов нет
[20:16:34] <vlad2> Вообще никак не ожидал от обероншика любви к венгерке, думал это стёб поначалу... :)
[20:17:29] <vlad2> В динамических языках оно не прижилось наверное потому, что все равно нельзя верить названию - фиг знает что там на самом деле :)
[20:18:45] <valexey> ну и ЯП с динамической типизацией, до недавнего времени, использовались в мелких прогах же
[20:18:47] <valexey> там все видно
[20:19:46] <prospero3000> У питона есть одна жопа, которая убивает его.
[20:19:59] <prospero3000> Нет контроля за присвоением.
[20:20:21] <prospero3000> Была строка -- стал словарь. В любой момент.
[20:20:41] <vlad2> Типы в динамике проверяются тестами. Венгерка там как собаке пятая нога - типы могут меняться by design, зачем их приколачивать венгеркой.
[20:20:42] <valexey> динамическая типизация + мутабельность переменных
[20:21:03] <prospero3000> Хрен с ним, с гилом. Сайтон всё исправит. Но вот это бешенство присвоения...
[20:21:49] <prospero3000> Собственно, я очень надеюсь, что сайтон вырастит из питона, тесно ему станет.
[20:21:56] <valexey> да ладно, это не страшнее ООП
[20:22:06] <valexey> ибо ООП, по сути своей и есть динамическая типизация.
[20:22:54] <prospero3000> Нет, типизация в ООП вообще не нуждается.
[20:23:07] <prospero3000> Что статическая, что динамическая.
[20:23:12] <valexey> чаво? ООП - частный случай.
[20:23:43] <prospero3000> Я тебе типизацию такую накручу, что ООП позавидует.
[20:23:51] <vlad2> prospero3000: у тебя просто мозг не повернулся в нужную сторону. Присвоние в динамике это не копирование содержимого одной ячейки памяти в другую как в обероне. Это замещение переменной с именем "a" тем же самым, что в переменной "b".
[20:24:02] <prospero3000> Динамическую типизацию.
[20:24:25] <prospero3000> Грань ООП очень условна.
[20:24:31] <vlad2> Абстрагируйся от низкого уровня и все будет хорошо :)
[20:25:02] <prospero3000> Если первым параметром тип передавать в процедуру -- это уже метод, или ещё нет?
[20:25:18] <valexey> это говнокостыль :-)
[20:25:58] <prospero3000> Самый настоящий метод. Без необходимости введения сомнительных конструкций.
[20:26:01] <vlad2> Методы - это вообще плюсовое упрощение :) Тру ООП - это посылка сообщений :)
[20:26:17] <prospero3000> Компиль проще, надёжность выше.
[20:26:35] <prospero3000> И перегрузку без всякого ООП можно делать.
[20:26:54] <valexey> если точнее - методы это упрощение в Симуле. Откуда их утащили в плюсы.
[20:26:57] <vlad2> Ты это, попиши на O7 в ООП стиле, чтоб почувствовать силу ООП в языке без ООП :)
[20:27:43] <prospero3000> Да не важно где. Придумали модное слово без придания сущности и пользуют бездумно.
[20:27:45] <vlad2> valexey: угу
[20:28:17] <prospero3000> Чем тип не устроил? Зачем потребовалось придумывать класс?
[20:28:36] <vlad2> Ну надо ж как-то коротко называть полиморфизм, наслеодованеие и инкапсуляцию.
[20:28:36] <prospero3000> Ведь класс -- это класс. Набор учеников.
[20:28:37] <valexey> тем что это частный случай типа.
[20:29:07] <valexey> ага-ага, а классификатор - это такой чел который учеников в класс загоняет :-)
[20:29:12] <vlad2> #defined RECORD class
[20:29:20] <prospero3000> А тип -- это тип. Никакого отношения к классу не имеет. Класс -- это однородная коллекция. Массив.
[20:29:25] <vlad2> Тебя это беспокоиит?
[20:29:53] <vlad2> OMG. Опять оберонщики придумывают новые значения устоявшимся терминам.
[20:29:57] <prospero3000> Классифактор -- чел, который однородные коллекции группирует.
[20:30:03] <prospero3000> Не больше.
[20:30:05] <vlad2> Прям как с этим священным :=
[20:30:10] <valexey> ну, как обычно у оберонолюда пригорает с нотации. то == им не нравится, то вот ключевые слова не те.
[20:30:24] <vlad2> Угу.
[20:30:43] <vlad2> Заглянуть чуть дальше - сложно, там же какие-то непонятные вещи.
[20:30:48] <valexey> скобочки еще фигурные проклясть можно, чо уж тут.
[20:31:12] <vlad2> Объявим эти вещи ненужными и булем дальше говнокодить на обероне :)
[20:31:15] <prospero3000> == и = можно перепутать влёт. А знаешь чем всё закончится? На скоб очки плевать. Это копейки.
[20:31:48] <valexey> вот честное слово, ни разу не написал == вместо =
[20:31:52] <valexey> вот ваще никогда
[20:32:21] <prospero3000> Я прям завидуют тебе. Гуру чистого кода.
[20:32:23] <valexey> а если где перепутаешь - компилятор поправит
[20:32:41] <prospero3000> Поправит убитая база ,)
[20:32:59] <vlad2> prospero3000: ты правда не знаешь, что компилятор все это ловит или придуриваешься?
[20:33:27] <prospero3000> = это сравнение левой и правой части. ТОЛЬКО!
[20:33:52] <prospero3000> И не надо перегружать этот оператор. Не умнО.
[20:34:29] <prospero3000> И уж тем более, через = и == подставлять значения в условиях.
[20:34:34] <valexey> не, ну справедливости ради, среди плюсистов тоже полно людей которых начинает бомбить от вида begin/end, и они уже дальше не различают и не разбираются. И не понимают что не всё то, что begin/end то турбопаскаль.
[20:34:56] <valexey> ну а некоторых триггерит на :=
[20:35:00] <prospero3000> Это обёртка. Не важно.
[20:35:20] <prospero3000> А вот := и = -- ВАЖНО.
[20:35:59] <vlad2> prospero3000: Выдыхай. Это все равно, что объявлять английский гавном, потому что тебе "th" не произнести без долгой тренировки.
[20:36:08] <valexey> я не понимаю чем хорошь := -- это ж говно невнятное.
[20:36:18] <valexey> кошерно присваивание делать через <-
[20:36:19] <prospero3000> Адраст те вам.
[20:36:35] <valexey> сразу понятно чего куда
[20:36:56] <valexey> а := -- это что ваще? это разделить переменную на то, что справа и сравнить результат?
[20:37:00] <prospero3000> Где легче накосячить? В := и =, или = и ==?
[20:37:05] <valexey> ибо двоеточие, как все знают, это деление.
[20:37:11] <vlad2> Я за <- :) https://github.com/vladfolts/oberonjs/wiki/Eberon-In-Place-Variables
[20:37:34] <valexey> ага :-)
[20:37:39] <valexey> ну и в хаскеле тоже <-
[20:37:43] <prospero3000> Нет. Это НЕ двоеточие.
[20:37:49] <valexey> и вот Кнут тоже проповедует <-
[20:37:50] <vlad2> В правильном обероне как раз <- :)
[20:38:24] <prospero3000> А символ в Хаскеле <- допустим.
[20:38:42] <vlad2> prospero3000: заметь, тебе лютые мэйнстримщики рекламируют не "=", а именно "<-" :)
[20:38:50] <prospero3000> Но не =!
[20:39:21] <prospero3000> Я бы вполне выбрал именно такой вариант.
[20:39:41] <prospero3000> = ТОЛЬКО для сравнения.
[20:39:54] <vlad2> А ты все в песочнице не можешь оторваться от знакомых значков :)
[20:40:35] <prospero3000> Но раз прижился := -- хрен с ним. Это набрать случайно в выражении -- практически невозможно.
[20:40:42] <valexey> вот не знаю, писал и пишу на разных языках (внезапно сейчас на Lua кое-что пишу), вот ваще небыло никогда проблем с тем какие значки использовать
[20:41:09] <valexey> т.е. это последнее что может мешать в языке.
[20:41:26] <vlad2> Ниче, может prospero3000 попишет еще на питоне и перешагнет свой = комплекс :)
[20:41:36] <prospero3000> Это элемент надёжности. Это далеко не последнее, что может мешать.
[20:41:45] <valexey> если ты вдруг в сях вместо == напишешь if (some=foo) {}, то компилятор по голове тебя стукнет. поэтому не вижу проблемы
[20:42:18] <valexey> если ты напишешь даже if (expr); {} -- компилятор тебя тоже по голове стукнет.
[20:42:34] <prospero3000> Ни разу меня не стукал. Прокатывало в всегда на ура и со свистом.
[20:42:36] <valexey> короче, завязывайте воевать с ветряными мельницами.
[20:43:17] <prospero3000> Делал на Ардуине управление шаровым двигателем. Часа три прошло, когда понял, почему свист стоит.
[20:43:30] <prospero3000> ...шаговым..
[20:43:48] <prospero3000> А было -- строк 150. Всего)
[20:43:52] <vlad2> Элементов надежности много. Конкертно = vs == ловится компилятором. При том, что есть моного чего, что обероновский компилятор не умеет ловить в силу переупрощения языка.
[20:44:30] <prospero3000> Прошивал на Обероне СТМ32 -- потребовалось 20 минут.
[20:44:33] <valexey> $ cat test.cpp
int main() {
int i;
if (i=42) {}
if (i==42);{}
return 0;
}
$ g++ -Wall -Wextra test.cpp
test.cpp: In function ‘int main()’:
test.cpp:3:10: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (i=42) {}
^
test.cpp:4:12: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
if (i==42);{}
^
[20:45:15] <vlad2> Угу. Чтоб не быть голословным :)
[20:45:24] <prospero3000> Фактически, компиль какбэ намекаэ: присвоение в условиях -- нужно запретить.
[20:45:44] <valexey> точнее даже так:
$ g++ -Wall -Wextra -Werror test.cpp
test.cpp: In function ‘int main()’:
test.cpp:3:10: error: suggest parentheses around assignment used as truth value [-Werror=parentheses]
if (i=42) {}
^
test.cpp:4:12: error: suggest braces around empty body in an ‘if’ statement [-Werror=empty-body]
if (i==42);{}
^
cc1plus: all warnings being treated as errors
[20:45:45] <prospero3000> В Обероне -- это самого начала -- запрещено.
[20:46:27] <prospero3000> Так зачем сначала выращивать кактус, а потом плача его жрать???
[20:46:31] <vlad2> Нельзя запретить, потому что это промышленный язык, в отличие от оберона, который Вирт постоянно делает несовместимым с предыдущими редакциями.
[20:48:37] <valexey> ну вот, см. выше, я запретил.
[20:48:49] <valexey> на уровне всего проекта всей конторы.
[20:48:57] <valexey> не сложно. правда ведь?
[20:49:33] <valexey> также плюсовый компилятор отловит случай (на этапе компиляции) когда ты в одной из веток выполнения забыл вернуть значение из функции.
[20:49:39] <valexey> компилятор КП такое не отловит
[20:49:50] <valexey> у тебя прога шлепнется во время исполнения когда реализуется такая ветка.
[20:50:18] <vlad2> Поэтому оберонщики так боятся множественных RETURN? :)
[20:50:24] <valexey> и еще много чего отловит.
[20:50:39] <valexey> гм. на самом деле думаю именно поэтому Вирт убрал множественный RETURN из Оберона последнего.
[20:50:57] <valexey> т.е. именно это является истинной причиной - это упрощает компилятор и вина будет уже не на компиляторе.
[20:51:07] <prospero3000> Естессно. Совсем не сложно. С самого начала зачем этой порнуху вводить было в язык?
Реторн может быть только один. И отлично, если шлёпнется! В Си, небось, он ещё по дефолту результат сконвертирует?)))
[20:51:38] <vlad2> Вирт его убрал из любви к искусству - чтоб прописать в грамматике и не парится с семантикой :)
[20:51:41] <valexey> я хз зачем Вирт с самого начала ввел эту порнуху в язык..
[20:52:07] <valexey> и хз почему это так и не убрали из потомков того Оберона
[20:52:17] <valexey> вон и в современном КП эта порнуха торчит.
[20:52:41] <prospero3000> Это был поиск. Сейчас убрал. А в Си -- всё по прежнему: гадко и непонятно))
[20:52:43] <vlad2> "современный КП" - это оксюморон :)
[20:52:45] <valexey> тут уже или сделать компилятор умнее, чтобы ловил такие ситуации, либо язык поменять. Но нет. Ни того ни другого.
[20:52:56] <valexey> В Си будет ошибка компиляции.
[20:54:07] <prospero3000> В Си -- да. В Обероне -- на этапе семантического анализа уже ругаться будет.
Ага. Статья на Хабре с "рм -м" это отлично показывает))
[20:55:09] <valexey> на каком этапе? программа отлично компиляется на КП и на всех оберонах кроме самого последнего.
[20:55:17] <valexey> никаких ошибок. и тем более варнингов.
[20:55:56] <prospero3000> Мы же не делаем экскурс в историю, правда?))
[20:56:12] <prospero3000> Мы говорим о безопасной семантике.
[20:56:19] <valexey> да, конечно. мы обсуждаем то. чем реально вот прямо сейчас люди пользуются
[20:56:28] <valexey> ой, кажется люди в основном пользуются ББ
[20:56:41] <prospero3000> Люди -- да.
[20:56:59] <prospero3000> А хомячки любят ангулар)
[20:57:36] <valexey> и вот ББ отлично соберет такую прогу. без ошибок
[20:57:45] <valexey> А вот Сишный компиль - ошибку выдаст
[20:58:05] <valexey> $ cat test.c
int foo(int j){
if (j) return 1;
}
int main(){return 0;}
$ gcc -Wall -Wextra -Werror test.c
test.c: In function ‘foo’:
test.c:5:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
cc1: all warnings being treated as errors
[20:58:49] <prospero3000> ББ либо соберёт, либо нет. А сишный соберёт, но работать она будет так, что лучше удавиться сразу))
[20:59:00] <valexey> кстати, во всех других языках (кроме Ады) - тоже будет ошибка.
[20:59:12] <valexey> См. выше - сишный НЕ собирает
[20:59:37] <prospero3000> С тремя флагами? Доооо!)))
[21:00:34] <valexey> Дык у нас весь проект собирается с этими флагами. На прошлой работе - тоже.
[21:00:47] <valexey> Алсо, just in case, там больше флагов для сборки
[21:01:11] <vlad2> Придирку к флагам можно уже считать за слив :) Я так считаю.
[21:01:16] <valexey> всякие -std=c++11 -fPIC и прочие
[21:01:35] <valexey> в обероне ты хоть какие флаги выставь - оно соберет ошибочную программу
[21:02:03] <prospero3000> Не сомневаюсь. И это всё -- статический анализ. Неизбежный пришлёпок к корявой поделке)
[21:02:08] <valexey> мы же не сферконей обсуждаем, а то чем люди вот прямо сейчас реально пользуются.
[21:02:31] <valexey> поэтому по факту на плюсах сейчас программирование более безопасно чем на обероне.
[21:03:32] <prospero3000> В Обероне -- большинство конструкций не позволят быть написанными по быдлокодерски. Поэтому в ББ -- ключи на ОСЛАБЛЕНИЕ контроля, но никак не наоборот.
[21:03:51] <valexey> потому что компилятор ловит многие семантические ошибки, а во время исполнения рантайм бьет по рукам если вылез за границу массива, или допустил утечку памяти, или обратился к значению неинициализированной переменной.
[21:04:57] <prospero3000> Я в курсе. Компиль сразу считает, что шкодер -- студент немытый. А в Си -- сначала подкладываем грабли, а потом ищем их в темноте.
[21:05:10] <valexey> Еще раз - покажи как в КП сделать так, чтобы оно не собрало код вида:
PROCEDURE Foo(i : INTEGER) : INTEGER;
BEGIN
IF i=1 THEN RETURN 42;
END Foo;
[21:05:12] <prospero3000> Искусно подкладываем))
[21:05:53] <valexey> в си ошибку выловишь на этапе компиляции, в КП - только если реализуется ветка где нет ретурна. т.е. у тебя бахнет в боевых условиях.
[21:05:55] <prospero3000> Ещё раз повторяю: будет трап.
[21:06:04] <valexey> будет трап КОГДА?
[21:06:12] <prospero3000> При исполнении.
[21:06:13] <valexey> почему не отловить ошибку гарантированно и раньше?
[21:06:26] <valexey> трап ты увидишь тогда когда у тебя машина в стену впилится, ога.
[21:06:49] <valexey> потому что кто-то забыл RETURN написать, компилятор это поймать не смог, а юниттесты писать в Оберон-сообществе не принято.
[21:07:07] <prospero3000> Потому что создатели КП читали Хоару, но с пивом и сухариками.
[21:07:54] <valexey> а Вирт тоже читал также? Когда делал Оберон? А Вирт и Мёсинбёк тоже также читали когда делали Оберон-2?
[21:09:04] <prospero3000> Заливать в продакшн после сборки -- всегда было моветоном. Вирт, думаю, даже немного голландский знает.
Но не важно. Его любой язык заведомо лучше того, чем пользуются хомячки.
[21:09:10] <valexey> Кстати, в ОБероне современном, последнем от Вирта, тоже будет дюже хреново:
PROCEDURE Foo(i : INTEGER) : INTEGER;
VAR
res : INTEGER'
BEGIN
IF i=1 THEN res := 42;
RETURN res
END Foo;
[21:09:27] <valexey> ошибка есть, но с т.з. языка всё зашибись
[21:09:37] <valexey> проблему не решили, проблему Вирт замазал
[21:09:39] <prospero3000> Разумеется.
[21:09:59] <vlad2> prospero3000: ну слушай, все ведь все понимают, если бы BB ловил такой RETURN, а C не ловил, то были бы крики про С гавно.
[21:10:04] <prospero3000> Но вероятность ошибки на 50% меньше.
[21:10:26] <prospero3000> В Си по дефолту даже этого нет.
[21:11:38] <vlad2> prospero3000: В С по дефолту есть тернарный оператор. Как раз чтоб такое гавно не писать с никому ненужной "res". https://github.com/vladfolts/oberonjs/wiki/Eberon-ternary-operator
[21:12:11] <vlad2> Казалось бы мелочь, но я в итоге ее запилил в ебероне.
[21:12:34] <vlad2> Потому что в условиях одного RETURN становится особенно актуально.
[21:12:38] <valexey> Я не отрицаю что Си и С++ говно из за того, что стандарт строго не требует такое ловить, также как и Ада говно - по той же причине. И Оберон говно. Все они уступают любым другим языкам, которые просто чуть новее.
Но это языки. А теперь про реализации и про реальную жизнь - и Ада и Си и С++ компиляторы вот с этими флагами ВСЕ эту ошибку, с пропущенным RETURN, ловят.
[21:13:05] <valexey> Оберон компиляторы - не ловят. Поэтому Оберон-программы в этом аспекте МЕНЕЕ безопасны чем программы даже на Си, С++ и Аде.
[21:14:04] <valexey> vlad2: в этом плане в haskell все очень радикально решено. Там все тело функции это expression :-) семантика if then else - там как у тернарного оператора. То есть там проблеме вообще негде просочиться.
[21:14:42] <valexey> то есть тут Haskell зарулил всех.
[21:15:00] <valexey> конкретно и безальтернативно
[21:15:46] <valexey> еще вариант - это запретить неинициализированные переменные. тогда это поможет если тело функции может состоять из последовательности statement'ов.
[21:15:55] <prospero3000> ))) В Обероне на уровне языка запрещены опасные конструкции. С САМОГО НАЧАЛА. В Си/С++ -- всё это исправляется пришлёпками к оригиналами. У Оберона гавно компилятор? Нет статического анализатора/оптимизатора? Факт! Так это не проблема языка. Это проблема бабла! Ну нельзя же так просто списывать врожденные пороки Си?))
[21:18:14] <valexey> С т.з. программиста в принципе все равно чем там обусловлен тот или иной недостаток инструмента или же достоинство его. Факт, что сейчас Си и С++ - быстрее, удобней и безопасней любой реализации Оберона.
[21:18:57] <valexey> Единственный плюс оберона - он до сих пор простой. Но и тут у него есть конкуренты. Но уже не со стороны C и C++.
[21:19:06] <prospero3000> В разработке -- не быстрее, не удобнее, не безопасней.
[21:19:14] <vlad2> prospero3000: Тебе черным по белому указали конкретные проблемы оберона по сравнению с. При этом мы даже не рассматириывали обероновский говнокод, которые получается из-за отсутствия в языке простых и устоявшихся в другиз языках концепций.
[21:19:38] <prospero3000> А труд программиста и скорость изготовления нынче стоят очень дорого.
[21:20:35] <prospero3000> --(+++I+)--- это правда удобней и проще? И безопасно?
[21:20:35] <valexey> омм.. как бы сказать.. оставим в покое язык. ты же понимаешь, что скорость разработки в прикладной области сейчас немало зависит от доступности готовых библиотек?
[21:20:51] <valexey> стоим на плечах гигантов, так сказать.
[21:21:32] <valexey> ты же не будешь отрицать, что почти во всех предметных областях для с++ и си готовых библиотек на порядоки больше? и инструментария заточенного под это.
[21:21:41] <prospero3000> Разумеется. Библиотеки наше всё. Но это не оправдывает гавно и палки в Си. Это называется "инерция"
[21:22:01] <valexey> а то что ты привел - опять придирки к нотации, это фигня.
[21:22:20] <vlad2> prospero3000: --(+++I+)--- придумали даже не оберонщики, а еще паскалисты. Присутствуют такие конструкты только в священных войнах тех времен.
[21:22:42] <prospero3000> Жалко айфон в золочёном корпусе, который в унитазе плавает. Так и живём)
[21:22:47] <vlad2> На гитхабе ты такого не найдешь даже в любительских поделках.
[21:23:17] <prospero3000> := и = не придирка. Это осмысленная семантика.
[21:23:49] <valexey> вот скажи, ужель тебя пугает что вот такая конструкция является легальным statement'ом в с++?
[](){}();
[21:24:14] <prospero3000> +++(---I+++)+++ -- так никто не пишет. Так зачем оно до сих пор в языке существует?
[21:25:01] <prospero3000> Это не конструкция. Это повод кому то больно ударить по рукам.
[21:25:05] <vlad2> Осмысленная семантика - это не делать присваиывание выражением (expression vs statement). "=" или ":=" это косметика.
[21:25:41] <valexey> да ладно, нормальная, абсолютно безвредная конструкция.
[21:25:49] <valexey> понятная, кстати, каждому плюсисту :-)
[21:26:45] <prospero3000> Я даже не удивлён что того чувака кличут труп страуса.
[21:27:17] <prospero3000> А второго -- богатенький.
[21:28:07] <valexey> но конструкция довольно новая, с с++11 появилась
[21:28:09] <valexey> няшно же!
[21:28:23] <prospero3000> Я бы при рождении удавился, если бы мне такие фамилии дали.
[21:28:42] <vlad2> prospero3000: b := ~~~~~~~~~~~~~~~~~~~~~TRUE; И чего?
[21:29:01] <vlad2> Вот скажи - что там будет в итоге - TRUE или FALSE?
[21:29:12] <prospero3000> Няша -- водно-ледяная каша у кромки берега на Белом море.
[21:29:22] <prospero3000> Соловки там же.
[21:31:43] <valexey> короче, это всё интересно, болтать конечно. холиворы, все дела. однако надо подумать, можно ли поставить прямой эксперимент который как-то показал бы степень надежности в плане программирования связки язык+современная реализация оного?
[21:32:13] <prospero3000> Есть. Давно сделано.
[21:32:21] <valexey> в том то и проблема, что давно
[21:32:34] <valexey> за последние лет 10 я новых папиров не видел
[21:32:35] <prospero3000> А ничего не изменилось.
[21:32:46] <valexey> см. выше. я показал наглядно что изменилось.
[21:32:55] <valexey> да и сами языки изменились
[21:33:00] <valexey> даже новый оберон выполз
[21:33:09] <prospero3000> Нет прорывных идей. Это выше -- костыли под старые грабли.
[21:33:26] <valexey> новые идеи есть. см. например rust
[21:33:41] <valexey> но пока не очень ясно стоит ли оно того.
[21:34:04] <prospero3000> Старо как мир. Разделение кода, сборщик мусора, типизированеые указатели.
[21:34:16] <valexey> в rust НЕТ сборщика мусора
[21:34:50] <prospero3000> Есть. Подключается отдельно, и даже второй вариант пилят.
[21:35:16] <valexey> а. ну тогда и в С++ есть сборщик мусора, чо.
[21:35:22] <valexey> тоже, кстати, подключается отдельно
[21:36:09] <prospero3000> В голанге обязательный. Да, в С++ есть, подключается отдельно, но не помогает. Утечки, падения, полёты -- всё, как прежде.
[21:36:57] <valexey> пробовал?
[21:38:05] <prospero3000> Спаси и сохрани. Я почитал "С++ для чайников", и понял, что к этому гавну я не притронусь больше никогда.
[21:38:09] <valexey> падения, полеты.. а ничего что падения и полеты есть и у Оберон-программ? Даже вот в "ядре" кошерной Оберон-оси они есть. И, смотри ка, Оберон не помог от них избавиться!
[21:38:36] <prospero3000> Ни разу не видел.
[21:38:54] <valexey> а ты её небось ни разу и не запускал. я вот видел.
[21:39:06] <valexey> отлично виснет. так, что только выключение питания компа спасает.
[21:39:46] <valexey> там порча памяти происходит. к ней приводит простое движение мышкой
[21:40:15] <prospero3000> Видел. Тыкал палочкой, ни хрена не понял. Последний раз тыкал палочкой сегодня. Не виснет, зараза такая.
[21:41:28] <valexey> вы просто не умеете их готовить :-) а ты какую версию тыкал?
[21:42:04] <prospero3000> Последнюю, что на сайте выложена.
[21:42:37] <valexey> надо пощупать, вдруг пофиксили?
[21:43:02] <prospero3000> ХЗ. Вроде 2013 год там в дате стоит.
[21:43:13] <valexey> гм. значит не пофиксили :-/
[21:43:45] <prospero3000> Я не понял какая там лицензия.
[21:43:55] <prospero3000> Похоже, на БСД-2.
[21:46:41] <valexey> в общем. не знаю, какого-то волшебства в плане надежности, вокруг оберонов, я за то время как с ними вожусь (с 2006 года) не обнаружил.
точно также косячат, виснут и глючат как и на любом другом языке.
единственное что там забавно - что язык мелкий и его можно всячески модифицировать, свои тулзы для него писать и прочее. т.е. чтобы испробовать например идею какого-нибудь чекера для с++, нужно сильно больше постараться. чем для оберона.
не говоря уже о том, если вдруг захотелось собственную реализацию наговнокодить.
[21:48:11] <prospero3000> Люди скажут спасибо не за то, что каждый из нас сделал, а за, что не сделал. А любое доброе дело всегда должно быть отомщено.
[21:50:25] <valexey> гм. коллекцию примеров попробовать собрать шоле, таких, где в оберон-проге ошибка, а современный инструментарий с++ её бы не пропустил и она была бы обнаружена раньше.
[21:50:58] <prospero3000> Сделай. Только с равными условиями.
[21:51:24] <valexey> надеюсь под равнымит условиями ты не бюджет потраченный на создание компилятора имеешь в виду? :-)
[21:52:24] <valexey> вот выше я равные условия приводил для забытого RETURN, или нет?
[21:53:02] <prospero3000> Ну, это круто. Хотя объективно, надо хотя бы порядок сумм уравнять. Я говорю про всякие ключи, приблуды, поздние введения, которые полезны, но новичок про них не знает.
[21:53:55] <valexey> ну мы же про профи говорим. алсо если даже ты новичек, то в проекте точно есть какой-нибудь старший разработчик который все ключики уже выставил как надо.
[21:54:25] <valexey> поэтому не, все будет так, как это делается в проектах в которых я участвую или участвовал.
[21:54:42] <prospero3000> Если мы говорим про профи, то тебе такие тесты не поднять.
[21:55:54] <valexey> слушай, ну вот есть проект, реальный. коллектив естественно смешенный. новички, мидлы, сеньеры тимлиды. уж как оно устроено в с++ мире я то знаю. и знаю с какими параметрами запускаются компиляторы и инструментарий какой используется.
[21:56:02] <valexey> если что, vlad2 потом меня поправит.
[21:56:32] <valexey> со стороны оберонов я постараюсь использовать все опции, которые найду, которые сделают прогу более безопасной. все ключи компилятора там.
[21:56:46] <valexey> если я вдруг что-то не найду, в комментах поправите, чо. это не сложно же.
[21:56:56] <prospero3000> Бесполезно. Ошибка выжившего.
[21:57:05] <valexey> ы?
[21:57:27] <valexey> т.е. ты намекаешь, что я такой вот особенный, у которого никогда лажи в проектах не было? :-)
[21:59:28] <prospero3000> Я намекаю, что в выживших самолётах больше всего пробоин в крыльях, а не фюзеляже. И на основании этого бронировать крылья -- значит выкидывать деньги на ветер.
[22:00:30] <valexey> я знаю происхождение этого термина. ты скажи что ты имеешь в виду в данном конкретном случае
[22:02:12] <prospero3000> Те ошибки, на которые ты натаскаешь тест -- будут заведомо не теми ошибками, которые утопят спутник. Те ошибки, которые ты знаешь -- ты не допустишь. А те, про которые ты не знаешь -- даже близко не сможешь оценить.
[22:02:57] <vlad2> Да, бесполезно что-то доказывать верующим в оберон :)
[22:03:51] <valexey> да я не буду ничего никуда натаскивать. вот ключи компилятора, вот проблемный оберонокод, вот эквивалент на плюсах как можно ближе к оригиналу. вот что получается.
[22:04:07] <valexey> но да. народ похоже больше верит, чем знает. это печально..
[22:04:34] <prospero3000> )) В этом вся проблема. Вера -- вот что нас спасёт и губит.
[22:06:03] <vlad2> Ты им будешь тыкать в говнокод, они будут говорить, что это прекрасный понятный код.
[22:07:06] <vlad2> Виртовский код тому пример. Он ужасен. Но для них это священное писание :)
[22:08:02] <vlad2> Пофиг что там куча тех же "magic numbers" на которые тут выше ругался prospero3000. Если "magic numbers", то можно :)
[22:08:31] <vlad2> *Если "magic numbers" в обероне, то можно.
[22:09:20] <valexey> ну вот вариант как с RETURN - хорший же вариант
[22:09:24] <valexey> вроде бы железный пруф. нет?
[22:10:13] <valexey> я ж не буду говорить говнокод или нет. просто ловит ошибку инструментарий мейнстримовский плюсовый, или не ловит.
[22:10:30] <vlad2> При RETURN вообще легко - будут божиться, что он всегда один у них :)
[22:10:51] <valexey> но даже с одним ретурном ошибка же будет!
[22:10:57] <valexey> такая, что даже трапа не случится
[22:11:04] <valexey> это ж вообще плохо!
[22:11:07] <valexey> нет?
[22:11:14] <prospero3000> Не совсем. В жизни так крайне редко бывает. Хоть что-то лучше чем ничего. Но забытый RETURN при гарантированном трапе не такое уж зло .
[22:11:44] <prospero3000> Зло -- это когда тупо не видишь ошибки.
[22:11:57] <prospero3000> И работает сучка месяцами.
[22:12:00] <valexey> хоть что-то? т.е. мусор из памяти? и ты ошибку не увидишь. как это будет в Оберон-07?
[22:12:04] <valexey> ну не знаааю...
[22:12:12] <valexey> я бы предпочел ошибку компиляции, или хотя бы трап
[22:13:13] <prospero3000> Трап нужен гарантированный. А лучше ошибка компиляции. Но NULL на этапе компиляции ты никак не определишь.
[22:13:27] <prospero3000> Только в работе.
[22:13:58] <valexey> дык в Оберон-07 в случае если ты в одной из веток зыбал что-то присвоить res, то у тебя ни трапа ни ошибки компиляции. просто результат будет мусором.
[22:14:32] <vlad2> prospero3000: NULL на этапе компиляции можно проверяит в С++ :) Но в "С++ для чайников" про это не пишут :)
[22:14:51] <prospero3000> Это как букса тележки грузового вагона. С виду -- всё пучком. А как начнёт визжать -- аж напрессованное колесо срывает.
[22:14:54] <valexey> ну и тем более можно проверить в более современных языках, типа котлина
[22:15:15] <prospero3000> В Обероне всегда идёт обнуление переменных.
[22:15:26] <valexey> где про это можно почитать? про обнуление
[22:15:58] <valexey> https://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
[22:16:00] <vlad2> Это он про указатели говорит.
[22:16:03] <valexey> вот тут, где?
[22:16:13] <valexey> не, я про обычный res : INTEGER
[22:16:22] <prospero3000> Здесь только ассерт спасёт. У Антона Кротова сделано везде, а в сообщении речь идёт о переменных статических.
Да, где-то там.
[22:16:35] <prospero3000> Перевод посмотри.
[22:17:28] <prospero3000> Что то вроде blackbox.obertone.ru
[22:17:56] <prospero3000> Там где онлайн компилятор Оберона.
[22:18:19] <valexey> онлайн компилятор - у нас на форуме, если что :-)
[22:18:30] <valexey> гм. а какой ассерт ты бы поставил?
[22:18:46] <valexey> напомню код:
PROCEDURE Foo(i : INTEGER) : INTEGER;
VAR
res : INTEGER'
BEGIN
IF i=1 THEN res := 42;
RETURN res
END Foo;
[22:19:11] <prospero3000> На динднс нет перевода репорта.
[22:19:24] <valexey> и что-то я не нахожу описания обнуления статических переменных
[22:19:37] <valexey> нафиг перевод, когда оригинал есть? :-)
[22:19:55] <prospero3000> На выходе ассерт либо 42, либо что-то законное.
[22:20:21] <prospero3000> Английский для репорта надо понимать до тонкости.
[22:21:22] <prospero3000> Кстати, в примере синтаксическая ошибка))
[22:21:56] <prospero3000> Про обнуление точно помню было.
[22:23:26] <valexey> ты точно с Обероном-2 или КП не путаешь?
[22:23:31] <valexey> вот единственное что есть:
[22:23:44] <valexey> "All constants, variables, types, and procedures declared within a procedure body are local to the procedure. The values of local variables are undefined upon entry to the procedure. Since procedures may be declared as local objects too, procedure declarations may be nested. "
[22:24:42] <prospero3000> Чо то не то.
[22:24:43] <valexey> prospero3000: дык ассерт то куда вставлять? язык он такой какой есть. модифицируй пример так, чтобы хотя бы в рантайме была ошибка.
[22:25:34] <prospero3000> На входе на допустимые значения параметра, на выходе на допустимое значение результата.
[22:25:48] <prospero3000> Пре и пост условия.
[22:26:01] <valexey> а мусор может быть в допустимом диапазоне
[22:26:05] <valexey> так что не вариант
[23:08:47] <_valexey_> Вот для КП нашел: "Local variables whose types are pointer types or procedure types are initialized to NIL before the body of the procedure is executed."
[23:09:14] <_valexey_> Итого, в локальных переменных которые не указатели будет мусор
[23:10:06] <_valexey_> Зануление гарантируется в КП только для указателей (в случае локальных переменных).
[23:10:27] <_valexey_> В Обероне же и того не гарантируется.