- Эти старые языки и сегодня активно используются, я сам недавно принимал участие в проекте, где применялась Ада -- потому что это реально очень хороший язык. Это проблема, но конечно не только для военных. Я участвовал в проекте, где работало 500 тыс. строк кода на ассемблере; я видел системы, до сих пор успешно работающие на Коболе; я видел немало эксплуатируемых систем на PL/I. Это системная проблема легаси, которую я упоминал.
Продолжение интервью с Гради Бучем, начало тут.
[spoiler]На эту тему у меня есть заметка "Nine Things You Can Do with Old Software"(http://kelon.org/wp-content/uploads/booch-old-software.pdf). Один из советов -- копание в коде. Выполняется реверс-инжиниринг старого кода, выделяются структуры данных, алгоритмы, другие элементы, и затем это все переписывается на новом языке. Но это очень тяжело.
Другой, гораздо более эффективный подход -- непрерывная архитектурная трансформация. Но он требует значительной процессной дисциплины и отправляет нас к корням соотношения архитектуры и артефактов. Лишь небольшому числу организаций удается здесь быть успешными. Классический пример -- eBay.
- Надо же, как много старых языков еще эксплуатируется.
- Я как-то прикинул, сколько кода ежегодно появляется на свет. По моим оценкам, каждый год программисты выдают на гора около 33 млрд. строк кода (нового или модифицированного). Причем эта оценка скорее консервативная, реально его может "генерироваться" на порядок больше. Можно сказать, что сейчас нас окружает работающий триллион строк кода, и существенная его часть приходится на старые языки.
- Какие бы изменения лично вы хотели увидеть, дабы программные проекты МО США были успешнее?
- Самое главное изменение может дать обучение. Большие объемы работ Пентагон аутсорсит, это не так плохо, но военные фактически не выполняют серьезную приемку систем -- прежде всего из-за недостатка квалификации. Поэтому обучение программной инженерии должно вестись в МО и его подведомственных структурах повсеместно.
- А как вы оцениваете обучение программной инженерии в высшей школе?
- Я езжу с лекциями по всему миру, и вижу, что везде обучение ведется по разному. Надо отметить рост междисциплинарных проектов, например в университете Карнеги-Меллона, где программная и системная инженерия преподаются совместно.
У меня есть модель всех этих процессов, которую я называю "законы софта". Если вы согласны с тем, что человеческое мышление -- ресурс неограниченный, тогда нам надо попытаться понять, как происходит переход от наших довольно абстрактных представлений о некоторой системе к тому, что я называю "голый сырой работающий код" (“raw running naked” code). То есть как превратить наши представления о чем-то в реально действующий код -- в этом и должны помочь законы софта.
С одной стороны, эти вещи фундаментальны и имеют очень мощный математический базис. С другой стороны, они и сильно человеко-ориентированы -- связаны с политикой, этикой и моралью...
Самое трудное в переходе от представления к реализации (интересно, что Буч почти не употребляет термин "модель") -- это множество сучков вокруг проблем проектирования и проблем организационных. Это очень лакомый кусочек для обучения. Как можно интенсивно заниматься техническими вопросами, и в то же время быть открытым для социальных и когнитивных задач? Думаю, нашей образовательной системе стоит поучаствовать в танцах технического и социального.
- МО пыталось организовать специализированную учебную программу по беспилотным аппаратам, и при подборе преподавателей надо было выбирать между хардкорными инженерами и междисциплинарными специалистами. Междисциплинарность -- это сила?
- Да, это сила, и беспилотники -- это классическая проблема системной инженерии. Тут имеются сложные узкие проблемы, но дроны -- это в первую очередь система, которая будет использоваться людьми, и которая в то же время эксплуатируется в контексте других сложных систем.
Да, я не могу представить себе обучение этой теме в отрыве от междисплинарности. Просто смешайте в одном месте умных людей из разных областей, и инновации не заставят себя ждать, причем появятся они самыми неожиданными путями.
В заключение хочу сказать, что наша дисциплина все еще остается захватывающей.
Глобальная экономика сегодня in a funk, без сомнения. Я недавно читал лекцию в некоем пространстве экономического дефицита, и совершенно убежден, что создание программно-интенсивных систем (Буч часто использует этот термин) по-прежнему остается основным источником инноваций и, как следствие, экономического роста.
И будет еще захватывающе. Я призываю людей задуматься о том, что в нашей сфере имеется множество увлекательных, вкусных и интересных проблем, которые ждут своих решателей. Мы еще не закончили.