- PVSM.RU - https://www.pvsm.ru -
Имена изменены, все совпадения случайны.
Сразу оговорюсь, Matlab — отличный инструмент. Отличный инструмент, который мы использовали не по назначению.
Взгляните на нашу компанию. Наша сфера деятельности — разработка ПО для промышленности и много чего еще. В компании работает около 100 человек, а я в этой компании — один из сотрудников, занимающийся разработкой алгоритмов. Есть у нас и Флагманский продукт, приносящий основную прибыль.
Флагманский продукт — бизнес-приложение. В нем много формочек и отчетиков, своя база данных и вычислительное ядро. Вычислительное ядро написано на C# без привлечения нативного кода. Такое решение было принято разработчиками осознанно. Parallel.For был так соблазнителен, а C++ все хотели забыть как страшный сон.
Реальность, как это нередко бывает, не прислушалась к нашим пожеланиям, и скорости C# вскоре стало не хватать. Другая проблема, что, как выяснилось, программисты, какой бы хороший код не писали, в линейной алгебре разбираются слабо.
Тогда наш Главный Алгоритмист предложил идею. Описание этой идеи и того, что из нее вышло и составляет суть данной статьи.
Идея была проста. Вместо того, чтобы платить зарплату одному умному программисту (который бы умел писать хороший код на C# и разбирался в тонкостях нашего «матана», а такого непросто найти), можно взять двух «полуумных». Первый будет писать прототипы на Matlab, второй — переносить решение на C#.
Matlab в таком случае преподносился как инструмент для документирования алгоритма. У такого решения были озвучены следующие преимущества:
Стоить отметить, что ранее для документирования алгоритма использовался Mathcad, UML-диаграммы и даже просто лист бумаги.
С идеей спорили, ее не принимали. Но в итоге Главный Алгоритмист всех убедил, и была создана команда алгоритмистов, пишущих на матлабе. В эту команду вошел и я. В нашу команду также вошел Самый Бесполезный Программист из числа разработчиков, который должен был бы, не думая, переносить наши матлаб-экзерсисы на C#.
Замечу, что кроме предложений отказаться от этой затеи, было и предложение использовать, по крайней мере, python+numpy. Хотя бы той причине, что сколько-нибудь значительного опыта разработки на Matlab ни у кого не было (я раньше писал на python и R, остальные были математики и инженеры, использующие Matlab как продвинутый калькулятор). Предложения, как можно понять, отклонили.
Прошел год и сейчас уже можно подвести некоторые итоги:
В результате мы не можем заранее оценить, сколько времени потребуется на реализацию той или иной фичи. Неделя или может быть месяц?
В самом начале статьи я немного слукавил, т.к. история продолжается до сих пор. Мы продолжаем писать на Matlab, наш код продолжают переносить на C#. Хотя теперь уже все согласны, что у идеи Главного Алгоритмиста есть изъяны. Но менять уже что-либо слишком поздно.
А тем временем начинают поговаривать о дополнительном перекодировании решений с Matlab уже на С++…
Автор: basp
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/matlab/46709
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/199142/
Нажмите здесь для печати.