Четверг, 21.11.2024, 11:41
Информатика и ИКТ
Приветствую Вас Гость | RSS
Главная Регистрация Вход
Меню сайта

Yandex_tech

Хабр-news

mail_news

Rambler

Статистика

Онлайн всего: 214
Гостей: 214
Пользователей: 0

oszone.net

IT-N-образование

Главная » 2013 » Октябрь » 26 » Как мы использовали Matlab. История одного фейла
20:35
Как мы использовали Matlab. История одного фейла

Как мы использовали Matlab. История одного фейла

Имена изменены, все совпадения случайны.


Увертюра


Сразу оговорюсь, Matlab — отличный инструмент. Отличный инструмент, который мы использовали не по назначению.


Взгляните на нашу компанию. Наша сфера деятельности — разработка ПО для промышленности и много чего еще. В компании работает около 100 человек, а я в этой компании — один из сотрудников, занимающийся разработкой алгоритмов. Есть у нас и Флагманский продукт, приносящий основную прибыль.


Флагманский продукт — бизнес-приложение. В нем много формочек и отчетиков, своя база данных и вычислительное ядро. Вычислительное ядро написано на C# без привлечения нативного кода. Такое решение было принято разработчиками осознанно. Parallel.For был так соблазнителен, а C++ все хотели забыть как страшный сон.


Реальность, как это нередко бывает, не прислушалась к нашим пожеланиям, и скорости C# вскоре стало не хватать. Другая проблема, что, как выяснилось, программисты, какой бы хороший код не писали, в линейной алгебре разбираются слабо.


Тогда наш Главный Алгоритмист предложил идею. Описание этой идеи и того, что из нее вышло и составляет суть данной статьи.


Идея



Идея была проста. Вместо того, чтобы платить зарплату одному умному программисту (который бы умел писать хороший код на C# и разбирался в тонкостях нашего «матана», а такого непросто найти), можно взять двух «полуумных». Первый будет писать прототипы на Matlab, второй — переносить решение на C#.
Matlab в таком случае преподносился как инструмент для документирования алгоритма. У такого решения были озвучены следующие преимущества:
  • Matlab — простой язык, который опытный программист может выучить за 1 день
  • Все математики пишут на Matlab

Стоить отметить, что ранее для документирования алгоритма использовался Mathcad, UML-диаграммы и даже просто лист бумаги.


С идеей спорили, ее не принимали. Но в итоге Главный Алгоритмист всех убедил, и была создана команда алгоритмистов, пишущих на матлабе. В эту команду вошел и я. В нашу команду также вошел Самый Бесполезный Программист из числа разработчиков, который должен был бы, не думая, переносить наши матлаб-экзерсисы на C#.


Замечу, что кроме предложений отказаться от этой затеи, было и предложение использовать, по крайней мере, python+numpy. Хотя бы той причине, что сколько-нибудь значительного опыта разработки на Matlab ни у кого не было (я раньше писал на python и R, остальные были математики и инженеры, использующие Matlab как продвинутый калькулятор). Предложения, как можно понять, отклонили.


Прошел год...



Прошел год и сейчас уже можно подвести некоторые итоги:
  • Математики не умеют писать код. А в той лапше, что выходит из-под их пера не могут разобраться и они сами. Нет ни специфических знаний, ни опыта, ни культуры программирования
  • Раз уж мы отказались от схем и Mathcad, то появилось желание использовать для наших Matlab программ реальные источники данных. В итоге мы немало времени занимались дублированием части функционала Флагманского продукта на Матлабе
  • Пока мы занимались программированием, времени на работу над собственно алгоритмом оставалось немного
  • Matlab не подходит для разработки больших программ. По крайней мере, не подходит нам. Динамическая нестрогая типизация, медленные циклы, ооочень-медленный ООП (настолько, что пришлось частично отказаться от использования ООП), неполная поддержка разреженных матриц
  • Переносить код с Matlab на C# непросто. Еще сложнее бэкпортировать рефакторинги и оптимизации

В результате мы не можем заранее оценить, сколько времени потребуется на реализацию той или иной фичи. Неделя или может быть месяц?

Вместо заключения



В самом начале статьи я немного слукавил, т.к. история продолжается до сих пор. Мы продолжаем писать на Matlab, наш код продолжают переносить на C#. Хотя теперь уже все согласны, что у идеи Главного Алгоритмиста есть изъяны. Но менять уже что-либо слишком поздно.


А тем временем начинают поговаривать о дополнительном перекодировании решений с Matlab уже на С++…
Просмотров: 1124 | Добавил: niko | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Календарь
«  Октябрь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Форма входа

nixp.ru

OpenNet

Новые программы

SLO.ru

Погода
Яндекс.Погода

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Архив записей

    Copyright MyCorp © 2024