если представить программиста, который пишет, ну… скажен на С или на go, он напишет просто один цикл по списку и выберет все три значения за 1 проход. За O(N) при любых данных.
А подход take 3 sort список, выберет то же самое за O(N) (если вы конечно правильно отгадали как именно действует haskell) в среднестатистическом случае. А в случае «плохих» данных результат будет хуже.
То есть как раз и весь разговор о том, что автор выбрал неудачный пример для демонстрации преимуществ. Если бы он просто написал take 3 [какая то тяжелая обработка x | x < — список], вопросов бы не возникло.
Но вариант take 3 sort список — пример провокационный и рождающий больше вопросов, чем дающий ответы.
«и при каждом разбиении идти только в меньшую половинку»
Половинку? При qsort нет половинок. Там берется опорный элемент и остальные элементы располагаются левее-правее относительно этого элемента. То есть попась в случай, когда опорный элемент оказался в хвосте — очень даже вероятно.
Разумеется, для определенной части данных можно избежать сортировки — но говорить «отсортируем до 3 элемента» — это просто вводить в заблуждение. В подавляющем большинстве случаев будет массовая и затратная операция над данными.
«Но в строгом языке это расточительно, так как придётся отсортировать весь список. Но с ленивыми вычислениями, мы отсортируем список до третьего элемента и остановимся,»
Как это вы сортируете список «до 3 элемента»?
Чтобы найти эти элементы все равно весь список придется просмотреть.
Не mssql. Совсем другой продукт. msql — mini sql. Mysql взяд от msql протокол и базовый набор sql команд, чтобы быть с ним совместимым, и чтобы msql мог быть заменен на mysql без особых телодвижений.
Вот видите, Вы тоже подтверждаете мои слова. Никто не помнит уже про msql.
в самом деле? К примеру mysql был создан как альтернатива коммерческому (но распространенному в то время) msql. И кто сейчас круче? Сейчас мало людей, которые помнят что он, msql вообще есть.
Как насчет сравнения interbase и firebird? netscape и firefox/mozilla?
есть реализации — хорошо, а знать как устроено — лучше.
Позволяет формировать термы откуда угодно, в том числе и в языках, для которых нет ничего в берт. В ocaml например. В Паскале. В шелл-скрипте. В тикле. Да мало ли где.
Кроме того во многих случаях такие посторонние пакеты просто избыточны. Ставить что-то левое там, где можно обойтись процедурой в полстраницы — неразумно.
Тогда император, отец ребенка, обнародовал указ, предписывающий всем его подданным под страхом строгого наказания разбивать яйца с острого конца. Этот закон до такой степени озлобил население, что, по словам наших летописей, был причиной шести восстаний, во время которых один император потерял жизнь, а другой — корону.
…Насчитывают до одиннадцати тысяч фанатиков, которые в течение этого времени пошли на казнь, лишь бы не разбивать яйца с острого конца. Были напечатаны сотни огромных томов, посвящённых этой полемике, но книги Тупоконечников давно запрещены, и вся партия лишена законом права занимать государственные должности. В течение этих смут императоры Блефуску часто через своих посланников делали нам предостережения, обвиняя нас в церковном расколе путём нарушения основного догмата великого нашего пророка Люстрога, изложенного в пятьдесят четвёртой главе Блундекраля (являющегося их Алькораном). Между тем это просто насильственное толкование текста, подлинные слова которого гласят: Все истинно верующие да разбивают яйца с того конца, с какого удобнее.
На самом деле все равно. Смысл в том, что такие новости — это индикатор — большие компании рассматривают рынок nosql как перспективную область для капиталовложений. Это не только значит, что будут разрабатываться новые продукты, но и то, что будут вливаться деньги, ресурсы и люди в уже существующие nosql сервера.
А подход take 3 sort список, выберет то же самое за O(N) (если вы конечно правильно отгадали как именно действует haskell) в среднестатистическом случае. А в случае «плохих» данных результат будет хуже.
То есть как раз и весь разговор о том, что автор выбрал неудачный пример для демонстрации преимуществ. Если бы он просто написал take 3 [какая то тяжелая обработка x | x < — список], вопросов бы не возникло.
Но вариант take 3 sort список — пример провокационный и рождающий больше вопросов, чем дающий ответы.
Половинку? При qsort нет половинок. Там берется опорный элемент и остальные элементы располагаются левее-правее относительно этого элемента. То есть попась в случай, когда опорный элемент оказался в хвосте — очень даже вероятно.
Разумеется, для определенной части данных можно избежать сортировки — но говорить «отсортируем до 3 элемента» — это просто вводить в заблуждение. В подавляющем большинстве случаев будет массовая и затратная операция над данными.
неприятный сюрприз.
Как это вы сортируете список «до 3 элемента»?
Чтобы найти эти элементы все равно весь список придется просмотреть.
Вот видите, Вы тоже подтверждаете мои слова. Никто не помнит уже про msql.
Как насчет сравнения interbase и firebird? netscape и firefox/mozilla?
Позволяет формировать термы откуда угодно, в том числе и в языках, для которых нет ничего в берт. В ocaml например. В Паскале. В шелл-скрипте. В тикле. Да мало ли где.
Кроме того во многих случаях такие посторонние пакеты просто избыточны. Ставить что-то левое там, где можно обойтись процедурой в полстраницы — неразумно.
…Насчитывают до одиннадцати тысяч фанатиков, которые в течение этого времени пошли на казнь, лишь бы не разбивать яйца с острого конца. Были напечатаны сотни огромных томов, посвящённых этой полемике, но книги Тупоконечников давно запрещены, и вся партия лишена законом права занимать государственные должности. В течение этих смут императоры Блефуску часто через своих посланников делали нам предостережения, обвиняя нас в церковном расколе путём нарушения основного догмата великого нашего пророка Люстрога, изложенного в пятьдесят четвёртой главе Блундекраля (являющегося их Алькораном). Между тем это просто насильственное толкование текста, подлинные слова которого гласят: Все истинно верующие да разбивают яйца с того конца, с какого удобнее.
(с) Свифт.
Это хорошая новость.