Re[31]: декларация
От: Lucky Cat  
Дата: 08.11.08 16:39
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


ВВ>>Мне вот непонятно, что за задача такая — помножение матриц. И, думаю, не только мне. Для чего/для кого она делается?


PD>Не обижайся на то, что я сейчас скажу, ладно ? Я вовсе не хочу ни тебя, ни кого-то еще обидеть. Я с уважением отношусь к любым задачам.


PD>В этом твоем ответе — суть проблемы. Тебе и другим — действительно непонятно. В задачах бизнеса (как я их определил) — это действительно не нужно. Если речь идет о создании сайта — это скорее всего не нужно. Если речь идет о системе управления заводом — может быть, тоже. И т.д.А поскольку большинство этим бизнес-задачами и занимается, то ему (большинству) это действительно непонятно. Оно как-то подсознательно уверено, что то, чем они занимаются — и есть единственно верное программирование, а то, что ему не нужно — вообще не нужно.



В задачах бизнеса без ЭТОГО никуда. Даже неразработчику программы, а пользователю. Закладыватся на прогноз полученный по непонятному алгоритму? Увольте-с. Так что если не уметь, то представление иметь следует обязательно.
Re[51]: декларация
От: Воронков Василий Россия  
Дата: 08.11.08 16:40
Оценка:
Здравствуйте, konsoletyper, Вы писали:

ВВ>>Как объяснить бизнесу, что реализация фичи Х занимает 3 часа, а для фичи У надо все на фиг переписать? С т.з. клиента это совершенно нелогично.

K>А вот так и приходится. Постоянно. Жизнь у айтишников такая.

Да ты что? У нас тут один "айтишник" бегает — мне казалось, он сервера чинит. Оказывается, вон у него жизнь какая.

Технология должна упрощать жизнь. Если она не упрощает, а наоборот усложняет, то на фиг нужна такая технология.

ВВ>>Вот кстати в вин-формах ситуация значительно лучше. Я там контрол могу хоть раком поставить. При этом "отрисовать все самому" мне в голову придет в последнюю очередь. Есть конечно ограничения, но в значительно меньшей степени.

K>В Windows Forms точно такая же проблема. И ограничения там мешают в неменьшей степени. Самой гибкой "технологией" оказалась бы "попиксельный рендеринг с помощью XSLT".

Это какие ограничения в windows forms мешают? В Windows Forms довольно удачная для Win32 архитектура, построенная на событиях, инкапсулирующих сообщения Windows. Программировать под Windows Forms значительно проще и приятнее чем, скажем, под MFC. Да и "попиксельный рендеринг" через GDI+ реализован довольно удачно. В Web Forms попытались изобразить то же самое, что и Win Forms.

Если до кого-то не доходит, что веб-приложение не должно иметь такую же архитектуру как и вин-приложение, то это его проблемы — пусть и дальше изображает из себя "айтишника".
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[52]: декларация
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 08.11.08 18:21
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Технология должна упрощать жизнь. Если она не упрощает, а наоборот усложняет, то на фиг нужна такая технология.


Ну-ну. Вот как раз Web Forms упрощает жизнь. В 99% случаев. А в 1% можно 1) найти workaround 2) сторонний контрол. Да, можно сказать, что самая крутая технология — это непосредственно генерить тексты на ассемблере. Там простор действий большой. Но удобно ли это? Может, лучше мириться с небольшими ограничениями ради того, чтобы разработка была простой?

Вот XSLT, за который ты цепляешься, при всей своей мощности, тоже обладает рядом недостатков. Году в 2004-м (я тогда ещё не работал в компании) народ у нас пытался заюзать XSLT для кодогенерации. В результате столкнулись с тем, что не получалось решить банальные проблемы, вроде генерации аналога имени в pascal и camel casing. В итоге пришлось написать свой кодогенаратор на основе своего XML-языка. Кстати, сейчас мы сходимся во мнении, что для подобных задач лучше иметь специальный язык шаблонизации, не основанный на XML.

ВВ>>>Вот кстати в вин-формах ситуация значительно лучше. Я там контрол могу хоть раком поставить. При этом "отрисовать все самому" мне в голову придет в последнюю очередь. Есть конечно ограничения, но в значительно меньшей степени.

K>>В Windows Forms точно такая же проблема. И ограничения там мешают в неменьшей степени. Самой гибкой "технологией" оказалась бы "попиксельный рендеринг с помощью XSLT".

ВВ>Это какие ограничения в windows forms мешают? В Windows Forms довольно удачная для Win32 архитектура, построенная на событиях, инкапсулирующих сообщения Windows. Программировать под Windows Forms значительно проще и приятнее чем, скажем, под MFC. Да и "попиксельный рендеринг" через GDI+ реализован довольно удачно. В Web Forms попытались изобразить то же самое, что и Win Forms.


Это в Windows Forms нету ограничений? Тогда пример приведу. Вот есть TreeView. Он может отображать в узлах дерева иконку и текст (а ещё, если не ошибаюсь, checkbox). Чтобы отобразить в нём что-то нетривиальное (например, смарттеги к узлам добавить), приходится либо извращаться, либо выкидывать контрол и писать свой или брать сторонний. Вот если бы была возможность класть в узлы дерева любой контрол, то сам по себе TreeView решал бы гораздо более широкий класс задач. Но, к сожалению, в рамках WinForms этот недостаток непреодолим в силу Windows API. Так что нужно строить что-то поверх. Например, посмотреть в сторону WPF.

Попиксельный рендеринг — это хорошо. Вот только громоздко и неудобно. Я тебе так же могу предложить использовать твой любимый XSLT для того, чтобы рендерить свой WebForms контрол. Почему бы нет?

ВВ>Если до кого-то не доходит, что веб-приложение не должно иметь такую же архитектуру как и вин-приложение, то это его проблемы — пусть и дальше изображает из себя "айтишника".


А это что? Переход на личности?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[5]: Жизнь внутри метода
От: minorlogic Украина  
Дата: 08.11.08 18:55
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Все же, если не сложно, сделай, пожалуйста, в разы проще, понятнее и эффективнее сортировку — любую.


FR>http://www.haskell.org/haskellwiki/Introduction#Quicksort_in_Haskell


Вы уверенны что это эквивалентные программы , по скорости выполнения ? по сложности ? по потреблению памяти ?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[42]: декларация
От: IT Россия linq2db.com
Дата: 08.11.08 18:56
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Вернее, давайте я поправлюсь — тот ASP.NET, который начинается и заканчивается на IHttpHandler/IHttpModule — это отличная штука. А вот все что сверху...


Всё, что сверху тоже клаcсная штука. Но есть одно "но". В интерактивных веб-приложениях сложность использования технологий, гоняющих состояние туда-сюда между клиентом и сервером, растёт пропорционально навороченности пользовательского интерфейса. Но это проблема не WebForms конкретно, а вообще подхода. Состояние должно быть в одном месте, либо на клиенте, либо на сервере. На сервере его хранить невозможно в принципе, т.к. весь диалог идёт на клиенте, соответственно, единственный рецепт — это держать состояние на клиенте, т.е. переходить на javascript (чего не очень хочется) и AJAX, либо на сервелады и xbap.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[43]: декларация
От: Cyberax Марс  
Дата: 08.11.08 19:02
Оценка:
Здравствуйте, IT, Вы писали:

IT>На сервере его хранить невозможно в принципе

Хорошо, что ты это не сказал ребятам из ZK (http://www.zkoss.org/), а то ведь бы они тогда не сделали свой фреймворк.

IT>т.к. весь диалог идёт на клиенте, соответственно, единственный рецепт — это держать состояние на клиенте, т.е. переходить на javascript (чего не очень хочется) и AJAX, либо на сервелады и xbap.

Держать состояние на клиенте — это тоже хорошая идея. И даже на JavaScript можно не переходить (см. Google Web Toolkit).
Sapienti sat!
Re[44]: декларация
От: IT Россия linq2db.com
Дата: 08.11.08 19:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

IT>>На сервере его хранить невозможно в принципе

C>Хорошо, что ты это не сказал ребятам из ZK (http://www.zkoss.org/), а то ведь бы они тогда не сделали свой фреймворк.

А как это у них работает в двух словах? Если это действительно возможно, то я легко откажусь от своих принципов

IT>>т.к. весь диалог идёт на клиенте, соответственно, единственный рецепт — это держать состояние на клиенте, т.е. переходить на javascript (чего не очень хочется) и AJAX, либо на сервелады и xbap.

C>Держать состояние на клиенте — это тоже хорошая идея. И даже на JavaScript можно не переходить (см. Google Web Toolkit).

Можно, конечно, заниматься преобразованием серверного кода в javascript, но что-то мне пока не кажется этот путь наиболее эффективным.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[45]: декларация
От: Cyberax Марс  
Дата: 08.11.08 19:26
Оценка:
Здравствуйте, IT, Вы писали:

C>>Хорошо, что ты это не сказал ребятам из ZK (http://www.zkoss.org/), а то ведь бы они тогда не сделали свой фреймворк.

IT>А как это у них работает в двух словах? Если это действительно возможно, то я легко откажусь от своих принципов
На сервере в сессии хранится реплика клиентского состояния. Обработчики событий на сервере поэтому работают "как будто на клиенте", а клиенту высылаются изменения в дереве контролов. Естественно, там учитывается, что может быть несколько окон браузера с несколькими табами и т.п.

С некоторыми оптимизациями работает даже вполне прилично. Хотя мне лично не нравится то, что сервер перестаёт быть stateless.

C>>Держать состояние на клиенте — это тоже хорошая идея. И даже на JavaScript можно не переходить (см. Google Web Toolkit).

IT>Можно, конечно, заниматься преобразованием серверного кода в javascript, но что-то мне пока не кажется этот путь наиболее эффективным.
Конкретно GWT мне позволяет писать AJAX-приложения с такой же скоростью, что и обычные десктопные. Особо рулит использование автокомплита и обычного Java-отладчика внутри GWT-кода.
Sapienti sat!
Re[14]: вдогонку
От: minorlogic Украина  
Дата: 08.11.08 19:32
Оценка:
Здравствуйте, deniok, Вы писали:

D>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>В этом смысле — мб, и да, если знать Хаскель, конечно. Но меня вообще-то больше интересует эффективность его выполнения


D>Ключевым моментом, которого пока не касались в этой дискуссии, является высокоуровневая оптимизация, про которую никакой ассемблер не знает. Например, в Хаскелле есть дефорестация (list fusion). Вася взял список, применил к его элементам функцию f, получив другой список:

D>
D>vasja lst = map f lst
D>

D>Петя взял васин код, и поэлементно применил к возвращаемому этим кодом списку функцию g
D>
D>petja lst = map g (vasja lst)
D>

D>Оля взяла петин код, поэлементно применила к возвращаемому этим кодом списку функцию h
D>
D>olja lst = map h (petja lst)
D>

D>Компилятор Хаскеля взял эту конструкцию с кучей промежуточных списков и оптимизировал в
D>
D>olja_oplimized lst = map (h . g. f) lst
D>

D>Без единого промежуточного списка.

Довольно стандартная фича например для C++, это я недоразобрался или в плюсах есть потдержка функциональных фичей ? это не наезд , но например boost iterator adaptors именно так и работают.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Жизнь внутри метода
От: minorlogic Украина  
Дата: 08.11.08 19:46
Оценка:
Если существуют методологии позволяющие очень сильно повысить читабельность, уменьшить к-во, улучшить сопровождение и т.п. Я бы очень хотел об этом подробнее узнать.

Но я оцениваю вероятность такой ситуации близкой к нулю , потому что не встречал написанных революционно проектв типа FFMPEG или openCV или декодер jpeg2000.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[46]: декларация
От: IT Россия linq2db.com
Дата: 08.11.08 19:59
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>На сервере в сессии хранится реплика клиентского состояния.


Как хранится состояние строки ввода в браузере на сервере?

C>Обработчики событий на сервере поэтому работают "как будто на клиенте", а клиенту высылаются изменения в дереве контролов. Естественно, там учитывается, что может быть несколько окон браузера с несколькими табами и т.п.


C>С некоторыми оптимизациями работает даже вполне прилично. Хотя мне лично не нравится то, что сервер перестаёт быть stateless.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 08.11.08 19:59
Оценка: +1
Здравствуйте, minorlogic, Вы писали:

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


См. FP.

M>Но я оцениваю вероятность такой ситуации близкой к нулю , потому что не встречал написанных революционно проектв типа FFMPEG или openCV или декодер jpeg2000.


А как ООП революционно работает для проектов типа FFMPEG или openCV или декодер jpeg2000? Никак? Давайте откажемся от ООП!
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[43]: декларация
От: Воронков Василий Россия  
Дата: 08.11.08 20:06
Оценка:
Здравствуйте, IT, Вы писали:

IT>Всё, что сверху тоже клаcсная штука. Но есть одно "но". В интерактивных веб-приложениях сложность использования технологий, гоняющих состояние туда-сюда между клиентом и сервером, растёт пропорционально навороченности пользовательского интерфейса.


Ну вот скажи, тебе лично нравится идея сделать архитектуру веб-приложения по аналогии с Windows-приложением? Зачем WebForms делать по аналогии c WindowsForms?
Неужели и этот уровень абстракции тоже супер-полезен?

IT>Но это проблема не WebForms конкретно, а вообще подхода. Состояние должно быть в одном месте, либо на клиенте, либо на сервере.


Это особенность HTTP, и от нее никуда не уйдешь, ибо HTTP stateless.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Жизнь внутри метода
От: minorlogic Украина  
Дата: 08.11.08 20:08
Оценка:
Здравствуйте, IT, Вы писали:

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


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


IT>См. FP.


Я читал предыдущий пост пере тем как ответить.


M>>Но я оцениваю вероятность такой ситуации близкой к нулю , потому что не встречал написанных революционно проектв типа FFMPEG или openCV или декодер jpeg2000.


IT>А как ООП революционно работает для проектов типа FFMPEG или openCV или декодер jpeg2000? Никак? Давайте откажемся от ООП!


ОПП просто восхитительно работает , см исходники Jasper или kakadu или JJ2000, это из тех что я точно знаю.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[44]: декларация
От: IT Россия linq2db.com
Дата: 08.11.08 20:37
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ну вот скажи, тебе лично нравится идея сделать архитектуру веб-приложения по аналогии с Windows-приложением? Зачем WebForms делать по аналогии c WindowsForms?

ВВ>Неужели и этот уровень абстракции тоже супер-полезен?

Что касается контролов, как средство инкапсуляции для рендеринга, то я не вижу в этом проблем. А вот с состоянием не получилось и это мне не нравится.

IT>>Но это проблема не WebForms конкретно, а вообще подхода. Состояние должно быть в одном месте, либо на клиенте, либо на сервере.


ВВ>Это особенность HTTP, и от нее никуда не уйдешь, ибо HTTP stateless.


Дело не в HTTP, дело в распределённости состояния.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Жизнь внутри метода
От: IT Россия linq2db.com
Дата: 08.11.08 20:37
Оценка:
Здравствуйте, minorlogic, Вы писали:

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


IT>>См. FP.


M>Я читал предыдущий пост пере тем как ответить.


Тогда что именно не понятно?

M>>>Но я оцениваю вероятность такой ситуации близкой к нулю , потому что не встречал написанных революционно проектв типа FFMPEG или openCV или декодер jpeg2000.


IT>>А как ООП революционно работает для проектов типа FFMPEG или openCV или декодер jpeg2000? Никак? Давайте откажемся от ООП!


M>ОПП просто восхитительно работает , см исходники Jasper или kakadu или JJ2000, это из тех что я точно знаю.


И что там революционного?
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Жизнь внутри метода
От: minorlogic Украина  
Дата: 08.11.08 20:45
Оценка:
Здравствуйте, IT, Вы писали:

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


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


IT>>>См. FP.


M>>Я читал предыдущий пост пере тем как ответить.


IT>Тогда что именно не понятно?


Я не говорил что мне что то непонятно.


M>>>>Но я оцениваю вероятность такой ситуации близкой к нулю , потому что не встречал написанных революционно проектв типа FFMPEG или openCV или декодер jpeg2000.


IT>>>А как ООП революционно работает для проектов типа FFMPEG или openCV или декодер jpeg2000? Никак? Давайте откажемся от ООП!


M>>ОПП просто восхитительно работает , см исходники Jasper или kakadu или JJ2000, это из тех что я точно знаю.


IT>И что там революционного?


Понятия не имею с чего ты взял? на мой взгляд ничего революционного там нет? Я имел ввиду написаноого в революцыонном стиле (FP например) из подобного рода проектов не встречал.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[15]: вдогонку
От: deniok Россия  
Дата: 08.11.08 20:57
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Довольно стандартная фича например для C++, это я недоразобрался или в плюсах есть потдержка функциональных фичей ? это не наезд , но например boost iterator adaptors именно так и работают.


Как "так"?

В GHC оптимизатор сначала прочитывает Rewriting Rules типа
{-# RULES
"map/map"    forall f g xs .  map f (map g xs) = map (f . g) xs
   #-}

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

А для list fusion в GHC используют, конечно, не примитивный map/map, а
{-# RULES
"fold/build"    forall k z (g::forall b. (a->b->b) -> b -> b) . 
                foldr k z (build g) = g k z

"foldr/augment" forall k z xs (g::forall b. (a->b->b) -> b -> b) . 
                foldr k z (augment g xs) = g k (foldr k z xs)

...
 #-}

и ещё десяток более специальных правил. Причём библиотечные функции для списков реализованы таким образом, чтобы максимально облегчить deforestation при включённом оптимизаторе.
Re[45]: декларация
От: Воронков Василий Россия  
Дата: 08.11.08 21:05
Оценка:
Здравствуйте, IT, Вы писали:

IT>Что касается контролов, как средство инкапсуляции для рендеринга, то я не вижу в этом проблем. А вот с состоянием не получилось и это мне не нравится.


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

Потом ты вот говоришь, что тебе не нравится как организована работа с состоянием. А ведь viewstate — одна из основных фишек контролов. Причем он всегда или есть или нет. Т.е. я не могу его отключить частично, если мне нет нужны дублировать данные контрола и перегружать страницу.

А AJAX тоже не панацея. Особенно то, как это сделано в ASP.NET. Кол-во телодвижений для обновления некой части страницы через updatepanel примерно аналогично реализации того же самого через XMLHTTPRequest напрямую. И в чем фича?
Ну это ладно, вот "добавили" аякс, люди "в массе" своей решили, что у них приложения будут работать благодаря нему в разы быстрее, а в итоге все почему-то работает даже медленнее. Не видел например веб-морду у Remedy? Она целиком на аяксе (не асп-нет) и блин как она тормозит!

ИМХО дело не в технологии "передачи" состояния — ибо все равно ты его будешь передавать на сервер в конечно счете. Проблема в том, что построив "абстракцию" над HTTP, внутри АСП.НЕТ все те же формы, поля и пр. — т.е. методы работы с данными самые что ни на есть древние.

Интереснее было бы, мне кажется, структировать сам формат состояния да и вообще данные, которые гоняются туда сюда. Например, чтобы это была не форма вида key=value&k2=value2..., а XML документ, который в свою очередь можно всегда проверить по XML-схеме, всегда можно показать используя различные стайлшиты (XSLT), а уж технология передачи — это мне кажется дело вторичное.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[47]: декларация
От: Cyberax Марс  
Дата: 08.11.08 21:22
Оценка:
Здравствуйте, IT, Вы писали:

C>>На сервере в сессии хранится реплика клиентского состояния.

IT>Как хранится состояние строки ввода в браузере на сервере?
Адресной строки или поля ввода?

Если поле ввода, то хранится как простой String в модели страницы. Поля ввода синхронизируются при совершении действия, требующего вызов серверного события. Т.е. у тебя форма с 10 полями, ты их как-то редактируешь на клиенте, а когда нажимаешь кнопку "OK" изменённые поля уходят на сервер вместе с событием "кнопка нажата". На сервере изменения вливаются в модель, а потом вызывается обработчик.

Если повесить обработчик на событие "фокус потерян", то синхронизироваться будет после потери фокуса (для валидации, например).
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.