vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2020-01-05 09:37 pm

Питонистическое.

Выяснил что в стандартной библиотеке питона модуль collections, а в нем функция namedtuple. Позволяющая генерировать наборы данных с именованными полями и нулевым оверхедом. Более того named tuples - hashable, т.е. могут использоваться в качестве индекстов dict или элементов множества. И их очень удобно создавать из списков, dictionaries и тому подобных конструкций.

Теперь хочу реализацию операций реляционной алгебры над set of named tuples.

[personal profile] bowhill 2020-01-06 08:19 pm (UTC)(link)
Объекты — концепция иерархическая и инкапсуляционная, реляционная модель — очевидно, нет. Отобразить граф иерархией никак не получится и никакая «модность» объектов не поможет.

[personal profile] kouzdra 2020-01-07 01:25 pm (UTC)(link)
Совершенно не обязательно. В OCaml (да и в Go) ничего такого особенно нет - соответствие объекта типу определяется исключительно фактической совместимостью по интерфейсу (кстати потому же в d Ocaml невозможен downcasting - для этого просто нет информации). Я кстати сильно подозреваю что упомянтое питоническое сперто как раз с Ocaml-евых объектов - там конечно оверхед не нулевой - там компилятор подбирает совершенный хеш, но подозреваю что по меркам питона - лишняя операция деления и лишняя косвенность - он нулевой

PS: Собственно в GCC 2.xx было подобное опытное расширение - сигнатуры, но не прижилось.

[personal profile] bowhill 2020-01-07 03:25 pm (UTC)(link)
Можно, конечно, и структуру объектом назвать, это уже дело стиля. Ну а так есть и наследование, и инкапсуляция. То есть антагонисты реляционной модели.
Edited 2020-01-07 15:29 (UTC)