[02:43:43] <vlad2> "преодолел законы мира IT" https://forum.oberoncore.ru/viewtopic.php?p=102028#p102028
[03:01:31] <valexey_> vlad2: ы? это откуда?
[03:02:31] <vlad2> Дык, см. ссылку, в конце.
[03:03:14] <vlad2> У них там очередной цикл поклонения после дна :)
[03:04:08] <valexey_> ыы
[03:04:22] <valexey_> я вот знаю еще пачку языков которые тоже преодолели законы мира IT
[03:04:29] <valexey_> секрет их очень прост! :-)
[03:05:36] <vlad2> Избегать успеха любой ценой? :)
[03:05:48] <valexey_> вот например Algol-68 не растет дольше чем оберон :-)
[03:05:56] <valexey_> стандартный паскаль тоже не усложняется
[03:06:10] <vlad2> У кого короче! :)
[03:12:30] <valexey_> не, ну в этом есть определенный смысл. мелкие языки полезны иногда
[03:12:45] <valexey_> то самое правило 80/20
[03:14:42] <valexey_> другое дело что в действительно больших и сложных проектах нужно все же что-то ближе к 100
[03:16:15] <valexey_> это как новички в плане Self Driving Car - демонстрируют очень резвый старт, вот у них ничего небыло, а вот через полгода машинка уже по полигону как-то ездит. А через год-полтора даже с разработчиком за рулем может даже по улицам проехаться более-менее.
[03:16:32] <valexey_> Как это у яндекса например сейчас происходит.
[03:17:14] <valexey_> Но самое то сложное оно потом - когда надо дожимать оставшиеся 20%, ибо никому не нужна машина которая в 80 процентах случаев едет нормально, а в 20 процентах попадает в аварию.
[13:35:49] <valexey> ещё немножечко UB в чятик: https://habrahabr.ru/post/338898/
[14:54:06] <valexey> дас, в реальности и gcc и штудия реально сравнивают bool только с 0 и 1
[14:54:22] <valexey> если память не инициализирована, то с большой вероятностью bool будет не true и не false
[15:32:11] <prospero3000> Я бы помер в таких условиях.
[15:32:53] <valexey> зачем?
[15:33:24] <valexey> тащемто мораль проста - пиши код без UB, в частности - инициализируй переменные.
[15:33:54] <valexey> насколько я понимаю, в оберонах тоже UB есть, только оно никак не задокументировано :-)
[15:38:21] <TRUE> UB и "задокументировано" - это, можно сказать, антонимы : )
[15:39:51] <valexey> задокументировано в каких местах UB будет. т.е. вот четко - если например переменная не инициализирована, то при работе со значением оной переменной будет UB
[15:40:00] <valexey> это четко прописано в стандарте
[15:40:15] <valexey> а что будет в Обероне в этом случае? будет ведь даже не UB, будет хуже.
[15:55:35] <valexey> prospero3000: "Но и этого не мало. Никому не нужна машина, которая ездит в 100% случаев правильно, но остаётся на месте, из-за того, что никто не знает, как этой машиной управлять."
ты немного не верно мой пример интерпретировал :-) я ж говорил о SDC. машиной никто не управляет. при этом она ооочень сложная. особенно если она может в 100% случаев вести себя корректно (человек, например, не может так).
[15:55:37] <TRUE> всё, о чём не сказано в документации, - это UB. В этом весь смысл UB. Зачем конкретные места прописывать как UB?
[15:56:16] <valexey> затем, что если в документации какой-то случай не учтен - это баг в документации.
[15:56:52] <valexey> ибо каждый реализатор и юзатор может интерпретировать по своему. и кто-то будет считать, что вот BOOLEAN это всегда TRUE или FALSE
[15:56:57] <TRUE> то есть, если в документации прописать, что этот случай в документации не учтён, то это перестанет быть багом?
[15:56:59] <valexey> а кто-то будет считать, что нет :-)
[15:57:24] <valexey> и те и другие будут полностью уверены в том, что контроллируют ситуацию, хотя это не так.
[15:58:36] <TRUE> а в документации на boolean разве не прописано, какое значение true, а какое значение false?
[15:58:50] <valexey> на тему машин и прочего - тут наверно аналогия с военщиной хорошо катит. вот есть отличный замечательный F22 - реально хороший самолет. Но сложный. И это бы не проблема, но он дорогой в обслуживании.
С авто та же ситуация - чем она умнее, чем больше в ней систем, тем дороже в обслуживании.
[16:00:01] <valexey> поэтому если вам дарят БНВ или какой-нибудь ренжровер, при условии что вы его не продадите, но будете на нем ездить, а у вас зряплата 40 тысяч - отказывайтесь. Ибо разоритесь нафиг. На обслуживании.
[16:00:25] <TRUE> что-то я вижу конец вашего разговора по машинам, но не вижу его начала? Жаббер часть разговора сожрал?
[16:01:15] <valexey> в логах на сайте, или тут?
[16:01:23] <TRUE> тут
[16:01:44] <TRUE> первое, что я увидел про машины:
valexey> prospero3000: "Но и этого не мало. Никому не нужна машина, которая ездит в 100% случаев правильно, но остаё...
[16:01:49] <valexey> ну, я просто вчера писал что:
[03:12:29] <valexey_> не, ну в этом есть определенный смысл. мелкие языки полезны иногда
[03:12:44] <valexey_> то самое правило 80/20
[03:14:41] <valexey_> другое дело что в действительно больших и сложных проектах нужно все же что-то ближе к 100
[03:16:14] <valexey_> это как новички в плане Self Driving Car - демонстрируют очень резвый старт, вот у них ничего небыло, а вот через полгода машинка уже по полигону как-то ездит. А через год-полтора даже с разработчиком за рулем может даже по улицам проехаться более-менее.
[03:16:31] <valexey_> Как это у яндекса например сейчас происходит.
[03:17:13] <valexey_> Но самое то сложное оно потом - когда надо дожимать оставшиеся 20%, ибо никому не нужна машина которая в 80 процентах случаев едет нормально, а в 20 процентах попадает в аварию.
[16:02:14] <valexey> и это явно привело к вот этому: https://forum.oberoncore.ru/viewtopic.php?p=102029#p102029
[16:02:22] <valexey> на что я ответил тут
[16:03:06] <TRUE> кстати, BOOLEAN всегда TRUE или FALSE.
[16:04:41] <valexey> ага. и bool тоже :-D
[16:06:56] <TRUE> а разве bool - это не обычное целое, у которого только 0 и 1 можно осмысленно использовать?
[16:08:24] <valexey> нет
[16:08:33] <valexey> это отдельный тип.
[16:08:44] <valexey> это ж не Си.
[16:09:16] <TRUE> тогда как возможно то, что в статье приведено/?
[16:10:20] <valexey> у bool к сожалению нет дефолтного конструктора (как и у всех примитивных типов в плюсах), поэтому переменная не инициализирована, следовательно не имеет корректного значения.
[16:10:41] <valexey> например в D конструкторы у примитивных типов уже есть.
[16:11:39] <valexey> а так то в стандарте сказано "values of type bool are either true or false"
[16:11:52] <TRUE> причём здесь конструктор? Они могли дать описание типа: 0 - это false, 1 - это true, а остальные значения этого типа - просто целые числа.
[16:12:24] <TRUE> и этот человек говорит про баги в документации...
[16:12:59] <valexey> еще раз - был бы конструктор по умолчанию, было бы значение по умолчанию. а тут значения у него нет.
[16:13:28] <TRUE> как bool может быть или true или false, когда есть ещё и другие значения? Или это просто все компиляторы с багами?
[16:13:42] <valexey> bool foo = 666;
assert(true == foo);
int i = foo;
assert(1==i);
[16:14:32] <valexey> мне тебе class bool написать, чтобы было понятно как оно работает?
[16:14:52] <TRUE> да не надо писать класс.
[16:15:25] <TRUE> и так понятно, что это просто какая-то багулина.
[16:15:32] <valexey> тут нет бага.
[16:15:59] <prospero3000> Э,то бага.
[16:16:02] <valexey> всё четко согласно стандарту. и стандарт всё четко описывает.
[16:16:09] <prospero3000> TRUE не может быть 666.
[16:16:26] <prospero3000> TRUE = TRUE, и никак иначе.
[16:17:05] <valexey> а он и не будет :-)
[16:17:55] <TRUE> а вот если ты целое число не проинициализируешь, то какова вероятность, что при выводе значения на печать мы увидим строку "Hello world"? Почему в целочисленной переменной всегда целые числа, а в логической переменной не всегда логические значения несмотря на описание в стандарте (или что там за документ)?
[16:18:51] <prospero3000> В логической переменной -- всегда логические значяения. А если нет ,тогда питон детектед.
[16:18:51] <valexey> стандарт с++, так сказать, гласит:
47) Using a bool value in ways described by this International Standard as “undefined,” such as by examining the value of an uninitialized automatic object, might cause it to behave as if it is neither true nor false.
[16:20:08] <valexey> доступ к неинициализированному скаляру это в принципе UB. поэтому там любые эффекты могут быть, даже если у тебя int неинициализированный.
[16:20:38] <prospero3000> Ты где в природе видел, чтобы рождался ребёнок с ундефайнед поведением?
[16:21:34] <TRUE> тип данных - это пространство данных и операции над этим пространством. Если у нас переменная какого-то типа, то её значение всегда внутри пространства, заданного типом.
[16:21:36] <valexey> ну, вообще говоря, полно случаев когда рождается фиг знает что
[16:21:45] <valexey> вот, можете обмазаться немного UBшечкой: http://en.cppreference.com/w/cpp/language/ub
[16:22:59] <prospero3000> Одна голова, а две уродство ,не так ли? Поэтому ,рождение ребёнка-инвалида возможно ,но это не будет типом ЧЕЛОВЕК.
[16:23:10] <prospero3000> По-крайней мере ,годным типом ЧЕЛОВЕК.
[16:23:32] <valexey> аналогии кривые. особенно эти. не интересно.
[16:24:09] <TRUE> valexey> доступ к неинициализированному скаляру это в принципе UB. поэтому там любые эффекты могут быть, даже если у тебя int неинициализированный.
с точки зрения чистой математики такое возможно. Но и любые умозаключения шизофреника с её точки зрения тоже вполне логичны.
А мы инженеры. Математика - это хорошо, но *так* сильно от реальности отрываться - это уже перебор.
[16:24:59] <prospero3000> Математика -- это плохо. И она ВСЕГДА оторвана от реального мира.
[16:25:22] <prospero3000> Стахов. Алгоритмическая тоерия измерения ;)
[16:27:02] <prospero3000> Попробуй мне отмерь 0,7 атома водорода?))
[16:27:33] <valexey> ну, всё просто - читаешь стандарт. смотришь на задачу. если одно с другим состыкуется - используешь язык для решения задачи. если нет, то идешь читать стандарт следующего кандидата.
но если например у языка стандарта нет. или пусть даже не стандарт. а описание языка неполное, то уже в первом же пункте (чтение стандарта) язык помечается как негодный, ибо всё использование этого языка один недокументированный UB.
[16:29:05] <TRUE> ничего, что сделано человеком, не может быть полностью оторвано от реального мира. Любая человеческая аналитика или абстракции хоть сколько-нибудь оторваны от реального мира. Проблема математики лишь в том, что она позволяет себе в разных случаях отрываться от реальности разными местами. Так что математика - это не плохо. Не всегда.
[16:29:36] <prospero3000> Математика -- швах. "ибо всё использование этого языка один недокументированный UB."
[16:30:20] <prospero3000> Сначал мне в школе рассказывали ,что на ноль делить нельзя. В институте оказалось, что если остороджно -- то можно.
[16:30:51] <prospero3000> А на практике, замыкание фазы на ноль -- никогда не приводит к бесконечной энергии плахмы, ибо внутренне сопротивление материала.
[16:31:09] <TRUE> я же сказал - в разных ситуациях математика отрывается от реальности разными местами. Так что это не всегда проблема.
[16:31:43] <prospero3000> Математика вообще не проблема. Если её не тащить в лэнгуэйдж дайзинг.
[16:32:14] <prospero3000> Ну ,по крайней мере, в фоннеймановскую архитектуру.
[16:32:44] <prospero3000> Складывается вообще пародоксальная ситуация.
[16:32:45] <valexey> Гг Y
[16:33:05] <TRUE> valexey> но если например у языка стандарта нет. или пусть даже не стандарт. а описание языка неполное, то уже в первом же пункте (чтение стандарта) язык помечается как негодный, ибо всё использование этого языка один недокументированный UB.
Ничего подобного. Зависит от того, какие части языка не описаны.
[16:33:21] <prospero3000> Если нужно делать хихрургическую операцию -- никт оне приглашает поэто, шОффера или балерину.
[16:33:32] <prospero3000> Все хотят хирурга!
[16:33:40] <TRUE> но те, которые не описаны, использовать проблематично, конечно.
[16:34:17] <prospero3000> Но если СПРОЕКТИРОВАТЬ язык -- то его СОЧИНЯЮТ, все кому не лень со всякими страшными тараканами в голове ,которые потом воплощаются в коде!))
[16:34:40] <valexey> ну, не совсем. если реально сложная операция (например прямо на бьющемся сердце), то зовут робота. Который привязывает скальпель к криволинейным координатам сердца которые меняются со временем. Код кстати. робота, на с++ писан :-)
[16:35:30] <prospero3000> Пилять... Да лучше сразу сдохнуть, чем ждать, пока на экране появиться БЗДЫНЬ! ПРОГРАММА ВЫПОЛНИЛА НЕДОПУСТИМУЮ ОПЕРАЦИЮ И БУДЕТ ЗАКРЫТА!)))
[16:35:51] <valexey> ну там же не винда.
[16:35:57] <prospero3000> По-ходу, практиканты из Тойоты подросли))
[16:36:36] <prospero3000> Хрен редьки не слаще. Тут ещё надо посмотреть, что хуже будет.
[16:36:54] <prospero3000> В винде хоть весь этот зоопарк более-менее огорожен))
[16:37:14] <valexey> огорожено что от чего?
[16:37:24] <valexey> уверен что в винде что-то там огорожено лучше чем в Qnx?
[16:41:00] <prospero3000> Не готов сказать, что лучше. У меня QNX перезагружается каждые сутки. А винда маслает по 6 мес. без перезагрузки. Огорожено ядро от питона в режиме ядра.
[16:41:26] <prospero3000> И кстати, в QNX lbrj njhvjpbn ГУЯ.
[16:41:33] <prospero3000> ...дико тормозит...
[16:43:38] <valexey> дык это ж реалтайм ось, она и должна тормозить
[16:44:57] <valexey> я надеюсь что ты её таки не как десктопную ось используешь. правда ведь?
[16:45:42] <prospero3000> Хм. А я думал, что на двух ядрах в 2,4 ГГц и на задаче по опросу счётчиков раз в 30 минут -- такое поведение говорит о рукожопости разрабов.
[16:46:19] <prospero3000> К счастью, нет. RTU-325. Advantech.
[16:46:48] <valexey> ну, если оно вместе с дивайсом искаропки идет, то это да, говорит о рукожопости разработчиков дивайса
[16:47:17] <prospero3000> Причём ГУЯ -- псевдографика в терминале))
[16:48:28] <prospero3000> Причём rate стоит в 10 Мб/сек
[16:49:15] <prospero3000> Вы тут сидите тихо, а я пошёл домой потихоньку :)
[16:49:29] <valexey> удачки :-)
[16:49:39] <prospero3000> И вам всех благ))
[16:50:36] <valexey> а я пойду дальше фигачить кусок подсистемы сбора данных с (псевдо)датчиков. :-)
[16:51:12] <prospero3000> Это типа, как данные с зонда на "Мире"?))
[16:51:21] <prospero3000> Для немецев?
[16:51:46] <valexey> ну, это ядро системы. а кто уж ей потом будет пользоваться - вопрос десятый :-)
[16:52:18] <prospero3000> Неее... Байка есть в тырнете, что немцы 10 лет платили нашим за рандом, типа с датчика на "мире"))
[16:52:19] <valexey> тут конечно объемы данных поинтересней даже чем были на предыдущей работе - не 500 измерений в секунду, а поболее.
[16:53:20] <prospero3000> Тогда разумное решение -- группировать пакет в "поле", а патом пакет упакованный на писюк засылать)
[16:53:30] <valexey> и естественно на С++ - все же индустриальный стандарт для mission critical систем :-)
[16:54:05] <prospero3000> Бээээ.... Я бы ещё глаз вырвал, но это больно:)
[16:54:49] <valexey> а что делать? современные роботы вроде бы только на С++ и пишутся. т.е. в новых областях. типа тех же sdc и подобного.
[16:55:00] <valexey> boston dynamics - тоже только с++
[16:55:31] <prospero3000> Это маховик сансары. Что ег оразорвать -- надо очистить разум!))
[16:55:37] <valexey> жаль не получилось доложиться на этом дне - у меня там кое-что и для оберонов имеется.
[16:56:02] <prospero3000> Ну, я тоже был занят. Не последний день живём))
[16:56:53] <valexey> ну, обидно что именно в этот день мне пришлось из Москвы уехать. Так то я вообще рядом.
[16:56:54] <prospero3000> Вообще, очень актуальный доклад был бы "Оберон в загоне и как с этим жить"))
[16:57:32] <prospero3000> Подзаголовок "Советы бывалого мазохиста"))
[16:58:56] <prospero3000> Вообще, проблемы есть. Но ,не с ущербностью языка, а исключительно вливанием ресурсов.
[16:59:33] <valexey> c ущербностью описания языка. при вливании ресурсов описание распехнет раза в 2-3 при том, что язык не изменится.
[18:11:45] <valexey> главное не писать на языках со сборщиком мусора, а то сборка мусора может начаться в самый неподходящий момент https://www.youtube.com/watch?v=bnv5JP8gL_k
[18:16:24] <vlad2> Странно. Я бы ожидал, что у них там есть спец кнопка "тущим свет", зачем доводить до повреждения материально части?
[18:17:32] <valexey> это ж было соревнование DARPA'вское
[18:17:48] <valexey> ну и скорости не те, чтобы что-то сильно повредилось. там вроде даже сенсоры все целыми остались
[18:18:31] <valexey> ну а Tommy в 2005 году, он да. убился апстену на скорости 70 mph
[18:18:42] <valexey> Tommy работал на linux & java
[18:20:19] <vlad2> java не тормозит (с)
[18:20:27] <valexey> когда гоняют машинку на полигоне, не на соревновании, кнопка есть. причем часто две кнопки - одна в салоне и одна по радио.
[18:20:57] <valexey> ну, на самом деле Tommy убил себя апстену потому. что там чип сдох. Но это уже никого не волнует. :-)
[18:21:13] <valexey> Ну и да, java не тормозит! java газует! аж до 70 mph!
[18:25:10] <valexey> https://www.youtube.com/watch?v=5DtdeOg3piY
[18:25:15] <valexey> скоро на дорогах!
[18:25:16] <valexey> :-)
[18:58:36] <prospero3000> Вообще-то, чип сдох -- меня волнует! Я по этим тротуарам хожу.
[19:00:52] <prospero3000> Чип -- это криминал. Обычно проще. Самопроизвольный разгон, и в суде -- да вы сами овцы.
[19:01:52] <prospero3000> Да и Яву в авто... Ну, это надо быть сильно ударенным об голову...
[19:01:52] <valexey> ну, в данном случае никто не пострадал - в машине же никого не было :-)
[19:02:08] <prospero3000> Я МОГ МИМО ИДТИ!!!)))
[19:04:16] <valexey> ну, либо заборы вдоль дороги укрепят, либо тротуары выпилят, чо :-)
[19:14:58] <prospero3000> Заборы? У нас? Я тебя поздравляю. Ты только что выиграл конкурс на лучший анекдот недели.
[19:18:19] <valexey> э? дык вообще все дороги огорождением обнесены. чтобы народ дорогу не перебегал в неположенных местах
[19:18:30] <valexey> помнится когда это сделали, у многих СИЛЬНО пригорало
[19:19:21] <prospero3000> Где? В Нерезиновск-тауне? А в Через-забор-ногу-задирищено?
[19:19:54] <valexey> в Нижнем Новгороде
[19:20:03] <valexey> довольно депрессивный город так то
[19:20:09] <valexey> в плане состояния экономики и благоустройства
[19:27:17] <valexey> в москве, кстати. что-то не обращал внимание что как вплане заграждений
[19:27:39] <valexey> но тут и не хочется перебегать дорогу - движение плотное. дороги широкие. убьют нафиг.
[19:41:01] <valexey> а вот в Раше решили таки свою ОСьку написать для самолетов. Чтобы VxWorks вражеских не юзать. https://iz.ru/649843/vladimir-zykov/v-rossii-sozdaiut-novuiu-operatcionnuiu-sistemu-dlia-samoletov
[19:41:20] <valexey> отгадайте с двух раз, на каком языке эта авиационная ось писана будет? :-)
[19:59:36] <valexey> ладно, можно не гадать. вот тут всё написано: http://osday.ru/presentations/solodelov/solodelov.pdf
[20:00:26] <valexey> http://osday.ru/solodelov.html
[20:03:40] <valexey> "Разработка ведется на языке C в соответствии со стандартом на кодирование, разработанным для данного проекта (как требует DO-178C)"
[20:03:56] <valexey> собственно вот. прям требование чтобы на Си писали :-) ибо так - безопасно.
[20:04:49] <prospero3000> Там не написано, что это безопасно.
[20:05:13] <valexey> написано
[20:05:17] <prospero3000> Там написано, а нам так хочеца!
[20:05:33] <valexey> там же чуть ли не самые строгие требования к надежности. в авионике то
[20:06:12] <prospero3000> Си? Надёжность? Авионика? Так вот почему самолёты падают!))
[20:07:15] <valexey> надо, кстати, будет обмазаться DO-178C - какие там реально требования.
[20:08:04] <valexey> а то вдруг Си там лишь рекомендован?
[20:08:52] <prospero3000> Так Ада же!! Бе-200, Ф-22, Ф-117?
[20:09:10] <valexey> да, ада возможна, как и с++
[20:09:14] <valexey> но лучше всего - Си.
[20:09:15] <valexey> :-)
[20:09:38] <prospero3000> Ну сравнил лом с костылем..
[20:10:20] <valexey> дык их там реально на одну планку ставят. в стандарте этом.
[20:10:44] <prospero3000> Да это бред.
[20:11:29] <prospero3000> В Аде что гонки, что версионность регулируется.
[20:11:51] <prospero3000> Статический анализ -- да с любого профиля.
[20:12:09] <prospero3000> Согласование интерфейсов -- как отче наш.
[20:12:20] <prospero3000> Куда там Си?
[20:12:27] <valexey> ну реальность вот такая вот. в авионике
[20:12:41] <valexey> кстати, похоже в авионике таки требования более строгие чем в медицине
[20:12:44] <valexey> СИЛЬНО строже требования
[20:12:52] <valexey> к софтверу
[20:13:15] <prospero3000> И как там Си может быть?
[20:13:40] <valexey> надо читать DO-178C
[20:14:03] <valexey> язык программирования довольно слабо влияет на качество софта в mission critical системах
[20:14:08] <valexey> типа тех же марсоходов
[20:14:23] <valexey> там процесс разработки другой используют. см. как NASA работает.
[20:14:36] <valexey> но это дорогой процесс, да.
[20:15:03] <prospero3000> Ну, если насильник -- можно и почитать. Если язык не обеспечивает безопасность себя от дурости программиста -- правила не нужны.
[20:15:33] <prospero3000> После селёдки -- клубнику уже можно не мыть.
[20:16:17] <valexey> вот оберон туда, насколько я вижу, вообще никак не впихнуть
[20:16:58] <prospero3000> Легко. Оберон сломать сложнее гораздо.
[20:17:18] <prospero3000> А если ещё железо заточено...
[20:17:31] <valexey> банально инструментария нет. теоремпруверов нет. нифига нет для оберона
[20:17:39] <valexey> зато сборщик мусора есть, который там как бы запрещен
[20:18:08] <prospero3000> Быстрее будут аппаратные глюкозы вылетать. В Обероне сборщик мусора не обязан, не надо гнать.
[20:19:23] <valexey> это смотря в каком. если соблюдать букву сообщения о языке, то в языке оном вообще бай дизайн утечка памяти
[20:19:30] <valexey> NEW есть, DISPOSE нет
[20:19:53] <valexey> но в некоторых оберонах есть ANNEX где описывается, что да. сборщик мусора нужен
[20:20:14] <prospero3000> Это да. Но про сборщик мусора -- там ни слова
[20:20:32] <prospero3000> Стандарт не требует.
[20:20:38] <valexey> у оберона нет стандарта :-)
[20:20:57] <valexey> поэтому каждая реализация оберона - свой язык. с другими не совместимый. точнее диалект.
[20:21:25] <prospero3000> Да ладно? А то я какую-то пдф-ку у Вирта подтянул, он там почему-то от и до описал.
[20:21:41] <prospero3000> И я даже участие в переводе принял.
[20:24:35] <valexey> ок. ссылочку на ISO стандарт оберона дай плиз
[20:24:56] <valexey> какая-то pdf'ка это не стандарт.
[20:25:24] <prospero3000> А вот теперь, договоримся о понятиях.
[20:25:32] <valexey> это сообщение о языке. кстати, не полное. когда vlad2 писал компилятор, мы немало обсуждали что же придумать вместо очередной дыры в описании языка.
[20:25:52] <valexey> стандарт - это то, что прошло процесс стандартизации. формальный всем известный процесс.
[20:26:00] <prospero3000> Стандарт производителя -- описание опубликованное разработчиком.
[20:26:45] <prospero3000> Стандарт технический -- описание опубликованное и зафиксированное формально независимым комитетом.
[20:27:12] <valexey> у производителя нет стандарта. это просто дока к его поделию. стандарт нужен когда больше одного вендора.
[20:27:39] <prospero3000> Т.е. ТУ -- это не стандарт?
[20:28:58] <valexey> конечно нет
[20:31:24] <prospero3000> Понятно. Читать Википедию "Технические условия" бегом.
[20:32:02] <prospero3000> Цитата:
[20:32:43] <valexey> да, я вижу
[20:32:44] <prospero3000> Требования, установленные ТУ не должны противоречить обязательным стандартам.
[20:32:47] <valexey> но при чем тут оберон?
[20:33:22] <prospero3000> При том, что производитель опубликовал исчерпывающие обязательные требования.
[20:33:28] <valexey> не опубликовал
[20:33:31] <prospero3000> Стандарт производителя.
[20:33:53] <prospero3000> Опубликовал. Ссылку кинуть?
[20:33:58] <valexey> у вирта сообщение о языке это просто выдернутая глава из книжки.
[20:34:09] <valexey> в этой главе ни рантайм не описан ни библиотека.
[20:34:24] <valexey> более того, сам вирт то что он там реализовал не соответствует тому что он там написал
[20:34:38] <prospero3000> И?
[20:35:14] <valexey> и. это просто неполное приблизительное описание языка. до стандарта полноценного этой штуке еще прыгать и прыгать
[20:35:49] <prospero3000> Это минимальные технические условия производителя.
[20:35:50] <valexey> алсо у него там не приведен набор тестов для компилятора. а ведь должен был бы: "Кроме того, в них должны быть указаны процедуры, с помощью которых можно установить, соблюдены ли данные требования."
[20:36:04] <prospero3000> Мало? Сделай свои. Всё просто.
[20:36:35] <valexey> 0 - это не мало. это отсутствие.
[20:36:59] <valexey> поэтому обероны друг с другом все и не совместимы :-)
[20:37:19] <prospero3000> А где-то кто-то что-то обещал?
[20:37:31] <prospero3000> ОберонОС -- это ноль?))
[20:37:32] <valexey> дык если этого нет, то это не ТУ. просто по определению.
[20:37:43] <prospero3000> Да щас!
[20:38:03] <prospero3000> Почитал стандарт на мэковские протоколы.
[20:38:26] <valexey> оберонос это реализация которую ещё нужно поверить на соответствие ТУ, который не ТУ, ибо там не описаны процедуры с помощью который можно установить соблюдены ли данные требования
[20:38:27] <prospero3000> Там точно всё вилами по воде писано.
[20:38:57] <prospero3000> И ничо. Как-то инженеры АСУ живут с этим.
[20:39:26] <valexey> вот потом аварии и случаются...
[20:39:31] <valexey> а самолеты - не падают! вот.
[20:39:31] <prospero3000> А там научного подхода ещё меньше, чем в Си.
[20:40:03] <prospero3000> Я понял. Это локально гравитация искривляется)
[20:41:40] <prospero3000> А нет. Кругом человеческий фактор))
[20:56:26] <vlad2> prospero3000: я там Вирту целый список отсылал с просьбой уточнить, что ожидается от компилятора в таких-то случаях. И эти люди еще крутят носом по поводу сишных UB :)
[20:59:34] <vlad2> Оберон без GC вообще нинужен. Он при этом по надежности сразу падает на уровень С, а по всем остальным статьям С уже лучше. Про С++ вообще не говорю..
[21:01:10] <valexey> ну, всё же нет. Оберон чутка надежней хотя бы в том плане, что компилятору там никто не давал индульгенцию творить всё что угодно если у нас бесконечный цикл без побочных эффектов.
[21:02:01] <valexey> т.е. в Си UB иногда прописаны там, где интуитивно кажется, что всё должно быть ок. Оно понятно почему - так можно мертвый код выпиливать на этапе компиляции например. Но тем не менее.
[21:02:01] <prospero3000> Это лишь следствие.
[21:02:54] <valexey> хотя.. например в Си ты знаешь размеры переменных, т.е. можешь их указать, в Обероне - нет. А это, кстати, надежность. Так что у них плюс-минус одинаково получается.
[21:02:59] <prospero3000> Си -- это брайнфак, при отсутствии усилий писать код нормально)
[21:02:59] <valexey> Но с Си жить удобней.
[21:03:17] <valexey> ибо он более высокого уровня язык нежели оберон
[21:03:41] <prospero3000> Точнее, низкого.
[21:04:03] <prospero3000> Больше силы. Да, это путь к князю этого мира.
[21:04:51] <prospero3000> Больше силы -- меньше ума.
[21:05:06] <valexey> Си дает больше инструментов для построения собственных абстракций. Оберон в этом плане - деревянный. И ближе к DSL прибитому гвоздями к одной конкретной задачи для которой разрабатывался.
[21:06:00] <vlad2> "написать на обероне компилятор оберона" :)
[21:06:05] <prospero3000> К тёмной стороне силы прикасаешься ты, юный падаван. Но время ситхов подходит к концу неизбежно.
[21:06:42] <vlad2> Про конец мы уже слышим 30 лет существования оберона :)
[21:07:08] <prospero3000> Джедай должен силу структуры постичь. Структуры подходы принять должен.
[21:07:19] <vlad2> Эти 30 лет - лучше доказательство того, что и оберон не серебряная пуля :)
[21:07:57] <prospero3000> И тогда тёмная отступить сторона будет вынуждена. Поймешь ты правильность пути избранного.
[21:08:21] <valexey> кто-то скажет, что это лишь доказательство того, что дьавол избыточной сложности и свистоперделок соблазнил и завладел умами темных масс программистов.
[21:08:42] <prospero3000> С-ложно.
[21:08:59] <prospero3000> Оберон -- прост.
[21:09:41] <valexey> но вообще, в плане безопасности, Оберон даже на java не дотягивает. А java не дотягивает до kotlin, а котлин вообще фигня по сравнению с Rust & Ocaml, а ocaml смешон по сравнению с haskell, а haskell на редкость небезопасный язык по сравнению с Agda & Coq
[21:09:55] <prospero3000> Эффективность силы в её грубости и топорности
[21:10:25] <prospero3000> Но, чем сильнее оружие, тем опаснее оно для создателя.
[21:22:39] <valexey> но вот кстати, на тему надежности - я пока не встречал компилятора Оберон-семейства в котором не напарывался бы на баг компилятора.
[21:23:14] <valexey> это к тому, что в плане надежности широта использования инструмента рулит, и делает его надежным.
[21:23:35] <prospero3000> Это не проблема стандарта. Это проблема реализации.
[21:24:22] <valexey> используемость важнее простоты. да, написать надежный Оберон-компилятор проще чем надежный с++ компилятор, но не настолько проще, чтобы при такой разнице в популярности Оберон-компиляторы были надежней или хотя бы такими же по надежности как компиляторы с++
[21:25:24] <prospero3000> Написать простой и надёжный компилятор Оберона, сложнее чем не простой, а значит не надёжный С++))
[21:25:42] <prospero3000> Простота стоит дорого.
[21:26:51] <valexey> чаво?
[21:27:23] <prospero3000> Ну, например. Многопоточность. Надо?
[21:27:40] <valexey> надежность компилятора определяется тем, с какой вероятностью (и через сколько времени от начала пользования компилем) ты напорешься на баг в компиляторе.
[21:28:03] <valexey> Ну, на тему многопоточнки компилятор плюсов вообще не в курсе был до C++11 :-)
[21:28:08] <valexey> так что мимо кассы
[21:28:49] <prospero3000> Нет. Я про желание Страуструппа впихнуть в С++ невпихуемое.
[21:29:30] <prospero3000> Откуда рождается вполне законный вопрос. Как сделать так, чтобы этот зоопарк не разбежался по углам?
[21:29:35] <valexey> да ладно. в нормальных языках та же многопоточка, или хоть какая-то конкурентность в языке была искаропки сразу.
[21:29:58] <valexey> прямо в языке, даже не в либах
[21:30:10] <valexey> и это было до плюсцов
[21:30:16] <prospero3000> А вот не надо оно искаропки. MPICH вам в руки.
[21:30:47] <prospero3000> Оно уже вылезано, устоялось. Зачем лочепед городить?
[21:32:41] <valexey> это ты вирту скажи, нафига он в свой язык искаропки конкурентность впихнул. почему MPICH не использовал.
[21:33:20] <prospero3000> В Оберон? Где это?? Я тоже хочу!))
[21:33:45] <valexey> в Modula-2
[21:34:14] <prospero3000> Ты бы ещё про Алгол-68 вспомнил))
[21:34:34] <valexey> дык модула-2 довольно свежий язык
[21:34:39] <valexey> примерно как Си.
[21:35:09] <valexey> ну и потом его последователи (Вирта) таки впихнули в Оберон многопоточку нормальную. В прямого продолжателя виртовского оберона.
[21:37:21] <prospero3000> В Обероне-07 нет ничего подобно. Модула-2 -- лучше чем Си, но всё же устарела. Это был поиск. И ошибка включения многопоточности в Обероне была исправлена. Нету.
[21:38:03] <prospero3000> Активный Оберон -- забавная, но побочная ветвь эволюции.
[21:38:33] <valexey> в Модуле-2 не многопоточность
[21:39:37] <prospero3000> Там были встроенные средства (в Модуль), которые отправил Вирт в библиотеки. Они себя не оправдали.
[21:41:01] <valexey> что-то я таких средств в оберон-оси не вижу
[21:41:34] <valexey> оберон он такой, довольно деревянненький. для той задачи которую решал тогда вирт - годится. минималистично задачу решил
[21:42:02] <valexey> но не годится без рашпиля как универсальный инструмент
[21:42:08] <prospero3000> А зачем? Один пользователь, одно адресное пространство, одно ядро. Тупого фонового процесса разве мало?
[21:42:18] <valexey> вот его все и допиливают в меру своей испорченности.
[21:42:42] <valexey> в оберон ос НЕТ фоновых процессов. там даже GC замирает пока ты в цикле что-то крутишь.
[21:43:08] <valexey> банально делаешь NEW в цикле и фигак - память кончилась. система шлепнулась. GC так и не запустился.
[21:44:09] <prospero3000> Ключевое слово -- "испорченности".
А зачем в цикле NEW делать? Вредитель детектед)) Цикл не для того придуман.
[21:45:41] <valexey> равно как и динамические структуры данных, ага.
[21:47:45] <prospero3000> Динамические структуры всё-равно имеют размер. И к ним надо быть готовым. Ограничивать и сверху, и снизу. И уж точно не в цикле гене пить по одному.
[21:47:56] <prospero3000> ...генерить...
[21:48:25] <valexey> у тебя в ходе работы сложного алгоритма может образовываться некоторое колличество мусора. и ничего ты с этим не сделаешь.
[21:48:53] <valexey> а если ты что-то будешь с этим делать, то всё преимущество GC в плане разработки алгоритмов, сразу уходит.
[21:49:07] <valexey> и вместо разработки алгоритма ты начинаешь заниматься низкоуровневой хренью
[21:49:13] <prospero3000> Безусловно. Ты же не будешь микроскопом гвозди забивать?
[21:49:21] <valexey> а в Обероне у тебя даже умных указателей нет :-)
[21:49:34] <prospero3000> Они не нужны априори.
[21:49:53] <prospero3000> Достаточно типизированных.
[21:52:57] <valexey> Бгг
[21:54:06] <valexey> ты еще скажи, что RAII не нужен и никак надежность не повышает
[21:54:10] <prospero3000> Ага. Умные указатели однозначно умно указывают на то, что языком предусмотрены тупые указатели.
[21:54:36] <prospero3000> Умные интеллигентные, а тупые злые и сильные))
[21:55:19] <prospero3000> Всё эти RAII -- костыли из-за изначальных врождённых косяков.
[21:55:38] <prospero3000> Да, надо. Из-за уродства :-)
[21:57:30] <valexey> гм. а как ты без этого будешь предотвращать утечку ресурсов? руками всем будешь манипулировать?
[21:58:21] <prospero3000> Руками?))) Нет, закат Солнца вручную -- это круто, но больно.
[21:58:28] <valexey> а как?
[21:59:36] <prospero3000> Может переложить на специальный вылизанный инструмент? Один для всех? Чтобы вот так нужно, а не так -- тупо не выйдет.
[21:59:59] <valexey> гм. насколько я знаю, таких инструментов не существует в природе
[22:00:08] <valexey> по кр. мере я не встречал ни в одном языке
[22:00:47] <prospero3000> В Питоне была такая попытка. Работает, но не вау.
[22:01:17] <valexey> ну, оно для довольно частных случаев работает. на уровне скопа только.
[22:01:54] <valexey> что-то вроде scoped_ptr по семантике. в C# тоже подобная хрень есть.
[22:01:57] <valexey> но это убого
[22:02:44] <prospero3000> Не то, что бы скоп. Замучаешься ужа и еда скрещивать. Точнее, скрещивание проходит на ура, а вот потом понять где уж, а где ёж -- можно, но не весело.
[22:03:02] <prospero3000> Не додумали.
[22:16:15] <prospero3000> Нет нормального управления.
[22:17:06] <prospero3000> В питоне вылетает исключение в левом куске, и если обработчика нет -- питон может продолжить исполнение дальше. Легко.
[22:17:17] <prospero3000> Ресурс висит.
[22:17:55] <prospero3000> PyGtk подтверждает.
[22:31:13] <valexey> этот язык не кривой, он гибкий!
[22:33:01] <prospero3000> Да ну её нахрен, эту гибкость! Заставляю сравнить строки "МОДУЛЬ" и "МОДУЛЬ" (образец и строка из файла) -- в 2 случаях из 3 равно, а в одном из 3 -- не равно. Это как?
[22:36:46] <valexey> буква O другая?
[22:37:51] <prospero3000> Ну я же не больной, раскладку в середине слова переключать?))
[22:38:08] <prospero3000> Всё к юникоду привожу.
[22:38:27] <prospero3000> Почему не "М"?))
[22:40:10] <valexey> а может у тебя там еще и BOM вначале файла?
[22:41:28] <prospero3000> Да какая разница? В юникоде все строки в раме. Whit BOM -- это стандарт в питоне. Тут я отсебятину не гнал.
[23:10:45] <vlad2> prospero3000: GC не заменяет RAII
[23:12:19] <vlad2> Иначе во всякие C# не пихали костыли в виде "using".
[23:18:48] <vlad2> prospero3000: по поводу "недопустимости NEW в цикле" - вообще смешно.
[23:21:15] <valexey_> "Почему софт всегда отстой? Сейчас открыл 800кб css файл в редакторе фара, фар выжрал всю память. Бесконечный своп, система не отзывается."
[23:23:39] <prospero3000> Простота дорого стоит.
[23:25:11] <valexey_> настолько дорого что в конце концов может быть не совместима с жизнью? :-)
[23:27:17] <prospero3000> Как раз наоборот. Только простота совместима с жизнью. Просто не курить, просто не пить, просто заниматься спортом. Но это дорого стоит)
[23:27:39] <valexey_> просто не жить...
[23:27:51] <valexey_> отсутствие жизни проще наличия
[23:28:14] <prospero3000> Да. Это совсем просто и очень дорого.
[23:29:08] <valexey_> с другой стороны, наличие жизни всегда можно исправить :-)
[23:29:18] <valexey_> правда это тоже нужно усилия прикладывать определенные
[23:31:04] <valexey_> "Приоритетное внимание угрозам в ущерб любым удовольствиям -- это, на самом деле, фундаментальный принцип работы центральной нервной системы, выработанный Эволюцией за 4 миллиарда лет."
Аыыы! Чот я ржу.
[23:31:10] <valexey_> А наркоманы то и не в курсе!
[23:32:05] <prospero3000> Ну, наркоманы -- это сколько процентов от всего?
[23:32:40] <prospero3000> И, как раз пример с наркоманами -- только подтверждает .
[23:49:45] <_valexey_> ?