Для чего физика в программировании
Для чего программисту нужно знать физику?
Оценить 2 комментария
Примерно затем же, зачем нужно знать историю России или экологию.
Для общего развития.
То, что это вам пригодится в профессиональной деятельности, очень маловероятно.
jkotkot: сколько мне лет? Потом спросите, кого я предпочитаю в постели? 🙂
у меня давно законченное ВО. Только вот ни разу не пригодилось ничего, кроме различных областей математики (причем самых основ этих предметов). А последние предметы, связанные с ней, у меня были на третьем курсе.
И изучить эти основы спокойно можно и дома ученику последних классов школы, купив в книжном магазине какой-нибудь конспект лекций.
jkotkot: то, что вы называете «быдлокодером», программисты называют «профессионал». Потому что знает свое дело, а не понахватался везде понемногу, и ничего не умеет.
> что вы никогда не сталкивались с программированием железок вообще никак.
Сталкивался, с AVR. Написал пару игр (в том числе и тетрис), использовал только экран и кнопки (не ардуиновские шилды). Решил, что мне не нравится, и я не хочу развиваться дальше в этом направлении.
Зачем программистам изучать физику
Многие люди, обучающиеся профессии программиста, искренне не понимают, зачем им нужно изучать такие дисциплины, как физика и математика. В одной из статей мы выяснили, что математика учит думать. Теперь давайте обсудим, зачем люди технических специальностей изучают физику.
Работа, связанная с физикой
Будущая работа программиста может быть связана с физикой напрямую. Допустим, в ваши задачи будет входить создание симулятора корабля, интерпретация данных, полученных от медицинского оборудования, или же разработка реалистичных компьютерных игр.
Если взять последнее направление, то применений физики можно найти огромное количество:
С первым пунктом всё более-менее понятно.
Умение строить модели
Если в математике всё всегда предельно строго (попробуйте выкинуть уравнение из системы!), то в физике человек зачастую работает с неким упрощением — моделью реальной системы. В некоторых случаях можно считать объект идеально упругим (в реальном макромире таковых нет), где-то можно пренебречь силой трения, в другой ситуации несущественной окажется сила Кориолиса.
Именно физика учит построению моделей объектов реального мира, записи их на строгом математическом языке, учит выделять главное и отбрасывать несущественное.
Для профессии программиста такой навык жизненно необходим, ведь работать с моделями приходится практически в любой сфере деятельности, начиная с поисковых систем и заканчивая банковским сектором.
Общее развитие
Знать, почему и при какой температуре закипает вода, почему скользят лыжи по снегу и почему выстреливает пробка из бутылки шампанского, должен любой образованный человек. Но если вы — представитель технической профессии, можете быть уверены, что окружающие будут ожидать от вас более глубоких познаний в области физики.
В некоторых жизненных ситуациях, человек, знающий, а главное понимающий физику, может находить простые решения сложных, на первый взгляд, проблем. А таких ситуаций жизнь активному человеку подкидывает великое множество.
В заключение
Незнакомое и непонятное всегда пугает человека. Древние люди считали, что гром и молния — это гнев богов, а сегодня, благодаря физике, эти явления сможет объяснить даже семиклассник.
Изучение математики и физики позволяет открыть для себя гармонию окружающего нас мира и даёт возможность восхищаться его красотой, вместо того, чтобы бояться и списывать всё на суеверия. На мой взгляд, это один из ценных подарков, которые дарит людям современная цивилизация.
***
Статья написана при поддержке физического сайта kalser.ru, где вы найдёте множество интересных материалов по физике: советы по решению задач, описания и демонстрации физических опытов, афоризмы и крылатые фразы из мира физики, выдержки из книг и учебников.
Реклама
Комментарии
Физика в профессии «программист в компьютерных системах
Автор: Пользователь скрыл имя, 15 Февраля 2013 в 17:12, реферат
Описание работы
Содержание
1. Зачем нужна физика. 3
2. Чем важна физика для программиста. 4
3. Зачем программисту изучать физику. 5
5. Все из бита «it from bit»……………………………………….7
6. А чем же физика важна для всех остальных. 8
Работа содержит 1 файл
Grytsay_Zhezhera_Ionov_Andreev.pptx
Презентация на тему: Физика в профессии «программист в компьютерных системах»
БОУ ОО СПО «Омский авиационный колледж им. Н. Е Жуковского
Выполнили: студенты гр. Пр-52п Грыцай Вероника, Ионов Владислав, Жежера Сергей, Андреев Дмитрий
Проверила: Боровец Нина Ивановна
5. Все из бита «it from bit»……………………………………….7
Зачем нужна физика?
Чем важна физика для программиста?
Основой любой системы есть ее материальная модель, в последнее время мат. модели применяются во всем: в биологии, медицине, социологии, психиатрии, астрономии, агрономии и т.д. Физика это своеобразная математическая модель вселенной. Принципиальным разногласием физики и математики можно считать то, что математика не считает возможным отбрасывать ни одного случая, она не терпит грубых приближений, физика же снисходительна к мелким погрешностям. Физика учит нас рассматривать сложные процессы как совокупность мелких факторов, находить взаимосвязи, способы описания новых явлений доступными нам методами. Я считаю что без этих навыков не существует программиста, существует лишь человек который может писать код.
Зачем программисту изучать физику?
Цифровая физика предполагает, что существует — по крайней мере, в принципе — программа, которая вычисляет в реальном времени эволюцию Вселенной.
Все из бита («it from bit»)
А чем же физика важна для всех остальных?
Знание законов физики облегчает нашу жизнь. Чаще всего мы не задумываемся о причинах, предпочитая рассматривать следствия, но сталкиваясь с новым для нас явлением мы теряемся, мы не знаем что делать, и здесь для нас оказалась бы очень кстати знания. Кроме того физика бесконечно интересна. Ведь она открывает ту гармонию, которая существует в нашем мире.
Без математики нет физики.Математика это вовсе не царица наук, а скорее язык науки, ведь без царицы жить можно, а без языка очень сложно.
Чем заняться физику в IT?
Оценить 1 комментарий
«Чем заняться физику в IT?»
«1 курс физического факультета»
Вы не физик. Вы еще студент, и как физик не представляете ничего интересного. Вы определитесь с тем, что вы вообще хотите? Может быть, как физик, вы сможете поднять ядерную энергетику? Или разработать новый вариант солнечной панели, более эффективный? Или вы хотите учиться одному, работать в другом, а деньги получать словно вы третий?
Желательно сразу начать с чего-то серьезного, но не крупного, иначе зачем учиться в университете 4 года
Программирование в чистом виде встречается ооочень редко, как правило нужно еще разбираться в области применения программы.
Глупее совета чем «конечно же делать физические движки» — в жизни не слышал.
Раз физик, значит физическое что-нибудь, ага 🙂
Физика (если нормальный ВУЗ) — самое лучшее образование, которое только может быть на сегодняшний день. Оно дает наиболее полную картину мира.
Множество физиков стали известными предпринимателями, программистами, режиссерами, политиками, поэтами. да кем угодно.
Мой совет — хорошо разобраться в физике (а это и математика серьезная и много смежных дисциплин).
Я так и сделал, начав на старших курсах со стажировки по Java, очень рад, что не пошел при этом на прикладную математику. Хотя вся жизнь больше связана с программированием, а не физикой.
Если вам серьезно нравится физика, то можно продолжать изучать C, C++ и алгоритмы. Инженеры на стыке физики и программирования достаточно востребованы.
Есть ряд задач вроде просчетов различных профилей нагрузок, работы материалов в специфических средах (сопромат в приложении к реальному миру), разного рода эвристика и адаптивные алгоритмы управления технологическими процессами. По сути вы будете одним из тех, кто создает Mathworks, Cadense и т.д.
С точки зрения раличных ЯП вам может потребоваться: Simscape Language, Modelica, C, C++. Источник. Походите по сайтам потенциальных работодателей, определитесь с требованиями, условиями работы, решаемыми задачами. Вам нужно найти то, что вы сможете делать хорошо и это будет вам интересно.
С точки зрения других ЯП полезно будет познакомиться с группой функциональных языков, с языками Go, Erlang, Python, Lisp, R.
Почему физики всё ещё используют Fortran
Не знаю, как будет выглядеть язык программирования в 2000-м году, но я знаю, что называться он будет FORTRAN.
— Чарльз Энтони Ричард Хоар, ок. 1982
В индустрии Fortran сегодня используется редко – в одном из списков популярных языков он оказался на 28-м месте. Но Fortran всё ещё главный язык для крупномасштабных симуляций физических систем – то есть для таких вещей, как астрофизическое моделирование звёзд и галактик (напр. Flash), крупномасштабной молекулярной динамики, коды подсчёта электронных структур (SIESTA), климатические модели, и т.п. В области высокопроизводительных вычислений, подмножеством которых являются крупномасштабные числовые симуляции, сегодня используются лишь два языка – C/C++ и «современный Fortran» (Fortran 90/95/03/08). Популярные библиотеки Open MPI для распараллеливания кода были разработаны для двух этих языков. В общем, если вам нужен быстрый код, работающий на нескольких процессорах, у вас есть только два варианта. В современном Fortran есть такая особенность, как «coarray», позволяющая прямо в языке работать с параллельным программированием. Coarray появились в расширении Fortran 95, а затем были включены в Fortran 2008.
Активное использование Fortran физиками часто приводит в замешательство специалистов по информатике и других не связанных с этой областью людей, которым кажется, что Fortran – исторический анахронизм.
Я хотел бы объяснить, почему Fortran всё ещё остаётся полезным. Я не призываю изучающих физику студентов учить Fortran – поскольку большинство из них будут заниматься исследованиями, им лучше заняться изучением C/C++ (или остановиться на Matlab/Octave/Python). Я хотел бы пояснить, почему Fortran всё ещё используется, и доказать, что это не только из-за того, что физики «отстают от моды» (хотя иногда это так и есть – в прошлом году я видел студента-физика, работавшего с кодом Fortran 77, при этом ни он, ни его руководитель ничего не слышали про Fortran 90). Специалисты по информатике должны рассматривать преобладание Fortran в числовых вычислениях как вызов.
Перед тем, как углубиться в тему, я хочу обсудить историю, поскольку, когда люди слышат слово «Fortran», они сразу представляют себе перфокарты и код с пронумерованными строками. Первая спецификация Fortran была написана в 1954 году. Ранний Fortran (тогда его название писалось заглавными буквами, FORTRAN), был, по современным меркам, адским языком, но это был невероятный шаг вперёд от предыдущего программирования на ассемблере. На FORTRAN часто программировали при помощи перфокарт, как об этом без удовольствия вспоминает профессор Мириам Форман из университета Стони Брук. У Fortran было много версий, самые известные из которых – стандарты 66, 77, 90, 95, 03 и 08.
Часто говорят, что Fortran до сих пор используют из-за его скорости. Но самый ли он быстрый? На сайте benchmarksgame.alioth.debian.org есть сравнение C и Fortran в нескольких тестах среди многих языков. В большинстве случаев Fortran и C/C++ оказываются самыми быстрыми. Любимый программистами Python часто отстаёт в скорости в 100 раз, но это в порядке вещей для интерпретируемого кода. Python не подходит для сложных числовых вычислений, но хорошо подходит для другого. Что интересно, C/C++ выигрывает у Fortran во всех тестах, кроме двух, хотя в целом по результатам они мало отличаются. Тесты, где Fortran выигрывает, наиболее «физические» – это симуляция системы из n тел и расчёт спектра. Результаты зависят от количества ядер процессора, например, Fortran немного отстаёт от C/C++ на четырёхъядерном. Тесты, в которых Fortran сильно отстаёт от C/C++, большую часть времени занимаются чтением и записью данных, и в этом отношении медлительность Fortran известна.
Так что, C/C++ настолько же быстрый, насколько Fortran, а иногда и немного быстрее. Нас интересует, «почему профессора физики продолжают советовать своим студентам использовать Fortran вместо C/C++?»
У Fortran есть унаследованный код
Благодаря долгой истории Fortran, неудивительно, что на нём написаны горы кода по физике. Физики стараются минимизировать время на программирование, поэтому, если они найдут более ранний код, они будут его использовать. Даже если старый код неудобочитаемый, плохо документированный и не самый эффективный, чаще использовать старый проверенный, чем писать новый. Задача физиков – не писать код, они пытаются понять природу реальности. У профессоров унаследованный код всегда под рукой (часто этот код они сами и писали десятилетия назад), и они передают его своим студентам. Это сохраняет их время и удаляет неопределённости из процесса устранения ошибок.
Студентам-физикам изучать Fortran легче, чем C/C++
Я думаю, что изучать Fortran легче, чем C/C++. Fortran 90 и C очень похожи, но на Fortran писать проще. C – язык сравнительно примитивный, поэтому физики, избирающие себе C/C++, занимаются объектно-ориентированным программированием. ООП может быть полезным, особенно в крупных программных проектах, но изучать его гораздо дольше. Нужно изучать такие абстракции, как классы и наследование. Парадигма ООП очень отличается от процедурной, используемой в Fortran. Fortran основан на простейшей процедурной парадигме, более приближенной к тому, что происходит у компьютера «под капотом». Когда вы оптимизируете/векторизуете код для увеличения скорости, с процедурной парадигмой легче работать. Физики обычно понимают, как работают компьютеры, и мыслят в терминах физических процессов, например, передачи данных с диска в RAM, а из RAM в кэш процессора. Они отличаются от математиков, предпочитающих размышлять в терминах абстрактных функций и логики. Также это мышление отличается от объектно-ориентированного. Оптимизация ООП-кода более сложна с моей точки зрения, чем процедурного. Объекты – очень громоздкие структуры по сравнению со структурами данных, предпочитаемыми физиками: массивами.
Лёгкость первая: работа Fortran с массивами
Массивы, или, как их зовут физики, матрицы, находятся в сердце всех физических вычислений. В Fortran 90+ можно найти много возможностей для работы с ними, схожих с APL и Matlab/Octave. Массивы можно копировать, умножать на скаляр, перемножать между собой очень интуитивным образом:
Здесь, A, B, C – массивы некоторой размерности (допустим, 10x10x10). C = A*B даёт нам поэлементное перемножение матриц, если A и B одного размера. Для матричного умножения используется C = matmul(A,B). Почти все внутренние функции Fortran (Sin(), Exp(), Abs(), Floor(), и т.д.) принимают массивы в качестве аргументов, что приводит к простому и чистому коду. Похожего кода в C/C++ просто нет. В базовой реализации C/C++ простое копирование массива требует прогона for циклов по всем элементам или вызова библиотечной функции. Если скормить массив не той библиотечной функции в С, произойдёт ошибка. Необходимость использования библиотек вместо внутренних функций означает, что итоговый код не будет чистым и переносимым, или лёгким в изучении.
В Fortran доступ к элементам массива работает через простой синтаксис A[x,y,z], когда в C/C++ нужно писать A[x][y][z]. Элементы массивов начинаются с 1, что соответствует представлениям физиков о матрицах, а в массивах C/C++ нумерация начинается с нуля. Вот ещё несколько функций для работы с массивами в Fortran.
Сначала создаётся вектор A через подразумеваемый цикл do, также известный, как конструктор массивов. Затем создаётся вектор B, состоящий из каждого 10-го элемента А, при помощи шага в 10. И, наконец, массив B копируется в массив С, начиная с 10-го элемента. Fortran поддерживает объявления массивов с нулевыми или отрицательными индексами:
Отрицательный индекс сначала выглядит глупо, но я слышал об их полезности – например, представьте, что это дополнительная область для размещения каких-либо пояснений. Fortran также поддерживает векторные индексы. Например, можно передать элементы 1,5 и 7 из массива A размерностью N x 1 в массив B размерностью 3 x 1:
Fortran поддерживает маски массивов во всех внутренних функциях. К примеру, если нам нужно посчитать логарифм всех элементов матрицы, больших нуля, мы используем:
Или мы можем в одну строку обнулить все отрицательные элементы массива:
В Fortran легко динамически размещать и освобождать массивы. К примеру, для размещения двумерного массива:
Для освобождения массива в Fortran
Лёгкость вторая: не нужно беспокоиться об указателях и выделении памяти
В языках вроде C/C++ все переменные передаются по значению, за исключением массивов, передающихся по ссылке. Но во многих случаях передача массива по значению имеет больше смысла. Например, пусть данные состоят из позиций 100 молекул в разные периоды времени. Нам необходимо анализировать движение одной молекулы. Мы берём срез массива (подмассив) соответствующий координатам атомов в этой молекуле и передаём его в функцию. В ней мы будем заниматься сложным анализом переданного подмассива. Если бы мы передавали его по ссылке, переданные данные не располагались бы в памяти подряд. Из-за особенностей доступа к памяти работа с таким массивом была бы медленной. Если же мы передадим его по значению, мы создадим в памяти новый массив, расположенный подряд. К радости физиков, компилятор берёт на себя всю грязную работу по оптимизации памяти.
В Fortran переменные обычно передаются по ссылке, а не по значению. Под капотом компилятор Fortran автоматически оптимизирует их передачу для повышения эффективности. С точки зрения профессора в области оптимизации использования памяти компилятору стоит доверять больше, чем студенту! В результате физики редко используют указатели, хотя в Fortran-90+ они есть.
Ещё несколько примеров отличий Fortran и C
В Fortran есть несколько возможностей для управления компилятором при поиске ошибок и оптимизации. Ошибки в коде можно отловить на этапе компиляции, а не при выполнении. К примеру, любую переменную можно объявить как параметр, то есть константу.
Если параметр в коде меняется, компилятор возвращает ошибку. В С это называется const
Проблема в том, что const real отличается от простого real. Если функция, принимающая real, получит const real, она вернёт ошибку. Легко представить, как это может привести к проблемам функциональной совместимости в коде.
В Fortran также есть спецификация intent, сообщающая компилятору, является ли передаваемый в функцию аргумент входным, выходным, или одновременно входным и выходным параметром. Это помогает компилятору оптимизировать код и увеличивает его читаемость и надёжность.
В Fortran есть и другие особенности, используемые с разной частотой. К примеру, в Fortran 95 есть возможность объявлять функции с модификатором pure [чистый]. У такой функции нет побочных эффектов – она меняет только свои аргументы, и не меняет глобальные переменные. Особым случаем такой функции служит функция elemental, которая принимает и возвращает скаляры. Она используется для обработки элементов массива. Информация о том, что функция pure или elemental, позволяет компилятору проводить дополнительную оптимизацию, особенно при распараллеливании кода.
Чего ждать в будущем?
В научных подсчётах Fortran остаётся основным языком, и в ближайшее время исчезать не собирается. На опросе среди использующих этот язык посетителей конференции «2014 Supercomputing Convention» 100% из них сказали, что собираются использовать его в ближайшие 5 лет. Из опроса также следует, что 90% использовали смесь из Fortran и C. Предвидя увеличение смешивания этих языков, создатели спецификации Fortran 2015 включают в неё больше возможностей для функциональной совместимости кода. Код Fortran всё чаще вызывается из кода на Python. Специалисты по информатике, критикующие использование Fortran, не понимают, что этот язык остаётся уникально приспособленным для того, в честь чего он был назван — FOrmula TRANslation, перевода формул, то есть, преобразования физических формул в код. Многие из них не догадываются, что язык развивается и постоянно включает всё новые возможности.
Называть современный Fortran 90+ старым, это всё равно, что называть старым C++, из-за того, что C разработали в 1973. С другой стороны, даже в самом новом стандарте Fortran 2008 существует обратная совместимость с Fortran 77 и большей частью Fortran 66. Поэтому разработка языка сопряжена с определёнными трудностями. Недавно исследователи из MIT решили преодолеть эти трудности, разработав с нуля язык для HPC по имени Julia, впервые вышедший в 2012 году. Займет ли Julia место Fortran, ещё предстоит увидеть. В любом случае, подозреваю, что это будет происходить очень долго.