Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн июн 25, 2018 12:20

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Ср апр 05, 2017 23:31 
Не в сети

Зарегистрирован: Пн июл 04, 2016 13:28
Сообщения: 39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
KPG писал(а):
Может даже имеет смысл создать Лисп подраздел т.к. какие то обсуждения уже есть в рамках данного форума.
Так лиспа как такового здесь еще не было) Как потребуется создадим)
KPG писал(а):
Мало людей на данном форуме явно отделяют Форт язык от Форт парадигмы.
Самое забавное, что она существовала еще до появления форта)
KPG писал(а):
Также это соотносится и с "манипуляциями" на стеке. :)
Вот и я о том же.
KPG писал(а):
Думаю он про Лисп намного больше присутствующих здесь форумчан может расказать.
Не известно же кто и в какой степени владеет аппаратом ФП на местном форуме. а он отметился некоторым числом статей в этом направлении.
Видите ли с современной точки зрения лисп не является языком ФП, но он позволяет писать в функциональном стиле. Вот только код выдержанный в данном стиле нигде кроме как в академической среде не практикуется, ибо вызывает баттхерт у бывалых лисперов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 08:44 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Странно видеть сравнение Lisp и Forth :roll:
Для меня они как две основы на которых строятся все остальные языки.
Наш разговорный язык тоже состоит из смеси префиксной и постфиксной нотации.

Программа написанная на инфиксном языке, например, на C:
1) Переводится компилятором в abstract syntax tree (AST).
2) Потом начинается рекурсивный обход (разворачивание) этого дерева для генерации машинного кода. При этом сначала вычисляются аргументы функций в некотором порядке (порядок вычисления аргументов и функций зачастую не закреплён - в С он на усмотрение компилятора и это иногда приводит к неприятным эффектам).

Так почему я не противопоставляю Lisp и Forth?
Синтаксис Лиспа это вариант текстового представления AST получаемого компилятором (clang например выдаёт его в XML).
Синтаксис Форта это следующая стадия, когда дерево уже развёрнуто и определена строгая последовательность вычисления всех вспомогательных аргументов.

Оба языка отражают внутреннюю кухню, показывают подводную часть айсберга, и соответственно дают глубокое осознание процесса программирования.
Эта внутренняя кухня красива своей простотой и логичностью. Настолько, что оба языка имели своё выражение в виде процессоров.
Идеи положенные в основу обоих языков хороши, но их реализации имеет недостатки. Думаю нет смысла здесь их перечислять.

Реализация моей задачи на C/C++ или Лиспе мне понятна и конечно я эти варианты не забываю, а реализовать на Форте это в первую очередь интересный новый опыт и первый вопрос:
Как мог бы выглядеть файл описывающий структуры С с дополнительными критериями?
Пока себе выписал как примеры: SQL, конфигурация Nagios, JSON, тип record в Модула-2 и он же в Ада, в виде таблиц (предложение от Victor__v).

p.s. Пока не понял насколько в Форте считается нормальным временно менять функциональность стандартных слов и символов (в Аде и JSON активно используется двоеточие).


Последний раз редактировалось dmitry-st Чт апр 06, 2017 13:25, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 11:12 
Не в сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 2105
Откуда: Питер
Благодарил (а): 15 раз.
Поблагодарили: 34 раз.
dmitry-st писал(а):
Для меня они...

Изображение

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю, и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 17:27 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Вот такая фантазия пока больше всего по душе:
Код:
struct
    UserGroup
    priority: type int, min 1, max 10, default 10
    name: type char, array MAX_GROUP_NAME_LENGTH, default ""
struct;

Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?

Или это перебор и такой вариант только через посимвольное чтение парсером загружается в Форт?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 17:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6334
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
dmitry-st писал(а):
Пока не понял насколько в Форте считается нормальным временно менять функциональность стандартных слов и символов (в Аде и JSON активно используется двоеточие).

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



За это сообщение автора Hishnik поблагодарил: dmitry-st
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 18:01 
Не в сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 2105
Откуда: Питер
Благодарил (а): 15 раз.
Поблагодарили: 34 раз.
dmitry-st писал(а):
Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?
Меня терзают смутные сомнения. По-моему, Ваши проблемы начались с незнания C. И высокопарные рассуждения о сродстве Lisp и FORTH тут не помогут. Опишите задачу на человеческом языке без всяких "сделать примерно так", "дерево в памяти"...

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю, и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 18:06 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 842
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
dmitry-st писал(а):
Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?

Или это перебор и такой вариант только через посимвольное чтение парсером загружается в Форт?


Один из шаблонов примерно такой по разборке входного потока в файле без его открытия, а дописав скрипт в начале файла
(мне такой подход нравится в разных вариациях что подскажет фантазия :)
из другой пробегавшей темы на форуме и ещё не оформившейся в окончательный результат (хотя подвижки уже сделаны большие)
Код:
20000 CONSTANT ListLines
: vvv ( -- )
  BEGIN BL WORD   
      DUP C@
            WHILE FIND 0=
                  IF COUNT TYPE ." NOT-FOUND" CR ELSE (DIS) THEN
  REPEAT DROP
;

: view? CR 0
    BEGIN
   REFILL
    WHILE
         vvv \ SOURCE TYPE CR
         DUP 1+ ListLines = IF EXIT THEN
    REPEAT
;
view?
FORTH           DUP             DROP           SWAP            OVER
+               -               *               /              RSHIFT
UCMOVE>         UCMOVE          CMOVE>
CMOVE           FILL            SCAN            SKIP            S=

P.S. Даже базовых возможностей 94 го стандарта достаточно для эффективного парсинга (много ещё и других полезных слов для парсинга есть в стандарте)
Интересны и варианты парсинга, например Си кода, для разных целей (в одном из проектов CWeed на Win32Forth, например, \ нy не могу я без "ссылок" :)
применён для форматирования текста Си кода) Можно и, например, сделать расширяемый аналог подобия CLint, Viva64 и.т.д. с "псевдоисполнением" дерева кода для выявления потенциально возможных ошибок.



За это сообщение автора KPG поблагодарил: dmitry-st
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 18:47 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 842
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
gudleifr писал(а):
dmitry-st писал(а):
Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?
Меня терзают смутные сомнения. По-моему, Ваши проблемы начались с незнания C. И высокопарные рассуждения о сродстве Lisp и FORTH тут не помогут. Опишите задачу на человеческом языке без всяких "сделать примерно так", "дерево в памяти"...

Может диверсификация разработок с Си на Форт инструментарий :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:16 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
KPG писал(а):
gudleifr писал(а):
dmitry-st писал(а):
Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?
Меня терзают смутные сомнения. По-моему, Ваши проблемы начались с незнания C. И высокопарные рассуждения о сродстве Lisp и FORTH тут не помогут. Опишите задачу на человеческом языке без всяких "сделать примерно так", "дерево в памяти"...

Может диверсификация разработок с Си на Форт инструментарий :)

Автоматизация однотипного труда программистов)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:20 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
dmitry-st писал(а):
Можно ли как-то сделать чтобы подобное выполнялось Фортом и в памяти создавалось дерево содержащее числовые и текстовые элементы-константы?
Меня терзают смутные сомнения. По-моему, Ваши проблемы начались с незнания C. И высокопарные рассуждения о сродстве Lisp и FORTH тут не помогут. Опишите задачу на человеческом языке без всяких "сделать примерно так", "дерево в памяти"...

"Дерево в памяти" - какое слово уточнить?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:27 
Не в сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 2105
Откуда: Питер
Благодарил (а): 15 раз.
Поблагодарили: 34 раз.
dmitry-st писал(а):
"Дерево в памяти" - какое слово уточнить?
Никакое. Это бессмысленное выражение лишь маскирует Ваше непонимание проблемы. Поэтому я и попросил описать задачу нормальным языком. Что на входе? Что на выходе?

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю, и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:38 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
KPG писал(а):
P.S. Даже базовых возможностей 94 го стандарта достаточно для эффективного парсинга (много ещё и других полезных слов для парсинга есть в стандарте)
Интересны и варианты парсинга, например Си кода, для разных целей (в одном из проектов CWeed на Win32Forth, например, \ нy не могу я без "ссылок" :)
применён для форматирования текста Си кода) Можно и, например, сделать расширяемый аналог подобия CLint, Viva64 и.т.д. с "псевдоисполнением" дерева кода для выявления потенциально возможных ошибок.

Си код парсить отказались) этот вариант уже обсуждали в коллективе. В качестве линта пользуемся cppcheck - он на с++ с правилами в xml, из открытых наверное лучший сейчас.
Вообще думал что на Форте можно будет обойтись без полноценного парсера.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:38 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 842
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
dmitry-st писал(а):
Автоматизация однотипного труда программистов)

Программу nnCron не рассматривали (основа SP-Forth)?

P.S. Был и такой описан сюжет Тестирование глазами молодого специалиста Вроде на Delphi был и приведён такой или этот проект.
Здесь более подробный пост
Начало заметок здесь


Последний раз редактировалось KPG Чт апр 06, 2017 19:55, всего редактировалось 4 раз(а).


За это сообщение автора KPG поблагодарил: dmitry-st
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:44 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
dmitry-st писал(а):
"Дерево в памяти" - какое слово уточнить?
Никакое. Это бессмысленное выражение лишь маскирует Ваше непонимание проблемы. Поэтому я и попросил описать задачу нормальным языком. Что на входе? Что на выходе?

На входе:
Код:
struct
    UserGroup
    priority: type int, min 1, max 10, default 10
    name: type char, array MAX_GROUP_NAME_LENGTH, default ""
struct;

На выходе:
Код:
struct UserGroup {
   int priority;                     /* 1..10, default 10 */
   char name[MAX_GROUP_NAME_LENGTH]; /* default "" */
};


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 19:59 
Не в сети
Аватара пользователя

Зарегистрирован: Чт дек 31, 2009 18:36
Сообщения: 2105
Откуда: Питер
Благодарил (а): 15 раз.
Поблагодарили: 34 раз.
dmitry-st писал(а):
На входе:... На выходе:...

1. А в чем тут автоматизация?
2. Это легко делает #define
3. На C так не пишут (слишком много будет лишних проверок и копирования областей памяти)

_________________
Когда я говорю "понимаю" - это не значит, что я согласен, не значит, что я понимаю, и вообще не значит, что я слушаю тебя. /Чарли, "2 1/2 человека"/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB