программистское, python
May. 17th, 2009 12:21 amЯ наконец начал писать на Пайтоне. Но, по-моему, пишу в нем пока что в стиле Перла.
Из того, что не нравится:
- это ненормально, когда в языке есть встроенная функция open(), а встроенной функции close() нету. Есть в этом что-то извращенное.
- основной аргумент поклонников Пайтона - что в нем все продумано, логично, и на все есть один логичный способ это сделать, в отличие от Перла, где все можно сделать сотней разных способов. Но при приближении к объекту начинают бросаться в глаза трещины и морщины. Меня поразило количество встроенных в язык путей интерполировать значение внутри строки: 1) синтаксис %s и оператор % 2) синтаксис {0} и метод str.format() 3) синтаксис $x и класс string.Template. При этом все три способа оказались недостаточно мощными для моих достаточно скромных целей.
- какая-то фигня с Юникодом происходит. print не умеет выводить ничего, кроме байтов; нет способа объяснить ему, что юникодные строки надо выводить всегда в такой-то кодировке. Поэтому печать utf-8 строк либо включает в себя кучу вызовов decode() практически на каждую строку, либо пользуется менее удобными функциями, чем print.
В целом язык приятный. К significant whitespace привыкаешь очень быстро, и к {} обратно не тянет. Вообще синтаксис очень легкий, простой и интуитивный в большинстве случаев. Посмотрим, что он еще расскажет.
Из того, что не нравится:
- это ненормально, когда в языке есть встроенная функция open(), а встроенной функции close() нету. Есть в этом что-то извращенное.
- основной аргумент поклонников Пайтона - что в нем все продумано, логично, и на все есть один логичный способ это сделать, в отличие от Перла, где все можно сделать сотней разных способов. Но при приближении к объекту начинают бросаться в глаза трещины и морщины. Меня поразило количество встроенных в язык путей интерполировать значение внутри строки: 1) синтаксис %s и оператор % 2) синтаксис {0} и метод str.format() 3) синтаксис $x и класс string.Template. При этом все три способа оказались недостаточно мощными для моих достаточно скромных целей.
- какая-то фигня с Юникодом происходит. print не умеет выводить ничего, кроме байтов; нет способа объяснить ему, что юникодные строки надо выводить всегда в такой-то кодировке. Поэтому печать utf-8 строк либо включает в себя кучу вызовов decode() практически на каждую строку, либо пользуется менее удобными функциями, чем print.
В целом язык приятный. К significant whitespace привыкаешь очень быстро, и к {} обратно не тянет. Вообще синтаксис очень легкий, простой и интуитивный в большинстве случаев. Посмотрим, что он еще расскажет.
no subject
Date: 2009-05-16 10:30 pm (UTC)no subject
Date: 2009-05-16 10:51 pm (UTC)no subject
Date: 2009-05-16 10:58 pm (UTC)(И что есть декораторы?)
no subject
Date: 2009-05-16 11:01 pm (UTC)собственно вот:
http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%9F%D0%B8%D1%82%D0%BE%D0%BD%D0%B5#.D0.97.D0.B0.D0.BC.D1.8B.D0.BA.D0.B0.D0.BD.D0.B8.D1.8F
взято: http://iportnov.blogspot.com/2008/03/python-iii.html
по сути это синтаксический сахар и это все можно сделать ручками. но госоди, как же это удобно ;)))
вот пример:
no subject
Date: 2009-05-17 06:57 am (UTC)В питоне есть некое подобие замыканий, в котором связанные переменные -- read-only:
Писабельные переменные эмулируются следующим образом:
no subject
Date: 2009-05-16 10:59 pm (UTC)no subject
Date: 2009-05-16 11:05 pm (UTC)no subject
Date: 2009-05-16 11:10 pm (UTC)no subject
Date: 2009-05-16 11:22 pm (UTC)это как в математике. появилась скажем теорема пифагора для плоскости, потом для пространства, потом для скажем полных со скалярным произведением, потом для банаховых ну и т.д.
no subject
Date: 2009-05-16 11:44 pm (UTC)(В 3.0 наконец сделали и метакласс через декоратор.)
no subject
Date: 2009-05-17 09:02 am (UTC)Кстати, всегда после какого-нибудь сообщения об использовании питона хочется спросить: «ну и как, is it an acceptable lisp?» ;)
no subject
Date: 2009-05-17 08:55 am (UTC)no subject
Date: 2009-05-18 10:14 am (UTC)