Re[16]: Являются ли макросы свидетельством недостаточной выр
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 11.07.07 12:53
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>PackedString что-ли? Это возможно? К ним же стандартные списковые функции применять нельзя. (Ну почему в Haskell нет класса типов List?!) И придется слишком многое переписывать, нет? Это более чем сомнительное удовольствие.


Нет. PackedString прошлый век
Сейчас есть BinaryString.

K>К тому же лично мне не понятно, почему Parsec так написан? Вообще-то производительность лексера и парсера имеет значение. Это же вроде бы не просто proof-of-concept, он позиционируется как построитель парсеров пригодный для реального использования. Кроме того, он еще и объявлен быстрым. Слово "fast" — даже в заголовок описания вынесено. Это шутка?


Я не измерял производительность Parsec.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Являются ли макросы свидетельством недостаточной выр
От: Klapaucius  
Дата: 11.07.07 13:01
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Нет. PackedString прошлый век

L>Сейчас есть BinaryString.

Это что-то ужасно секретное, да? Поиск в Google и на haskell.org ничего не дал.
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[18]: Являются ли макросы свидетельством недостаточной выр
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 11.07.07 13:24
Оценка: 1 (1)
Здравствуйте, Klapaucius, Вы писали:

L>>Нет. PackedString прошлый век

L>>Сейчас есть BinaryString.

K>Это что-то ужасно секретное, да? Поиск в Google и на haskell.org ничего не дал.


Ой сорри. Я имел в виду ByteString (Duncan Coutts, Don Stewart)

Начать можно отсюда: Data.ByteString
Основная статья: Rewriting Haskell Strings
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Являются ли макросы свидетельством недостаточной выра
От: jazzer Россия Skype: enerjazzer
Дата: 11.07.07 14:14
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:

D>2. Является ли не нужной ложка если в прниципе суп можно хлебать через край тарелки, а гущу есть вилкой?


Ты, Влад, возможно, не поверишь, но японцы суп именно так и едят, причем вместо вилки — палочки
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[18]: Являются ли макросы свидетельством недостаточной выр
От: jazzer Россия Skype: enerjazzer
Дата: 11.07.07 16:28
Оценка: :)
Здравствуйте, Klapaucius, Вы писали:

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


L>>Нет. PackedString прошлый век

L>>Сейчас есть BinaryString.

K>Это что-то ужасно секретное, да? Поиск в Google и на haskell.org ничего не дал.


Значит, Google и иже с ним — тоже прошлый век
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Являются ли макросы свидетельством недостаточной выра
От: IT Россия linq2db.com
Дата: 11.07.07 16:46
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Ты, Влад, возможно, не поверишь, но японцы суп именно так и едят, причем вместо вилки — палочки


Ты уверен насчёт супа? Что-то я ни разу не видел в японском ресторане что бы кто-то ел миса-суп палочками. Для этого выдаётся специально обученный прибор.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Являются ли макросы свидетельством недостаточной выра
От: jazzer Россия Skype: enerjazzer
Дата: 11.07.07 16:59
Оценка: :)
Здравствуйте, IT, Вы писали:

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


J>>Ты, Влад, возможно, не поверишь, но японцы суп именно так и едят, причем вместо вилки — палочки


IT>Ты уверен насчёт супа? Что-то я ни разу не видел в японском ресторане что бы кто-то ел миса-суп палочками. Для этого выдаётся специально обученный прибор.


Мой профайл будет тебе ответом

В России вообще много чего странного можно встретить в "японских" ресторанах.
Например, из бросающегося в глаза — там перед едой приносят полотенца и тут же, как только вытер руки, их забирают обратно. Видимо, дефицит у них полотенец
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Являются ли макросы свидетельством недостаточной выра
От: IT Россия linq2db.com
Дата: 11.07.07 17:16
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Мой профайл будет тебе ответом


Ага. Ну тогда объяни мне как есть миса-суп палочками, если всё, что можно выловить там палочкой — это пара листов какой-то зелени?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Являются ли макросы свидетельством недостаточной выра
От: Константин Л. Франция  
Дата: 11.07.07 21:46
Оценка: :))
Здравствуйте, IT, Вы писали:

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


J>>Мой профайл будет тебе ответом


IT>Ага. Ну тогда объяни мне как есть миса-суп палочками, если всё, что можно выловить там палочкой — это пара листов какой-то зелени?


Ха. А ты думал. Скорость поедания супа палками сравнима со скоростью написания немерле компайлера на с++. Так что все как бы правильно.
Re[14]: Являются ли макросы свидетельством недостаточной выр
От: c-smile Канада http://terrainformatica.com
Дата: 11.07.07 22:44
Оценка: 8 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, c-smile, Вы писали:


CS>>Я согласен с тем что язык программирвания должен быть адекватен задаче.

CS>>Но в системах где язык строится под задачу мы имеем проблему обучения — освоение превращается в нетривиальную и постоянно меняющуюся задачу.

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




Да пожалуйста:
http://terrainformatica.com/sciter
http://terrainformatica.com/tiscript
http://c-smile.sourceforge.net/

VD>DSL-и принципиально проще чем унивирсальные языки. И учить из заранее не надо. Когда человек сталкивается с новой предметной областью, то изучение специального микро-языка является самым малым, что ему требуется изучить. Причем если ему не прийдестя учить этот микро-яызык, то он будет изучать библиотеки облегчающие решение задачи (что как минимум не проще), а потом пытаться писать код которые будет совершенно точно занчительно более сложным и ниуклюжим нежели код на специализированном языке. А если он решит не использовать ни ДСЛ-и, ни библиотеки, то он будет вынжден или создать библиотеки самостоятельно, или вообще нагородить море дублирующегося кода и с вероятностью 99% завалить проект.


Да ты понимаешь... для нового человека в команде много чего учить приходится. Библиотеки , термины, предметную область...
И очень сильно сомневаюсь что самодельный language extension содержит при том достаточно документации для освоения.

CS>>В результате получается...


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




CS>>Я думаю что можно говорить о том что BISON/YACC + С есть некий супер-мета-язык.


VD>Вообще-то язык называется BNF. Наличие вставок на любм языке никак не меняют этот язык. Хорошо, что ты понимаешь, что BNF — это классический пример DSL-я. Но жаль, что ты не понимашь, что ты не понимашь, что это просто частный их случай.


Входной язык бизона есть именно тот самый микс из синтаксическиъ метаопредений близких к Backus и Naur нотации *плюс* определения хост языка С или С++. Собственноо примерно то же что их себя представляет входной язык Nemerle.

CS>>Такой подход в котором мухи с котлетами отдельно подчас более честный что-ли.


VD>А что там отделено, то? Там как раз довольно глупо все намешано. Вот погляди
Автор: konsoletyper
Дата: 31.03.07
как тоже самое реализовал konsoletyper на Немерле. Вот это действительно отделение мух от котлет. С помощью EBNF описывается чистая грамматика. На ее базе генерируется набор алгебраических типов (вариантов), и уже они разбираются прикладной логикой, которая и делает все что нужно. Это позволяет читать чистую грамматику с одной стороны, и обрабатывать любые тонкости разобранного представления с другой. То есть, действительно, котлеты и мухи отделены по полной порограмме.


"как тоже самое" — что конкретно то же саме? Bison на Nemerle?
А зачем?

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


Я ничего не понял... чем это все принципиально лучше прогона файла граматики через Бизон и показа тех же ошибок в IDE или просто в консоли?

На вот тебе http://blogs.msdn.com/devdev/archive/2005/09/13/465034.aspx статью про то как интегрировать Бизон в VS если так уж надо.

VD>BISON/YACC нервно курят в сторнке. Он просто прошлый век. С подобным решением может тягаться только специализированная IDE вроде той, что разрабатывается для ANTLR 3. Вот только трудозатраты тут уже несопоставимы. Если для парсинга такую IDE написать могут, то для прикладной задачи — это уже будет совершенно неподемная задача. А тут все в автомате. Да и специализированную поддержку для решения на макросах тоже можно сделать. Причем это будет значительно проще нежели создавать специализированную IDE с нуля.


IDE для разаработки языков программирования?
... не, ну наверное кому-нибудь оно надо... ЯП-мазохистам например которые по языку в неделю выпускают. Но я таких даже и не знаю где искать.

Чего-то ты как-то неадекватно все воспринимаешь. YACC и всяко разных других Compiler Compilers было, есть и будет.
См. http://en.wikipedia.org/wiki/List_of_compiler-compilers . Или это я опять на твою больну мозоль граблей наступил?
Re[6]: Являются ли макросы свидетельством недостаточной выра
От: jazzer Россия Skype: enerjazzer
Дата: 11.07.07 23:46
Оценка:
Здравствуйте, IT, Вы писали:

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


J>>Мой профайл будет тебе ответом


IT>Ага. Ну тогда объяни мне как есть миса-суп палочками, если всё, что можно выловить там палочкой — это пара листов какой-то зелени?


так Влад же сказал, как Описал, так сказать, в деталях, только вилку с палочками перепутал.

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

А еще тут палочками едят макароны.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[7]: Являются ли макросы свидетельством недостаточной выра
От: IT Россия linq2db.com
Дата: 12.07.07 00:52
Оценка: :)))
Здравствуйте, Константин Л., Вы писали:

КЛ>Ха. А ты думал. Скорость поедания супа палками сравнима со скоростью написания немерле компайлера на с++. Так что все как бы правильно.


Т.е. они макают палки в суп, а потом облизывают их? Но ведь это же ужасно не эффективно
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Являются ли макросы свидетельством недостаточной выра
От: A.Lokotkov Россия http://www.linkedin.com/pub/alexander-lokotkov/a/701/625
Дата: 12.07.07 06:07
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Мой тезис говорит о том, что макросистемы — темная сторона силы. Настоящий джедай управится и без них...


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

А показано ниже описание одной из подсистем в некотором хидере, который включается много раз с разными определениями одних и тех же макро перед каждым включением. Каждый джедай занимается своей подсистемой, реализуя функции для каждой вершины ее графа состояний.
#include <sms/fssysasp.h>
// Вершины графа состояний.
// Для каждого состояния подсистемы определяется некий набор функций, вызываемых движком.
F_STATES_LIST_BEGIN(FCfg)
  F_DEFINE_LAYER_STATE(FCfg, Init, INITIAL_STATE)
  F_DEFINE_LAYER_STATE(FCfg, Load, NORMAL_STATE)
  F_DEFINE_LAYER_STATE(FCfg, Config, NORMAL_STATE)
  F_DEFINE_LAYER_STATE(FCfg, Error, NORMAL_STATE)
  F_DEFINE_LAYER_STATE(FCfg, Wait, NORMAL_STATE)
F_STATES_LIST_END(FCfg)
// Ребра графа состояний
F_EDGES_LIST_BEGIN(FCfg)
  F_DEFINE_EDGE(FCfg, Init, Load)
  F_DEFINE_EDGE(FCfg, Load, Config)
  F_DEFINE_EDGE(FCfg, Load, Wait)
  F_DEFINE_EDGE(FCfg, Config, Wait)
  F_DEFINE_EDGE(FCfg, Config, Error)
  F_DEFINE_EDGE(FCfg, Error, Load)
  F_DEFINE_EDGE(FCfg, Wait, Load)
F_EDGES_LIST_END(FCfg)

// Аллокаторы данной подсистемы
F_ALLOCATORS_LIST_BEGIN(FCfg)
  F_DEFINE_DEFAULT_IMMORTAL_ALLOCATOR(FCfg, CfgFixedMemory, 1024, NONE_SAFE_ALLOCATOR)
  //F_DEFINE_DEFAULT_SMALL_HEAP_ALLOCATOR(FCfg, CfgParserMemory, NONE_SAFE_ALLOCATOR, 1024, 4, 50)
F_ALLOCATORS_LIST_END(FCfg)

// Декларация подсистемы
F_DECLARE_SUBSYSTEM_LAYER(FCfg, sms_policy_abort_all, CONSOLE_UNDEFINED, 0)

// Коды возврата данной подсистемы
START_RETCODE_TABLE(F_CFGI_RESULT)
  //DEFINE_RETCODE(F_CFGI_RESULT, NO_CLIENTS)
  DEFINE_RETCODE(F_CFGI_RESULT, SERVER_INIT_FAILED)
  DEFINE_RETCODE(F_CFGI_RESULT, SERVER_DESCRIPTOR_FAILURE)
  DEFINE_RETCODE(F_CFGI_RESULT, NO_MORE_RESOURCES)
  //... etc.
  DEFINE_RETCODE(F_CFGI_RESULT, BATCH_TIMEOUT)
END_RETCODE_TABLE(F_CFGI_RESULT)


Все подсистемы склеиваются в систему в головном (включемом многократно) хидере верховным джедаем примерно так:

#include <sms/fsystasp.h>
// Таблица зависимостей между состояниями разных подсистем,
// чтобы подсистемы согласованно ходили по графу ничего не зная друг о друге
F_SYSTEM_DEPENDENCY_TABLE_BEGIN(CPM705)
// FCfg пойти в Init, когда остальные достигнут Ready
  F_STATE_DEPENDENCY_BEGIN(AppRT2, Ready)
    F_DEFINE_DEPENDANT(FCfg, Init)
  F_STATE_DEPENDENCY_END(AppRT2, Ready)

  F_STATE_DEPENDENCY_BEGIN(ModbusSrv, Ready)
    F_DEFINE_DEPENDANT(FCfg, Init)
  F_STATE_DEPENDENCY_END(ModbusSrv, Ready)

// Всем пойти в Config, когда FCfg пойдет в Config
  F_STATE_DEPENDENCY_BEGIN(FCfg, Config)
    F_DEFINE_DEPENDANT(AppRT2, Config)
    F_DEFINE_DEPENDANT(ModbusSrv, Config)
  F_STATE_DEPENDENCY_END(FCfg, Config)

// Всем пойти в Run, когда FCfg пойдет в Wait
  F_STATE_DEPENDENCY_BEGIN(FCfg, Wait)
    F_DEFINE_DEPENDANT(AppRT2, Run)
    F_DEFINE_DEPENDANT(ModbusSrv, Run)
  F_STATE_DEPENDENCY_END(FCfg, Wait)
F_SYSTEM_DEPENDENCY_TABLE_END(CPM705)

// Собственно объединение списка подсистем в систему
F_DECLARE_STM_SYSTEM_BEGIN(CPM705, NULL, NULL, NULL, NULL)
  F_INCLUDE_STM_SUBSYSTEM(FCfg)
  F_INCLUDE_STM_SUBSYSTEM(AppRT2)
  F_INCLUDE_STM_SUBSYSTEM(ModbusSrv)
  F_INCLUDE_STM_SUBSYSTEM(RPC)
F_DECLARE_STM_SYSTEM_END(CPM705)

// Конфигуратор системы
F_DECLARE_CFG_SERVER_BEGIN(AppRT2, CfgForceSafe, ExternalCfg, ParseOnServer, 0)
  F_INCLUDE_CFG_CLIENT(AppRT2)
  F_INCLUDE_CFG_CLIENT(ModbusSrv)
F_DECLARE_CFG_SERVER_END(AppRT2)


Ясен пальчик(с), что писать всю эту ахинею руками не очень обязательно, -- можно сделать тул, позволяющий рисовать графы и генерить все, что нужно автоматом. А также верифицировать и т.п.
bloß it hudla
Re[5]: Являются ли макросы свидетельством недостаточной выра
От: deniok Россия  
Дата: 12.07.07 06:30
Оценка:
Здравствуйте, A.Lokotkov, Вы писали:

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


G>>Мой тезис говорит о том, что макросистемы — темная сторона силы. Настоящий джедай управится и без них...


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


[skiped]

Эта не та же группа джедаев, которая разарабатывала сложную многоаспектную MFC?

Что здесь (даже в рамках С++) нельзя сделать на шаблонах?
Re[6]: Являются ли макросы свидетельством недостаточной выра
От: A.Lokotkov Россия http://www.linkedin.com/pub/alexander-lokotkov/a/701/625
Дата: 12.07.07 06:37
Оценка:
Здравствуйте, deniok, Вы писали:

D>Эта не та же группа джедаев, которая разарабатывала сложную многоаспектную MFC?


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

D>Что здесь (даже в рамках С++) нельзя сделать на шаблонах?


Не вдаваясь в детали скажу, что вся эта муть должна быть совместима с C. C++, увы, имеется не для всех целевых платформ.
bloß it hudla
Re[7]: Являются ли макросы свидетельством недостаточной выра
От: deniok Россия  
Дата: 12.07.07 06:50
Оценка: +2
Здравствуйте, A.Lokotkov, Вы писали:

AL>Не вдаваясь в детали скажу, что вся эта муть должна быть совместима с C. C++, увы, имеется не для всех целевых платформ.


То есть в контексте обсуждаемой темы делаем вывод: макросы C являются свидетельством недостаточной выразительности языка C?
Re[8]: Являются ли макросы свидетельством недостаточной выра
От: A.Lokotkov Россия http://www.linkedin.com/pub/alexander-lokotkov/a/701/625
Дата: 12.07.07 07:09
Оценка:
Здравствуйте, deniok, Вы писали:

D>То есть в контексте обсуждаемой темы делаем вывод: макросы C являются свидетельством недостаточной выразительности языка C?


Ну, на плюсовых шаблонах также довольно проблематично группировать и совместно обрабатывать отдельные аспекты разных подсистем (сразу говорю, что прямо сейчас недосуг давать строгие определения понятий "подсистема", "система" и "аспект"). Здесь можно почитать немного о предмете.
bloß it hudla
Re[8]: Являются ли макросы свидетельством недостаточной выра
От: Константин Л. Франция  
Дата: 12.07.07 09:07
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Константин Л., Вы писали:


КЛ>>Ха. А ты думал. Скорость поедания супа палками сравнима со скоростью написания немерле компайлера на с++. Так что все как бы правильно.


IT>Т.е. они макают палки в суп, а потом облизывают их? Но ведь это же ужасно не эффективно


как и с++, я же сказал
Re[19]: Являются ли макросы свидетельством недостаточной выр
От: Klapaucius  
Дата: 12.07.07 12:03
Оценка: +2 :))) :))) :)
Здравствуйте, jazzer, Вы писали:

L>>>Нет. PackedString прошлый век

L>>>Сейчас есть BinaryString.
K>>Это что-то ужасно секретное, да? Поиск в Google и на haskell.org ничего не дал.
J>Значит, Google и иже с ним — тоже прошлый век

Я всегда знал, что lomeo — человек далекого будущего.
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[7]: Являются ли макросы свидетельством недостаточной выра
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 12.07.07 12:17
Оценка:
jazzer,

J>Суть в том, что плошка должна быть диаметром где-то в полторы-две обычных чашки.

J>Поэтому пить из нее очень удобно (ты в детстве пил чай из блюдца?), а палочки нужны как раз для этой самой пары листов и для остального, что могут в этот суп кинуть. Напимер, могут накидать малюсеньких (1 см диаметром) ракушек — палочками тельце моллюска с раковины снимается элементарно (), хотел бы я посмотреть, как это будет проделано ложкой

J>А еще тут палочками едят макароны.


Палочками офигенно удобно есть чипсы и холодец
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.