Re[20]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 13:39
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Хорошо, ты не согласен. Объясни, пожалуйста, возможно, я заблуждаюсь — почему ты считаешь "оригинальный SQL, без императивных расширений" функциональным?


А почему нет? Функции как first class сущность есть, комбинировать с определенными ограничениями их можно. Что еще требуется?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[12]: ФП и многоядерная архитектура
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.08 13:41
Оценка:
Здравствуйте, AndrewVK, Вы писали:

FR>>Хаскелевская кстати тоже статическая и на ней тоже вполне проходят все фокусы C++ типа вычисления факториала в compile time.


AVK>Только оно при этом не выглядит как чес левой ногой за правым ухом.


Скорее, выглядит, чем нее выглядит

VladD2 как то говорил (если убрать его как обычно сочные выражения), что задача типизации вовсе не в вычислениях, он это обосновывал, если не ошибаюсь изначальными задачами, для которых конкретная типизация разрабатывалась. Частично с ним даже можно согласится

Так вот dependept type системы для этого разарабатывались. А Хаскелевская — нет, если мы не будем говорить о расширениях типа GADT, где тоже не всё гладко.
Re[12]: ФП и многоядерная архитектура
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.08 13:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я привел минимально достаточный пример. Вот, к примеру, тебе ссылка
Автор: Elifant
Дата: 20.04.08
где Elifant говорит о том, что он воспроизвел Parsec на Nemerle. Погляди на реализацию. Макросами там и не пахнет. Только функциональные комбинаторы которые могут быть реализованы и на Шарпе. Менее красиво, более громоздко, но могут.


По ссылке не нашёл реализацию. Где можно посмотреть?

Ну и чуть чуть за Хаскель, куда без этого!.

Что касается удобства Хаскеля для написания комбинаторов (и создания собственных eDSL) — то оно, по моему, является следствием: лени, карринга/секций, ФВП и, конечно, же бесскобочного вызова функций. По мелочи ещё пользовательские операторы и возможность инфиксного вызова функции:

Вместо
assignments <- p_sep_by1(p_assignment, p_symbol(','))
будет
assignments <- p_assignment `sepBy1` p_symbol ','

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

Но есть и недостатки, не позволяющие иногда реализовать тот DSL, который мне нужен (если мы не берём TH и QQ из последнего GHC).

С макросами (в Хаскеле или где ещё) всё это само-собой делается.
Re[21]: ФП и многоядерная архитектура
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.08 14:03
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А почему нет? Функции как first class сущность есть, комбинировать с определенными ограничениями их можно. Что еще требуется?


Наверное, мне подкачать скилзы Я не знал, что в SQL есть first class functions. В инете сходу не нашёл, сам не знаю ни одного примера — не раз не пользовал в SQL FCF и не представляю как. Не подскажешь где почитать или кейвордов/примеров накидаешь?
Re[22]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 14:16
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Наверное, мне подкачать скилзы Я не знал, что в SQL есть first class functions.


Скилзы тут не причем. Что такое, по твоему, обычный запрос?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[23]: ФП и многоядерная архитектура
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.08 14:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Скилзы тут не причем. Что такое, по твоему, обычный запрос?


Вложенный? Ладно, я понял твою мысль, спасибо за разъяснения. В общем, тут огромное поле для дискуссии, но мне кажется, она будет бесполезной, нес па?
Re[13]: ФП и многоядерная архитектура
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.08 14:31
Оценка: +1 :)
Здравствуйте, IT, Вы писали:

IT>Ну-ка, ну-ка? Что у нас за той дверью?


С++!
Re[21]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 16:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Вот ты явно пишешь на С++. Тебе знакомы Boost.Function, Boost: Function, Bind, Lambda?

E>>Смотрел, но не использую. А как это связпно с темой?

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

А ты не о лабуде попробуй писать, а по делу. LISP я одно время использовал довольно много. Потом отказался от него в сторону своего языка. Тоже довольно мощного, в некотором смысле...
VD>Попробуй прочесть о парадоксе блаба
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.
. Может быть это подтолкнет тебя на изучение того, что ты пытаешся обсуждать не имея базы.


Ну и что это всё даёт, если очистить от шелухи? Что LISP программа может сама себя редактировать?
Ну у меня есть саморедактирующийся код, например. То есть в С++ программе есть данные и есть функции. И данные компи лируются в функции, которые потом исполняются. Конечно на LISP это сделать было бы проще, зато на асме работает быстрее... И что?

С другой стороны я при разработке на С++ широко использую генераторы кода. И тоже всё хорошо работает. И что?
И главное, какое отношение это всё имеет к функциональности? Сама суть ФЯ не в том, что на нём можно самомодифицируемый код писать, а в том, что алгорим выражается при помощи неизменных и неразделяемых данных и взаимосвязей между ними. Во всяком случае AFAIK.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Просто я помогаю не себе, а людям...
От: Erop Россия  
Дата: 26.11.08 16:43
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>А ты это сказать не можешь. Потому что тебе сравнивать не с чем. Например, если ты всю жизнь ездил на совковых машинах (жугулях, скажем), то когда тебе скажут, что ездить практически на любой иномарке комфортнее и легче, то ты с большой вероятностью ответишь, что тебе и так хорош. Доказать тебе будет ничего не возможно, если конечно ты сам не попробуешь альтернативу.


Ну тут уже кто-то справедливо замечал, что машина с 100 л. с. позволяет ездить комфортно и прекрасно. А как только пересядешь на 200 л. с., сразу понимаешь, что и 200 -- это очень мало

Это кстати очень показательная история. Просто когда ты ездишь на тачке 100 л. с. -- то твоя цель доехать, а как только пересаживаешься на 200+ -- то твоя цель меняется. Теперь тебе важно не доехать, а круто покататься. И в С++ и в современных, можных языках такой эффект тоже присутсвует. Одним хочется решить задачу, скажем разработать систему управления С-300. А другим хочется решать задачу максимально прикольным способом. Если в целом пользя от деятельности состоит в решении задач, а не в самом процессе решения, то первые обычно эффективнее.

VD>Вообще, я тебе гарантирую, что если ты не перейдешь в стадию Дворкина, то тебе через некоторое время будет очень стыдно за свои слова. Так что мой тебе совет, чем спорить о вкусе устриц с теми кто их пробовал, возьми и попробуй их сам. Уверяю тебя, что даже в С++ ты еще не знаешь огого как много. А уж если выйти за рамки этой песочницы, то тебе откроется огромный мир. Намного более интересный.


1) Не надо всё время оскорблять коллег. Дворкин конкретно в этом щамечании не при чём. Зачем ты его мокаешь?
2) Я думаю, что твои гарантии ничего не стоит, так как стыдно мне не будет. Я знаю, что я говорю. Интересный мир мне уже давно открылся. Много лет назад, когда я понял, что прототип сложной ИИ проги удобно писать на PROLOG. Но для коммерческой разработки на PROLOG можно написать только прототип, к сожалению. Просто потому, что проблемы при разработке совсем не там возникают, где их помогает решать PROLOG. А ещё более интересный и прекрасный мир открылся мне, когда я осознал сколько миллионов людей с радостью пользуются результатами моего труда. И это, IMHO, намного важнее той радости, которую кому-то доставляет кодирование на любом языке...
Мало того, я и сейчас использую и декларативные и функциональные языки. И даже отчасти их разарбатываю. Не такие продивнутые и общего назначения, как известные тебе, но зато вполне хорошо заточенные под свои задачи. Но в конце концов всех этих штук стоит исполнение на компе, и С/С++ предоставляет очень удобную абстракцию исполнительной среды компа. В терминах С++ удобно думать о том, как компьютер исполняет мою программу...
Особенно, если трудности кодирования несущественны по сравнению со сложностью разработки алгоритмов...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 16:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Чуть не забыл — тебе сюда
Автор: AndrewVK
Дата: 03.02.08
.

Опять длинами программ меряться будем?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 17:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>...Скажем если строить автомат для грамматики с большим количеством распознаваемых идентификаторов, то производительность очень быстро упрется в скорость доступа к памяти, так как и таблицы и функция со свитчем будут иметь огромные размеры (вылетающие за пределы кэша). Так что с точки производительности выгоднее опять таки решить проблему алгоритмически. Написать одно граматическое правило которое распознает идетификатор (скажем [a-zA-z][a-zA-z0-9]+), а конкретные ключевые слова проверять по хэш-таблицы. Но такие оптимизации — это уже эвристики, которые автоматически (алгоритмически) не делаются.


по идее всё должно быстро сийтись к битовой строке на каждую букву алфавита, и оптимизировать можно эти строки.
Ну а можно, конечно, расширить язык регэкспов термом "слово из словаря", правда не так эффективно будет недетерминированность КА отрабатываться, зато в словаре может быть реально много слов. Например весь русский язык...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[18]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 17:17
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>На досуге поинтересуйся судьбой ключевого слова register в C++, который ты тут всуе поминаешь.

S>И попробуй проэкстраполировать эту судьбу на другие "дыры, сквозь которые видна аппаратура"

Ну какие-то задачи удаётся автоматизировать. Но сильно не все.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[18]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 17:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

E>>Обычно он очень дырявый оказывается. Вообще всё так странно устроено, что для эффективной работы часто требуются дыры в слое абстракций. С и С++ скорее всего так популярны именно из-за дырявости своих обстракций. Свозь эти дыры всюду хорошо и близко доступна аппаратура.

AVK>Не уловил мысль

Ну C++ можно воспринимать как некую виртуальную машину высокго уровня. Можно, например, написать интерпретатор С++, который проверяет корректность всех указателей и т. п., но на практике частенько бывает нужно воспользоваться какими-то особенностями реализации, для решения практических задач...

E>>Обрати, кстати, внимание, что слой абстракций "куды" тоже довольно таки дырявый...

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

Хороший пример -- FORTRAN, который умел правильно написанную программу компилить и на крэй и на х86. Но при этом тебе всё равно надо было писать такие алгоритмы, которые ложатся на архитектуру...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[20]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 17:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Было мне 20 с чем-то лет. И вот на машине с памятью 32 КСлова (слово — 48 бит) надо было...


В названии магинки число "6" часом не присутствовало?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[19]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 18:48
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну C++ можно воспринимать как некую виртуальную машину высокго уровня.


Можно. Но разве от этого что то изменится?

E> Можно, например, написать интерпретатор С++, который проверяет корректность всех указателей и т. п.


Нельзя, семантика С++ не позволяет. Чтобы позволяла нужен safe код.

E>Ну понятно, что хочется чтобы программировать "КУДУ" было бы проще.


Ну вот поэтому и существуют такие технологии как linq. Да да, еще один слой абстракций.

E> Но пока что такая вот "дырявая абстракция" позволяет добиться намного лучших результатов...


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

E>Хороший пример -- FORTRAN, который умел правильно написанную программу компилить и на крэй и на х86.


Хороший. Потому что FORTRAN намного абстрактнее С++, и, как следствие, позволяет намного больше оптимизатору.

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


Потому что уровень абстракций недостаточен . Вот для SQL уже не надо учитывать архитектуру платформы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[24]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 18:48
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Вложенный?


Не обязательно вложенный. Есть еще операции над отношениями (union/except/intersect), CTE и т.п.

L> Ладно, я понял твою мысль, спасибо за разъяснения. В общем, тут огромное поле для дискуссии, но мне кажется, она будет бесполезной, нес па?


Будет, если спорить о терминологии. А по сути SQL вполне себе специализированный ФП, хотя и сильно отличающийся от ML-семейства.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[19]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 18:48
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну какие-то задачи удаётся автоматизировать. Но сильно не все.


И какой из этого вывод?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[20]: ФП и многоядерная архитектура
От: Cyberax Марс  
Дата: 26.11.08 18:52
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

E>>Хороший пример -- FORTRAN, который умел правильно написанную программу компилить и на крэй и на х86.

AVK>Хороший. Потому что FORTRAN намного абстрактнее С++, и, как следствие, позволяет намного больше оптимизатору.
????
Фортран — он самый неабстрактный язык, который только можно придумать (ну разве что Brainf**k неабстрактнее). Оптимизатору там простор из-за того, что сам язык очень ограничен, и ты вынужден строить программ из оптимизаторно-дружественных примитивов.
Sapienti sat!
Re[20]: ФП и многоядерная архитектура
От: Erop Россия  
Дата: 26.11.08 18:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

E>>Ну C++ можно воспринимать как некую виртуальную машину высокго уровня.

AVK>Можно. Но разве от этого что то изменится?

Если ты хочешь понять, что я имел в виду, то я пояснил очень подробно.
А если ты хочешь спорить -- то спорь по существу, а не с примерами и объяснениями...


На "КУДЕ" есть очень даже прикольные проги. Просто по маркетинговым соображениям с ней лучше не связываться
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[21]: ФП и многоядерная архитектура
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.08 19:00
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Фортран — он самый неабстрактный язык, который только можно придумать


Да? А как нибудь обосновать?

C> Оптимизатору там простор из-за того, что сам язык очень ограничен, и ты вынужден строить программ из оптимизаторно-дружественных примитивов.


Это и есть высокая степень абстракции.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.