Транскрипция python | English language | Preply

Почему Python?

22 Июнь 2016, Python, 34627 просмотров

С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.

Некоторые из вас знают, что совсем недавно я посетил крупнейшее событие в сообществе Python программистов — PyCon US 2016. Полностью все расходы были покрыты мною самостоятельно без привлечения спонсоров и работодателей. Пожалуй, чтобы посетить такое мероприятие, нужно иметь некоторую эмоциональную привязанность к предмету, и это правда.

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.

Для демонстрации лаконичности рассмотрим код на Python и Java, который открывает файл и сохраняет его содержимое в переменную:

Python:

Java:

Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее 🙂

Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

  • Google
  • Dropbox
  • Mozilla
  • Facebook
  • Yandex
  • Red Hat
  • Microsoft (с недавних пор очень активно, в частности с Visual Studio)
  • Intel (активно ведёт исследовательскую работу в области параллельных вычислений на Python)

… и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поискового паука Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit
  • Instagram (500M юзеров на Python)
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online MMOPG
  • Quora
  • Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки. Подробнее можно узнать в подкасте от TalkPython, выпуск #54
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus (использую в этом блоге, сервис реализован на Django)
  • Внутренние сервисы Facebook (см. постер в моей заметке о PyCon)
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

и я уверен ещё множество других интересных и популярных приложений, которые я забыл здесь перечислить (велком в комментарии).

О чём это может говорить? О многом. А самое главное о том, что крупные корпорации не боятся строить свой бизнес вокруг Python, они уверены в том, что технология будет жить, а следовательно проблем с поиском специалистов ждать не стоит. Более того, разнообразие приложений также радует, что свидетельствует о широком круге задач, которые Python решает мастерски.

В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme. Времена меняются, сейчас в качестве цифрового lingua franca лидирует что…? Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.

Недостатки Python

У читателя незнакомого с Python может сложиться впечатление, что он панацея от всех бед, серебряная пуля и лекарство от рака. Но не всё так радужно и прекрасно. Как и у всего, у Python есть ряд своих недостатков, которые порой могут быть критическими и влиять на выбор не в пользу змеи.

Скорость

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.

Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:

Динамическая типизация

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox 🙂

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач. Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.

Наверняка я ещё что-то забыл. В общем, Python рулит!

Ссылки

Пост создан для рассмотрения небольшого примера возможностей языка python. Мы не станем углубляться в сложные темы языка, например, такие как объектно-ориентированное программирование и связанные с ним классы. Да, они являются мощным инструментом для создания сложных приложений, но нам этого пока не требуется.

Цель: создать англо-русский, русско-английский словарь с возможностью вносить в него новые, пользовательские значения.

Первое, что приходи на ум — словари языка python.

Словарь в питоне — неупорядоченная последовательность пар ключ — значение. Что, собственно, и требовалось, верно?

Пример 1.

Итак, первый файл должен содержать сам словарь с некоторыми значениями.

Создадим его. Назовём

И так далее.

Теперь нужно как-то спросить у пользователя, перевод какого именно слова он хотел бы найти и вывести значение на экран. Кроме того, не стоит забывать, что наш словарь работает в двух направлениях: он должен не только переводить с английского на русский, но и наоборот!

Создадим стартовый файл с функциями, запускающими в зависимости от предпочтений пользователя тот или иной вариант перевода.

Отлично! Разберём построчно:

— импортируем из файла words.py сам словарь —

Пишем две функции: и без параметров.

— это словарь “наоборот” для перевода русских слов на английские, теперь ключи стали значениями, а значения — ключами!

— просим пользователя ввести искомое слово

— выводим на экран ответ с помощью функции , получаем значение (). В противном случае, отвечаем, что не смогли отыскать нужное слово.

Функция работает так же, но без инвертирования словаря.

Вы уже догадались: наш словарь “наоборот” нужен для того, чтобы не приходилось писать два словаря — мы просто меняем ключи и значения местами.

Попробуйте запустить и насладитесь результатом.

Что сейчас делает наша программа?

Спрашивает искомое слово, выводит ответ. Но осталось ощущение, что всё слишком просто и чего-то не хватает. Давайте немного усложним задачу: создадим базу данных для словаря и дадим пользователю возможность добавлять свои значения.

Пример 2.

Создание базы данных. Файл

База данных создаётся при помощи модуля , импортируем его. Далее укажем входной файл: , он открывается, в него записываются данные — теперь именно это наш словарь. Файл , используемый в первом примере, нам больше не нужен.

После записи значений, базу данных нужно закрыть — . Создайте нашу базу данных — :

Восстановление базы данных из файла

Мы больше не используем просто словарь, значит и наш главный файл, запускающий функции, должен измениться. Напишем его:

Рассмотрим подробнее

Мы импортировали модуль и открыли нашу базу данных, содержащую словарь

Далее создали функцию, которая будет искать в файле значение ключа. В случае с функцией — значения в словаре инвертируются.

Кроме того, нужно дать пользователю внести свои значения — дополнить словарь, если он не нашёл в нём перевода нужного слова.

За это отвечает функция , которая предлагает ввести новые ключ и значение, а затем записывает их в базу данных и обновляет её.

Что означает последняя запись? Она работает, когда запускается программа и предлагает различные варианты. Если пользователь ввёл в ответ — ищет перевод русского слова на английский, если — ищет перевод английского слова на русский, если (update) — позволяет внести свои значения.

Наш словарь отрабатывает один раз и программа закрывается. Можно спрашивать о действиях снова и снова, для этого достаточно заключить инструкции в цикл . Можно добавить графическое представление программы или “веб-морду”.

Почему Python?

Но это уже совсем другая история и для примера простой программы она не подойдёт. ⤧  Следующая записьQEMU. Mini how-to

Sept. 8, 2016, 1:35 p.m. (ред. Sept. 14, 2016, 9:27 p.m.)

Пытаемся разобраться как должно звучать и писаться название языка программирования Python на русском.

Сравните:

Я использую язык программирования Питон. Я использую язык программирования Пайтон.

Итак, давайте начнём раскручивать спираль истории. У нас есть язык программирования, называемый Python.
Вот как Гвидо ван Россум, создатель языка, описывает процесс выбора имени:

So, rather than over-analyzing the naming problem, I decided to under-analyze it. I picked the first thing that came to mind, which happened to be Monty Python’s Flying Circus, one of my favorite comedy troupes. The reference felt suitably irreverent for what was essentially a “skunkworks project”. The word “Python” was also catchy, a bit edgy, and at the same time, it fit in the tradition of naming languages after famous people, like Pascal, Ada, and Eiffel. The Monty Python team may not be famous for their advancement of science or technology, but they are certainly a geek favorite. It also fit in with a tradition in the CWI Amoeba group to name programs after TV shows.

Помимо прочего, из этого абзаца нам становится известно, что ван Россум относится к слову «Python» из названия «Monty Python’s Flying Circus» (это название шоу английской комик-группы) как к фамилии человека. Попытаемся разобраться, кто был этот Monty Python.

Сжато историю создания названия «Monty Python’s Flying Circus», можно услышать, например, в этом интервью одного из участникв группы. Но ещё больший интерес представляет запись шоу «Live at Aspen», в котором история предстаёт в полной красе. Выдержка:

[…] we said it’s gonna be someone’s flying circus. And then I think John said: «How about something slimy and slithery» […] Typical show business agent […] Python, Python, Python […] Somebody else shouted «Monty», which made us laugh, because Monty to us means Lord Montgomery. […]

Отсюда можно заключить, что от названия требовалось, чтобы оно было максимально абсурдным (абсурдность, кстати сказать, является одним из основополагающих моментов шоу данной комик-группы), но без перегиба. По-видимому, им хотелось поразить зрителя и слушателя в том числе и названием, в котором что-то «скользкое» и «изворотливое» соседствует с чем-то вызывающим уважение. Вот и вышло, что рядом со словом «Monty», ассоциировавшимся в умах многих с Бернардом Монтгомери (известным военачальником времён Второй мировой), появилось скользкое «Python». Величавое стало соседствовать с низким. Здесь можно попытаться придумать что-нибудь подобное на русском, какого-нибудь Владлена Колбасу.

Мы видим, что авторы использовали говорящее имя, чтобы создать у воспринимающих определённое впечатление (сравните с гоголевскими Михайло Собакевичем и Настасьей Коробочкой). А теперь посмотрим, пользуются ли авторы в своих работах этим приёмом. Недолгие поиски позволяют найти следующих персонажей: Mr.

Python или нет?

Smoke, Mrs. Mutton, Shufflebottom, Mrs. Tranter, Mr. Fish, Kettle, Swinebelly, Giggle. То есть, говорящие имена им не чужды.

Таким образом, можно заключить, что образ змея для авторов имеет место быть в фамилии «Python». Примечательно, что в английском также присутствует фамилия с идентичным написанием, никак не связанная со змеем. Она исходит из слова «Vivianus» (наряду с Phython, Phythian, Fidgeon), означавшего изначально «выживший» (в старые времена смертность была очень высока).

Теперь, когда нам доподлинно известно, что связь слова со змеёй всё же имеется, неплохо бы узнать, откуда происходит «python».
Согласно мифам и преданиям древней Греции так называли существо, убитое Аполлоном. Те, кто не считает это существо человеком, считают его змееподобным. То ли недра дали название змею, то ли местность Пифы (Дельфы там же), то ли существо разложилось и дало название местности, точно не известно, но нам это и не важно. Нам достаточно знать, что в зоологии для обозначения змей слово употребляется по меньшей мере с 1836 года и пришло из французского (такое часто бывает в английском), а туда из латинского «pȳthon» — .

В русском упомянутое выше существо называлось либо «пифон», либо «питон» — варианты прочтения. Для обозначения семейства пресмыкающиеся «Pythonidae» используется наименование «питон». Таким образом, можно сказать, что в нашем языке уже существует устоявшийся, и что особенно важно, вполне адекватный перевод.

Приняв во внимание сказанное выше, можно предположить, что для передачи авторского смысла было бы правильнее перевести название шоу комик-группы, используя не транскрибцию, а устроявшуюся форму перевода «Летающий цирк Монти Питона». Звучит непривычно, согласен, но только и всего.

От такого умозаключения нетрудно сделать следующий шаг: изобретение отдельного слова для обозначения языка программирования Python не требуется, достаточно слова Питон, давно вошедшего в лексикон. Ввиду того, что сферы применения слова довольно далеки друг от друга (зоология и программирование), вероятность запутаться в смыслах крайне мала. Можно даже пойти дальше и сказать, что совсем не обязательно переключать раскладку клавиатуры и писать каждый раз «Python», вас и без этого прекрасно поймут.

И напоследок информация к размышлению, тем, кому всё же хочется блистать своим знанием и произношением иностранного языка: применяя в данном случае транскрибирование (ср. с транслитерацией: «Watson» — «Ватсон»), учтите, что слово в английском произносится (в американском английском ), в то время как у вас в подавляющем большинстве случаев выходит «Пайтон» .

Пожалуй, на этом можно закончить. Если вы заметили ошибки или неточности, не стесняйтесь, указывайте на них в комментариях.

Программируйте на Питоне.

Почему Python?

22 Июнь 2016, Python, 34628 просмотров

С некоторого времени в голове крутилась мысль о том, а не написать ли мне небольшую заметку на тему почему язык программирования Python стоит изучать, и более того, создавать на нём программные проекты.

Некоторые из вас знают, что совсем недавно я посетил крупнейшее событие в сообществе Python программистов — PyCon US 2016. Полностью все расходы были покрыты мною самостоятельно без привлечения спонсоров и работодателей. Пожалуй, чтобы посетить такое мероприятие, нужно иметь некоторую эмоциональную привязанность к предмету, и это правда.

Что такое Python?

Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++. А с точки зрения бизнеса это влечёт за собой сокращение расходов и увеличение производительности труда сотрудников.

Для демонстрации лаконичности рассмотрим код на Python и Java, который открывает файл и сохраняет его содержимое в переменную:

Python:

Java:

Код на Java использует обновлённый интерфейс для работы с системой ввода-вывода. Старый способ выглядел бы ещё ужаснее 🙂

Кто использует Python?

Грош цена даже самому продвинутому языку программирования, если до него никому нет дела. Одним из составляющих успеха любой технологии является сообщество, созданное вокруг неё. Именно оно предопределяет будущий вектор развития путём совместных усилий. Сообщество вокруг Python одно из самых сильных в мире IT. Это сложный хорошо организованный и постоянно развивающийся организм. Помимо сотни тысяч индивидуальных разработчиков и небольших софтверных компаний, Python поддерживают такие гиганты IT как:

  • Google
  • Dropbox
  • Mozilla
  • Facebook
  • Yandex
  • Red Hat
  • Microsoft (с недавних пор очень активно, в частности с Visual Studio)
  • Intel (активно ведёт исследовательскую работу в области параллельных вычислений на Python)

… и многие многие другие. Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

  • YouTube (большая часть кодовой базы полностью на Python)
  • Первая версия поискового паука Google была написана на Python, а позже, из-за чрезвычайно высокой нагрузки и требований к скорости, была переписана на C++.
  • Десктопный клиент Dropbox
  • Reddit
  • Instagram (500M юзеров на Python)
  • Bitbucket (Python 2.7 и Django 1.7.11)
  • EVE Online MMOPG
  • Quora
  • Spotify
  • Критические сервисы PayPal, обрабатывающие до 2 миллиардов запросов в сутки. Подробнее можно узнать в подкасте от TalkPython, выпуск #54
  • Сервисы Mozilla
  • Популярный сервис идей Pinterest
  • Сервис комментариев Disqus (использую в этом блоге, сервис реализован на Django)
  • Внутренние сервисы Facebook (см. постер в моей заметке о PyCon)
  • Система контроля версий Mercurial (до некоторых пор разработчики Python использовали её в своей работе)
  • Сервисы Wargaming

и я уверен ещё множество других интересных и популярных приложений, которые я забыл здесь перечислить (велком в комментарии).

О чём это может говорить? О многом. А самое главное о том, что крупные корпорации не боятся строить свой бизнес вокруг Python, они уверены в том, что технология будет жить, а следовательно проблем с поиском специалистов ждать не стоит. Более того, разнообразие приложений также радует, что свидетельствует о широком круге задач, которые Python решает мастерски.

В заметке про книгу «Структура и Интерпретация Компьютерных Программ«, я писал о том, что она была взята за основу в качестве учебного материала для вводного курса по программированию в MIT, компьютерным языком на тот момент выступал диалект Lisp — Scheme. Времена меняются, сейчас в качестве цифрового lingua franca лидирует что…? Правильно, Python. Именно его используют в качестве надёжного инструмента в столь удивительном ремесле.

Недостатки Python

У читателя незнакомого с Python может сложиться впечатление, что он панацея от всех бед, серебряная пуля и лекарство от рака. Но не всё так радужно и прекрасно. Как и у всего, у Python есть ряд своих недостатков, которые порой могут быть критическими и влиять на выбор не в пользу змеи.

Скорость

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go).

Почему Python?

Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си. На конференциях мне довелось пообщаться с ребятами из крупных компаний вроде Wargaming, у многих из них наблюдается тренд перехода в сторону статики, и чаще всего это Go, Rust.

Интересный доклад про скорость и оптимизацию CPython (родная реализация языка на Си) был прочитан на PiterPy 2015 в Санкт-Петербурге:

Динамическая типизация

Для начинающих программистов, язык программирования с динамической типизацией на первый взгляд (и на второй и даже на третий) может казаться отдушиной, райским наслаждением, особенно для тех, кто ранее имел дело со «статикой». Но есть и обратная сторона луны. С ростом кодовой базы (а это часто неизбежный процесс в успешных проектах), следить за типом передаваемых друг другу данных бывает очень сложно (а при отсутствии внятных доков и тестов практически невозможно), отсюда появляются проблемы, когда, например, у None пытаются вызвать метод или обратиться к атрибуту в процессе выполнения кода. Для решения такого рода проблем динамические языки обрастают всевозможными костылями, свистелками и перделками в виде type annotations, проектов mypy по статическому анализу кода и так далее. Это же в свою очередь накладывает негативный оттенок на эстетическую сторону кода.

В связи с ограничениями языка, появляются альтернативные реализации интерпретаторов: PyPy, Pyston, Jython, Cython и многие другие. Сейчас тренд хорошо заметен именно в эту сторону, например Pyston разрабатывается в стенах т.н. Мекки Python программистов — компании Dropbox 🙂

Заключение

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

  • Разработка веб-приложений (тут у нас бесусловный лидер в виде Django).
  • Анализ данных и машинное обучение (пакеты scipy, scikit-learn, pandas, numpy признанные мировым ученым сообществом).
  • Введение в программирование (pygame, turtle хорошо помогают мотивировать детей начинать кодить).
  • Быстрое прототипирование идей в бизнесе за счёт обилия готовых библиотек, низкого порога вхождения в язык и высокой продуктивности программистов, пишущих на Python.
  • Написание скриптов (сценариев) для автоматизации задач.

    Python по-умолчанию поставляется со всеми дистрибутивами unix-like систем и является отличной заменой Bash во всех смыслах.

Наверняка я ещё что-то забыл. В общем, Python рулит!

Ссылки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *