[00:00:39] <vlad2> Не знаю. Может проще заходить с типовых задач.
[00:01:07] <vаlexey> хотя нет. в С++ загребешься. Ибо там класс - это нифига не ООП-штука. Это деталь из которой вытачиваются самые разные абстракции.
[00:02:58] <vаlexey> а как от типовых задач идти?
[00:03:13] <vаlexey> Тем более что типовые задачи они ра-азные у всех
[00:03:53] <vаlexey> Типовая задача - написать проект размером в миллион строк кода, и продолжать его поддерживать и развивать коллективом в 100 человек, причем с далеко не нулевой текучкой кадров.
[00:03:59] <vаlexey> На протяжении 20 лет :-)
[00:12:49] <vаlexey> Oberon-2 cross compiler source for INMOS T800 Transputer available now (OP2/V4)
[00:13:02] <vаlexey> http://modulaware.com/mdlt/?n=89#t800-op2

written in 1990 by Stephane Micheloud.

since 2013 there's a free open-source Transputer emulator; follow link.
[00:32:16] <vlad2> Да, типовые задачи тоже плохо.
[00:36:11] <vlad2> формальная семантика дажде если будет разрабтана - тоже плохо.
[00:36:36] <vаlexey> и это проблема на самом деле всей этой индустрии - не получается поставить воспроизводимый эксперимент.
[00:36:49] <vlad2> Эксперты пишут сколько-то строк и дают заключение :)
[00:36:49] <vаlexey> да даже формальных критериев сравнения языков адекватных придумать не выходит
[00:37:01] <vаlexey> ыыы... эксперты - аццтой
[00:37:11] <vаlexey> ты же понимаешь, что это будет СИЛЬНО зависить от опыта эксперта
[00:37:24] <vаlexey> и от того в каком порядке он будет что-то там писать (порядок языков)
[00:38:04] <vаlexey> а если даже формальный критерий сравнения языков придумать, то совершенно не ясно как эти результаты вообще коррелируют с тем что мы имеем в реальном мире
[00:38:22] <vlad2> Мда.
[00:39:08] <vlad2> Причем можно даже представить случай, когда конкретный индивит объекивно качественнее пишет на x, чем на y. А другой индивид наоборрот.
[00:39:19] <vаlexey> да легко!
[00:40:03] <vlad2> Я даже могу представить, что у кого-то есть извилина, заточенная под жабаскрипт :) Но таких меньшинство и их можно исключить :)
[00:40:18] <vаlexey> таких больше чем тебе кажется :-)
[00:40:35] <vаlexey> на самом деле тут все довольно просто - удобно то, к чему привык (если это что-то тебе не противно)
[00:41:48] <vаlexey> поэтому оценивать языки (с тем чтобы выбрать) нужно скорее из их перспектив, нежели из каких-то формальных характеристик самого языка.
[00:42:09] <vаlexey> то есть наличие инструментария, наличие и качество сообщества, опенсорсность и так далее.
[00:42:57] <vаlexey> наличие либ, и того насколько пишутся биндинги к существующим либам. насколько быстро появляются либы под нужную предметную область. качество их.
[00:43:42] <vаlexey> если вот исходить из таких критериев, то внезапно (для меня) например тот же Python перестает быть говном :-)
[00:43:57] <vаlexey> Да и даже js становится весьма привлекательным языком ;-)
[00:45:05] <vаlexey> Кстати, Иван Кузьмицкий ошибку допускает: "Раз компьютер делает ровно то, что в него заложили, то если в него заложить ошибку, то он произведёт ошибочное действие."
[00:45:26] <vаlexey> Это не верно. Если на входе ошибка, то на выходе может быть что угодно. В том числе и корректный ответ :-)
[00:46:00] <vаlexey> И это проблема на самом деле. Реальная проблема. Ибо тест не всегда выявит ошибку в программе.
[00:48:21] <vаlexey> в плане проработанности методологии проведения исследований/постановки экспериментов, програмная инженерия находится где-то на уровне психологии :-) Точнее - в програмной инженерии все еще печальней. Поэтому все вот это что на оберонкоре творится - высосано на самом деле из пальца.
[00:51:35] <vlad2> Можно на самом деле еще зайти со стороны фатальных недостатков. Типа насколько просто прострелить себе ногу. На js очень просто. Бквально на днях я потратил минут 20, чтобы увидеть, что "конструктор" вызывается два раза. Это с тестами и со всеми делами. Т.е. тесты тупо падали, но почему - понять было невозможно.
[00:53:02] <vаlexey> ну это опять таки не столько язык, сколько диагностические тулзы
[00:53:30] <vаlexey> ну, пример - одно дело С++ и наличие отладчика, и совсем другое когда у  ты даже стектрейс посмотреть не можешь :-)
[00:53:42] <vаlexey> не говоря уже про наличие корок да пошаговой радости.
[00:54:05] <vlad2> А вызывался он два раза, во-первых, потому что это можно сделать. Во-вторых, потому что это был копипаст по причине монструозности вызова меода базового класса. После этого я окончательно решил, что в ебероне вызов базового метода будет оформляться как SUPER(arguments) и никак иначе :)
[00:54:20] <vаlexey> :-)
[00:55:27] <vlad2> До этого я думал сделать как в ББ (с галочкой).
[00:55:29] <vlad2> Но нах.
[00:55:34] <vаlexey> кроме того, сложность прострела ноги может сильно снизить гибкость языка. и это тоже может вылезти боком.
[00:55:45] <vаlexey> э?  с какой галочкой?
[00:55:58] <vlad2> obj.method^();
[00:56:10] <vlad2> Так в ББ.
[00:56:20] <vlad2> А в активном обероне method!
[00:56:39] <vlad2> (оберонщики как всегда не могут договориться между собой)
[01:03:53] <vlad2> Интересно, есть ли в природк компилятор, котоый выдаст варнинг вот на такое:
if (i != 0 || i != 1)
[01:04:19] <vlad2> Гже i - банальный int
[01:05:04] <vаlexey> ну, статические чекеры должны это отловить.
[01:20:50] <vаlexey> vlad2: ну вот, ловит оно
[01:20:58] <vаlexey> FlexeLint for C/C++ (Unix) Vers. 9.00k, Copyright Gimpel Software 1985-2013
--- Module: simple.cpp (C++)
    1  int main() {
    2     int i=0;
                              _
    3     if (i != 0 || i != 1){i++;}
simple.cpp  3  Info 774:  Boolean within 'if' always evaluates to True [Reference: file simple.cpp: lines 2, 3]
    4     return i;
                  _
    5  }

simple.cpp  5  Info 783:  Line does not end with new-line
[01:23:55] <vlad2> А вот если в этом файле будут злобные шаблоны/макросы инклудаться - оно поймает? :)
[01:24:22] <vаlexey> угу. оно же сотрудничает с компилером вроде как
[01:24:32] <vаlexey> как минимум препроцессором оно пройтись должно
[01:25:15] <vlad2> С каким компилятором?
[01:25:27] <vаlexey> да небось с гыцыцой
[01:27:19] <vаlexey> а вот оберон-компилер (да и любая тулза для оберона) такое наверняка не поймает
[01:27:30] <vаlexey> просто в силу того что я там описывал выше :-)
[01:29:07] <vlad2> :)
[01:29:12] <vlad2> Не тот масштабю
[01:35:46] <vаlexey> c другой стороны, если  у тебя большой-большой, или даже не большой, но гарантированно долгоиграющий проект (лет 10-20-30), то имеет смысл брать такой язык, какой поддерживать и развивать можно будет собственными силами. После того как он выйдет из моды, а конторы обанкротятся.
[01:36:27] <vаlexey> Оптимум, для таких проектов, по моим ощущениям, где-то на уровне Модулы-3 находится.
[01:40:24] <vаlexey> это если брать general purpose language
[02:17:23] <vlad2> Мля. M$ SQL умудряется тупить и ставить колом машину даже если бэкап на SSD...
[03:42:40] <vаlexey> http://habrahabr.ru/post/203690/#comment_7033616
[03:43:47] <vаlexey> http://ru.wikipedia.org/wiki/OpenFOAM
[10:25:36] <divan> Почитал обсуждение ББ :) забавно
[10:32:46] <divan> ББ — бесплатное лекарство от преувеличенной сложности. Есть такой аспект, что каждый профессионал стремятся напустить дыму в глаза, накручивая сложности на предмет. Есть замечательная статья "пишите по геологически" http://avspir.narod.ru/prosa/lang.htm, которая раскрывает суть этого явления. Если вы обязаны отвечать за код, такое бывает когда вы ученый или сам себе руководитель, то полный контроль для вас очень важен. Когда жопу прикрывает начальник, то максимум вы можете потерять работу. Когда вы сами отвечаете за свое имя и за продукт, нужен полный контроль, а значит простота окружения, простота языка. Поэтому я люблю ББ, поэтому я использую его в профессиональных задачах.
[14:40:28] <_valexey_> divan: а что кроме работы может потерять начальник? :-)
[14:41:13] <_valexey_> divan: кроме того за избыточную сложность в индустрии бьют кандилябром. Больно.
[14:42:04] <_valexey_> divan: При групповой разработке. Ибо каждый понимает что в случае чего ему в этом коде разбираться
[14:42:34] <_valexey_> Поэтому ВСЕГДА делается код-ревью
[14:44:49] <_valexey_> Избыточная сложность может появиться только в той модели разработки которую пропагандируют на оберонкоре - когда каждый пишет только свои модули и даже не смотрит в чужие. Вот тут - да. Есть просторных и возможность накрутить сложности и стать незаменимым работником.
[14:52:18] <_valexey_> То есть умышленная избыточная сложность, геологическая писанина.
[16:41:57] <divan> начальник в маленькой фирме, часто совмещает в себе бизнесмена, для которого основной ресурс — деловая репутация. стоит ее потерять, можно больше в бизнес не соваться в эту сферу. мелкий начальник в большой фирме, потеряет только работу тут вы правы.
[16:42:53] <divan> а может и вообще не потеряет, всякое бывает, у меня тут опыта 0. голая теория :)
[16:48:25] <alexey.veselovsky> дык бизнесмен всего лишь тоже работу потеряет :-)
[16:48:39] <alexey.veselovsky> а программеру репутация тоже важна
[16:52:42] <alexey.veselovsky> кроме того, в маленькой фирме начальник обычно сам программирует :-) и код ревью там обязателен :-)
[18:49:48] <alexey.veselovsky> вот немного пример про сложность: http://habrahabr.ru/post/204016/
[18:50:11] <alexey.veselovsky> подобную штуку на ББ можно уложить менее чем в 3 миллиона строк кода.
[18:50:23] <alexey.veselovsky> ?
[20:24:58] <alexey.veselovsky> да-а... когда нет деструкторов и нет сборщика мусора - код превращается в Ад
[20:25:05] <alexey.veselovsky> Если проект не совсем микроскопический
[20:27:55] <alexey.veselovsky> /me слегка хлебнул такого кода сегодня
[20:28:28] <alexey.veselovsky> в том числе доставляют контейнеры (дженериков/шаблонов там ясен пень нет)
[20:32:46] <alexey.veselovsky> http://livepark.pro/blog/15867.html
[20:34:35] <alexey.veselovsky> http://www.forbes.ru/mneniya-column/konkurentsiya/233303-pochemu-v-rossii-ne-lyubyat-zanimatsya-biznesom
[20:49:14] <Jordan> Что за язык? Проект на си написан?
[20:53:36] <alexey.veselovsky> угу
[20:54:08] <alexey.veselovsky> но на паскеле или там модуле было бы то же самое
[20:54:53] <Jordan> Да.
[20:55:54] <alexey.veselovsky> а со сборщиком мусора там были бы тормоза :-)
[20:57:01] <Jordan> Тогда как? Как уменьшить сложность?
[20:57:21] <Jordan> Деструкторы?
[20:57:27] <Jordan> Как в с++
[20:57:29] <alexey.veselovsky> ну, этта.. можно C++ ;-) С вумными указателями и прочей радостью.
[20:59:08] <alexey.veselovsky> можно как в модуле-3 -- часть со сборщиком мусора, а часть с ручным управлением памятью/ресурсами
[21:00:01] <Jordan> Такая штука должна поддерживаться компилятором.
[21:00:13] <alexey.veselovsky> эмм.. которая?
[21:00:27] <Jordan> часть со сборщиком мусора, а часть с ручным управлением памятью/ресурсами
[21:00:56] <alexey.veselovsky> ну, тут либо языком оно должно поддерживаться, либо на уровне либ. компилятор тут не у дел.
[21:01:07] <alexey.veselovsky> в случае С++ сборщик мусора это просто либа.
[21:01:15] <alexey.veselovsky> в случае Модулы-3 -- это языковая поддержка
[21:01:56] <Jordan> Если по фантазировать.
[21:02:13] <alexey.veselovsky> поддержка компилятором - это обычно плохая идея
[21:02:19] <Jordan> Проект в 3 млн строк на кп менее поддерживаем, чем к примеру на с++?
[21:02:42] <Jordan> Или модуле 3.
[21:03:02] <Jordan> Основная загвоздка в чём будет?
[21:03:13] <Jordan> В общем.
[21:03:34] <alexey.veselovsky> Эмм.. Не уверен. С одной стороны в КП сложнее порушить память. С другой стороны на С++ будет банально меньше кода и больше автоматики. Вероятность утечек скажем русурсов там будет меньше.
[21:03:44] <alexey.veselovsky> Ну и система типов богаче.
[21:04:39] <alexey.veselovsky> ну и вообще, С++ на этапе компиляции может проводить много больше проверок кода.
[21:05:14] <alexey.veselovsky> также не стоит забывать про то, что для плюсов существует богатый инструментарий для выявления ошибок. в том числе статических проверяльщиков
[21:06:02] <Jordan> Ясно.
[21:06:28] <alexey.veselovsky> Ну, скажем такую вот ошибку в случае КП просто не кому будет найти: IF A#0 OR A#1 THEN ...
[21:07:15] <Jordan> Это диверсия.
[21:07:28] <Jordan> Кто же такое напишет? :-)
[21:07:33] <alexey.veselovsky> этот тип ошибок довольно часто встречается в проектах на самом деле
[21:07:56] <alexey.veselovsky> то есть когда выражение всегда false или всегда true
[21:08:34] <Jordan> О таком на оберкоре не пишут. :-)
[21:09:08] <Jordan> Банально из за такой ошибки может упасть ариан, на языке ада? Если её не выявить?
[21:09:45] <alexey.veselovsky> да что угодно может быть на самом деле. может и норм работать, а может случиться что-то странное
[21:11:21] <alexey.veselovsky> зависит от задачи ведь и конкретной логики
[21:17:35] <Jordan> Как это понять?
[21:17:47] <alexey.veselovsky> в смысле?
[21:17:49] <Jordan> http://forum.oberoncore.ru/viewtopic.php?f=86&t=4644#p84013
[21:17:55] <Jordan> что процедурная абстракция сортировки делается ровно один раз, а потом вызывается ровно столько раз, сколько нужно - и никакого дублирования кода нет.
[21:18:27] <Jordan> Сортировать массив и список, там же разные сортировки нужны, разные реализации
[21:19:07] <Jordan> Или список помещается в массив потом проганается через сортировку, после чего обратно в список?
[21:19:25] <alexey.veselovsky> ну, попроси разъяснить
[21:19:56] <Jordan> Или там сортируют только массивы.
[21:20:11] <alexey.veselovsky> ну реально просмотри внимательно что там нашлось. мало ли.
[21:20:15] <Jordan> Нужно код посмотреть.
[21:20:30] <alexey.veselovsky> хотя, я бы советовал посмотреть не на использование, а на то сколько там именно процедур сортировки реализовано
[21:24:18] <Jordan> пока нашёл 4. 2 для массива и 2 для списка
[21:24:45] <alexey.veselovsky> ну вот и аргументируй свое мнение найденым. пусть он расскажет что он под этим имел ввиду
[21:25:22] <Jordan> Ещё покапаюсь в коде.
[21:25:35] <alexey.veselovsky> угу
[21:28:18] <Jordan> Там и правда разные сортировки
[21:28:24] <Jordan> И шелл есть
[21:29:48] <Jordan> Я думал обычно везде qsort применяют. Залез в вики, там видов сортировок полно.
[21:32:23] <alexey.veselovsky> не, qsort не самая лучшая сортировка
[23:37:56] <geniepro> А сериал Психопасспорт оказался весьма и весьма неплохим, техническая антиутопия, нра...
[23:38:37] <geniepro> http://ru.wikipedia.org/wiki/Psycho-Pass
[23:39:05] <geniepro> ещё говорят Мастер Муши хорош -- триллеры по Лавкрафту, куча наград
[23:40:02] <geniepro> http://ru.wikipedia.org/wiki/Mushishi
[23:48:41] <geniepro> alexey.veselovsky> не, qsort не самая лучшая сортировка
о_О как можно сомневаться в идеальности творения Дейкстры??? еретик!!! )))
[23:58:39] <Jordan> Её вроде Хоар разработал.