|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
Валерий Выхованец защитил докторскую диссертацию «Синтез эффективных математических моделей дискретной обработки данных на основе алгебраической и понятийной декомпозиции предметной области». Предлагается новая методология формализации знаний – на основе понятийного анализа – и соответствующая ей технология программирования http://valery.vykhovanets.ru/Texts/2006/Vykhovanets2006_6.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2008, 16:45 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
А попроще никакк нельзя? Времени читать диссертационных 469 страниц ну никак нет. Коллега ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2008, 19:33 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
Проще?.. Если проще, то так: на каком языке удобнее описать решение стоящей задачи, такой и будем использовать. Если таковой не обнаружится, то создадим его. Технология отличается от Domain Specific Language (DSL) тем, что удается описывать семантику произвольных языковых конструкций, опять же, на удобной для этого языке (т.е. решаем новую задачу, или выполняем семантическую рекурсию). А в подходах DSL (SymADE, Intentional Programming, JetBrains, Nemerle и др.) все, в конечном итоге, описывается на некотором фиксированном (си-подобном) языке. Пожалуй, еще фишка в том, что используется формализация системы понятий на основе четерых фундаментальных абстракций: т.е. типы связей между понятиями не несут семантической нагрузки, а потому не зависят от решаемой задачи. Это позволяет компилятору ничего не знать о предметной области и решаемой задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 11:48 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
С практической точки зрения - это попытка сделать нечто лучшеe, чем UML, ER? (Бегло посмотрел текст). Насколько знаком с областью языков спецификаций - побеждают те языки, у которых больше отношений [полезность]/[сложность]. (Товарная аналогия - качество/цена). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 13:03 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
Эти изыскания по созданию универсального языка спецификаций напоминают изыскания по созданию "вечного двигателя". Такой Perpetuum mobile в IT. Чтобы эдак на естественного языке писать, а компьютер понимал и выполнял. P.S. В одной из организ., где работал раньше, пытались применить язык Z-спецификаций Z , придуманный в Oxford University. Хотя это не на естественном языка, но на языке математических нотаций. Вообще в Штатах, Канаде и Европе даже есть софт для написания спецификаций на Z и даже трансляции Z в языки программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 13:34 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
К "перпетуум мобиле ИТ" Противоречит "закону сохрания смысла": Сколько смысла сможешь выразить формально, столько и воплотится компьютерно. А естественные языки неформальны по сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 13:59 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
anonimousВалерий Выхованец защитил докторскую диссертацию «Синтез эффективных математических моделей дискретной обработки данных на основе алгебраической и понятийной декомпозиции предметной области». Предлагается новая методология формализации знаний – на основе понятийного анализа – и соответствующая ей технология программирования http://valery.vykhovanets.ru/Texts/2006/Vykhovanets2006_6.pdf Валерий ! Поздравляю - для кандидатской сойдет :-) Но категорически не согласен насчет привязки знаний к технологии программирования. В принципе - любой язык, удовлетворяющий правилам Тьюринга может быть пригоден для работы. Есть даже ежегодные соревнования - придумай любой дурацкий язык программирования - например который исполняется справа налево, сверху вниз, или по двумерной плоскости, лексика которого состоит из максимально коротких слов или длинных, матерных или в рифме и пр.. - если он проходит через проверки Тьюринга - на нем можно писать все что угодно. А вот по поводу синтеза знаний, искуственного интеллекта - похоже пока затык. Человеческое мышление образное, иррациональное, вероятностное, не всегда подчиняется диалектической логике Для синтеза знаний как минимум нужно реализовать 3 важнейших свойства мышление - обобщение, упущение и искажение. А это с жесткой машинной логикой вяжется плохо... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 14:46 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
bantikВалерий ! Поздравляю - для кандидатской сойдет :-) Извиняюсь, не заметил - докторская. А какой индекс цитируемости то ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 14:48 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
По поводу природы мышления человека - действительно "затык". Однако наш брат программист вынужден свое (вернее заказчика) мышление перевести в формальную систему. Вот тут и становится невозможным "образное, иррациональное, вероятностное, не всегда подчиняется диалектической логике" мышление. Требуется строго и точно... Прав AlexandrPlus - "Сколько смысла сможешь выразить формально, столько и воплотится компьютерно". Спрашивается, как помочь этому процессу? Давайте все выражать на языке Эллочки Щукиной (Ильф и Петров, 12 стульев), на котором, собственно, и говорят современные программисты. Или попробуем развивать выразительные возможности используемых языков. Можно закрыть глаза на эту проблему, однако основной вектор развития технологий программирования направлен именно в эту сторону (язык Z спецификаций в Оксфорде, система Масима Кизуба SymADE, Intentional Programming Чарзльза Симони, meta-programming system питерских JetBrains, Nemerle и др.) Многие возражения понятны - психологически трудно согласится с потерей стольких лет, потраченных на изучение неестественного языка низкого уровня (С, С++, С#, Java, и др.). Однако, история показывает, что все меняется. Изменяются и языки программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 15:32 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
vkoaes... программист вынужден свое (вернее заказчика) мышление перевести в формальную систему. Вот тут и становится невозможным "образное, иррациональное, вероятностное, не всегда подчиняется диалектической логике" мышление. Требуется строго и точно... Заказчик скорее особо не мыслит, а выражает желания: ЭСКИЗ ТЕХН. ЗАДАНИЯ. Потом программисты переписывают технич. задание, приведя иррациональные пожелания к техническим возможностям (и своим возможностям). Программирование само неформально, но продукт программирования формальная запись. Также и жизнь - все, кто может думать, думают неформально, но продукт - формальные действия, движения, ... vkoaes Спрашивается, как помочь этому процессу? Давайте все выражать на языке Эллочки Щукиной (Ильф и Петров, 12 стульев), на котором, собственно, и говорят современные программисты. Или попробуем развивать выразительные возможности используемых языков. Можно закрыть глаза на эту проблему, однако основной вектор развития технологий программирования направлен именно в эту сторону (язык Z спецификаций в Оксфорде, система Масима Кизуба SymADE, Intentional Programming Чарзльза Симони, meta-programming system питерских JetBrains, Nemerle и др.) А у меня в ВУЗ-е был курс, где программировали на 0 и 1. Программа - цепочка 0 и 1. Это с какой-то точки зрения язык Эллочки-людоедки! (Хотя для составления такой программы использовались методы дискретной математики - ПОМОЩЬ). Но ведь Элочка по жизни была не такой уж дурой. (Может быть она мощно думает в своих слово-невыразимых формах.) Она с помощью своих 0 и 1 (не более десятка слов) тоже строила сложные мысли-поступки-программы своего поведения. Плюс неформальный эмоциональный фон. vkoaes Многие возражения понятны - психологически трудно согласится с потерей стольких лет, потраченных на изучение неестественного языка низкого уровня (С, С++, С#, Java, и др.). Однако, история показывает, что все меняется. Изменяются и языки программирования. А разве потеря - изучение ассемблеров? Вообще всякое знание - разве потеря? Потеря наверно тогда, когда при "деланиях и думаниях" не приобретены новые знания и новый опыт. Delphi С++ Java останутся как и остались ассемблеры, которые для определенных задач незаменимы. Так и Delphi C++ Java. Диалеты ЛИСП-а и Пролога красивы, но не практичны для создания полноценных ИС. Может быть ПОКА непрактичны. Nemerle красиво, но ещё непрактично из-за того, что метапрограммно не всем удается думать, а ведь надо еще ошибки искать, разбираться почему сбои, стыковаться с драйверами периферии, ... Так и остальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2009, 16:21 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
У AlexandrPlus нашел ключевую фразу, которая, по-моему, отличает подход в диссертации от других - "метапрограммно не всем удается думать". А зачем, спрашивается, как-то неестественно и особым образом думать при создании программ? Каждая задача, после ее изучения, создает неповторимый мир представлений и уточненных (конкретизированных) понятий. Сейчас эту неповторимость пытаются втистуть в универсальность опрераторов языка программирования (в диссертации это явление названо семантическим разрывом). Может не следует этого делать, а создать в процессе программирования такой же неповторимый язык, на котором решаемая задача будет описана просто и ясно. Конечно, это вызывает определенный "напряг" у программиста, требует от него другой парадигмы постановки и решения задач. И этому тоже надо учиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 09:32 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
AlexandrPlus Диалеты ЛИСП-а и Пролога красивы, но не практичны для создания полноценных ИС. Может быть ПОКА непрактичны. Сам думал так пока не убедился в обратном. ИМХО - весьма практичны. В какой то степени гораздо более, чем традиционные языки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 11:42 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
vkoaesУ AlexandrPlus нашел ключевую фразу, которая, по-моему, отличает подход в диссертации от других - "метапрограммно не всем удается думать". А зачем, спрашивается, как-то неестественно и особым образом думать при создании программ? Каждая задача, после ее изучения, создает неповторимый мир представлений и уточненных (конкретизированных) понятий. Сейчас эту неповторимость пытаются втистуть в универсальность опрераторов языка программирования (в диссертации это явление названо семантическим разрывом). Может не следует этого делать, а создать в процессе программирования такой же неповторимый язык, на котором решаемая задача будет описана просто и ясно. Конечно, это вызывает определенный "напряг" у программиста, требует от него другой парадигмы постановки и решения задач. И этому тоже надо учиться. ?? в тексте - записывается на русском языке структура и алгоритм решения задачи, называя это понятийным анализом, потом под это якобы строится некоторая виртуальная машина - алгоритм реализуется на машине Тьюринга или нормальных алгоритмах Маркова или на ассемблере Собственно просто ПРОГРАММИРУЕТСЯ эта виртуальная машина. Примитивы команд для всех задач виртуальной машины одни и теже - примитивы. Так можно напрямую программировать виртуальную машину Java без Java или виртуальную машину Net без С# на языке CRL. ???????? обман или непонимание чего ????????? P.S. Языки спецификаций - это приближение к естественному языку настолько насколько могут, чтобы остаться формальными для возможности автоматического отображения в программный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 16:07 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
AlexandrPlus ???????? обман или непонимание чего ????????? Горазд наш народ, не разобравшись, сразу ярлыки вешать... Что сразу заметно, так то, что любая программа на любом языке - это "просто" программирование виртаульной (или реальной) машины. Другое ничего выполняться не может. А что используется для такого программирования - некоторый язык, назовем его алгоритмическим, позволяющим повысит уровень абстракции - оперировать не байтами, не командами, не стеками и т.п., а типами, операциями (классами, методами), и использовать абстракций наследования и агрегации для конструирования новых типов (классов). Для этого сидит целый штат "языковых" программистов, занимающийся разработкой компиляторов - задают, отлаживают, исследуют правила перевода программ с алгоритмических языков в машинные - описывают семантику языка. Предлагается их исключить как класс в указанном смысле - пусть прикладной программист сам пишет себе язык. Для этого не надо продвинутости языковых программистов - определение прикладного языка стало доступно на прикладном уровне. Одноко, как справедливо указано AlexandrPlus, все делается на виртуальной машине, а значит, если прикладной программист не использует заранее созданных прикладных подъязыков (читай формализованных прикладных знаний), то семантику некоторых операторов он должен определить через команды виртуальной машины - иного не дано. Хотя ничто не препятствует использованию в качестве таких прикладных языков, в том числе, известные алгоритмические языки. Вот и получается, что от технологии переходим к метатехнологии, т.е. совершаем метапереход по терминологии Турчина [Турчин. Феномен науки. 2000]. Мне это видно в обсуждаемом тексте. Хотя напрямую там об этом не говорится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 16:56 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
авторvkoaes ... - пусть прикладной программист сам пишет себе язык. Для этого не надо продвинутости языковых программистов - определение прикладного языка стало доступно на прикладном уровне. ... ничто не препятствует использованию в качестве таких прикладных языков, в том числе, известные алгоритмические языки. Так из истории известно, что до появления C, Pascal, Basic, ... на каждом крупном предприятии под решения своих задач создавался свой макроязык, чтобы не морочится на ассемблере, вникая и тяжело осваивая множество разных сложных моментов, не нужных для решения задач в рамках модели класса задач. ПРОГРАММИСТЫ сами для себя СОЗДАВАЛИ СВОИ ЯЗЫКИ. И потом увидев во всех языках нечто общее и обобщив многие моменты появлялись С и Pascal. Это наверно была одна из причин нужности языков более высокого уровня. И что - предлагать программисту под свои задачи создавать свой язык, чтобы получилось нечто не на много отличное от программ Delphi, С++, Java, Python, Ruby, Forth, Scheme, ... То есть с чего это "определение прикладного языка стало доступно на прикладном уровне". Метапрограммирование вроде это не обеспечит и не для этого и не о том. Известна шутка язык NecroSoft Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
И как полушутка: для заказчика - программу, которая выглядит как его эскизное техническое задание. vkoaes Вот и получается, что от технологии переходим к метатехнологии, т.е. совершаем метапереход по терминологии Турчина [Турчин. Феномен науки. 2000]. ... Это слишком обобщенное философское ессе. И наверно имеется в виду не мета- (что-то между чем-то и чем-то разного уровня и разного рода), а супертехнологии. Технологии, создающие технологии. -> Самовоспроизводящиеся машины. ... И прочее такого рода. Турчин конечно вне критики. Будучи физиком, создал РЕФАЛ. А какой ёщё язык программ., созданный в России, известен в мире? P.S. К тому же вопросу - НАВЕРНО в тех организациях, где работал, создавали свой язык под свои задачи. Не с того, ни с сего дома для жены из любви к искусству не стал бы язык создавать НАВЕРНО. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 12:35 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
AlexandrPlusТак из истории известно, что до появления C, Pascal, Basic, ... на каждом крупном предприятии под решения своих задач создавался свой макроязык, чтобы не морочится на ассемблере, вникая и тяжело осваивая множество разных сложных моментов, не нужных для решения задач в рамках модели класса задач. ПРОГРАММИСТЫ сами для себя СОЗДАВАЛИ СВОИ ЯЗЫКИ. Мне кажется, что макросредствами создать выразительный язык не представляется возможным. Надо постоянно помнить о том, как это будет выглядеть в командах ассемблера (или операторах другого языка). AlexandrPlusИ что - предлагать программисту под свои задачи создавать свой язык, чтобы получилось нечто не на много отличное от программ Delphi, С++, Java, Python, Ruby, Forth, Scheme, ... Если требуемые вам языки ничем не отличаются от перечисленных, то используйте их. Однако, что-то не все так гладко в современной индустрии программирования. Подтверждение этого - перманентное развитие языковых средств. Причем это развитие не определяется только совершенстованием железа. Скорее всего новая платформа позволяет реализовать в языке то, что раньше было невозомжно или неэффективно. AlexandrPlusТо есть с чего это "определение прикладного языка стало доступно на прикладном уровне". Судя по всему, основная проблема конструирования прикладных языков - отсутствие эффективных и простых методов описания их семантики. Почему это сейчас стало доступным? Наверное потому, что предложено семантику описывать не на жестко заданных семантических языках, например: аксиоматически (путем сопоставления продукциям грамматики формул аксиоматической теории), алгебраически (сопоставление продукций формул алгебраической теории), денотационно (сопоставление функциональных донотатов), операционно (сопоставление командам процессора), а индуктивно, т.е. определять синтаксический и семантический языки одновременно и взаимо-обусловленно. AlexandrPlus Метапрограммирование вроде это не обеспечит и не для этого и не о том. Конечно, метапрограммирование – это, образно выражаясь, программирование програмами, т.е. такое программирование, при котором в качестве обрабатываемых данных выступают не типы данных, а программы. Реализацию такого подхода можно посмотреть у последователей Турчина [Абрамов, Методы метавычислений и их применение, 2006]. Согласен, что в обсуждаемом тексте этого нет. Хотя Турчин назвал свой Рефал почему-то метаалгоритмическим языком [Турчин, Метаалгоритмический язык, Кибернетика, 1968]. Дыма без огня не бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 18:55 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
vkoaes что-то не все так гладко в современной индустрии программирования. Подтверждение этого - перманентное развитие языковых средств. Причем это развитие не определяется только совершенстованием железа. Скорее всего новая платформа позволяет реализовать в языке то, что раньше было невозомжно или неэффективно. Вроде времена, когда на программирование тратились гиганские усилия, остались в прошлом, но инструментарий став эффективным, стал сложным и многозначным. Порядок внесло объектно-ориентир. программ., но оно добавило ещё сложность. Плата за простоту - тяжелость и силовремязатратность, плата за универсальность - сложность. Но для умников программирование стало в радость. Работяги, но тугодумы, но которые были ценны для преодоления рутинных моментов, оказались не нужны. Вроде уже хард и софт развиваются независимо, не влияя друг на друга. (Здесь и виртуальные машины - с хардом только виртуальная машина. Пробовали создавать специальные виртуальные машины под, например, Пролог.). Но вот грядут нанокомпьтерные архитектуры, что может повлиять на софт у основания, так как ассемблеры обещают быть иными. Хотя наноархитектуры не заменят традиционные, а встанут рядом. vkoaes AlexandrPlusТо есть с чего это "определение прикладного языка стало доступно на прикладном уровне". Судя по всему, основная проблема конструирования прикладных языков - отсутствие эффективных и простых методов описания их семантики. Почему это сейчас стало доступным? Наверное потому, что предложено семантику описывать не на жестко заданных семантических языках, например: аксиоматически (путем сопоставления продукциям грамматики формул аксиоматической теории), алгебраически (сопоставление продукций формул алгебраической теории), денотационно (сопоставление функциональных донотатов), операционно (сопоставление командам процессора), а индуктивно, т.е. определять синтаксический и семантический языки одновременно и взаимо-обусловленно. Всё же семантика в теории формальных языков для абстрагирования от того, что принципиально формально нерассмотримо. vkoaes AlexandrPlus Метапрограммирование вроде это не обеспечит и не для этого и не о том. Конечно, метапрограммирование – это, образно выражаясь, программирование програмами, т.е. такое программирование, при котором в качестве обрабатываемых данных выступают не типы данных, а программы. Реализацию такого подхода можно посмотреть у последователей Турчина [Абрамов, Методы метавычислений и их применение, 2006]. Согласен, что в обсуждаемом тексте этого нет. Хотя Турчин назвал свой Рефал почему-то метаалгоритмическим языком [Турчин, Метаалгоритмический язык, Кибернетика, 1968]. Дыма без огня не бывает. На Рефале очень удобно и лихо писать трансляторы. (Упражнялся как-то в реализации символьных вычислений на Рефале). Транслятор и есть программа, которая генерирует программы, которые в свою очередь тоже могут генерировать программы. Фантазия сразу же ставит вопрос - так может быть сделать транслятор с естественного языка? Вот и изыскания в метавычислениях. У меня был знакомый, который писал на Рефале трансляторы для разного встроенных микропроцессорных систем и станков с ЧПУ. Для станков с ЧПУ существует некий стандарт, которому уже более 40 лет, и который был заточен для ввода С ПЕРФОЛЕНТ. Само собой - команды лишь примитивные перемещения и переключения. Само собой очень нужен более человеко-ориентированный язык для программирования станка, где бы просто можно было задавать траекторию движения инструмента во времени, комплексно управлять всем оборудованием станка в понятиях технолога (такой тоже "понятийный анализ" при создании языка), просто модифицировать уже написанные программы, ... Рефал был очень уместен и полезен. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2009, 22:28 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
AlexandrPlusНа Рефале очень удобно и лихо писать трансляторы. (Упражнялся как-то в реализации символьных вычислений на Рефале). Транслятор и есть программа, которая генерирует программы, которые в свою очередь тоже могут генерировать программы. Фантазия сразу же ставит вопрос - так может быть сделать транслятор с естественного языка? Вот и изыскания в метавычислениях. У меня был знакомый, который писал на Рефале трансляторы для разного встроенных микропроцессорных систем и станков с ЧПУ. Для станков с ЧПУ существует некий стандарт, которому уже более 40 лет, и который был заточен для ввода С ПЕРФОЛЕНТ. Само собой - команды лишь примитивные перемещения и переключения. Само собой очень нужен более человеко-ориентированный язык для программирования станка, где бы просто можно было задавать траекторию движения инструмента во времени, комплексно управлять всем оборудованием станка в понятиях технолога (такой тоже "понятийный анализ" при создании языка), просто модифицировать уже написанные программы, ... Рефал был очень уместен и полезен. То есть для этого класса задач (программирование станков с ЧПУ) программист стал не нужен и технолог сам программирует станок. И аналогичное будет со всем прикладным программированием. То есть прикладное программирование будет все легче в смысле малых силовремязатрат, но при этом сложнее и сложнее, но дойдя до какого-то пика потом случится революция и сложность начнет уменьшатся. И заказчик будет сам программировать свои задачи, только могут быть сложные алгоритмы - но это вопросы уже не программирования, а к математикам, инженерам-техногогам, экономистам, юристам, ... Будут фирмы, которые будут создавать системные программы и инструментарии. Будут сервис-фирмы - ремонт и сопровождение систем и инструментария. Будут тюнинг-фирмы - для создания чего-то штучного, навороченного и экзотичного. В сопоставл. с автомобилями - для чего-то не будет каждый раз создаваться свои автомобиль и существовать свои водители, чтобы куда-то транспортировать людей и грузы, а те, кому это нужно - сами сядут и будут возить или назначат на этого человека, дав ему только водительские права, которые не предполагают умение создавать и ремонтировать автомобили. Хотя это тоже шаги эволюции - если вспомнить Жигули, то водитель должен был понимать в деталях не только - как всё работает, но мог сам ремонтировать и даже сам создавать новые сови автомобили из разных вроде неподходящих деталей. Жигули - как игрушка "сделай сам". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 09:23 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
(с)Делал компилятор (или транслятор .. сейчас уже не вспомнить) языка программирования стенда испытаний рОкетных двигателей 256 кбит озу + 580 проц - разруливали всю орфОграфию этого ублюдочного создания ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 10:02 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
vkoaesПроще?.. Если проще, то так: на каком языке удобнее описать решение стоящей задачи, такой и будем использовать. Если таковой не обнаружится, то создадим его. Технология отличается от Domain Specific Language (DSL) тем, что удается описывать семантику произвольных языковых конструкций, опять же, на удобной для этого языке (т.е. решаем новую задачу, или выполняем семантическую рекурсию). А в подходах DSL (SymADE, Intentional Programming, JetBrains, Nemerle и др.) все, в конечном итоге, описывается на некотором фиксированном (си-подобном) языке. Пожалуй, еще фишка в том, что используется формализация системы понятий на основе четерых фундаментальных абстракций: т.е. типы связей между понятиями не несут семантической нагрузки, а потому не зависят от решаемой задачи. Это позволяет компилятору ничего не знать о предметной области и решаемой задаче. Подбор/создание DSL под конкретную задачу - это очень правильно. Насколько я понимаю, предлагается: - выделить "предположительно постоянную" часть предметной области в синтаксис DSL - описать "предположительно переменную" часть, комбинируя эти базовые конструкции, императивно или декларативно. Вот только, при правильном подходе, DSL замечательно получается из любого императивного языка. Создаются общие библиотеки, повторно используемые элементы, и на них описываются "бизнес-правила". Иногда исходный императивный язык изменяется донельзя, и когда оказывается, что "предположительно постоянная" часть меняется - создаются весьма извращённые расширения DSL, наподобие T-SQL над SQL или JESS над LISP (хотя в обоих этих языках домены очень общие). Так, в общем-то, обычно и программируют. А в чём полезность и новизна работы? В работе как-то, на мой взгляд, мутно и голословно критикуется UML. При этом используются диаграммы, являющиеся подмножествами UML Class. Смысл - в упрощении? К тому же, обычно, в научных работах есть практическая часть. Посмотрев работу, прямо скажем, "по диагонали", реальных листингов или ссылок на место, где они выложены, не нашёл. А тот псевдокод, который там есть, по уровню абстракции от архитектуры ЭВМ и приближению к предметной области... IMHO между ассемблером и си. Ну и заумь в работе страшная. IMHO свои знания математики и алгебры логики нужно показывать при сдаче канд. минимума, а не при написании докторской. Хотя это, возможно, уже следствие того, что много в этих областях я, как говорят на Украине, "не знав, та ще й забув" ("на знал, да ещё и забыл"). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 23:17 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
AlexTheRavenВот только, при правильном подходе, DSL замечательно получается из любого императивного языка. Создаются общие библиотеки, повторно используемые элементы, и на них описываются "бизнес-правила". Иногда исходный императивный язык изменяется донельзя, и когда оказывается, что "предположительно постоянная" часть меняется - создаются весьма извращённые расширения DSL, наподобие T-SQL над SQL или JESS над LISP (хотя в обоих этих языках домены очень общие). Так, в общем-то, обычно и программируют. А в чём полезность и новизна работы? Не уверен, что DSL - это то, что получается из любого императивного языка. Пока попытки определения DSL в рамках промышленной технологии видны только у Nemerle. Тем более сомнительно, что DSL - это общие библиотеки, элементы и т.д. Следует различать определение языка (задание или дополнение его синтаксиса и описание семантики этих новых синтаксических форм), и использование языка по своему назначению, в том числе и путем написания повторно используемых фрагментов (подрограмм, модулей, библиотек). С другой стороны T-SQL или JESS трудно причислить к DSL языкам - для них компиляторы (интерпретаторы) написаны не прикладным программистом, желающим облегчить себе жизнь при решениисвоей конкретной задачи. Судя по всему, в работе предложен новый подход к созданию DSL, отличный от упоминавшегося ранее Nemerle. При этом подходе прикладной язык определяется в чистом виде (полностью описывается его синтаксис и семанитка), а не выполнятеся расширение некоторого базового диалекта с-подобного языка. Тем более, что у Nemerle вам приходиться встраивать новые конструкции с используемую в языке подсистему лексического и синтаксического анализа, а также работать с деревьями грамматического разбора на семантическом уровне. Заметье, это занятие не для "слабонервных". Пожалуй, полезность работы - в прозрачности и простоте инструмента. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2009, 21:14 |
|
Понятийный анализ и соответствующая технология программирования
|
|||
---|---|---|---|
#18+
vkoaes<...>Пока попытки определения DSL в рамках промышленной технологии видны только у Nemerle.<...> Nemerle - не DSL, а инструмент, предназначенный для написания своих DSL. Вполне себе обычный язычок, а-ля C#, вид сбоку . С какой-то стороны - да, DSL, домен которого - создание DSL. "Nemerle is a high-level statically-typed programming language for the .NET platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system." Как по-Вашему, язык 1С - это DSL? А X++ или ABAP? А QuakeC? А формат httpd.conf? vkoaes Тем более сомнительно, что DSL - это общие библиотеки, элементы и т.д. Следует различать определение языка (задание или дополнение его синтаксиса и описание семантики этих новых синтаксических форм), и использование языка по своему назначению, в том числе и путем написания повторно используемых фрагментов (подрограмм, модулей, библиотек). А не искусственная ли разница? Велика ли, с точки зрения программиста приложения, разница между a :)~:) b и hasTheSameFace(a,b)? vkoaes С другой стороны T-SQL или JESS трудно причислить к DSL языкам - для них компиляторы (интерпретаторы) написаны не прикладным программистом, желающим облегчить себе жизнь при решениисвоей конкретной задачи. В английской wiki SQL приводится как пример "парадоксального" DSL, который сложнее и богаче многих языков общего назначения. А T-SQL - IMHO попытка снова сделать из DSL язык общего назначения, а из серверов БД - универсальную платформу. К вопросу о том, что большинство людей любой ценой стремится писать на том, что уже знает. vkoaes Судя по всему, в работе предложен новый подход к созданию DSL, отличный от упоминавшегося ранее Nemerle. При этом подходе прикладной язык определяется в чистом виде (полностью описывается его синтаксис и семанитка), а не выполнятеся расширение некоторого базового диалекта с-подобного языка. Тем более, что у Nemerle вам приходиться встраивать новые конструкции с используемую в языке подсистему лексического и синтаксического анализа, а также работать с деревьями грамматического разбора на семантическом уровне. Заметье, это занятие не для "слабонервных". То же самое, что написать свой компиллятор (интерпретатор, виртуальную машину), не находите ли? Но их пишут примерно столько же, сколько существуют компьютеры (программирование проводами, переключателями и маш. кодами на самых первых - не в счёт). Лет 40 уже - точно. vkoaesПожалуй, полезность работы - в прозрачности и простоте инструмента. А где там инструмент? Листингов не увидел. Описания алгоритма работы и методики выделения синтаксических конструкций, специфических для домена - тоже. Так, пара умозрительных интуитивных примеров. Может быть, просто не смог разглядеть среди отпугивающих матриц и формул? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2009, 00:17 |
|
|
start [/forum/topic.php?fid=33&msg=35742108&tid=1548616]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 195ms |
0 / 0 |