Основы Python и Django. / Урок 1. Первые шаги Python. / История языка. Приемущества и недостатки.

История языка. Приемущества и недостатки.

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

История языка программирования Python началась в конце 1980-х. Гвидо ван Россум задумал Python в 1980-х годах, а приступил к его созданию в декабре 1989 года в центре математики и информатики в Нидерландах.

Язык Python был задуман как потомок языка программирования ABC, способный к обработке исключений и взаимодействию с операционной системой Амёба.

Цель проекта Amoeba — создать систему распределённых вычислений, которая предоставляла бы пользователю сеть компьютеров как одну рабочую станцию.

Гвидо Ван Россум, работая над разработкой языка ABC в Голландском институте CWI, понял, что хотел бы создать нечто новое.

Программа на языке ABC, возвращающая список слов в документе:

PUT {} IN collection
FOR line IN document:
  FOR word IN split line:
    IF word not.in collection:
      INSERT word IN collection
RETURN collection

Первый рабочий прототип Python был создан на домашнем Макинтоше Гвидо за пару выходных.

Что касается распространения, то делалось это с помощью Интернет.

Язык получил название «Python» не в честь вида змей, как ошибочно считают многие разработчики.

Во времена разработки «Питона» Гвидо любил смотреть комедийное шоу «Воздушный цирк Монти Пайтона», поэтому и назвал своей проект в честь Монти Пайтона.

Так как Питон имел отличный потенциал и свободно распространялся через Интернет, в него появилось ядро последователей — люди, которые были заинтересованы в развитии Python как языка программирования.

В начале своего пути, этот язык имел вид небольшого интерпретатора с малым количеством функций и полным отсутствием ООП, что всех не устраивало и мотивировало на дальнейшее развитие языка.

Уже в 1991 году стали появляться первые средства ООП разработки.

Далее Гвидо принял решение искать спонсора, который даст возможность работать только над развитием языка.

Так как к тому времени в интернете уже существовало немалое сообщество пользователей, фирма BeOpen решила принять участие в продвижении Python.

Через некоторое время в компании BeOpen начались проблемы и свое финансирование ему предложила компания Digital Creations.

В этой компании вся команда разработчиков «питона» получила большие возможности, что дало плоды.

В том же году был выпущена версия 2.1. Теперь в питоне появились новые объекты с языков closures и иерархия: функции можно вкладывать друг в друга,

сохраняя при этом доступ к переменным окружающих функций.

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

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

Все это превратило простой интерпретатор в очень популярный язык программирования, который используется как первый в обучении миллионов студентов по всему миру.

Основные этапы развития.

Python 1.0 появился в январе 1994 года.

Основными новыми возможностями, включёнными в этот релиз, были средства функционального программирования: лямбда-исчисление, map, filter и свёртка списка.

Ван Россум утверждал, что «Python приобрёл lambda, reduce(), filter() и map() благодаря любителю Lisp, которому их не хватало, и он предоставил патчи, реализующие эти функции».

Lambda

def identity(x):
    return x+1

lambda x: x+1

Map map(fun, iter)

def addition(n): 
    return n + n

# We double all numbers using map() 
numbers = (1, 2, 3, 4) 
result = map(addition, numbers)

Filter filter(function, sequence)

def fun(variable): 
    letters = ['a', 'e', 'i', 'o', 'u'] 
    if (variable in letters): 
        return True
    else: 
        return False


# sequence 
sequence = ['g', 'e', 'e', 'j', 'k', 's', 'p', 'r']

Reduce reduce(function, iterable[, initializer])

func – Функция, которую требуется применить к элементам последовательности.

Должна принимать два аргумента, где первый аргумент — аккумулированное ранее значение, а второй — следующий элемент последовательности.

def reducer_func(el_prev, el):
    # el_prev - предшествующий элемент
    # el - текущий элемент
    return el_prev + el
from functools import reduce #python 3
print(reduce(reducer_func, [1, 2, 3]))

В версии Python 2.0 появилось списковое включение — функция, заимствованная из функциональных языков программирования SETL и Haskell.

# Чётные числа от 2 до 9998 включительно
[n for n in range(1, 10000) if n % 2 == 0]

Python 2.2 Python стал полностью объектно-ориентированным языком. Тогда же были добавлены генераторы.

def my_gen():
    n = 1
    print('This is printed first')
    # Generator function contains yield statements
    yield n

    n += 1
    print('This is printed second')
    yield n

    n += 1
    print('This is printed at last')
    yield n

for item in my_gen(): print(item)

В ноябре 2014 было объявлено, что Python 2.7 будет поддерживаться до 2020 года, и подтверждено, что релиза 2.8 не будет, так как предполагается,

что пользователи должны переходить на версию 3.4+ при первой же возможности.

Python 3.0 разрабатывался с той же философией, что и предыдущие версии. Однако, поскольку в Python скопились новые и, ставшие избыточными, старые способы решения одних и тех же задач,

в Python 3.0 был сделан упор на удалении дублирующихся конструкций и модулей, следуя принципу: «должен существовать один и, желательно, только один очевидный способ сделать это».

Тем не менее, Python оставался «мультипарадигменным» языком. Программист всё ещё мог выбирать между объектно-ориентированным, структурным, функциональным программированием и другими парадигмами.

Приемущества Python.

Низкий порог вхождения.

Логичный, лаконичный и понятный.

Кроссплатформенный.

Широкое применение. Используется для разработки веб-приложений, игр, удобен для автоматизации, математических вычислений, машинного обучения.

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

Сильное комьюнити.

Мощная поддержка компаний-гигантов IT-индустрии. Такие компании, как Google, Facebook, Dropbox, Spotify, Quora, Netflix, на определенных этапах разработки использовали именно Python.

Высокая востребованность на рынке труда.

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

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

Недостатки

import pdb; pdb.set_trace()

x = ‘2’ y = 3 z = x+y