Знакомство с Python

Знакомство с Python

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

Зачем? Можете спросить вы… А кто его знает! Не сидится мне на месте. Вот и решил в очередной раз поставить Линукс… Ну вот, а как же без программирования. На с++ я не собираюсь писать. Тут-то мне и пришло в олову наткнуться на Python.

Язык мне очень понравился. Почему? Да сами увидите.

+ После покупки смартфона Nokia нашел возможность программировать под него на этом прекрасном языке. Да еще и интерактивная консоль в мобильном!

Поехали!

Перед обсуждением особенностей языка, давай проинсталлируем нужные пакеты для работы. Не забываем о всеми любимой википедии:

Python портируем и работает почти на всех известных платформах — от КПК до мейнфреймов. Существуют порты под Microsoft Windows, все варианты UNIX (включая FreeBSD и GNU/Linux), Plan 9, Mac OS и Mac OS X, Palm OS, OS/2, Amiga, AS/400 и даже OS/390, Symbian и Android

Поэтому, если вы счастливый обладатель какой-то платформы (из выше перечисленных), то вам стоит только позавидовать. Идем на сайт питона: http://python. org и в секции Downloads ищем пакеты под вашу платформу.

Если у вас стоит подобие Линукса, то все можно сделать куда проще. Сейчас мало дистрибутивов обходится без питоновых скриптов, значит у вас 85% запустить на исполнение программу без каких-то подготовок.

Получить базовые пакеты вы можете командой (Debian only):

$ sudo apt-get install python

Что же мы получили? Интерпретатор Python и базовые библиотеки для работы.

Чем же он особенный?

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

Дубль 1

Для начала поговорим о том, что все так восхваляют в питоне: простота синтаксиса.

Да, действительно. Меня поразил пример кода с первого взгляда. Давайте напишем для сравнения программы, которые будут вычислять сумму первых 1000 чисел (используя цикл).

Первым я зыком я выбрал С# (синтаксис также схож с Java), на котором я до этого программировал: using System; class Application

{ public static void Main()

{ int sum = 0; for (int i = 0; i <= 1000; i++)

{ sum += i;

}

Console. WriteLine(sum. ToString());

}

}

C++:

#include <iostream> void main()

{ int sum = 0; for (int i = 0; i <= 1000; i++)

{ sum += i;

} cout << sum;

}

PHP:

<?php

$sum = 0; for ($i = 0; $i <= 1000; $i++)

{

$sum += $i;

} echo $sum;

?>

Писанины в начале меньше, но меня убивает знак доллара в начале переменных. Ну и, на конец-то, герой дня — Python: for i in range(1001): sum = sum + i print sum

Классно, да?

Ну вот, думаю, вы ощутили разницу в написании кода. Времени на питон уходит раза в 3 меньше. Но вместе и с тем есть свои минусы (о них позже).

Дубль 2

Допустим, вы написали супер популярную программу, от вас требуют перенести ее на другие платформы… Как вы поступите?

Рассмотрим сразу язык С/С++. Он есть кроссплатформенный, но мало чего стоит без внешнего API. Поэтому перенести такой код будет ой как нелегко.

C#: как мы знаем, компилятор IL-кода портирован под несколько других платформ. Для примера возьмем Mono (http://mono-project. org). Да, некоторые библиотеки реализованы, но написать какое-то нормальное GUI-приложение очень тяжело, да и некоторые полезные части тоже не работают, например, сокеты.

Для запуска программы, написанной на С#, вам придется скачать библиотеку Mono (Linux), .Net Framework (Windows). Их размер достигает > 50 мб.

PHP: ну что тут скажешь. Если подумать, то его как-то некорректно сравнивать с языками, которые есть в статье. Он прекрасно работает на разных платформах.

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

Python: вот эта часть мне особенно понравилась. Вам не нужно писать разный код под разные платформы! Все просто: есть python-файл со скриптом, запускаем его — работает. В нашем случае работа с ОС и другими частями портирована прекрасно, нет никаких проблем. Интерпретатор языка весит не более 10 мб вместе со всеми самыми полезными библиотеками.

Дубль 3

Другие особенности Питона:

Автоматическое управление памятью, что также присутствует в Java, C#;

Run-time обработка типов. Тут можно долго спорить, но мне эта особенность нравится. Т. е. во время написания программы неизвестный тип переменной, только во время исполнения;

В Питоне базовые типы не относятся к чему-нибудь другому, они есть простыми объектами классов. Что повышает уровень абстракции, на котором пишется код;

Теперь вы можете смело использовать множественное наследование;

Не нужно предварительно объявлять переменную, она записывается в памяти после первого присвоения (что вы можете увидеть во втором дубле на примере Питона);

Поддержка чисел с бесконечной точностью;

Невозможно неправильно обработать объект. Т. е. невозможно допустить несоответствие типов.

Теперь немного математики. Давайте напишем простую программу, которая будет вычислять факториал числа (ну а что же еще остается? Не будем использовать рекурсию, только цикл. И пишем на алгоритмическом языке (насколько я его помню): получаем число пока число не равно 0 умножаем число на сумму уменьшаем число на 1

Все ок, реализовать можно на любом языке. Но на какое время его хватит? Имею ввиду максимальное число, с которого можно раздобыть факториал. Давайте напишем на С# такую функцию: public static int Factorial(int number)

{ answer = 1; for (int i = number; i > 0; i–)

{ answer *= i;

} return answer;

}

Но int-овская переменная может принимать не более 65535 по модулю.

Есть, конечно, long и т. д., но их все-равно не хватит на большие числа. Как же в таком случае поступают? Проблему можно решить, если использовать строки. Но в Питоне все просто, давайте напишем ф-цию, которая найдет нам факториал числа 100: def factorial(Number): sum = 1L for iL in range (1, Number + 1): sum = sum * iL return sum if __name__ == "__main__": print factorial(100)

Как видите, после цифр мы дописываем ‘L’, что значит long-значение. И в функции range мы начинаем отсчет с 1, а не 0.

Вот и сам вывод результата:

9332621544394415268169923885626670049

0715968264381621468592963895217599993

2299156089414639761565182862536979208

2722375825118521091686400000000000000

0000000000

Теперь давайте поговорим о минусах Питона, потому что нету ничего идеального. Я заметил только один недостаток: скорость работы. Python — интерпретируемый язык, поэтому равняться скоростью с С/С++ он не может. Из-за этого его не используют для работы с графикой и вещами, которые требуют быстродействия. Конечно, с годами все совершенствуется. Скорость работы интерпретатора возросла во много раз. Но если вам все-же нехватает скорости исполнения программы вы можете попробовать язык Lua, который пошел от Питона. Он не такой распространенный, но очень быстрый (сравнительно), его, даже, используют в играх в качестве скриптового движка.

Финальная часть

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


Карта сайта


Информационный сайт Webavtocat.ru