?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

Питоновское - morfizm


Jun. 20th, 2012 02:29 am Питоновское

Когда я только взялся за Питон, я удивлялся чрезмерному обобщению абстракций. За полтора года я, похоже, опитонился. Чё-то в Питоне слишком много разных структур данных. Мне сложно себе представить ситуацию, в которой нельзя обойтись типом dict.

list? Это просто такой dict[index]->value, в котором есть очень быстрая операция "перенумеровать все ключи на +1, и добавить 0-й".
set? Это dict, в котором по каждому ключу пустые значения.
tuple? Это просто такой немутабельный list, а list - см. выше, это dict.
class? Это dict, в некоторых ключах которого лежат методы.
string? Это список символов, list, ну, то есть, тоже, короче, dict.
function? Ну тоже dict, одно из значений которого - dict с инструкциями, другое - параметры, третье - локальные переменные (вложенный dict).

33 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:archaicos
Date:June 20th, 2012 09:32 am (UTC)
(Link)
В LISP'е всё сделано на списках. :)
From:morfizm
Date:June 20th, 2012 09:35 am (UTC)
(Link)
В списках надо порядок запоминать - напрягает. Куда уж лучше dict! Так что я stick with Python ;)
From:archaicos
Date:June 20th, 2012 10:01 am (UTC)
(Link)
Список лёгким движением руки превращается в дерево, а там и до dict уже не далеко. :)
From:andreyvo
Date:June 20th, 2012 10:38 am (UTC)
(Link)
когда на пхп говнокодил тоже такое поветрие было - все засовывать в ассоциативные массивы
From:morfizm
Date:June 20th, 2012 11:04 am (UTC)
(Link)
И засовывать, и потом извлекать! :)
Помню-помню!
From:balmerdx
Date:June 20th, 2012 10:54 am (UTC)
(Link)
И тут надо вспомнить, что есть ещё такие понятия, как "производительность" и "объём используемой памяти"
From:morfizm
Date:June 20th, 2012 11:00 am (UTC)
(Link)
Причём здесь "производительность" и "объём используемой памяти"? Я же говорю о фичах языка, а не о фичах оптимизирующего интерпретатора.

Конечно же, всё должно работь быстро! =)
From:birdwatcher
Date:June 20th, 2012 11:55 am (UTC)
(Link)
Оптимзирует каждый по-своему, а фичи языка должны давать гарантии, вроде извлечение элемента за О(1) и проч.
(no subject) - (Anonymous) Expand
From:balmerdx
Date:June 20th, 2012 01:47 pm (UTC)
(Link)
Производительность кода сильно связанна с абстракциями которыми пользуешься. Если ты говоришь - хочу dict в том месте, где тебе достаточно vector - то ты получишь overhead в 5-10 раз по занимаемой памяти и производительности.
From:emih
Date:June 20th, 2012 11:48 am (UTC)
(Link)
a ty na Pitone i na C++, ili polnostju na Piton pereshel?
From:morfizm
Date:June 20th, 2012 11:53 am (UTC)
(Link)
Python & C++.
From:dennyrolling
Date:June 20th, 2012 03:46 pm (UTC)
(Link)
пропустил:
tree? Это такой однострочный dict prooflink
From:morfizm
Date:June 20th, 2012 06:33 pm (UTC)
(Link)
Ага, cool! :)
From:raindog_2
Date:June 20th, 2012 08:35 pm (UTC)

Lua

(Link)
Then you might like Lua! In Lua everything is a table. All structures that other languages offer - arrays, records, lists, queues, sets - are represented with tables in Lua. More to the point, tables in Lua implement all these structures efficiently.

In my experience, Lua performance was much better than Python. And I like the language better. And it has really compact implementation (about 200k in binary code), so it's very nice as an embeddable scripting language.
From:morfizm
Date:June 26th, 2012 06:17 am (UTC)

Re: Lua

(Link)
Cool, thanks! I'll check it out.