Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср ноя 21, 2018 07:22

...
Google Search
Forth-FAQ Spy Grafic

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




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

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
dmitry-st писал(а):
На входе:... На выходе:...

1. А в чем тут автоматизация?

Вспомните про *.c в котором надо генерировать как минимум макросы инициализации, функции доступа к целым структурам и к отдельным полям. Выходы за границы должны приводить к печати сообщений и возвращать коды ошибок. В реальности рутинных функций больше.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 21:06 
dmitry-st писал(а):
надо генерировать...
Т.е. с "выходом" Вы уже нажульничали. Как же Вам помогать, если половина задачи еще "где-то рядом"?


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

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
KPG писал(а):
dmitry-st писал(а):
Автоматизация однотипного труда программистов)

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

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

nnCron на линуксе думаю мало полезен)
За статьи благодарю! Очень понравились. Читаю)


Последний раз редактировалось dmitry-st Чт апр 06, 2017 21:38, всего редактировалось 1 раз.

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

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

Я в сообщении которым открыл тему писал про *.h и *.c
Искренне сожалею что мы не находим общего языка.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 21:45 
dmitry-st писал(а):
Искренне сожалею что мы не находим общего языка.
Дык, в том и проблема. Вы сами не можете точно сказать, что надо сделать... Распишите полные "вход" и "выход"!

Впрочем, эту тему вполне можно закрывать, т.к. FORTH для таких задач - это стрельба из пушек по воробьям.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
dmitry-st писал(а):
Искренне сожалею что мы не находим общего языка.

Да это как раз нормально. Вот спартанцы в древности выводили к молодежи пьяных рабов - просто чтобы показать, до чего доводит пьянство. Я уже приводил пример глуповатого, но наглого шута при замке, который искренне считает, что все тут принадлежит ему.
gudleifr писал(а):
Впрочем, эту тему вполне можно закрывать, т.к. FORTH для таких задач - это стрельба из пушек по воробьям

Например, вот такими сообщениями. Разрешил он, ага... :lol:


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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 907
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
Hishnik писал(а):
Например, вот такими сообщениями. Разрешил он, ага... :lol: .

Это не единственный форум где он пытается закопать Форт его же методами :)
Из последнего c форума игроделов и не в одной теме
не считая другие форумы (в частности на площадке AirForum Balancera)

P.S. При таком уровне активности, почему то, ещё нет бумажного признания Gudleifr в информационном пространстве. :)


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
KPG писал(а):
При таком уровне активности, почему то, ещё нет бумажного признания Gudleifr в информационном пространстве.

Потому что в рецензируемых изданиях желчные статьи про тупых пользователей благополучно выбрасываются в мусор. Это интернет все стерпит.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Чт апр 06, 2017 22:44 
Hishnik писал(а):
...
Блин, опять я обломал нашего маркетоида. Он уже на новый рынок сбыта начал слюни пускать, а, оказывается, тут надо начала программирования знать.


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

Зарегистрирован: Вт мар 28, 2017 10:04
Сообщения: 21
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
Вы сами не можете точно сказать, что надо сделать... Распишите полные "вход" и "выход"!

Абсолютно полный "вход" и "выход" для живой системы никогда не расписывают в принципе, но закладывают необходимую гибкость и возможности роста.

Я уже понял Ваш подход к работе с данными в Си, он называется "прибить данные к коду гвоздями намертво" - для очень больших проектов типа нашего это означает мёртвый кусок кода, который все обходят стороной и не дай Бог там какая-то структура изменится.
Код для крупных проектов на Си позволяет менять, как алгоритмы сортировки, поиска и т.д., так и данные раздельно друг от друга.

Прикладываю вывод с одной функцией.

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


Выход для *.h
Код:
struct UserGroup {
   int priority;                     /* 1..10, default 10 */
   char name[MAX_GROUP_NAME_LENGTH]; /* default "" */
};


Выход одной функции для *.c
Код:
short set_UserGroup_priority( struct UserGroup const * userGroup, int value )
{
    if ( NULL == userGroup )
    {
        fprintf( stderr, "%s(%d): %s: Error userGroup = NULL.\n",
                         __FILE__, __LINE__, __func__ );
        return ER_INVAL;
    }

    if ( value < 1 || value > 10 )
    {
        fprintf( stderr, "%s(%d): %s: Error value: %d.\n",
                 __FILE__, __LINE__, __func__, value );
        return ER_INVAL;
    }

    userGroup->priority = value;
    return 0;
}


p.s. Умышленно упрощаю задачу, поэтому здесь нет макросов, констант и т.п. Добавление подробностей по моему только отодвигает от создания минимально рабочего прототипа.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Пт апр 07, 2017 11:20 
dmitry-st писал(а):
Абсолютно полный "вход" и "выход" для живой системы никогда не расписывают в принципе, но закладывают необходимую гибкость и возможности роста.
Это обычная ошибка. Точнее две. Описывают всегда - просто, возможно, другими языковыми средствами. И "необходимая гибкость" и "возможность роста" - это опять про маркетоидов.
dmitry-st писал(а):
Я уже понял Ваш подход к работе с данными в Си, он называется "прибить данные к коду гвоздями намертво" - для очень больших проектов типа нашего это означает мёртвый кусок кода, который все обходят стороной и не дай Бог там какая-то структура изменится.
Опять ерунду пишете.

Давайте посмотрим на Вашу задачу.
1. Вы хотите, чтобы имея на входе описания своих хотелок относительно некоторых объектов данных, на выходе иметь [код библиотеки] с полным(sic!) набором безопасных операций над этим объектом. Более подробно задачу Вы не видите - "гибкость", "крупные проекты", "данные раздельно друг от друга" и прочая обычная лабуда, свидетельствующая о нежелании думать.
2. Конечно, у программиста должна бы сразу возникнуть мысль "за нафига использовать такой формат данных, поддержка которого становится отдельным геморроем?". Но, допустим, мы, действительно, взяли за цель написать базу данных, а читать учебник нам лень... Хоор в гробу переворачивается...
3. Попробуем немного формализовать. На входе - набор фактов: "X - структура", "Y - поле X", "Y целое", "Y in [1,10]"... На выходе - .h (состоящий из перевода части фактов в C-структуры, а части в комментарии) и .c (состоящий из набора функций, волшебным образом связанных с нашим набором фактов). Совершенно непонятно, почему автору задачи не пришло в голову записать все необходимые факты в .h файл...
4. Как нам получить "волшебство" в .c-файле? Очевидно, одним-единственным образом - заранее создав набор шаблонов, в которые нужно вбивать имена структур и полей. Первая же попытка чтения хотелок автора задачи дает нам необходимость многоэтажных шаблонов: внутрь типового шаблона "присвоить значение поля" (с его очевидными вставками "имен", "типов" и чайниковски-обязательной "проверки существования") надо вставить шаблон "проверка допустимости значения", выбранный в зависимости от "типа". Если бы мы были программистами, мы бы, конечно, заметили, что вычисляемые на этом этапе данные вполне заменяют те, что мы хотим использовать в окончательном выводе (и надо возвращаться к п.2), но мы же договорились, что тупы и все непонятное считаем "прибиванием данных гвоздями".
5. Ах, да. Еще надо добавить "макросов, констант и т.п.". А еще... Блин, а вы не заметили, что мы уже получили обычный C++ template? Что для удобства подобного быдлокодинга и был изобретен этот самый С++ в своем современном виде?
6. Итак, мы имеем набор шаблонов, над которым надо выполнять две операции: заполнять данными и радоваться; вносить исправления для "гибкости, роста и макросов". На чем это писать? Очевидно, awk (perl)... (Был бы злым, написал trac). Но... Еще очевиднее, что и шаблоны, и входные данные можно порубить квадратно гнездовым методом и всю программу "преобразования" записать (на C) в виде одного несчастного цикла вокруг printf () с выборкой из таблиц "фактов".
7. Примеров приводить не буду, все равно, до этого места никто не дочитает...

Итак, что делать?
1. Учить матчасть. Если данные обладают избыточностью, позволяющей изобрести для них общие операции, их надо нормализовать.
2. Научиться работать с макросами.
3. Научиться преобразовывать текстовые файлы без создания "деревьев в памяти".
4. Научиться использовать 'nix - инструментарий.
5. Плюнуть на все на это и уйти в маркетоиды, если осталась вера в то, что слова "как-то так" в ТЗ означают "гибкость и рост", а не немедленное увольнение.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Пт апр 07, 2017 13:33 
P.S. Кстати, если на этом Форуме были бы фортеры, они бы заметили, что в приведенном выше примере:
http://gudleifr.forum2x2.ru/t5-topic
именно требуемое и сделано - вводятся в свободном формате некоторые неформализованные данные, которые затем макроподставляются в процедуру рисования.


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6439
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
dmitry-st писал(а):
Прикладываю вывод с одной функцией.

Это уже интересно

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

Почти так. Однако priority заранее не определено, и тогда надо будет как-то делать struct очень мощным. Универсальная вещь - CREATE

Код:
struct UserGroup
   int priority
      1 min
      10 max
      10 default
   char[] name
     MAX_GROUP_NAME_LENGTH size
struct;


Пока это только набросок, потому что в Форте не хватает одного важного слова - что-то типа this.name. Конкретно, при использовании внутри слова оно должно класть на стек имя этого слова. Тогда получается так
Код:
: int CREATE #int , ( записываем тип ) DOES> @ ... записываем в выходной файл "int" ... this.name ....


Однако можно сделать и не на базе CREATE, а скопировав его поведение. Тогда
Код:
: int
  PARSE AddFieldName
  #int AddFieldType
;
: min SetFieldMin (с реализацией вида MINS[] LastEntry -TH ! )


В конечном итоге после интерпретации наборов Struct у нас должен получиться набор массивов, содержащих имена полей, их типы (можно индексами) и min/max/default. Потом можно пройти по массиву и записать в выходной файл готовые шаблоны кода (их придется сделать заранее) со вставкой name/type/min/max/default в нужных местах.



За это сообщение автора Hishnik поблагодарил: dmitry-st
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Генератор на Форте кода для C
СообщениеДобавлено: Пт апр 07, 2017 18:33 
Hishnik писал(а):
...
Не, дураков учить - только портить. Объяснял же специально - как делаются символьные атомы - http://fforum.winglion.ru/viewtopic.php?p=41636#p41636, так как наш маркетоид вонял! В приведенном выше примере, этот способ, очевидно, использован. Мы будем учиться читать?


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

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
Пока это только набросок, потому что в Форте не хватает одного важного слова - что-то типа this.name. Конкретно, при использовании внутри слова оно должно класть на стек имя этого слова. Тогда получается так
Код:
: int CREATE #int , ( записываем тип ) DOES> @ ... записываем в выходной файл "int" ... this.name ....


Если я правильно понял.
Код:
: autoname:     HERE CREATE LATEST ,  DOES> @ ;

autoname: abd   
abd COUNT TYPE
_abd_ 


Или это просто LATEST ? Которое кладет на стек nfa последнего определенного слова. При применении внутри определения кладет адрес поля имени самого этого определения.


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

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


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

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


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

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