{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# N1 Что такое python\n", "\n", "Автор: Шабанов Павел Александрович\n", "\n", "Email: pa.shabanov@gmail.com\n", "\n", "URL: \n", "\n", "+ [Заметки по программированию в науках о Земле](http://progeoru.blogspot.ru/)\n", "\n", "+ [Учебник \"Научная графика в python\"](https://github.com/whitehorn/Scientific_graphics_in_python)\n", "\n", "+ [Дайджест \"Если хочешь знать python\"](https://github.com/whitehorn/Python_Digest)\n", "\n", "Дата последнего обновления: 13.01.2017\n", "\n", "### Цель: \n", "\n", "+ заинтересовать и мотивировать изучать именно python;\n", "\n", "+ рассказать об особенностях, преимуществах и недостатках языка программирования python.\n", "\n", "## Python - это язык программирования \n", "\n", "### Почему python?\n", "\n", "Приобщение к любому языку программирования определяется целью изучения и спецификой профессиональной области пользователя. В общем случае имеет смысл изучать языки программирования общего назначения, то есть не специализированные. \n", "\n", "Почему среди множества существующих сегодня языков программирования общего назначения стоит выбрать именно python?\n", "\n", "+ python **не требует оплаты** лицензий, это [СПО](https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5);\n", "+ python - один из самых **востребованных** языков программирования. Знание python - путёвка в жизнь;\n", "+ широчайшие возможности выражаются в python **простым и понятным** синтаксисом;\n", "+ python - один из самых **динамично развивающихся** языков программирования;\n", "+ **кроссплатформенный** язык, нативный для ОС семейства Linux.\n", "\n", "Немаловажным фактором является популярность того или иного языка программирования. Если язык популярен, если им интересуются, значит у него будет хорошая поддержка, будет динамичное развитие и быстрое устранение ошибок. Популярность python обеспечивается простым и прозрачным синтаксисом языка, его стабильностью и широкими возможностями. Python одинаково подходит как для обучения школьников и студентов программированию, анализа данных, в том числе и [\"больших\" (BIG DATA)](https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5), так и для разработки коммерческого ПО высокого уровня (python активно используется в компаниях \"Яндекс\" и \"Google\").\n", "\n", "### Индекс PyPL\n", "\n", "Существует [индекс популярности языков программирования PyPL](http://pypl.github.io/PYPL.html), который показывает, как часто учебные материалы по конкретному языку программирования искали в поисковой системе Google. На рисунке 1 показана динамика индексов PyPL для python и Matlab©. В 2013 году python стал «языком года», показав самый высокий годовой прирост индекса PyPL среди таких языков как Java, PHP, С++, R и других. А вот цитата с сайта индекса PyPL, датированная 13.01.2017 года: *Worldwide, Java is the most popular language, Python grew the most in the last 5 years (7.2%) and PHP lost the most (-4.7%)*\n", "\n", "![caption](files/pics/L1/pypl_jan_2017.png \"Рисунок 1 Динамика индекса PyPL для python, R и matlab\")\n", "\n", "## Особенности python как языка программирования\n", "\n", "### Высокоуровневый язык программирования\n", "\n", "Python был представлен Гвидо ван Россумом (Guido van Rossum) в 1991 году. Python относится к свободно распространяемому программному обеспечению (СПО) и распространяется под лицензией \"Python Software Foundation License\". Это позволяет максимально широко и свободно использовать данный язык программирования в различных проектах, в том числе и научных. \n", "\n", "### Интерпретируемый с динамической типизацией данных\n", "\n", "Python относится к [интерпретируемым языкам](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) программирования с [динамической типизацией данных](https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F), что позволяет не описывать переменные до их использования, а работать более свободно, на ходу меняя тип данных переменных. Классическая первая команда на python выглядит очень минималистично: print('Hello, World!'). \n", "\n", "### Модульность\n", "\n", "Python реализует принцип модульного программирования: программа на python состоит из главного модуля и второстепенных, которые можно подключить при выполнении кода главного модуля. Стандартная библиотека языка python богата возможностями(т.н. \"батарейками\") и включает, в частности, модули для работы с сетевыми протоколами, операционной системой и библиотеку создания оконных приложений Tkinter. Обогащение языка специализированными модулями происходит за счёт создания новых модулей и пакетов (объединений модулей). \n", "\n", "Стандартная библиотека python, дополненная свободно распространяемыми пакетами (например, NumPy, SciPy и Matplotlib), позволяет создать универсальную научно-вычислительную среду, практически не уступающую проприетарным продуктам, таким как MatLab© и др.\n", "\n", "### Мультиплатформенность\n", "\n", "Python является кроссплатформенным или мультиплатформенным (Windows/Linux/MacOS и др.) языком программирования, что способствует интеграции большого числа пользователей в единое IT-сообщество. \n", "\n", "### Две ветви развития\n", "\n", "За время своего существования (более 20 лет) в ходе исторического и логического развития в языке python сформировалось две ветви, называющиеся python2 и python3 соответственно. Последняя является будущим языка, а python2 когда-нибудь исчезнет. К сожалению, коды двух версий не совместимы: они используют разный синтаксис для ряда строенных функций. Принципиально это не играет роли, но на практике код приходится переписывать, если есть необходимость перейти с одной ветки на другую.\n", "Выбор той или иной ветви определяется задачами, которые стоят перед пользователем. Так для начинающих в программировании пользователям рекомендуется сразу использовать ветвь python3. Если работа подразумевает частый анализ текстов, то здесь также лучше использовать третью ветвь. Для научной же работы рекомендуется версия 2, так как в ней поддерживаются некоторые важные модули, которые пока не были переведены в синтаксис python 3. однако для научной работы рекоменд\n", "\n", "### Недостатки\n", "\n", "Среди недостатков языка стоит отметить заметно меньшую скорость работы по сравнению с компилируемыми языками программирования (Fortran, С/C++). Современные средства и лёгкая интегрируемость с библиотеками, созданными на С и его разновидностях, делают разницу несущественной для неспецифических задач. В любом случае, за время обучения основам синтаксиса языка и алгоритмирования, это никак не влияет на работу пользователя.\n", "\n", "Стоит отметить, что недостатки языка python и привели к возникновению двух ветвей развития: в python3 многие идеи были доведены до ума, некоторые конструкции были упрощены или объединены в более общие.\n", "\n", "### Python и другие языки программирования\n", "\n", "[Есть мнение](https://www.youtube.com/watch?v=_79KfX-3sQc), что появление новых языков программирования (в том числе и python) в основном обусловлено врождёнными недостатками языков-предшественников. Доходя в своём развитии до естественных ограничений, языки \"ломаются\" и им придумывают заплатку. Часто такие заплатки перерастали в новые проекты, которые затем становились языками программирования. Схематично эволюцию языков программирования можно представить так:\n", "\n", "![caption](./pics/L1/LanguageFix.png \"Рисунок 2 Эволюция языков программирования\")\n", "\n", "Или по-другому:\n", "\n", "![caption](files/pics/L1/LanguageFix2.png \"Рисунок 3 Эволюция языков программирования 2\")\n", "\n", "## Практика\n", "\n", "В этом выпуске всего одно задание, зато какое! Это первая программа на python (одинаковая для python2 и python3), которая традиционно выводит на экран сообщение \"Hello, World!\".\n", "\n", "На python такая задача реализуется в одну строку кода с использованием оператора print(). Оператор print() выводит сообщение, заключенное в скобки (или без них, после оператора через пробел, если используется версия python2). Строка оформляется кавычками как одиночными, так и двойными. Здесь разницы нет, главное, чтобы открывающая и закрывающая кавычки имели один вид." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello, World!\n" ] } ], "source": [ "# Пример 1 Первая программа на python\n", "# То, что строке после символа # (решётки) - комментарий\n", "# Комментарии игнорируются при исполнении кода \n", "\n", "print('Hello, World!')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Комиксы о языках программирования\n", "\n", "Культура всегда отражает особенности восприятия тех или иных вещей. И языки программирования не исключение.\n", "\n", "![caption](files/pics/L1/Ada_Lovelace_portrait.jpeg \"Рисунок 4 Портрет Ады Лавлейс, 1815-1852\")\n", "\n", "Помимо языка Ада (назван в честь миссис Ады Лавлейс (Ada Lovelace), первого программиста), с которым связано несколько анекдотов, про языки python и C++ есть сетевые комиксы. В короткой форме иллюстрации отражают первое впечатление при знакомстве с с каждым из языков программирования.\n", "\n", "Так выглядит комикс [про python](http://xkcd.ru/353/).\n", "\n", "![caption](files/pics/L1/xkcd_rus_python.png \"Рисунок 5 Эволюция языков программирования 1\")\n", "\n", "А так - [для С++](http://comicsia.ru/slurm/393). Почувствуйте разницу в подходе к обучению! =)\n", "\n", "![caption](files/pics/L1/cpp_21_rus.png \"Рисунок 6 Эволюция языков программирования 2\")\n", "\n", "## Заключение\n", "\n", "### Новые команды и методы\n", "\n", "+ функция *print()* - стандартный вывод в консоль;\n", "\n", "### Итого\n", "\n", "В N1 вы узнали о том, что python - это свободно распространяемый интерпретируемый язык программирования высокого уровня с динамической типизацией данных. Ознакомились с основными преимуществами и недостатками python. Узнали как написать первую программу (\"Hello, world!\") на python." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }