Re[22]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 27.06.17 07:18
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Gattaka, Вы писали:


G>>>>Уже хорошо. Теперь идем дальше. Утверждение. Программист не ОБЯЗАН знать различие между бинарным деревом и хэш таблицей. Во всяком случае менее обязан, чем знать принципы ООП.

C>>>Обязан знать, причём куда лучше "принципов ООП".
G>>Не обязан. Обязан лишь знать, что хеш таблицы быстрее. Все!

N>Нет, потому что если у заметного количества ключей hashcode совпадает — типовая хэш-таблица будет медленнее.

И как в таком случае быть? Ты не находишь, что выбор должен осуществляться динамически? Это как раз то что делает база и то чего не делает кастомная реализация.

N>Если нет инкрементального ресайзинга (у >90% реализаций его нет), а важно максимальное время на ключ — хэш-таблица будет медленнее.

N>Так что если кому-то это "Все!", то он просто некомпетентен.
Радикален. Здесь не вопрос того знаешь ты это или нет. Вопрос в том готов ли ты пожертвовать этими знаниями в ущерб производительности для достижения простоты кода.

G>> Остальное — опциальные знания никак не влияющие на результирующие системы. Даже наоборот не знание уменьшает вариатность блеснуть и улучшает качество кода. Потому что самое главное в программировании это сопровождаемость кода, который вы выдаете. Он должен быть простой и понятный только что пришедшему человеку.


N>Не самое главное.

Самое главное.
N>Не должен.
Должен.

N>Если мы говорим о программировании в целом, а не сайтоклепании на формочках.

Как дело доходит до того чтобы сварганить бизнес приложение вы городите такой код, что потом сами в нем разобраться не можете. Свой nginx, своя файловая подсистема и пошло поехало.

N>А вы — хозяином галеры с типовыми копеечными гребцами. Что ж, и таким есть работа.

Вы излишне утрируете. Когда вы озадачитесь написанием максимально простого кода вы поймете что это очень сложно. Рассматривайте это как этюд — найти максимально простое решение при прочих равных. Это сложно. Очень.
Re[23]: [Голосование] Нужен ли binary tree если есть hash таблица
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 27.06.17 08:46
Оценка: -1
Здравствуйте, Gattaka, Вы писали:

G>>>>>Уже хорошо. Теперь идем дальше. Утверждение. Программист не ОБЯЗАН знать различие между бинарным деревом и хэш таблицей. Во всяком случае менее обязан, чем знать принципы ООП.

C>>>>Обязан знать, причём куда лучше "принципов ООП".
G>>>Не обязан. Обязан лишь знать, что хеш таблицы быстрее. Все!
N>>Нет, потому что если у заметного количества ключей hashcode совпадает — типовая хэш-таблица будет медленнее.
G>И как в таком случае быть? Ты не находишь, что выбор должен осуществляться динамически? Это как раз то что делает база и то чего не делает кастомная реализация.

Ты сказал, что "хеш таблицы быстрее" (дословно). Теперь, оказывается, какая-то "база" делает выбор (реально — никакая не делает из распространённых). У тебя богатая духовная жизнь, но она не совместима с IT.

N>>Если нет инкрементального ресайзинга (у >90% реализаций его нет), а важно максимальное время на ключ — хэш-таблица будет медленнее.

N>>Так что если кому-то это "Все!", то он просто некомпетентен.
G>Радикален. Здесь не вопрос того знаешь ты это или нет. Вопрос в том готов ли ты пожертвовать этими знаниями в ущерб производительности для достижения простоты кода.

Конечно, не готов. Там, где нужна производительность — ничем жертвовать не буду, и такие предложения сразу пойдут в сад.

G>>> Остальное — опциальные знания никак не влияющие на результирующие системы. Даже наоборот не знание уменьшает вариатность блеснуть и улучшает качество кода. Потому что самое главное в программировании это сопровождаемость кода, который вы выдаете. Он должен быть простой и понятный только что пришедшему человеку.

N>>Не самое главное.
G>Самое главное.
N>>Не должен.
G>Должен.

Ну и сиди дальше в формошлёпстве.
У меня тут даже вход в общую тематику — это месяцы.

N>>Если мы говорим о программировании в целом, а не сайтоклепании на формочках.

G>Как дело доходит до того чтобы сварганить бизнес приложение вы городите такой код, что потом сами в нем разобраться не можете. Свой nginx, своя файловая подсистема и пошло поехало.

Фантазёр.

N>>А вы — хозяином галеры с типовыми копеечными гребцами. Что ж, и таким есть работа.

G>Вы излишне утрируете. Когда вы озадачитесь написанием максимально простого кода вы поймете что это очень сложно. Рассматривайте это как этюд — найти максимально простое решение при прочих равных. Это сложно. Очень.

Там, где это сложно, тем более не подойдут советы некомпетентного стратега-фантазёра.
The God is real, unless declared integer.
Re[24]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 27.06.17 09:36
Оценка: +1 :)))
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Gattaka, Вы писали:


N>Конечно, не готов. Там, где нужна производительность — ничем жертвовать не буду, и такие предложения сразу пойдут в сад.

Производительность мало где нужна. Но везде ценится сопроваждаемость вашего кода.

N>>>Не должен.

G>>Должен.

N>Ну и сиди дальше в формошлёпстве.

N>У меня тут даже вход в общую тематику — это месяцы.
Тото и оно. Правильно разработать UI сложно. Это знатоки алгоритмов занимаются формошлепством как до таких задач доходит дело. Нашлепают — фиг разберешься. MVC, MVP, MVVM для них пустой звук. Вся логика в UI потоке, все сверстано в кривь и вкось. Зато был мучительный выбор между хештаблицей и деревом. В итоге знаток алгоритмов решает свой написать. Его и вкорячивает. Вот типичная история формошлеперов.

N>>>Если мы говорим о программировании в целом, а не сайтоклепании на формочках.

G>>Как дело доходит до того чтобы сварганить бизнес приложение вы городите такой код, что потом сами в нем разобраться не можете. Свой nginx, своя файловая подсистема и пошло поехало.

N>Фантазёр.


N>>>А вы — хозяином галеры с типовыми копеечными гребцами. Что ж, и таким есть работа.

G>>Вы излишне утрируете. Когда вы озадачитесь написанием максимально простого кода вы поймете что это очень сложно. Рассматривайте это как этюд — найти максимально простое решение при прочих равных. Это сложно. Очень.

N>Там, где это сложно, тем более не подойдут советы некомпетентного стратега-фантазёра.


А вот тут на личности перешел — непорядок. Покажи мне твой код и я скажу тебе кто ты. Знатоки алгоритмов генерируют неподдерживаемый код? Это все знают!
Re: [Голосование] Нужен ли binary tree если есть hash таблица
От: MasterZiv СССР  
Дата: 27.06.17 10:23
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, создал голосование о необходимости выбора между binary tree и хэш таблицей. Если вы такой выбор осуществляли не могли бы вы описать код и ситуацию где это возникло.


Писал диплом, ещё в институте.
Транслятор языка описания логических схем цифровых устройств.
Главные объекты транслятора -- словари элементов, их контактов, а также цепей.
Это всё -- имена, идентификаторы в свободной форме.
Словари делались через хэш-таблицы, таблицы было интересно сделать самому (молодой же был), а также нужно было быстро,
а также в общем и не было доступных готовых реализаций (интернета тогда не было).

Функцию хэширования писал сам, подгоняя под примерные стандарты именования элементов на плате:
D0001, D0002 и так далее.
Проблема в том, что когда импортировали схемы из других CAD, где модули автоматом именовались
на основе координат на плате, а не просто по порядку, т.е. был другой формат имени,
хеш-функция вырождалась (давала одно или 2 значения), и поиск по хэш-таблице вырождался в линейный.

Поскольку алгоритм именования модулей недетерминирован, то теоретически нормальную хэш-функцию
подобрать достаточно сложно, потому что это надо проводить было бы отдельные исследования.

В принципе, эта проблема не решается даже с очень хорошей хеш-функцией, в таблицах возможны
коллизии.

Ну и применить там B+Tree был бы удачный вариант и по памяти, и по производительности.
Применён он не был, потому что не было ресурсов (времени) на эту дополнительную разработку.
Re: [Голосование] Нужен ли binary tree если есть hash таблица
От: alex_public  
Дата: 27.06.17 14:41
Оценка: 1 (1) +4 :))) :)
Здравствуйте, Gattaka, Вы писали:

Хотел в начале тоже присоединиться к дискуссии, но потом немного по наблюдал и понял, что это бесполезно дело. Единственная польза от данной темки — это собирать из неё фееричные цитатки, чтобы потом веселить народ. Пока у меня в фаворитах эти две:

Программист не ОБЯЗАН знать различие между бинарным деревом и хэш таблицей.

Производительность мало где нужна.


Но я надеюсь, что это ещё не конец!
Re[2]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 27.06.17 14:52
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Gattaka, Вы писали:


_>Хотел в начале тоже присоединиться к дискуссии, но потом немного по наблюдал и понял, что это бесполезно дело. Единственная польза от данной темки — это собирать из неё фееричные цитатки, чтобы потом веселить народ. Пока у меня в фаворитах эти две:


_>

Программист не ОБЯЗАН знать различие между бинарным деревом и хэш таблицей.

_>

Производительность мало где нужна.


_>Но я надеюсь, что это ещё не конец!


Ок! Держи нас в курсе.
Re[19]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Cyberax Марс  
Дата: 27.06.17 15:30
Оценка: 2 (1) +2
Здравствуйте, netch80, Вы писали:

C>>Но вот свою хэш-таблицу, например, я писал. Из-за того, что дефолтная глючила (вопрос: почему ключи в hash-таблице в Java должны реализовывать Comparable правильно?)

N>"To ameliorate impact"... — это?
Угу.

N>А в каком JDK глючила?

В последнем. У нас есть местечковый RPC-фреймворк, который генерирует неправильную реализацию Comparable в стабах. До перехода на JDK8 это никого не волновало, так как HashMap был простым HashMap'ом.

Ну и так как для получения бага нужно особое сочетание фаз планет, то искали его долго.

N>И почему они продолжают звать "это" хэш-таблицей?

Ну вот не знаю.
Sapienti sat!
Re[20]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 27.06.17 15:34
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

N>>А в каком JDK глючила?

C>В последнем. У нас есть местечковый RPC-фреймворк, который генерирует неправильную реализацию Comparable в стабах. До перехода на JDK8 это никого не волновало, так как HashMap был простым HashMap'ом.

C>Ну и так как для получения бага нужно особое сочетание фаз планет, то искали его долго.


Re[21]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Cyberax Марс  
Дата: 27.06.17 15:35
Оценка: +1
Здравствуйте, Gattaka, Вы писали:

C>>Обязан знать, причём куда лучше "принципов ООП".

G>Не обязан. Обязан лишь знать, что хеш таблицы быстрее. Все! Остальное — опциальные знания никак не влияющие на результирующие системы.
Рекомендую подучить матчасть. Хэш-таблицы совсем необязательно быстрее, особенно при работе со враждебными данными (hint: хэш-коллизии).

C>>Какая разница где лежит код? От положения кода функциональность не меняется. Одним условием приёмки у нас является покрытие кода тестами минимум на 85% (с редкими специальными исключениями), так что пусть кто хочет улучшает.

G>После этого вопроса можно инфаркт схватить. Это самое главное! В программировании. Где что лежит, как называются классы, какова сложность.
Не главное. Совсем не главное. Перенести код — это дело нескольких минут.

G>Самое главное — бороться со сложностью систем. Если у вас все лежит абы где — сложность возрастает. В итоге вы получаете говнокод и говнопроект с которым никто не может разобраться кроме автора. Да и автор со временем забывает где и что он назвал, пложил.

Проблемы аффторов. 100500 пакетов с одним классом внутри ничуть не лучше.

G>В любом случае нужно бороться со сложностью. Ваши кастомные реализации эту сложность увеличивают ничего не давая в замен. Ну может пару тактов процессора выигрышь. Оно того не стоит. И зачем лукавить, в глубине души вы надеетесь стать незаменимым экспертом по проекту.

Я тут уже несколько раз наводящий вопрос про Comparable задавал.

Да, и "несколько тактов выиграешь" как раз и рождает злобные сайты на 100500 гигабайт на страницу, тормозящие весь компьютер.
Sapienti sat!
Re[22]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 27.06.17 15:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Gattaka, Вы писали:


C>Рекомендую подучить матчасть. Хэш-таблицы совсем необязательно быстрее, особенно при работе со враждебными данными (hint: хэш-коллизии).

Вы в своей практике сталкивались с такой ситуацией? Или выучили матчасть хорошо? В теории.

C>Не главное. Совсем не главное. Перенести код — это дело нескольких минут.

Все так говорят. Переносите сразу — не будет проблем.

C>Проблемы аффторов. 100500 пакетов с одним классом внутри ничуть не лучше.

Ну так никто не говорит, что это панацея.

C>Да, и "несколько тактов выиграешь" как раз и рождает злобные сайты на 100500 гигабайт на страницу, тормозящие весь компьютер.

Преувеличение. Приведите пример такого сайта, мы его разберем и вы увидите, что там везде алгоритм на алгоритме.
Re[21]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Cyberax Марс  
Дата: 27.06.17 18:47
Оценка:
Здравствуйте, Gattaka, Вы писали:

N>>>А в каком JDK глючила?

C>>В последнем. У нас есть местечковый RPC-фреймворк, который генерирует неправильную реализацию Comparable в стабах. До перехода на JDK8 это никого не волновало, так как HashMap был простым HashMap'ом.
C>>Ну и так как для получения бага нужно особое сочетание фаз планет, то искали его долго.
G>
Что именно?
Sapienti sat!
Re[10]: [Голосование] Нужен ли binary tree если есть hash таблица
От: DenisCh Россия  
Дата: 28.06.17 06:45
Оценка: 3 (1) +1 :))) :))
Здравствуйте, Cyberax, Вы писали:

C> G>Зарплату кто-нибудь считает на этой лабуде? Или сбережения свои хранит?

C> Зарплату компании любого размера нынче даже мои наручные часы могут посчитать.

На i7 c 8ГБ правильная зарплата со всеми налогами считалась на 300 человек за 45 минут.
У тебя часы мощнее i7? На руке ожогов нет?
avalon/2.0.3
Re[11]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 28.06.17 07:17
Оценка:
Здравствуйте, DenisCh, Вы писали:

DC>Здравствуйте, Cyberax, Вы писали:


C>> G>Зарплату кто-нибудь считает на этой лабуде? Или сбережения свои хранит?

C>> Зарплату компании любого размера нынче даже мои наручные часы могут посчитать.

DC>На i7 c 8ГБ правильная зарплата со всеми налогами считалась на 300 человек за 45 минут.

DC>У тебя часы мощнее i7? На руке ожогов нет?

Вот это похоже на реальность. Суровую реальность. Во всем виновата однобокость опыта. Если человек занимался какими-то CAD системами, занимался техническими проблемами он редко идет работать в финансовую сферу. Смотрит на нее пренебрежительно. Хотя там возникают тоже сложные проблемы и красивые решения этих сложных проблем.
Re[11]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Cyberax Марс  
Дата: 28.06.17 18:36
Оценка: 1 (1) +1
Здравствуйте, DenisCh, Вы писали:

C>> G>Зарплату кто-нибудь считает на этой лабуде? Или сбережения свои хранит?

C>> Зарплату компании любого размера нынче даже мои наручные часы могут посчитать.
DC>На i7 c 8ГБ правильная зарплата со всеми налогами считалась на 300 человек за 45 минут.
Ну так обрывайте руки разработчикам, которые ТАКОЕ пишут.
Sapienti sat!
Re[12]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 28.06.17 19:25
Оценка: -2 :))
Здравствуйте, Cyberax, Вы писали:

C>Ну так обрывайте руки разработчикам, которые ТАКОЕ пишут.

Какое такое? Тыж не писал ничего подобного. Ну вот вижу просто...
Есть целый класс программистов, которые никогда не пойдут в банк или бухгалтерию. Типа это недостойно их участия. На самом деле это тепличные слабаки, которые выросли в среде четких правил и ясности технических систем. Они абсолютно не жизнеспособны при написании финансового софта. Они не знают как общаться с заказчиком, какими средствами устранять ошибки взаимопонимания. То есть целый пласт проблем информационных технологий прошел мимо них. Причина — банальная лень.
Re[13]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Cyberax Марс  
Дата: 28.06.17 23:24
Оценка: +3
Здравствуйте, Gattaka, Вы писали:

C>>Ну так обрывайте руки разработчикам, которые ТАКОЕ пишут.

G>Какое такое? Тыж не писал ничего подобного. Ну вот вижу просто...
Вот не надо мне это говорить. Я писал систему, которая занималась расчётом зарплаты с учётом данных посещения. Считала она за секунды для тысяч человек — с учётом overtime и прочего.

А программистов, которые считают зарплату неделями для человека — надо нафиг пинать ногами из профессии.

G>Причина — банальная лень.

Вот-вот. И продолжают оправдывать эту лень словами типа: "Это всё неподдерживаемо" или "И скорость не нужна".
Sapienti sat!
Re[11]: [Голосование] Нужен ли binary tree если есть hash таблица
От: · Великобритания  
Дата: 29.06.17 07:54
Оценка: +2
Здравствуйте, DenisCh, Вы писали:

C>> G>Зарплату кто-нибудь считает на этой лабуде? Или сбережения свои хранит?

C>> Зарплату компании любого размера нынче даже мои наручные часы могут посчитать.
DC>На i7 c 8ГБ правильная зарплата со всеми налогами считалась на 300 человек за 45 минут.
DC>У тебя часы мощнее i7? На руке ожогов нет?
А можно примерно описать что может считаться 9 секунд для одного человека? Это же миллиарды операций и гигабайты данных... а налоги/платёжки обычно дают такой процесс вычисления, который потенциально может быть проверен человеком вручную на бумажке. Что-то не сходится. Скорее всего, типичный ентерпрайзнутый код с кучей слоёв и фреймворков, переливающих из пустого в порожнее.
По своему опыту могу сказать, что в налогах и зарплатах вычислительной сложности — никакой. Кучка сложений и умножений, перемеженных с if-ами. Самая сложная алгоритмическая проблема — правильно считать проценты и округлять. Наиболее сложный алгоритм который мне попадался это был рассчёт capital gains tax — там пришлось использовать сортировку!
Сложность совсем в другом: разобраться с предметной областью и выразить все эти правила и налоги в коде таким образом, чтобы это было хоть как-то читаемо и поддерживаемо.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[12]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 29.06.17 07:57
Оценка:
Здравствуйте, ·, Вы писали:

·>Сложность совсем в другом: разобраться с предметной областью и выразить все эти правила и налоги в коде таким образом, чтобы это было хоть как-то читаемо и поддерживаемо.


Вот это уже ближе к правде.
Re[13]: [Голосование] Нужен ли binary tree если есть hash таблица
От: · Великобритания  
Дата: 29.06.17 08:20
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>·>Сложность совсем в другом: разобраться с предметной областью и выразить все эти правила и налоги в коде таким образом, чтобы это было хоть как-то читаемо и поддерживаемо.

G>Вот это уже ближе к правде.
Верно. Но это интересно только в начале карьеры, студентам. Когда только начинаешь изучать всякие новые системы, узнаёшь красивые слова типа "кардиналити", вставляешь в свою речь DRY акронимы... но главное тут не задерживаться. Ведь столько всего вкусного, когда понимаешь что всемогущие СУБД ну никак не тянут. Ведь даже рассчёт вероятностей лошадиных забегов и теннисных матчей поинтереснее будет, чем банковское округление. Та же биоинформатика гораздо сложнее и многограннее.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[14]: [Голосование] Нужен ли binary tree если есть hash таблица
От: Gattaka Россия  
Дата: 29.06.17 09:43
Оценка: :))
Здравствуйте, ·, Вы писали:

·>Здравствуйте, Gattaka, Вы писали:

·>Верно. Но это интересно только в начале карьеры, студентам. Когда только начинаешь изучать всякие новые системы, узнаёшь красивые слова типа "кардиналити", вставляешь в свою речь DRY акронимы... но главное тут не задерживаться. Ведь столько всего вкусного, когда понимаешь что всемогущие СУБД ну никак не тянут. Ведь даже рассчёт вероятностей лошадиных забегов и теннисных матчей поинтереснее будет, чем банковское округление. Та же биоинформатика гораздо сложнее и многограннее.

Парадокс заключается в том, что пройдя весь этот цикл разработчики так и не знают что такое Specflow, кто такой Гойко Аджич. Биоинформатика нудная, узкоспециализированная вещь. Базы данных не тянут — это скорее всего сводится к "не осилил".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.