Давным-давно написал текст про драконов. Много кто его читал, мало кто понял. Но тут уж я сам виноват. Интегральные вещи очень сложно объяснить представителям западной культуры. Потому как все упирают на анализ и практически никто не владеет синтезом.
Если говорить грубо и просто, краткая выжимка из всех этих попыток такая.
Текст, конечно, надо переписывать. Но у меня на очереди ещё дофига всего, что надо...
А вспомнил я про эту тему потому, что
ailev собирается создавать драконью ферму.
Идея глобальная и благая (Да, направление движения как раз туда).
Подробно мои претензии можно посмотреть по ссылке. Если кратко, то:
Если говорить грубо и просто, краткая выжимка из всех этих попыток такая.
The Software Dragons are heavily connected networks of problems.
They are called Dragons because they cannot be fought with convenient methods. All attempts to solve small problems separately fail because of unintended consequences. All attempts to solve or even to understand the system as whole fail because of the complexity of interdependencies.
You cannot win against them but you can follow 3 rules.
1. Do not ignore Dragons.
2. Do not feed them.
3. And kill them when they are still small.
Текст, конечно, надо переписывать. Но у меня на очереди ещё дофига всего, что надо...
А вспомнил я про эту тему потому, что
Идея глобальная и благая (Да, направление движения как раз туда).
Подробно мои претензии можно посмотреть по ссылке. Если кратко, то:
- Нет смысла собирать информацию из различных миров в одну кучу. Системы должны собираться из подсистем и интерфейс наверх должен быть минимально необходимым.
Именно необходимым. Причём, если есть пути не расширять его, именно ими и надо и идти.
И не менеджерам и бухгалтерам необходимые, а инженерам. - Нельзя соединить системы разных философий, не влезая глубоко в их реализацию и не учитывая их реальные ограничения.
Не потому, что это сложно или плохо стыкуется, а потому, что дьявол в деталях.
Причём, на то, чтобы сделать всё правильно, бюджетов всегда не хватает. То есть, придётся идти на компромиссы. А это значит, закладывать бомбы замедленного действия. - Квалифицированных кадров не хватает. Всегда.
А это значит, что всякими модными вещами будут заниматься те, кто бесполезен.
Нет, во время этапа proof of concept на новой технологии могут сидеть гении, практики и высокооплачивыемые спецы. Но как только оно пойдёт в массы, все чудесные базовые вещи, на которых будут основываться мощные системы и умные процессы попадут в руки практикантов, дураков или, ещё хуже, бангалорского оффшора.
(И там загнутся) - Критерий правильной системы один: она экономит время. Причём, не кому-то там дальше по цепочке, а именно тому конкретному человеку, который будет тыкать кнопочки.
Менеджерам можно пообещать экономию времени, экономию бюджета или активацию скрытых резервов. Они ведутся на красивые слова и необоснованную рекламу. Но, если прямым участникам процесса это будет создавать лишнюю работу, всё это выльется в банальный саботаж.
Теоретически бывает по-другому. Практически каждый раз я вижу одно и то же: «Мы готовы это делать, но как-нибудь потом. Сейчас у нас завал с нашей непосредственной работой.» - Любое объединение и нововведение не висит в пустоте, а требует для ногмальной работы объединения с огромными массивами информации, заполненными по старым технологиям. Как правило, это нереально, потому что надо всё переводить в новый язык, новую парадигму или новый формат. На это нет ресурсов и денег. Обычно это ещё и пытаются провернуть дилетанты, выбирая самые дикие способы.
- Специалист - это человек, знающий и понимающий несколько смежных миров. И не теоретически, а имеющий много лет реального опыта.
Только такие специалисты-универсалы способны осуществлять контакт между узкими специалистами. Попытка это сделать программами провалится.
Потому что ни одна программа не может вытянуть культуру и контекст.
Студенты и аспиранты, выучившие «Самую Правильную Методику», тоже не могут. Слишком много есть вещей, которых в университетах не учат. Кое-что относится к тому, о чём вообще редко говорят вслух. - Система должна быть закрыта. То есть, далать умный софт должны люди, полностью знающие как и зачем он будет применяться.
Если сжульничать с определением требований и просто добавить «настраиваемость и расширяемость», любой участник процесса, чтобы съэкономить пятнадцать минут работы, прау нажатий на клавиши или просто выпендриться, будет привешивать к системе дикие, несовместимые расширения. Причём, в половине случаев ошибочные не только по идеологии, но и по исполнению. - . Чтобы не было ошибок, любая система должна иметь проверку входных данных, инвариантов и тех результатов, которые она выдаёт, а на любой язык должны быть наложены правила стилистики.
Вот этого практически никто нормально не умеет.
no subject
Date: 2014-08-12 06:43 am (UTC)Если сжульничать с определением требований и просто добавить «настраиваемость и расширяемость», любой участник процесса, чтобы съэкономить пятнадцать минут работы, прау нажатий на клавиши или просто выпендриться, будет привешивать к системе дикие, несовместимые расширения. Причём, в половине случаев ошибочные не только по идеологии, но и по исполнению.
И тут я сразу вспоминаю latex :)
no subject
Date: 2014-08-12 07:05 am (UTC)no subject
Date: 2014-08-12 12:27 pm (UTC)maven тоже
no subject
Date: 2014-08-12 03:25 pm (UTC)no subject
Date: 2014-08-12 04:10 pm (UTC)Правильные учебники на эти темы закончились где-то в конце восьмидесятых.
А в фирмах - да. Будут выбирать по типу "В профиле стоит - значит эксперт". В результате кошмар, кошмар и тихий ужас. Но как-то работает. Правда ресурсы жрёт немерено, но для этого индусы есть.
Кстати, чего без абзацев?
no subject
Date: 2014-08-13 01:08 pm (UTC)Это, вообще говоря, не так. Бывают преподаватели всё видившие. Только они прочли лекцию и ушли. Реально менторствовать, разбирая кусок написанного студентом кода, никто не будет.
> Правильные учебники на эти темы закончились где-то в конце восьмидесятых.
А они были, эти учебники, вообще? В смысле не "издавались ли", а применялись ли хоть когда-то?
А без абзацев просто потому сто слишком второпях писал комментарий.
no subject
Date: 2014-08-13 07:54 am (UTC)Мы так и Моделике, и Архимейту учили (SysML мы не рекомендуем). Просто у нас это типовая ситуация: постановка какой-то практики моделирования у клиента. Так что мы разного насмотрелись на разных предприятиях, разных стратегий решения вопроса. Опыт некоторый имеется.
С агрументом, что языкотворчество нужно прекратить, а если им заниматься, то нужно создавать языки не сложнее фортрана, я не согласен, ну да ладно.
no subject
Date: 2014-08-13 08:47 am (UTC)Пардон, но такого не бывает. Значит у вас там качество как-то не так меряется.
А языки создаются естественным путём. Поэтами и писателями.
no subject
Date: 2014-08-13 08:54 am (UTC)Я понимаю, что Кобол создавался поэтами и писателями, естественным путём. Поэтому так долго продержался, и широко распространился. Жаль только, подвымер в последнее время, наверное народ более умный пошёл -- перешёл на Яву. Потом Ява вымрет как и Кобол, все перейдут на Хаскель, а передовики будут в это время заниматься Coq.
no subject
Date: 2014-08-13 09:38 am (UTC)no subject
Date: 2014-08-13 01:55 pm (UTC)no subject
Date: 2014-08-13 03:28 pm (UTC)no subject
Date: 2014-08-13 04:04 pm (UTC)no subject
Date: 2014-08-13 04:31 pm (UTC)А из Оберона-2 кучу вещей просто спёрли в Яву, забыв указать источник. У меня вверху среди ссылок есть про это.
no subject
Date: 2014-08-13 04:34 pm (UTC)no subject
Date: 2014-08-13 05:06 pm (UTC)no subject
Date: 2014-08-13 05:06 pm (UTC)no subject
Date: 2014-08-13 01:44 pm (UTC)Звучит отлично, но верится с трудом. Ну собственно верится в трудом только в три месяца. Обычно через три месяца люди начинают разбираться настолько, что могут сделать правильно только совершенно типовые вещи, минимально нетривиальные делают с каким-то количеством типовых и каким-то количеством уникальных, но очень грубых ошибок, а при попытке сделать что-то совсем нетривиальное либо несправляются впечетляюще катастрофически, либо имплементуруют знакомый им велосипед ("опытный программист на фортране может писать на фортране на любом языке программирования") с обилием самых извращённых костылей поверх предложенного им тула. Делать минимально-нетривиальные вещи научаются через полгода-год, делать совсем нетривиальные вещи в духе тула (а не наперекор ему) научаются через непредсказуемое время: одни через год, другим нужно 5-8 лет опыта, большинство же не научается никогда.
> С агрументом, что языкотворчество нужно прекратить, а если им заниматься, то нужно создавать языки не сложнее фортрана, я не согласен, ну да ладно.
Я этого не сказал.
Сложные в смысле "сложные в изучении", а не "сложные по построению" или "монструозно всеобъемлющие", языки бывают нужны в нишевых применениях, это совершенно неизбежно, с этим глупо спорить.
С другой стороны, если пытаться учить людей, не доросших до нужного уровня абстракции, языку сложному в изучении, он либо ничего не поймёт, либо изучит вместо языка пиджин, то есть поймёт очень поверхностно по ряду примеров и научиться "достигать на этом языке цели чтоб оно как-то работало" путём компоновки готовых конструкций через пень колоду, не понимая глубоко как оно работает, как этим инструментом нормально пользоваться, и зачем в нём столько сложностей вокруг простых вещей.
Вы сами наверняка видели людей, которые вдруг резко начали "использовать ООП", изготавливая по классу под каждый метод, и ещё один дополнительный класс, содержащий 800 глобальных переменных. И людей, которые на функциональных языках программирования пишут императивщину где она нафиг не нужна, потому что кто-то умные сказал им что Хаскель лучше, забыв объяснить, чем.
Вот поэтому я и настаиваю на том, что сложные в изучении вещи останутся нишевыми; по крайней мере, пока уровень школьного математического и институтского программистского образования не скакнёт вперёд на полтора шага.
А в том, что следует делать сложные в смысле "монструозно универсальные и всёумеющие" языки, я как раз сомневаюсь. Нет, не "уверен, что не надо", просто сомневаюсь и рассматриваю каждую попытку со скепсисом.
Потому что во-первых, мир чрезвычайно многогранен, а во-вторых изучить язык монструозной универсальности нормально мало кто может.
Поэтому вероятнее расклад, при котором имеется 100500 DSLей (простых по-отдельности) с которыми работают 95% программистов, 4% программистов, которые знают как делать междоменный интерлинкинг и 1% программистов, которые знают как делать хорошие DSLи.
no subject
Date: 2014-08-13 01:55 pm (UTC)Другой вопрос, как сделать не слишком заумное и компактное обобщение. Это проблема, да. Но никто не говорил, что проблемы не нужно решать. Нужно. Языки подолгу разрабатываются ровно потому, что нельзя просто сложить разные фичи, полезные в разных языках. Онтологии тоже подолгу разрабатываются потому как онтологические выборы (3D время или 4D, например) бывают плохо совместимыми, и их нельзя накидать, как овощей в окрошку.
Лет пять ещё назад в области языкостроительства была относительная стагнация, а уже года два-три опять оживляж. Так что меня радует, что не мне одному в голову приходит создавать языки там, где раньше их не было.
Хотя у меня проблема -- три языка в одном (моделирования данных, запросов и мэппинга), так что непонятно, как подступиться. Но дорогу осилит идущий.
no subject
Date: 2014-08-13 03:27 pm (UTC)Вот это-то далеко не факт.
Любой стандарт, как и любая upper ontology - это коммерческая борьба за рынок и подчинения других своим решениям. Не теоретически, а на практике.
так что непонятно, как подступиться.
Хорошие вещи получаются, когда есть практическая задача и инструмент создаётся для её решения.
no subject
Date: 2014-08-13 03:21 pm (UTC)Сейчас дофига народу работает по принципу Google-copy-paste Даже несколько типов взломов на этом построены.
Это называется "подстановкой в шаблон". То есть, люди берут информацию, засовывают в шаблон и на выходе получают столько же информации плюс горы мусора. Зато, всё красиво выглядит.
во-вторых изучить язык монструозной универсальности нормально мало кто может.
В-третьих, чем больше монструозность, тем больше ошибок, кривизны и скрытых зависимостей. В конце концов всё это превращается вмагию
no subject
Date: 2014-08-13 04:02 pm (UTC)Так почти всегда бывает, но вообще говоря монструозная система не обязана превратиться в магию. Мне приходилось сталкиваться с монструозной системой в области силового электроснабжения, где нет ни магии, ни подпорок. Просто люди славно поработали и продумали заранее.
no subject
Date: 2014-08-13 04:28 pm (UTC)no subject
Date: 2014-08-13 04:29 pm (UTC)