Re[6]: Помогает ли Linq сделать код понятнее или быстрее?
От: FR  
Дата: 01.08.10 13:06
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Для массива из одного элемента -- согласен. А если вообще элементов нет?


Математика говорит что

Пустое множество считается упорядоченным.


http://www.pm298.ru/umnozh.php
Re[5]: Помогает ли Linq сделать код понятнее или быстрее?
От: 0K Ниоткуда  
Дата: 01.08.10 13:15
Оценка:
Здравствуйте, Yarik_L, Вы писали:

Y_L>Если взять любой упорядоченный массив, то очевидно что все массивы, получающиеся из исходного вычеркиванием отдельных элементов, также будут упорядоченными. Значит и пустой массив обязан быть таковым


Для пустого нужно сделать исключение -- его состояние не определено. Объясню почему: по определению упорядоченного массива.
Re[4]: Помогает ли Linq сделать код понятнее или быстрее?
От: vitasR  
Дата: 01.08.10 14:15
Оценка: +1
Здравствуйте, gandjustas, Вы писали:


R>>его вариант на самом деле лучший, самый понятный и самых быстрых (только проверку на пустой массив надо приделать).

G>
G>Скажи по-русски что такое отсортированный массив.

???


R>>стремление к общности там где она нафиг не нужна — большая ошибка на самом деле.

G>Обоснуй.

например здесь


R>>работает, правда, все в разы медленнее, но кого нынче это волнует...

G>Конечно, не волнует. Время компьютера дешево, а время программиста дорого.

ню-ню. время программиста, который для проверки упорядоченности массива его сортирует, а потом сравнивает (в оригинале такое чудо есть), должно оцениваться по ОТРИЦАТЕЛЬНОЙ ставке . бо как приходят такие чуды в перьях и в делают любой проект просто не рабочим. Для иллюстрации достаточно на WinMobile в тамошнем ворде открыть plain text на пару мегабайт -- тоже небось чье-то индусское время очень дорого стоило...
Re[4]: Помогает ли Linq сделать код понятнее или быстрее?
От: vitasR  
Дата: 01.08.10 14:18
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Кстати, философский вопрос. При передаче пустого массива нужно вернуть true или false?


вопрос соглашения, типа чему равен факториал нуля.

скорее true, по той логике, что неупорядоченный массив всегда можно упорядочить, пустой массив сделать более упорядоченным чем он уже есть нельзя.
Re[5]: Помогает ли Linq сделать код понятнее или быстрее?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.08.10 16:04
Оценка: :)
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, gandjustas, Вы писали:


G>>Это ты где такую шутку прочитал?

G>>99% данных обычно программа получает извне.

0K>Ну да, и записывает их в ОЗУ. А раз в ОЗУ, то лучше массив.

С чего ты взял что записывает?
С чего ты взял что массив лучше?
Re[5]: Помогает ли Linq сделать код понятнее или быстрее?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.08.10 16:09
Оценка:
Здравствуйте, vitasR, Вы писали:

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



R>>>его вариант на самом деле лучший, самый понятный и самых быстрых (только проверку на пустой массив надо приделать).

G>>
G>>Скажи по-русски что такое отсортированный массив.

R>???


Чего непонятного. Приведи определение отсортированного массива (последовательности чисел в общем случае)


R>>>стремление к общности там где она нафиг не нужна — большая ошибка на самом деле.

G>>Обоснуй.

R>например здесь

Как это относится к вопросу?
Ты не путай общность "архитекруры" и общность алгоритма. Второе всегда лучше, первое — спорно.

R>>>работает, правда, все в разы медленнее, но кого нынче это волнует...

G>>Конечно, не волнует. Время компьютера дешево, а время программиста дорого.

R>ню-ню. время программиста, который для проверки упорядоченности массива его сортирует, а потом сравнивает (в оригинале такое чудо есть), должно оцениваться по ОТРИЦАТЕЛЬНОЙ ставке .

С чего ты взял? Задачу то он выполняет.
И такая проверка закончится быстрее, чем будет написан цикл.

R>бо как приходят такие чуды в перьях и в делают любой проект просто не рабочим.

Я видел "очень серьезных и крутых программистов", которые делают проект нерабочим гораздо более изощренными способами.

R>Для иллюстрации достаточно на WinMobile в тамошнем ворде открыть plain text на пару мегабайт -- тоже небось чье-то индусское время очень дорого стоило...

Совсем не понял как это связано с проверкой упорядоченности массива.
Re[3]: Помогает ли Linq сделать код понятнее или быстрее?
От: Privalov  
Дата: 01.08.10 16:37
Оценка: :))
Здравствуйте, FR, Вы писали:

SC>>

SC>>var e = true; for (var i = 1; i < xs.Length; i++) if (xs[i-1] > xs[i]) e = false;
SC>>var isAscending = e;

SC>>


FR>Много недостатков алгоритм даже не квадратичный, "if" вместо оператора "?" мутабельный e нет рекурсии, в общем незачет


А зачем там нужен "?" ? Разве недостаточно

   e = !(xs[i-1] > xs[i]);

Re[6]: Помогает ли Linq сделать код понятнее или быстрее?
От: vitasR  
Дата: 01.08.10 17:11
Оценка: 1 (1)
Здравствуйте, gandjustas, Вы писали:

R>>>>его вариант на самом деле лучший, самый понятный и самых быстрых (только проверку на пустой массив надо приделать).

G>>>
G>>>Скажи по-русски что такое отсортированный массив.

R>>???


G>Чего непонятного. Приведи определение отсортированного массива (последовательности чисел в общем случае)


Вы не знаете что такое отсортированный массив?


G>Как это относится к вопросу?

G>Ты не путай общность "архитекруры" и общность алгоритма. Второе всегда лучше, первое — спорно.

любая задача должна решаться адекватными средствами. Неадекватно отстреливать воробьев из пушек, неадекватно маленькому ребенку, спрашивающему почему небо голубое, рассказывать про рассеяние Рэлея; неадекватно использовать LINQ там, где прекрасно работает простой цикл, а на LINQ'е приходится извращаться и увеличивать сложность алгоритма.

При этом LINQ, безусловно, отличная вещь.


R>>ню-ню. время программиста, который для проверки упорядоченности массива его сортирует, а потом сравнивает (в оригинале такое чудо есть), должно оцениваться по ОТРИЦАТЕЛЬНОЙ ставке .

G>С чего ты взял? Задачу то он выполняет.
G>И такая проверка закончится быстрее, чем будет написан цикл.

извините, но это уже на профнепригодность тянет ;(
Вы вообще в курсе что массивы бывают большие? И что замена алгоритма сложностью O(n) на O(n*n) запросто приводит к тому, что на маленьких тестовых примерах у девелопера все работает нормально, а в реальной жизни, на реальных больших данных у юзера все фатально тормозится и виснет. Причем ладно бы замена хоть как-то упрощала жизнь, а то просто тупое вредительство...


R>>Для иллюстрации достаточно на WinMobile в тамошнем ворде открыть plain text на пару мегабайт -- тоже небось чье-то индусское время очень дорого стоило...

G>Совсем не понял как это связано с проверкой упорядоченности массива.

самым что ни на есть прямым образом -- word на winmobile отличный (и, к сожалению, очень далеко не единственный) пример того, к чему приводит безмозглое программирование без понимания.
Re[7]: Помогает ли Linq сделать код понятнее или быстрее?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.08.10 18:26
Оценка:
Здравствуйте, vitasR, Вы писали:

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


R>>>>>его вариант на самом деле лучший, самый понятный и самых быстрых (только проверку на пустой массив надо приделать).

G>>>>
G>>>>Скажи по-русски что такое отсортированный массив.

R>>>???


G>>Чего непонятного. Приведи определение отсортированного массива (последовательности чисел в общем случае)


R>Вы не знаете что такое отсортированный массив?


Не включай еврея, просто скажи свое определение, а потом попытаемся его выразить в коде.

G>>Как это относится к вопросу?

G>>Ты не путай общность "архитекруры" и общность алгоритма. Второе всегда лучше, первое — спорно.

R>любая задача должна решаться адекватными средствами. Неадекватно отстреливать воробьев из пушек, неадекватно маленькому ребенку, спрашивающему почему небо голубое, рассказывать про рассеяние Рэлея; неадекватно использовать LINQ там, где прекрасно работает простой цикл, а на LINQ'е приходится извращаться и увеличивать сложность алгоритма.

Эмоциональная херня, LINQ — всего лишь вызовы функций, циклы гораздо сложнее, особенно for.


R>>>ню-ню. время программиста, который для проверки упорядоченности массива его сортирует, а потом сравнивает (в оригинале такое чудо есть), должно оцениваться по ОТРИЦАТЕЛЬНОЙ ставке .

G>>С чего ты взял? Задачу то он выполняет.
G>>И такая проверка закончится быстрее, чем будет написан цикл.

R>извините, но это уже на профнепригодность тянет ;(

Это правда жизни.

R>Вы вообще в курсе что массивы бывают большие?

Там где массивы большие, там алгоритмы сильно другие.

R>И что замена алгоритма сложностью O(n) на O(n*n) запросто приводит к тому, что на маленьких тестовых примерах у девелопера все работает нормально, а в реальной жизни, на реальных больших данных у юзера все фатально тормозится и виснет. Причем ладно бы замена хоть как-то упрощала жизнь, а то просто тупое вредительство...

Еще раз. Простая версия алгоритма уже закончит выполнятся до того как будет написана оптимизированная.
Остальные предположения надо сначала профайлером проверить.

Кстати прочитай у Липперта поты с тегом Linq (если не знаешь что это, то наверное ты зря тут пишешь). Там и про Linq и про оптимизацию и прочую фигню есть.

R>>>Для иллюстрации достаточно на WinMobile в тамошнем ворде открыть plain text на пару мегабайт -- тоже небось чье-то индусское время очень дорого стоило...

G>>Совсем не понял как это связано с проверкой упорядоченности массива.
R>самым что ни на есть прямым образом -- word на winmobile отличный (и, к сожалению, очень далеко не единственный) пример того, к чему приводит безмозглое программирование без понимания.
Напиши лучше, ругать все горазды.
Re[3]: Помогает ли Linq сделать код понятнее или быстрее?
От: SpaceConscience  
Дата: 01.08.10 21:02
Оценка:
FR>Много недостатков алгоритм даже не квадратичный, "if" вместо оператора "?" мутабельный e нет рекурсии, в общем незачет

Извини, ты ничего не понял. Тут вся соль в том, что это обычный, простецкий, прямолинейный, кондовый, понятный любому нубу и быдлокодеру вульгарный императивный код, просто отформатированный идиотским образом, и, что характерно, он при беглом взгляде напоминает фрагмент типичного произведения обитателей "мирка".
Собрался ставить минус? Да сам иди в жопу!

































































.
Re[3]: Помогает ли Linq сделать код понятнее или быстрее?
От: IT Россия linq2db.com
Дата: 01.08.10 22:41
Оценка: +3
Здравствуйте, 0K, Вы писали:

IT>>Хотя бы в том, что твой пример без Linq упадёт на пустой последовательности.

0K>А ваш пример на Linq для пустой последовательности выдаст true или false? Значение для пустой последовательности не определено -- это зависит от логики программы. По этому проверку я не включал.

True или False — это поведение. Невключение проверки — это бага. И, кстати, лучше с этим не спорить.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Помогает ли Linq сделать код понятнее или быстрее?
От: IT Россия linq2db.com
Дата: 01.08.10 23:00
Оценка:
Здравствуйте, 0K, Вы писали:

Учимся держать эмоции в рамках дозволенного. Последнее (единственное в этой ветке) китайское.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Помогает ли Linq сделать код понятнее или быстрее?
От: Lloyd Россия  
Дата: 01.08.10 23:11
Оценка:
Здравствуйте, 0K, Вы писали:

G>>99% данных обычно программа получает извне.


0K>Ну да, и записывает их в ОЗУ.


При больших объемах данные как правило получаются кусками, а не целиком

0K>А раз в ОЗУ, то лучше массив.


А раз кусками, то не лучше.
Re[4]: Помогает ли Linq сделать код понятнее или быстрее?
От: FR  
Дата: 02.08.10 02:59
Оценка:
Здравствуйте, SpaceConscience, Вы писали:

SC>Извини, ты ничего не понял. Тут вся соль в том, что это обычный, простецкий, прямолинейный, кондовый, понятный любому нубу и быдлокодеру вульгарный императивный код, просто отформатированный идиотским образом, и, что характерно, он при беглом взгляде напоминает фрагмент типичного произведения обитателей "мирка".


Это я понял, но ты же свои же рекомендации насчет эффективности не выполнил, так что все-равно незачет
Ну и мирок твой куда-то в сторону перла вытягивается, у функциональщиков однострочники точно давно не в моде
Re: Помогает ли Linq сделать код понятнее или быстрее?
От: Mamut Швеция http://dmitriid.com
Дата: 02.08.10 07:20
Оценка: 1 (1) +1
0K>По мотивам: http://rsdn.ru/forum/dotnet/3900028.flat.aspx
Автор: Dog
Дата: 30.07.10


0K>Человек спросит, как с помощью Linq проверить упорядоченность массива, к примеру {1, 3, 5, 7, 9}.


0K>Варианты ответа:


[skip]

0K>Теперь скажите чей вариант быстрее и понятнее? Каков смысл в вашем Linq?



Поянтность ответов зависит от степени овладевания Linq'ом. Все остальное — домыслы на пустом месте.


dmitriid.comGitHubLinkedIn
Re[6]: Помогает ли Linq сделать код понятнее или быстрее?
От: Pavel Dvorkin Россия  
Дата: 02.08.10 07:36
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>При больших объемах данные как правило получаются кусками, а не целиком


0K>>А раз в ОЗУ, то лучше массив.


L>А раз кусками, то не лучше.


Ну если уж на то пошло, то данные, получаемые кусками, никто не мешает хранить в массиве, особенно если массив динамический.
With best regards
Pavel Dvorkin
Re: Помогает ли Linq сделать код понятнее или быстрее?
От: fddima  
Дата: 02.08.10 09:49
Оценка:
Здравствуйте, 0K, Вы писали:

Всему своё место. Помогает.
Re[7]: Помогает ли Linq сделать код понятнее или быстрее?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.08.10 10:11
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


L>>При больших объемах данные как правило получаются кусками, а не целиком


0K>>>А раз в ОЗУ, то лучше массив.


L>>А раз кусками, то не лучше.


PD>Ну если уж на то пошло, то данные, получаемые кусками, никто не мешает хранить в массиве, особенно если массив динамический.


Ага, дико эффективное решение.
Re[8]: Помогает ли Linq сделать код понятнее или быстрее?
От: Pavel Dvorkin Россия  
Дата: 02.08.10 10:19
Оценка:
Здравствуйте, gandjustas, Вы писали:


PD>>Ну если уж на то пошло, то данные, получаемые кусками, никто не мешает хранить в массиве, особенно если массив динамический.


G>Ага, дико эффективное решение.


И что же тут неэффективного, можно пояснить ? Разумееется, под динамическим массивом понимается не то убожество, которое есть во многих средах, а механизм резервирования и коммитирования памяти, когда изменение размера производится всегда без переаллокации.
With best regards
Pavel Dvorkin
Re[7]: Помогает ли Linq сделать код понятнее или быстрее?
От: FR  
Дата: 02.08.10 10:27
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Ну если уж на то пошло, то данные, получаемые кусками, никто не мешает хранить в массиве, особенно если массив динамический.


А зачем их хранить, проще сразу обработать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.