Re[29]: Потерялся, ищу совета
От: LaPerouse  
Дата: 01.04.08 11:19
Оценка: :)
Здравствуйте, LaPerouse, Вы писали:

LP>На тривиальных примерах может и не заметно, хотел сказать.


Что-то совсем выдохся... в оригинале было правильно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[29]: Потерялся, ищу совета
От: LaPerouse  
Дата: 01.04.08 11:20
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>На тривиальных примерах может и не заметно, хотел сказать.


Что-то совсем выдохся... в оригинале было правильно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[26]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 01.04.08 14:51
Оценка:
Здравствуйте, LaPerouse, Вы писали:


LP>Никак не пойму, почему эта тривиальная проверка состоящая из одной инструкции cmp, которая теряется на фоне обработки элемента по полученному индексу,


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

LP>Если нужен повторный доступ, то можно скопировать ссылку на объект, опять несколько инструкций.


Речь идёт о "числодробилках", мы обсуждали ситуацию обработки чисел в массивах.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[9]: Потерялся, ищу совета
От: LaPerouse  
Дата: 02.04.08 05:49
Оценка:
Здравствуйте, vdimas, Вы писали:

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


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


AVK>>>Эта "гениальная" мысль приходит в голову почти всем программерам поначалу.

WH>>Во-во... только если еще немного подумать понимаешь что текст + IDE которая все парсит на лету заруливают все эти семантические графы на раз.

V>Это ты как определил? Тебе уже было с чем сравнить?

V>Я вот даже с самым крутым IDE не могу избавиться от ощущения постоянной обезъяней работы, причём везде, начиная от проектирования, и заканчивая кодированием.

Eclipse и jdt использовал? Обезьяней работы минимум, если речь идет именно о набивке кода (не принимая в расчет ограничения и недостатки языка). Написал тест, прошелся по нему, нажимая Ctrl+1 на каждой строчке и можешь релизить проект
Все упирается совсем не в представление кода, а в семантику и проблемы предметной области.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[6]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 09:28
Оценка:
Здравствуйте, YК, Вы писали:


YК>На каком-то уровне подобное есть в Visual Paradigm: можно связать разные "каракули" с определенными объектами и рисовать их мышью — Mouse gestures. По идее никаких препятствий взять сенсорный дисплей и рисовать от руки нет.


Интересное решение. Действительно, рисовать диаграммки — весьма нудно и непроизводительно, поэтому часто поступают наоборот, через reverese engineering, а тут такая интересная попытка.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[7]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 09:28
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:


AVK>Вот не было изначально такого вопроса. Было "языки — фуфло, алгоритмы с математикой — рулят".

AVK>Это еще, кстати, если не вспоминать, что алгоритм это последовательность шагов и как он рулит в декларативных языках — большой вопрос.

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


K>> ИМХО дискретка нужна обязательно


AVK>Нужна. Но во вполне скромном объеме. И не вся. Залитую в меня в больших количествах теорию вероятности, матстатистику и теорию СМО можно было бы и поурезать.


Как это CMO урезать для программиста?
А первые две области — это как раз базис для последней.

Вот попытался вспомнить, что было лишнее в моём образовании в ВУЗе, и не могу вспомнить, практически всё пригодилось.

Формальные грамматики и теория построения компиляторов — с завидной регулярностью приходится упражняться.
Статистика и тервер — вообще базис для многих прикладных вещей.
СМО — пришлось углубиться гораздо серьёзнее чем давали в ВУЗе, при расчётах и моделировании системы транкинговой связи в своё время.
Обработка сигналов — вот как раз последний проект с аудио-видео конференциями потребовал поупражняться.
Линейное программирование — пригодилось дважды, один раз — для программки раскроя листов жести, другой раз — для модуля управления запасами производственной фирмы.

Единственно, с чем еще не работал всерьез из того, что давали в ВУЗе — это с базами знаний, нечёткой логикой и ИИ, только на уровне развлечений в свободное время, но не факт что не потребуется в очередном проекте, ибо эти темы всё популярнее со временем.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[9]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 09:28
Оценка: 5 (1) +1
Здравствуйте, AndrewVK, Вы писали:


AVK>Как бы тебе попроще объяснить. Ну вот, к примеру, реляционная алгебра безусловно важный раздел математики. Но в реальных современных РСУБД все очень далеко от теории. Поэтому эту самую реляционную алгебру конечно понимать нужно, но все ее изыски в разработке не нужны,


Это если программист позиционирует себя как пользователь SQL-запросов, а если он движок БД пишет, то разбираться в реляционной алгебре придётся.

А вообще спор странный у вас выходит. Понятное дело, что составляющая предметной области в каждом конкретном проекте может сильно отличаться от того, что давали в универе. Но в универе дают самые, на мой взгляд, базовые знания, которыми надо будет пользоваться как инструментом. базовая дискретка — это алфафит, структуры данных и алгоритмы Кнута — это уровень №0, та же реляционная алгебра банально учит работать с массивами структурированных данных через абстракции отношений, и работа с БД тут не при чём, иногда и в памяти надо уметь обрабатывать данные. Без СМО до конца не представить даже суть работы оконной системы Windows, не говоря уже о серверных приложениях и т.д. И вообще, разве много этого даётся в ВУЗе? 40 часов практики на упомянутую реляционную алгебру и столько же практики по СМО — это смешно, тут даже нечего обсуждать. Просто слегка познакомили с предметом и всё.


AVK>Опять же спорно. Главное что там лежит — не математика, а скорее понимание человеческого мышления. Та же теория формальных грамматик помнишь для чего создана была? А уж математика там, постолько поскольку иногда удается ее пристегнуть к той или иной идее.


Да ладно, просто "это" прикладная математика, а "та" — фундаментальная.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[13]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 09:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:


DM>>И что подойдет в качестве оного?


AVK>Видимо сильно продвинутый оптимизатор.


Программист и есть тот самый оптимизатор. В идеале, поставновщик задачи выступает спецом по предметной области, программист должен владеть предметной областью на уровне достаточным для общения с постановщиком задачи. Просто зачастую эта модель в софтовых конторах нарушена, поэтому и возникают подобные обсуждения.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[14]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.08 12:09
Оценка:
Здравствуйте, vdimas, Вы писали:

AVK>>Видимо сильно продвинутый оптимизатор.


V>Программист и есть тот самый оптимизатор.


Фиговый, к сожалению. Работает медленно, ошибается часто и стоит очень дорого. Но, к сожалению, в некоторых областях ничего лучше нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1060>>
AVK Blog
Re[10]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.08 12:09
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это если программист позиционирует себя как пользователь SQL-запросов, а если он движок БД пишет, то разбираться в реляционной алгебре придётся.


Тоже по большей части в азах.

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


Речь, вобще то, не о знаниях в универе, а о математике. Безотносительно универа.
... << RSDN@Home 1.2.0 alpha 4 rev. 1060>>
AVK Blog
Re[8]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.08 12:09
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ну дык нужно как минимум понимать алгоритм работы ядра декларативного языка, а для этого некий базис по алгоритмам должен уже быть.


А про базис никто и не спорит.

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


Ты кроме Пролога других декларативных языков не знаешь? А вот янус, к примеру, обходится рамками SQL'92, а он полностью, на 100%, декларативный.

AVK>>Нужна. Но во вполне скромном объеме. И не вся. Залитую в меня в больших количествах теорию вероятности, матстатистику и теорию СМО можно было бы и поурезать.


V>Как это CMO урезать для программиста?


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

V>А первые две области — это как раз базис для последней.


Ты думаешь я этого не знаю? Только вот базис это одно, а, скажем, моменты высших порядков и вся тряхомудия вокруг них, это уже немножко другое.
... << RSDN@Home 1.2.0 alpha 4 rev. 1060>>
AVK Blog
Re[9]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 14:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:


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


AVK>Ты кроме Пролога других декларативных языков не знаешь? А вот янус, к примеру, обходится рамками SQL'92, а он полностью, на 100%, декларативный.


А как же работа с курсорами в нём? Да и вообще, там важна именно последовательность выражений, так что полностью декларативным его назвать сложно. Просто у него там уровни есть, если не ошибаюсь, на каком-то уровне отсутствуют динамические выражения. Но чуствительность к последовательности всё-равно никуда не девается.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[10]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.08 15:01
Оценка:
Здравствуйте, vdimas, Вы писали:

V>А как же работа с курсорами в нём?


В SQL'92 никаких курсоров нет.

V> Да и вообще, там важна именно последовательность выражений


Ну и что?

V>, так что полностью декларативным его назвать сложно


Он полностью декларативный без оговорок.

V>. Просто у него там уровни есть, если не ошибаюсь


В стандарте никаких уровней нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1062>>
AVK Blog
Re[11]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 02.04.08 17:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:


V>>А как же работа с курсорами в нём?


AVK>В SQL'92 никаких курсоров нет.


AVK>В стандарте никаких уровней нет.


http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[12]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.08 20:40
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt


Я читал этот документ, причем очень подробно. Теперь ты почитай, о каких курсорах там речь и что с ними можно делать. Никаких циклов по ним, как в каком нибудь T-SQL, там нет.
Ну и самое главное — в янусе курсоры не используются.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1058 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[13]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 03.04.08 08:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>Я читал этот документ, причем очень подробно. Теперь ты почитай, о каких курсорах там речь и что с ними можно делать. Никаких циклов по ним, как в каком нибудь T-SQL, там нет.


Речь об императивности операций:
— открыл курсор
— установил на нужную позицию
— выполнил некоторые операции с курсорами
— закрыл

А еще бывает простая форма CASE выражений, по сути — это функциональный оператор ветвления, и циклы делаются через рекурсивный вызов процедур.


AVK>Ну и самое главное — в янусе курсоры не используются.


Несомненно, относительно к SQL'92 это самое главное.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[14]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.04.08 09:23
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Речь об императивности операций:

V>- открыл курсор
V>- установил на нужную позицию
V>- выполнил некоторые операции с курсорами
V>- закрыл

Ну и что? Этого недостаточно для императивности.

V>А еще бывает простая форма CASE выражений, по сути — это функциональный оператор ветвления


И по сути и по форме это паттерн-матчинг классический. Декларативность в чистом виде.

V>, и циклы делаются через рекурсивный вызов процедур.


Чистые функциональные языки вобще то являются декларативными. Не знал?

AVK>>Ну и самое главное — в янусе курсоры не используются.


V>Несомненно, относительно к SQL'92 это самое главное.


Это главное относительно практической применимости декларативных языков. Как видишь, все прекрасно работает и без императивных расширений.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1063 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[15]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 04.04.08 07:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:


V>>Речь об императивности операций:

V>>- открыл курсор
V>>- установил на нужную позицию
V>>- выполнил некоторые операции с курсорами
V>>- закрыл

AVK>Ну и что? Этого недостаточно для императивности.


У нас есть переменные, которые хранят состояния (не только состояния курсоров, кстати), мы в коде указываем последовательность действий (fetch next .., update .., fetch next .., select into и т.д.), промежуточные результаты можем хранить в обычных переменных и использовать далее, это получился обычный последовательный алгоритм, тут даже обсуждать нечего.


V>>А еще бывает простая форма CASE выражений, по сути — это функциональный оператор ветвления


AVK>И по сути и по форме это паттерн-матчинг классический. Декларативность в чистом виде.


Тогда switch/case в С# тоже декларативный, и даже простой оператор if, я ниже обобщу.


V>>, и циклы делаются через рекурсивный вызов процедур.


AVK>Чистые функциональные языки вобще то являются декларативными. Не знал?


Именно что чистые, не знал? А если в рекурсию можно передать ссылку на некоторое состояние для дальнейшей обработки, то там чистотой и не пахнет, получаем обычный алгоритм, изменяющий по шагам некоторое состояние. Декларативный язык — это тот, в котором задаются факты и правила, и ничего более. Думаешь, иммутабельность переменных в чистых функциональных языках — это следствие лишь повышения верицируемости программ? Иммутабельность переменных в чисто-функциональных языках — это аналог однажды утверждённого факта в логических, без этой иммутабельности не будет никакой декларативности.


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


Угу, а позиции оппонентов весьма принципиальны.
Да, я уже соглашался, что некоторые конструкции из SQL образуют чисто декларативное подмножество, в SQL'92 ему соотвествует начальный уровень (уровни там всё же есть, однако).

Тем не менее, элементы этого языка ты используешь в блоках императивного кода, SQL-запросы — это просто высокоуровневое АПИ к базе данных, подобие контракта. Разумеется, что сами контракты (те же интерфейсы в С#) — это всегда декларативность, более того, простой оператор присваивания в отрыве от контекста — тоже весьма себе такая декларативная конструкция. Вряд ли ошибусь, если предположу, что практически любые высокоуровневые конструкции в языках того самомого высокого уровня — это 100%-но декларативные конструкции. Императивность образует способ использования этих операторов, который выливается в конечном итоге в цепочку действий по изменению некоторого состояния.

В общем, позволю себе остаться при своём, что сами по себе декларативные языки без императивной поддержки пока что мало полезны, и твой Янус — неплохой тому пример.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[16]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.04.08 09:56
Оценка:
Здравствуйте, vdimas, Вы писали:

V>У нас есть переменные, которые хранят состояния (не только состояния курсоров, кстати)


В декларативных языках не может быть переменных с состояниями? Это что то новенькое.

V>, мы в коде указываем последовательность действий (fetch next .., update .., fetch next .., select into и т.д.),


Последовательность действий не есть обязазательный признак императивности.

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


То есть MSBuild или там Ant — императивные языки, потому что в них есть переменные с изменяемым состоянием?

AVK>>И по сути и по форме это паттерн-матчинг классический. Декларативность в чистом виде.

Это
V>Тогда switch/case в С# тоже декларативный

Да, если убрать императивные конструкции вроде break внутри кейсов.

V>, и даже простой оператор if


Тоже да при том же условии.

AVK>>Чистые функциональные языки вобще то являются декларативными. Не знал?


V>Именно что чистые, не знал?


А рекурсия есть и в чистых тоже.

V> А если в рекурсию можно передать ссылку на некоторое состояние для дальнейшей обработки


Ссылка в SQL??? Курсоры это никакая не ссылка, это лишь твое предположение. Поскольку там не императивный код, что там реально внутри движка будет происходить, еще большой вопрос. В этом и есть главное отличие декларативных языков, ты описываешь что тебе надо, а не как это сделать.

V>Декларативный язык — это тот, в котором задаются факты и правила, и ничего более.


Это очень похоже на логическое программирование. Понятно. что у тебя один Пролог получился такой. Но это не единственный вид декларативного программирования.
http://en.wikipedia.org/wiki/Declarative_programming_language

In computer science, a declarative programming language is a high-level language that describes a problem rather than defining a solution — it makes use of declarative programming. A declarative programming language says "what", while an imperative programming language says "how".

Поэтому да, наверное курсоры не очень не очень декларативная конструкция, но их все равно сейчас не используют почти. Так что твое заявление о том, что чисто декларативный язык это игрушка, мягко говоря не очень верное. Не нравится SQL — возьми какой нибудь IDL, он, надеюсь, у тебя не императивный?

V> Думаешь, иммутабельность переменных в чистых функциональных языках — это следствие лишь повышения верицируемости программ? Иммутабельность переменных в чисто-функциональных языках — это аналог однажды утверждённого факта в логических, без этой иммутабельности не будет никакой декларативности.


Это все зависит от точки зрения. Трактуй оператор перемещения позиции курсора не как изменение состояния существующего курсора, а как создание нового курсора с другим состоянием, но тем же именем, и, вуаля, иммутабельность соблюдена. И, заметь, в отличие от какого нибудь С++, такое поведение в случае сиквеля никак стандартом не запрещено.

V>Да, я уже соглашался, что некоторые конструкции из SQL образуют чисто декларативное подмножество


И этого множества вполне достаточно для практического применения.

V>Тем не менее, элементы этого языка ты используешь в блоках императивного кода


Ну и что? Это же не значит, что SQL не применим на практике.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1067 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[17]: Потерялся, ищу совета
От: vdimas Россия  
Дата: 04.04.08 11:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>Это все зависит от точки зрения. Трактуй оператор перемещения позиции курсора не как изменение состояния существующего курсора, а как создание нового курсора с другим состоянием, но тем же именем, и, вуаля, иммутабельность соблюдена. И, заметь, в отличие от какого нибудь С++, такое поведение в случае сиквеля никак стандартом не запрещено.


Да при чём тут стандарт? Оператор присваивания в условии иммутабельности можно рассматривать как предикат, как условие, типа пусть А будет равно тому то, т.е. это как упрощение в математических нотациях, не более. А в случае с курсором, мы говорим ему спозиционироваться на одну строку выборки, потом на другую, потом на последнюю или первую — как хотим, мы в любом случае указываем последовательность шагов для получения результата, вместо формулировки задачи. Независимо от реализации курсора в движке точка зрения на него не меняется.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.