Мотивирующая часть: зачем вообще нужно программирование на лабораторных работах
Зачем вообще читать это руководство?
Потому что иначе вам не поставят зачет по общей физике.
Потому что «Programming. Programming everywhere». В современном мире не обойтись без компьютеризации, а значит важным навыком является автоматизация своих рутинных задач. Здесь на Физтехе мы учим инженеров и ученых, людей, чье призвание — это творческая работа, а выполнение регулярных, объемных, алгоритмизируемых задач — это удел роботов, компьютеров. Ну а что бы заставить компьютер решать эти задачи за вас, вам нужно научиться программировать. В современных экспериментах может использоваться большое количество приборов, которые будут выдавать колоссальное количество экспериментальных данных, расчеты и моделирование требует многократного выполнения рутинных операций, естественно, все это должно быть поручено компьютерам, железным, бездумным, но оттого не устающим и готовых работать круглые сутки. Поэтому в рамках лабораторного практикума мы познакомимся с некоторыми методами компьютерной обработки данных. Также полученные знания вы можете попробовать применить для подготовки вашего вопроса по выбору.
Как читать это руководство
В данном пособии мы рассмотрим применение языка Python для анализа данных. Поскольку в рамках методички трудно сделать полноценное изложение, следует обратить внимание на следующие вещи:
Данное пособие не является справочником, поэтому для понимания материала нужно изучать его последовательно;
Изложение ведется очень кратко и поверхностно, но все же является самодостаточным — изучив методические материалы, вы сможете использовать Python при обработке лабораторных работ;
Синтаксис излагается методом предъявления — синтаксис Python достаточно прост, поэтому его описание иногда опускается в тексте, однако дается в комментариях к коду.
При изложении сложных понятий описываются только существенные в рамках данной методички вещи, либо вещи, непонимание которых может привести к фатальным ошибкам.
Часть материала направлена на ликвидацию пробелов, возникших в следствие устаревания или неэффективности программ информатики в школах (в том числе физтех-школах)
Мы будем использовать версию языка Python 3.x и рекомендуем вам пользоваться наиболее актуальными версиями, так как каждая новая версия содержит много нововведений, полезных и удобных в прикладном программировании.
Почему Python?
Для начала скажем одну вещь: все промышленные языки программирования (кроме javascript) спроектированы как инженерная система, то есть они решают определенный круг задач и соответствуют определенным требованиям. Как и во всякой системе оптимизация по одним параметрам может приводить к ухудшению других качеств. Так что Python имеет достоинства и недостатки, это неизбежно, и отсюда следует что для решения одних задач он подходит хорошо, для других — не очень. Серебряной пули в программировании нет, и практически наверняка, когда вы будете углублять специализацию, вам потребуется другой ЯП. Итак, почему Python, какие есть альтернативы и почему они не походят? Для того, чтобы понять, удовлетворяет ли нас Python, нужно понять, какие задачи необходимо решать в науке:
численное моделирование и различные расчеты (взятие интегралов, решение дифференциальных уравнении, Монте-Карло моделирование, решение задач оптимизации);
статистический анализ данных;
символьные вычисления;
сбор и хранения данных с экспериментальных установок, взаимодействие с базами данных, организация доступа к данным;
создание прикладных программ с графическим или web-интерфейсом;
визуализация данных, представление результатов исследования в мультимедийном виде, работа с картами;
популяризация и распространение научного знания, в том числе в интернете (создание популярного контента, сайтов и демонстраций).
Альтернативы можно разделить на две условных группы: это специализированные программы или языки программирования, такие как Matlab, Mathcad, Wolframalpha, Origin, FORTRAN, R и т. д. (Excel не входит в число программ для обработки научных данных) или другие промышленные языки программирования (C/C++, Java, C#, Kotlin, Swift etc).
Как мы видим, спектр задач в науке весьма широк и выходит за пределы возможностей узкоспециализированной программы или языка, в то время как Python — это язык общего назначения, он позволяет в той или иной мере решать эти задачи. Так же многие специализированные программы являются проприетарными — имеют закрытый исходный код, а также немаленькую цену за лицензию. Python же имеют открытый исходный код (для нас это важно тем, что мы можем явно узнать как работает тот или иной функционал, когда программы типа Origin — это черный ящик, работающий на неизвестных принципах) и распространяется бесплатно (что тоже важно, поскольку позволяет сэкономить бюджет эксперимента).
Что касается других языков программированная, то они могут превосходить Python в производительности или надежности, но в то же время проигрывают в простоте освоения и удобстве использования. Конечно, для решения каждой из выше перечисленных задача можно подобрать инструмент, решающий эту задачу куда более эффективно, чем Python, однако с учетом того, что читатель не является профессиональным программистом, а в первую очередь будет физиком или инженером, и учитывая наше желания дать студентам знания с широким практическим применением, мы выбрали Python.
Итак Python:
Простой — легко в обучении, но тяжело в бою.
Интерпретируемый* — адаптирован для интерактивной работы.
Переносимый* — работает на большом количестве ОС и устройств без необходимости в адаптации кода к конкретной платформе.
Высокоуровневый* — позволяет работать с абстракциями, более приближенным к предмету исследования, чем к устройству компьютера.
Удобный — на вкус и цвет все фломастеры разные.
Широко распространенный — lingua franca современного программирования.
Про * можно почитать в Википедии.
Как я могу использовать Python при подготовке вопроса по выбору?
Вопрос по выбору — это исследование в миниатюре, и также как и программирование используется в реальном исследовании, так и вы можете улучшить свой вопрос по выбору с помощью Python. Вы можете:
дополнить свой ответ численным моделированием физического явления;
сделать наглядную визуализацию или демонстрацию;
улучшить точность лабораторной работы за счет более сложного анализа данных;
использовать Python для взаимодействия с вашим демонстрационным устройством;