If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Friday, May 23, 2008

О пользе открытого кода в учебном процессе

Прежде чем высказаться по теме, хочу поделиться несколькими ссылками, которые могут пригодиться. Первая - Sitepoint раздают за бесплатно книгу "The Photoshop Anthology: 101 Web Design Tips, Tricks & Techniques", загрузить можно в двух вариантах - print-ready (более высокого качества) и, очевидно, для чтения с монитора. Линк на загрузку присылают на мыло. Вторая - разработчик сетевой библиотеки для С++ Boost.Asio Chris Kohlhoff рассказывает об отличиях между Asio и Boost.Asio.

Ну а теперь по теме. Хоть она и обсуждалась уже почти где только можно, я же хочу рассказать о случае, которые произошел не далее как вчера. Вчера жена делала диплом, основную часть которого составляет куча расчетов газотурбинного двигателя. Эти расчеты производятся при помощи набора консольных приложений, которые изначально писались еще во времена, когда программы хранились на перфокартах, а с приходом DOS были адаптированны под новую платформу (правда я предполагаю, что до этого они были адаптированны еще и под ЕС ЭВМ, а уж потом под DOS). Исходные данные находятся в файлах, выходные данные также записываются в файл. Казалось бы это хорошо для конвеерной обработки данных, однако формат выходных данных одного расчета не соответствует формату входных данных другого расчета.

Но не это самое досадное. Изюминка данного программного комплекса состоит в том, что с некоторой вероятностью он не работает, и на одних и тех же входных данных может рапортовать как "domain error: Math error - sqrt()" так и "Program stopped". И если по поводу первой ошибки у меня еще и возникают некоторые догадки, то относительно второй я могу лишь руками развести. Руководство пользователя крайне краткое и подсказок не дает. А эти программы используются на протяжении всего времени обучения в университете для дипломного и курсового проектирования. "Эхх, был бы исходный код" - подумал я и махнул на это все рукой,- может завтра заработает. Дизасемблировать и выяснять алгоритм у меня не было ни времени не желания.

Я понимаю, что код закрыт, скорее всего, потому как методика расчета в то время являлась гостайной, но мне почему-то кажеться, что идеальным был бы вариант, если бы такой комплекс был написан на одном из интерпретируемых языков, вроде питона, руби или перла и распространялся в исходных кодах (естественно, если методика до сих пор не засекречена).

Вот такими соображениями я руководствуюсь, когда говорю, что открытое ПО в учебном процессе крайне полезно, поскольку позволяет по прошествии времени не утратить знания. Однако это уже отдельный разговор.