February 2026

S M T W T F S
1234567
8 9101112 1314
15161718192021
22 232425262728

Style Credit

Expand Cut Tags

No cut tags
Sunday, October 6th, 2019 06:00 pm
TIL Python switched to ordered dictionaries in 3.7 (actually 3.6 but they recognized it in 3.7). PHP has been doing it for decades, but who listens to those yokels anyway? It took almost three decades of proud "our dictionaries do not have order" proclamations to arrive to the idea that maybe they should. Well, better late than never.
Monday, October 7th, 2019 02:21 am (UTC)
В перле наоборот, в районе 5.20, сделали порядок ключей в хэшах абсолютно случайным. Я не возражаю. А зачем нужно ordered?
lxe: (Default)
[personal profile] lxe
Monday, October 7th, 2019 02:32 am (UTC)
А, то есть как LinkedHashMap, а не как SortedMap? (В терминологии C# "Ordered" именно последняя.)
lxe: (Default)
[personal profile] lxe
Monday, October 7th, 2019 02:44 am (UTC)
Ack.
C# периодически вызывает у меня ощущение, похожее на ощущение от украинского языка: лексика отличается настолько сильнее грамматики, что кажется, что отличается только она.
Так вот, все, что в Java называется Sorted, в C# называется Ordered.
Есть ли в C# Ordered в смысле истории (вставки или чтения; в яве можно и так, и так), не проверял, а лезть лень.
под трамваем не была питона не ел.
Monday, October 7th, 2019 04:07 am (UTC)
Джавщики потому что fucking idiots regarding computer science.
Monday, October 7th, 2019 08:06 am (UTC)
> когда читаешь внешний JSON, ожидаешь найти его в том же порядке

это очень распространённый кейс и типовое решение общеизвестно, передать настройку парсера перед чтением

> в котором он в тексте. Сортировать опять же проще

хэшмапы не для этого вообще-то
если надо, то for x in sorted(x.keys()):


а вот для сохранения порядка надо доп.память и телодвижения
вместо 1 указателя надо 3 раза в память писать
Monday, October 7th, 2019 05:56 pm (UTC)
переходить в секту Уолла. :)
Tuesday, October 8th, 2019 05:23 am (UTC)
не надо думать, когда оно в порядке, когда нет ...
Думать надо всегда.
Неупорядоченное и упорядоченное множества это принципиально разные структуры данных требующие разной имплементации и архитектуры обработки.
Потом - понятие «порядок» заключает в себе функциональное определение которое жестко зависит от структуры объектов в множестве.
Ну и главное - на поддержание упорядоченного множества уходит гораздо больше ресурсов оперативной памяти чем на неупорядоченное и в случаях когда перформанс очень важна то лучше работать с неупорядоченными множествами и упорядочивать данные только в случае необходимости.
Ну а то что вы описали как «что положил то и вынул» в теории структур данных называется стэк (stack).

Tuesday, October 8th, 2019 07:10 am (UTC)
В случае Hashmap - ...
Ну hash на это и заточена для быстрого доступа к элементам множества при помощи так называемых ключей которые всегда уникальны. То есть это множество двумерных объектов - (уникальный ключ, значение). Что никак не является упорядоченностью, то есть сортировкой.

Про питон разговор отдельный потому что этого зверька нельзя называть полноценным языком. Никогда не использовала его в своей практике, но «грамматических ошибок» в писанине других писателей исправляла много.

Tuesday, October 8th, 2019 06:02 pm (UTC)
Мое мнение: для каждого проекта нужно подобрать наиболее подходящие инструменты. И плох тот мастер который выбирает неподходящие инструменты и набивает шишки.
У питона есть некоторая ниша где есть смысл его применять. Иначе бы он не появился и не выжил. Для меня это никогда не было войной - просто здравый смысл приводящий к успеху.
Monday, October 7th, 2019 04:08 am (UTC)
Иной имплементации это будет нож острый.
Вообще надо различать set и list; но населению думать-то некогда.
Tuesday, October 8th, 2019 05:38 am (UTC)
Проблема здесь в том что с точки зрения теории множеств set и list это одно и то же. Про list я бы сказала что это множество с определенными свойствами которых может не быть в других множествах.
Правильная имплементация таких объектов должна бы учитывать что set это более общее понятие чем list.
Tuesday, October 8th, 2019 05:41 am (UTC)
Не. Разные вещи. List - это n-ка данных одного типа (или элементов одного множества). A^n, для какого-нибудь n. С точки зрения теории множеств, конечно, set - это более общая вещь.

Но могут быть и другие взгляды на это все. Через типы, через категории.
Monday, October 7th, 2019 10:35 am (UTC)
А в жабаскрипте инсерт ордер для пропертей объектов как раз отменили. Вовремя!
Tuesday, October 15th, 2019 08:57 pm (UTC)
Спасибо, исправил свой код, который пока бежит на 2.7. Я там пытался сделать глубокомысленные выводы из того, является ли некоторый dict порядочным.