По мотивам примерно четырёхчасового разговора между первокурсником ФФ, к.ф.-м.н. и д.ф.-м.н.
В принципе делать можно много чего, но хотелось бы понять на что следует обратить внимание «условно молодому человеку с программистскими навыками», чтобы принести пользу человечеству. Плюс есть потенциальная возможность подобную работу оформить как диплом - прецедент есть (в идеале результатом диплома должно стать включение кода в свободный проект).
Очевидно тема совершенно безбрежная. Для начала грубая классификация по свободному научному софту (далеко не полный список) к которому можно приложиться:
* Системы компьютерной алгебры (CAS): Maxima (Дедушка всех CASов), Reduse (В основном использовался физиками, стал свободным совсем не давно), Axiom (Самая красивая из перечисленных систем. Код пишется в соответствии с принципами грамотного программирования. В силу разногласий между разработчиками есть три форка - по отзывам наиболее активный форк FriCAS).
* Численные вычисления: Octave, SciLab (+scicos)
* Системы анализа: R, ROOT
* Системы визуализации: paraview (библиотека VTK), VisIt (библиотека VTK), OpenDX (IBM решила отдать сообществу свои наработки), Geomview (очень крутая программа, визуализация четырёхмерных математических объектов и прочее, но лаборатория в которой её развивали закрыта), MathGL+UDAV (гораздо слабее перечисленных выше, но делает исключительно красивые картинки и автор владеет русским языком как родным :) )
(!) Очевидные точки возможного приложения усилий это объединение систем визуализации и программ анализа и расчётов. Как правило, например, CASы не имеют своего встроенного вывода и используют внешние программы. Обычно эти внешние программы исчерпываются gnuplotом, который далеко не самый красивый и отзывчивый инструмент, хотя в лиге научной визуализации определённо самый простой. Упомянутый в самом начале прецедент с дипломной работой - это возможность передавать данные Geomview из FriCAS.
(!) Системы анализа. Несмотря на удивительную гибкость и продвинутость у R есть фундаментальный недостаток: он работает только с теми объектами, которые находятся в оперативной памяти. Добавление механизма по типу «нтаплов» (ntuple - в CERNLIB/PAW) и деревьев (TTree - в ROOT) было бы этой системе анализа весьма на пользу.
(!) Проблема фактически всех систем анализа, которая серьёзно увеличивает порог вхождение: наличие системы отзывчивой помощи. Система помощи должна быть гипертекстовой, позволять легко редактировать описание, позволять искать информацию по ключевым словам - возможный кандидат что-то на wiki-подобное. Система помощи должна легко взаимодействовать с открытой консолью системы анализа или расчёта - то есть должна быть возможность выполнения примеров из помощи по запросу и поиск вводимой в консоле команды. На самом деле что-то подобное кое-где есть (что-то вроде help в wxMaxima - кстати, сейчас посмотрел - очень даже прилично выглядит), но нигде это не доведено до вменяемого состояния.
Предложения принимаются, разумная критика поощряется.