May 17th, 2009

moose, transparent

программистское, python

Я наконец начал писать на Пайтоне. Но, по-моему, пишу в нем пока что в стиле Перла.

Из того, что не нравится:

- это ненормально, когда в языке есть встроенная функция open(), а встроенной функции close() нету. Есть в этом что-то извращенное.

- основной аргумент поклонников Пайтона - что в нем все продумано, логично, и на все есть один логичный способ это сделать, в отличие от Перла, где все можно сделать сотней разных способов. Но при приближении к объекту начинают бросаться в глаза трещины и морщины. Меня поразило количество встроенных в язык путей интерполировать значение внутри строки: 1) синтаксис %s и оператор % 2) синтаксис {0} и метод str.format() 3) синтаксис $x и класс string.Template. При этом все три способа оказались недостаточно мощными для моих достаточно скромных целей.

- какая-то фигня с Юникодом происходит. print не умеет выводить ничего, кроме байтов; нет способа объяснить ему, что юникодные строки надо выводить всегда в такой-то кодировке. Поэтому печать utf-8 строк либо включает в себя кучу вызовов decode() практически на каждую строку, либо пользуется менее удобными функциями, чем print.

В целом язык приятный. К significant whitespace привыкаешь очень быстро, и к {} обратно не тянет. Вообще синтаксис очень легкий, простой и интуитивный в большинстве случаев. Посмотрим, что он еще расскажет.
moose, transparent

задачка

Несложная задачка от flaass'а, которую удобно в уме решить:
Вам предлагают поиграть в простейшие крестики-нолики 3х3.
Вы начинаете, противник - дурак. Ну, не совсем дурак: если он может достроить свой ряд, то достроит. А если нельзя, но вы угрожаете достроить свой, он заткнет. Но если ничего такого нет, то ходит наугад, равновероятно в любую пустую клетку.
Ставка 1 к 10: за выигрыш вам рупь, за ничью или проигрыш с вас десятка.

Станете ли вы играть?