🔥

Тред (Александр Нозик)


Забабахаю все-таки на ночь глядя небольшой тредик. Мне тут на интервью очень хороший вопрос задали: какие технологии надо в первую очередь осваивать для научного программирования. Я как-то об этом даже не задумывался. А вопрос отличны. Подумал. Пишу приблизительный ответ.

Питон (да простит меня @_bravit) все-таки маст-хэв. Он есть и, я думаю, долго еще останется, некоторым общим минимумом среди научных программистов. Разумеется, не столько Python, сколько numpy. К счастью, его освоение занимает пару недель максимум (см. тред про идеологию).

Учить бы я стал в первую очередь веб-технологии. И клиентские и серверные. Как ни удивительно, эта область уже содержит многие вещи, нужные для науки. Коммуникационные протоколы, технологии работы с данными и соответствующие архитектуры.

Для более глубокого погружение требуется изучение принципов работы памяти и архитектуру рантаймов. Не уровня разработчиков JVM, но общие знания весьма полезны. Профайлинг и отладка, разумеется тоже.

Алгоритмы, как это ни удивительно, не особо нужны. Любой нормальный ученый довольно легко разберется в numerical recipes или другом справочнике, но суть-то как раз в том, что не надо городить свои алгоритмы, лучше использовать готовое, где можно.

Ну сборка и тестирование, разумеется. Научное ПО, как я уже говорил, делается надолго, о качестве кода надо заботиться сразу.

Александр НозикАлександр Нозик