<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF89%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...</id>
		<title>LXF89:Что за штука... - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF89%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0..."/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF89:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;action=history"/>
		<updated>2026-05-13T21:03:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF89:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=1717&amp;oldid=prev</id>
		<title>Interlace: Новая: == Что за штука… Python 3000 == ''Переписать заново язык программирования, особенно такой популярный, Python – в...</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF89:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0...&amp;diff=1717&amp;oldid=prev"/>
				<updated>2008-03-13T12:35:00Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: == Что за штука… Python 3000 == ''Переписать заново язык программирования, особенно такой популярный, Python – в...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Что за штука… Python 3000 ==&lt;br /&gt;
''Переписать заново язык программирования, особенно такой популярный, Python – вещь непростая. '''Ник Вейч''' размышляет, настало ли время обновления...''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Python 3000? Я думал, это сказки.'''&lt;br /&gt;
&lt;br /&gt;
Хм! Ну да, вроде того. Когда Гвидо ван Россуму [Guido van Rossum, создатель Python] намекали, что не худо бы включить очередную полезную для языка, но сложную в реализации штуку, он обычно отвечал, что непременно включит ее в Python 3000 (или py3k). Так что это что-то вроде Святого Грааля для Python, если хотите.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Но я так понял, что сказка становится былью?'''&lt;br /&gt;
&lt;br /&gt;
О да, Гвидо впервые заговорил о py3k как о реальном проекте еще в 2000 году. А сейчас это реальная версия, и когда будет закончена – станет выпуском Python 3.0. Данный релиз, как обещалось все эти годы, будет содержать фундаментальные изменения. Изменение первой цифры номера версии позволяет провести радикальные переделки, если надо – вплоть до нарушения обратной совместимости...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Стоп-стоп-стоп... так что, мой код на Python 2.x не запустится под Python 3000, если его не переписать? Разве это не ужасно?'''&lt;br /&gt;
&lt;br /&gt;
И да, и нет. Приятно, конечно, когда старый код продолжает работать в новой среде. Но некоторые планируемые изменения в языке делают обратную совместимость непрактичной. Чтобы что-то заработало лучше, оно должно работать иначе. Гвидо сказал, что Python 3000 – это «единственный шанс сделать Python эффективнее». К тому же самое время починить множество мелких поломок.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Хмм... Вы меня не убедили.'''&lt;br /&gt;
&lt;br /&gt;
Ладно, вот вам пример из целочисленной математики. Если X равно 1, а Y равно 2, каков будет результат X/Y?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Не ожидал тут испанской инквизиции...'''&lt;br /&gt;
&lt;br /&gt;
[Демонический хохот] Вот и никто не ожидает... Не увиливайте от ответа. Вы его знаете?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ну, это вопрос с подвохом. Целочисленная математика, говорите? Мой тяжкий опыт отладки где-то первой дюжины программ на Python говорит, что 1/2 вообще-то равно 0.'''&lt;br /&gt;
&lt;br /&gt;
Верно! Ответ правильный, но большинство людей такого не ожидает. Большинство ожидает, что 1/2 вернет 0,5. Это еще тяжелее усвоить, когда вместо чисел в выражении используются переменные, в особенности начинающим программистам.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Но если это изменить, то угробится огромный объем существующего кода...'''&lt;br /&gt;
&lt;br /&gt;
Да, это так, но не говорите, что вас не предупреждали – в буквальном смысле слова! Если вы используете оператор / для деления целого числа на целое, то получите предупреждение. Во всяком случае, если запустите Python с ключом '''–Qwarnall'''. Фактически, необходимым условием изменения работы Python является выдача предупреждений о том, что такой код скоро канет в Лету, еще в версии 2.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пусть так, но ведь пострадает множество людей, у которых есть тонны готового кода. Нет ли способа сделать его Python 3000-совместимым?'''&lt;br /&gt;
&lt;br /&gt;
Скорее всего, автоматический конвертор сделать не получится. Но что мешает продолжать запускать этот код на Python 2.x? От добра добра не ищут...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Выходит, разработка ветки Python 2.x будет продолжаться?'''&lt;br /&gt;
&lt;br /&gt;
Да, пока это будет нужно людям. Никто не собирается бросать поддержку текущей ветви Python. Гвидо планирует, что разработка Python 2.x не прекратится вплоть до выхода Python 3.2, а то и дольше (при этом он не думает, что паузы между релизами py3k окажутся меньше, чем были между релизами 2.x). Последние версии ветви 2.x скорее всего будут содержать некоторые элементы py3k.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''И как это будет работать?'''&lt;br /&gt;
&lt;br /&gt;
Ну, это зависит от конкретного элемента... Некоторые новые возможности можно реализовать более чем одним способом. Это не слишком похоже на Python, но может упростить переход на Python 3000.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ладно, вы меня уговорите, если мы наконец получим работающий тернарный оператор.'''&lt;br /&gt;
&lt;br /&gt;
А он уже есть. Хотя его ожидали только в py3k, он был реализован еще в сентябре как часть Python 2.5. Так что Гвидо не так уж плох.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ого! Что еще можно стянуть из py3k?'''&lt;br /&gt;
&lt;br /&gt;
Во-первых, будет сделано множество изменений в подсистеме ввода-вывода, она станет гораздо проще. Например, когда разрабатывался Python, Unicode еще не было, но ведь он решает много проблем и вообще хорошая штука. Так что в Python 3000 весь текст будет выводиться в Unicode.&lt;br /&gt;
&lt;br /&gt;
Кстати о вводе-выводе: похоже, оператора '''print''' больше не будет...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Что?! И как, по-вашему, я буду выводить данные из скриптов?'''&lt;br /&gt;
&lt;br /&gt;
Не волнуйтесь: '''print''' будет реализован как функция. Ведь на самом деле он оператор только потому, что записывается как оператор. Сделать его функцией гораздо разумнее, примерно так: '''print(x,y,z)'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ничего подобного! Придется вводить кучу скобок на каждом шагу!'''&lt;br /&gt;
&lt;br /&gt;
Ну, в целом это сэкономит ваше время. Представьте отладочный код, натыканный повсюду в вашей программе и выводящий много-много экранов данных. Когда нужда в нем отпадет, и вы захотите преобразовать его в вызовы функции сохранения в журнале, достаточно будет воспользоваться функцией поиска и замены строки или даже подменить в модуле, определив функцию для замены (хотя этого делать не рекомендуется: такой код плохо читается).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Короче, в Python 3000 я не смогу ни вычислять, ни показывать результаты привычным способом. Прекрасно. Чем еще порадуете?'''&lt;br /&gt;
&lt;br /&gt;
О, осталось совсем немного. Всего-навсего удаление лямбда-функций, '''reduce()''' и других конструкций функционального программирования...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Во как! Знать бы еще, что такое лямбда-функция.'''&lt;br /&gt;
&lt;br /&gt;
Лямбда-функция – это короткая функция, определяемая прямо на месте использования. Вообще-то приговор ей отсрочен. Но она по-прежнему является занозой в чистом и ясном коде на Python. Однако Гвидо утверждает, что '''reduce''' («свертка», функция, выполняющая некоторую операцию над списком и возвращающая скаляр) обычно используют либо в тривиальных случаях, либо в непознаваемых. В интересах ясности кода гораздо лучше будет использовать явный цикл.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Погодите. Я знаю, что Гвидо – Пожизненный Добрый Диктатор, но не слишком ли это навязчивая опека – указывать людям, как писать их программы, а?'''&lt;br /&gt;
&lt;br /&gt;
Python всегда и был устроен именно таким образом. Вы взгляните на правила форматирования! Один из основополагающих принципов – тот, что очень, очень трудно, если не невозможно, написать непонятный код на Python. Для Python 3000 это будет еще более верно!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Видимо, вопрос только вот в чем: когда выпустят Python 3.0?'''&lt;br /&gt;
&lt;br /&gt;
Текущий план подразумевает выпуск в 2007 году, но окончательную версию вряд ли стоит ожидать до 2008 года.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ну-ну... Вы хотите сказать, он выйдет раньше, чем Perl 6?'''&lt;br /&gt;
&lt;br /&gt;
Гвидо твердо решил, что ситуация будет не такая, как с Perl 6. Это одна из причин, почему py3k не будут переписывать с нуля. А другая – Python 2, в конце концов, не так уж плох!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Слыхал я такое и раньше. Вы сами сказали, он уже много лет говорил, что берется за этот проект...'''&lt;br /&gt;
&lt;br /&gt;
Да, но сейчас он вполне серьезен. Честно. Python сейчас важнее, чем когда бы то ни было – его используют везде. Вспомните об утилитах администрирования в Fedora, или о той куче программ, на основе которых работает Google.... потому-то они и наняли Гвидо. Он говорит: «Назовите сторонний модуль для Python, и, скорее всего, в Google найдется человек, который его использует». А как вы думаете, сколько времени они оставляют Гвидо на разработку Python?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Мм...'''&lt;br /&gt;
&lt;br /&gt;
Ну попробуйте хотя бы предположить...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ноль?'''&lt;br /&gt;
&lt;br /&gt;
Сейчас как схвачу подушку…&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Погодите! Пока вы не начали, скажите, как мне быть в курсе стремительного развития py3k?'''&lt;br /&gt;
&lt;br /&gt;
Не язвите. Посмотрите http://www.python.org/dev/peps/pep-3000 для начинающих и уверуйте!&lt;/div&gt;</summary>
		<author><name>Interlace</name></author>	</entry>

	</feed>