вторник, 1 сентября 2015 г.

Keep calm and code python

Введение

Когда мне задают вопрос "Чем python лучше Matlab(c), да и лучше ли?", то я, признаюсь, прихожу в некоторое замешательство.
У меня с Matlab(c) не сложилось, весь мой личный опыт работы с ним окрашен в тёмные тона. Он жутко долго устанавливается, он нелегальный, он подвисает и тормозит, куча окошек, постоянные вектора-столбцы. Вдобавок он не мог прочитать крупный файл в netcdf  формате, и картографический пакет мне скачать с torrents также не удалось.
А с python у меня сложилось так, что я бросил программировать на фортране, удалил grads, легко перехожу с Linux на Windows, читаю, анализирую и визуализирую netcdf файлы в одной среде и чувствую себя великолепно!
Поэтому мне трудно дать объективный обзор, сравнить беспристрастно "слона" с "китом". Но я попытаюсь и предлагаю следующую схему: свойство и краткое его освещение в обеих системах. Поехали.




1. Проприетарность

Python - СПО, свободно распространяемый язык программирования. Matlab(c) - детище
The MathWorks, которое в студенческом варианте с 10 дополнительными пакетами стоит около 90$, то есть примерно 6000 рублей.

2. Синтаксис

Простота синтаксиса в Python - одно из главных достоинств языка. Никаких "{}" или ";" при написании кода. Да, жёсткое соблюдение правила 4 пробелов для обозначения вложенности поначалу не всем нравится. А мне вот программа 'Hello, world' на С++  кажется неадекватно усложнённой.
Синтаксис matlab(c) достаточно аскетичный, но ";" для комментирования output-а меня изрядно доставал. Запоздалая поддержка ООП говорит об утилитарности назначения среды. Это хорошо, но выйти за рамки моделирования инженерных задач, видимо не удастся.

3. Динамика развития

Python - самый востребованный язык общего назначения. Он активно внедряется в образовательный процесс средней и высшей школы. По нему много свободно распространяемой литературы, переведённой в том числе и на русский язык.
Индекс популярности поисковых запросов через googlе языков программирования PyPl показывает, что язык python наращивает и наращивает популярность беспрецедентными темпами. Это ведь неспроста, да?

Цитата: "Worldwide, Java is the most popular language, Python grew the most in the last 5 years (5.4%) and PHP lost the most (-5.3%)"

Matlab(c) существует давно, он стабилен(?), его пакеты отлажены и пропатчены. Но развитие его проприетарно по своей природе со всеми вытекающими достоинствами и недостатками. К последним относится невнятная политика развития продукта.

4. Коммерциализация

Научившись сносно программировать на python, вы в перспективе сможете зарабатывать, создавая код на продажу. Освоив фреймворк django, можно создавать современные динамические веб-сайты. Куда можно податься со знанием Matlab(c) вне сферы инженерии я слабо представляю.
Очень чётко и правдиво написано про python на Лурке.

5. Быстродействие

Как и любой язык программирования без компилятора, python уступает по скорости обработки "тяжёлых" расчётов языкам, имеющим компилятор (Fortran, C++). Matlab и python находятся здесь примерно в одной нише. Свою "тормознутость" оба в той или иной мере компенсируют использованием C-кода.
Впрочем, корректный ответ на вопрос о скорости работы можно получить, лишь строго определив условия теста.

6. Научная специализация

Matlab(c) создавался для физико-математического моделирования в первую очередь. Отсюда активное оперирование векторами и матрицами. В python достигается бОльшая гибкость работы с данными. В python, помимо массивов из пакета numpy, можно работать с такими типами последовательностей как cписки, кортежи, словари, множества и dataframes из пакета pandas. Это позволяет гибче и эффективнее решать разнообразные научные задачи. Так, умелое использование словарей приближает работы python-скриптов к простейшим базам данных.
К тому же python активно внедряется в науки о Земле. Python является одним из языков для написания модулей для одной из мощнейших ГИС: ArcGis. С другой стороны есть свободно распространяемый модуль basemap (+ cartopy), позволяющий работать в различных географических проекциях. Модули для океанологов и климатологов, поддержка netcdf4 и других форматов хранения гидрометеорологических данных (GRIB, например) - достоинства, которые сложно не заметить!

7. Кроссплатформенность

На python легко работать и в Windows ОС, и в Mac ОС, и в Linux ОС. Matlab(c) здесь не отстаёт. Правда под Linux python уже установлен наряду с gcc, тогда как под Linux Matlab(c) смотрится экзотикой (в свободной ОС проприетарное ПО).

Я бы мог и дальше по кирпичикам приводить однобокие сравнения в пользу python, но зачем? Вот статья, которая выпадает при запросе "Matlab VS python". Там всё чётко и, на мой взгляд, справедливо.

Заключение

Matlab(c) был богом, на него молились, его копировали (библиотека matplotlib разрабатывалась как бесплатный клон графики "в стиле matlab"), ему подражали, с ним хотели сравняться. И было это хорошо и длилось это долго. А потом наступил новый день, и ученик превзошёл своего учителя, вобрав лучшие его техники, знания и опыт. Теперь гуру - python. Matlab остался рабочей средой, и если ты умеешь им пользоваться хорошо, то часто и нет смысла переходить с хорошего на лучшее. Новым же адептам лучше брать пример с python, чем с его именитого, но всё же ветерана научных вычислений.

Комментариев нет:

Отправить комментарий

Как перевести UV в направление и скорость ветра? How to convert wind UV-components to direction and velocity?

 Всё просто.  def uv2dir(u, v):     '''     Источник:     https://github.com/blaylockbk/Ute_WRF/blob/master/functions/wind_calc...