![image](http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash3/149179_4783627431492_159116442_n.jpg)
В школе, изучая информатику и участвуя в олимпиадах по программированию, я подозревал, что умение составлять алгоритмы пригодится в жизни. И первые исследования в задачах, например, «Монах каждый день спускался в погребок и выпивал кружку вина из бочки. А чтобы никто не догадался — доливал сверху кружку воды. Сколько процентов вина будет в кружке у монаха через 30 дней?», давали интересные жизненные решения вроде асимптотических зависимостей. На сегодняшний день, я все чаще сталкиваюсь с задачами программирования в научных и инжереных изысканиях, о чем бы и хотелось рассказать. Проследим историю развития студента физического факультета.
Персональный компьютер в 7-м классе, первая программа — в 9-м.
Итак, я с детства любил компьютеры и все время мечтал о собственном, чтобы можно было не ходить к друзьям, а играть дома! Случилось это уже в средней школе, классе, эдак, в седьмом. Разумеется, ни о каком программировании речи и не было — я просто играл в демиурги, disciples и другие приложения, которые встречал ранее у друзей. В это же время происходит знакомство с MS Word, Excel. Интернета, кстати, еще долгое время не было. В девятом классе было первое исследование под руководством Фаддеева Михаила Андреевича на тему «Полет баллистического снаряда с учетом атмосферы», чуть ранее мы всей группой рассматривали задачу о падении спутника на Землю. Писали уравнения динамики, выбирая время dt расчитывали изменения координат, скоростей и ускорений тела. С полетом снаряда я выступил на районной конференции по физике. Теперь немного о приложениях: писали код в TurboPascal, выводили в текстовый файл, графики строили в Excel, презентацию в PowePoint. Первые шаги так сказать, в условиях здоровой конкуренции со стороны сына М.А. — Лешки Фаддеева, который уже много умел и делился знаниями.
Выступления с докладами полезны для будущего исследователя
В 10-м классе новая научная работа — «Расчет энергии ковалентных связей в дипольном приближении», уже не помню про что сама работа, но с ней я выступал на районной, городской концеренциях по физике, ездил в Москву на Intel-Авангард и в Саров на Харитоновские чтения, где занял второе место и получил балл для поступления в МФТИ. Код я писал на паскале, В.А. Иванов помог перенести его на Delphi и дальше я чего-то считал, ничего не помню. В 11-м классе программировать не пришлось, я поступал на физфак с работой «Свойства туннельного диода», которую написал под руководством Карзанова В.В. В итоге, к моменту поступления в ННГУ я умел писать код на паскале, проводить расчеты в экселе и делать презентации в поверпоинте. Дважды участвовал в олимпиаде по программированию (NNOI-3 и NNOI-4), на последней, как выяснил только что, даже диплом взял.
Wolfram Mathematica — хороший друг физика
В третьем семестре был курс численные методы по книжке Маркова и Фаддеева, на котором я и познакомился с Wolfram Mathematica. Специализированное приложение которое читает твои мысли, позволяет быстро находит ошибки и копипастить код из примеров. Большое потрясения после паскаля, где на отладку приходилось наблюдать за кучей переменных и с массивами работать намного сложнее, не говоря уже о графиках и встроенных математических функциях пакета. Освоился с этой средой я быстро, очень понравился хелп, для которого нужно знание английского. Здесь можно сделать отступление о том, какую роль играет язык в программировании. Как мне кажется, что если где и есть засилие английского, так это в программировании — все ключевые слова, множество примеров и литературы. куча специализированных форумов. Нужно учиться программировать на английском, запоминать термины и тогда будет проще гуглить, откроется множество полезных ресурсов.
Собственно говоря, любовь к компьютерам выливается и в программирование. На экзамен по курсу я пришел в велосипедных штанах (за что до сих пор неудобно, простите, Кирилл Александрович) быстренько решил свою задачку и немного помог одногруппницам, которым эта наука давалась тяжелее. Так, со второго курса я знаком с этой замечательной средой экспрессных и простых расчетов, которые можно удобно представить в виде формул. Тем не менее, есть у математики и недостатки — со встроенными функциями приходится разбираться, когда интереует методика расчета. На картинке снизу недавний опыт программирования, одновременно с партией в HMM3 Complete.
![image](https://habrastorage.org/getpro/megamozg/post_images/6ef/ddf/4e5/6efddf4e56cfb823ccc8720469a78711.jpg)
Установка OriginLab для метода наименьшах квадратов
На лабораторных работах часто приходилось аппроксимировать всяческие зависимости МНК, и каждый преподаватель велел считать погрешность. Но формулы в книжке М.А. были настолько омерзительны и громоздки, что приходилось искать обходные пути. Помнится, Андрей Кашурин, написал программу на дельфи для линейной аппроксимации с автоматическим расчетом, а мне кто-то подсказал, что это умеет делать Origin. Так вот, ради линейной аппроксимации я и скачал жутко неудобный после экселя пакет, который позволил мне больше не считать погрешность метода наименьших квадратов. В дальнейшем я нашел там полиномиальную аппроксимацию и еще множество функций для которых в ориджине имеется статистика. Лабы кончились, ориджин удалил, но всегда про него помнил.
На четвертом курсе В.В. Сдобняков, сказал, что полезно бы научиться строить графики в ориджине, и что во множестве научных статей графики из него. Показал мне азы программы, ну и дальше я сам ковырялся. На сегодняшний день я мало пользуюсь функционалом ориджина, но большой объем работы проделываю в нем: оформление графиков, аппроксимация, поиск пиков на интерференционной картине. Мне известно, что в ориджине можно писать собственные скрипты для атоматизации исследования, сохранять шалобны для оформления графиков и все это могло бы мне пригодиться, если бы я потратил должное время на изучение. У OriginLab, кстати, классные видеоуроки на оффициальном сайте. А сегодня я три часа писал первый скрипт который заменяет четыре последовательных операции, я пришел к успеху на 62 строках кода.
![image](https://habrastorage.org/getpro/megamozg/post_images/0e6/c13/e34/0e6c13e347f49c05e3eacfdca2439922.jpg)
Инженеры должны уметь программировать установки
Приходилось мне выполнять измерения и настраивать некоторые установки и тут нужно уметь программировать! Наша установка Холла построена на цифровых приборах, которые общаются с ПК через COM-port, приходится курить мануалы и писать непонятные команды. Результаты измерений записываются в txt-файл, а из него в таблицу макросом эксель, которые я до сих пор не умею писать, но, наверняка, скоро придется, т.к. будем перенастраивать установку Холла.
Часто вспоминается среда виртуальных приборов LabVIEW, в которой можно комфортно запрограммировать установку любой сложности с приятным интерфейсом и гибким функционалом. Когда-нибудь наш реактор, в котором мы выращиваем эпитаксиальные слои КРТ будет управляться с LabVIEW…
Подытожим
На протяжении трудовой дейтельности многим физикам, химикам, биологам, математикам приходится программировать. Кстати, совсем забыл про MATLab, который сейчас изучаю, он тоже нужен. В-общем, любой ученый должен уметь ориентироваться в коде, составлять новый код на основе примеров из Интернета и Хелпа. Я не смогу сказать, в каких средах мне придется обрабатывать информацию и нужно ли, вообще, это автоматизировать. Считаю курсы численных методов и математического моделирования физических процессов важными и фундаментальными для будущих ученых. Учите какие-нибудь серезные языки программирования и будьте готовы осваивать новые.