Я согласен с Макач.
Пусть ребята, которые создают алгоритмы, используют инструменты, с которыми они наиболее знакомы. Потому что в этом проекте есть две отдельные (и не менее важные) задачи. Во-первых, существует создание эффективного, изящного и подходящего математически обоснованного алгоритма, тогда есть трудная задача перевести его в CPU-говорить. Математики должны сосредоточиться на своей первой задаче и сделать их более удобными для них, позволить им использовать то, что им удобно. Что касается человеческих часов, гораздо более эффективное использование их времени для написания кода MATLAB, чем это было бы, если бы они изучали новый язык программирования.
Ваша задача состоит в том, чтобы раскрыть (предположительно) блестящую математику, погребенную в коде табелки.
Эта часть - это просто перспектива проблемы. Вот реальный ответ.
Связь, взаимное уважение и обучение/обучение.
Связь & взаимоуважение
Вы должны общаться с ними часто. Работайте с ними и задавайте им вопросы, когда вы сталкиваетесь с чем-то, о чем не знаете. Это намного проще, когда есть взаимное уважение, а это означает, что если вы все время критикуете свои способности кодирования, то они будут вынуждены тратить все свое время на критику ваших математических способностей. Вместо этого попробуйте выполнить быстрые обучающие сессии. («Обед & Learn» является довольно распространенной тактикой)
Обучение/Обучение
Первая и самая важная часть мудрости, чтобы придать им комментируют. Попросите их прокомментировать дерьмо из своего кода. Скажите им, что комментарии гораздо важнее, чем качество кода, и что пока их комментарии верны, они могут оставить остальных для вас, ребята. Потому что они могут. Им не нужно, чтобы их код выглядел красиво, потому что это был самый быстрый, они просто нуждаются в этом, чтобы иметь смысл для вас, ребята.
Чтобы продолжить этот сценарий взаимного обучения, если вы заметили некоторые очень простые очень распространенные ошибки, которые они делают, (ничего не так сложно, как многопоточность), просто дайте им быстрый хэдз-ап. «Этот способ работает (или нет), но вот способ сделать это немного иначе, но это сделает вашу жизнь намного проще». Поощрите их ответить взаимностью, пытаясь заметить, какие нюансы или части их алгоритмов, с которыми вы и ваша команда испытываете трудности, и преподаете немного учебника об этом.
Как только вы, ребята, получите сообщение, вам будет легче и легче сформировать свой стиль кодирования в соответствии с тем, что лучше для вашей команды, и им также будет легче понять, почему вы не видите его То же самое происходит.
Также, как упоминалось в Kekoav, убедитесь, что они предоставляют несколько полностью нагруженных тестовых случаев. Это означает что-то вроде
A -> B -> C -> D -> Решение
Они обеспечат вам все значения для А, то, что он выглядит на B, то, как он выглядит на C и так далее. Чтобы вы могли быть уверены, что это не только правильно, но и на каждом шагу. Постарайтесь, чтобы они приводили примеры, которые являются регулярными, а также некоторые из них необычны, так что вы можете быть уверены, что ваш код охватывает крайние случаи.
Делают ли разработчики _translate_ то, что создавали математики, или вы _interface_ для кода математиков? – Svante