Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 15:15

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 01:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Теперь надо определиться с еще одной важной проблемой - где что лежит. А главное - как организовать работу так, чтобы могли совместно существовать разные реализации отдельных задач (и их комбинации).

Простой пример: как сделать стек? Это может быть статический массив. Или стек выделяется динамически при старте форт-системы. А размер может быть опять-таки фиксированным, или же передаваться в настройках/из внешней программы, создающей данный экземпляр форт-машины. Или стек просто передается из внешней программы. И все это (плюс фантазия) имеет право на существование. Дальше добавятся разночтения в файловых операциях, словарях, поиске и т.д.

Я не утверждаю, что это плохо. Наоборот, это следует принять как данность (иначе все разбегутся). Я бы даже сказал, эту особенность RuFIG стоит сделать ее сильной стороной! :) На эту тему можно еще подумать. Пока что я вижу такой принцип: следить за содержимым .h-файлов - их подключение должно быть безболезненным. Это и так рекомендуется для Си, однако стоит отдельно следить, чтобы описание какой-либо функции "не перекрывало кислород" альтернативным реализациям.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 01:38 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Для таких спорных моментов я бы предложил сделать так: по умолчанию любой модуль/библиотека/файл - файл. Пока реализация в одном экземпляре - это файл. Как только их становится больше одной, то делаем каталог, а в нем уже несколько разных реализаций данного модуля/библиотеки. Ну и само собой следить, чтобы у разных реализаций ключевая часть интерфейса совпадала (входные/выходные параметры и т.п.). Может даже вынести интерфейсы в отдельные файлы? Я не спец по СИ. Как это в нем обычно делается?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 01:54 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
В Си со структурой проекта все довольно печально. Директива #include равносильна вставке всего текста включаемого файла, поэтому возможны неожиданные эффекты. Однако форт-машина особых интерфейсов-то и не имеет - это большой плюс. Поэтому при необходимости воспользоваться чьей-то реализацией можно будет просто включать соответствующий файл в свой .cpp, и оттуда уже вызывать все, что нужно. Тут есть маленькая тонкость - крайне нежелательно, чтобы в .h формировались словарные статьи. То есть они могут быть описаны, и даже описаны структуры словаря, функции для поиска слов и их добавления, но тогда их сложнее будет отменить. Лучше, чтобы конкретные настройки, в том числе и сборка рабочего словаря, делались уже в cpp, которые уже могут быть сильно индивидуализированы - кому dll, кому консоль, кому окно. Не говоря уже о том, что и подключать-настраивать они смогут все очень по-разному.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 09:40 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Хоршо. На гитхабе есть википедия - предлагаю описывать вот такие моменты в ней. Надо сделать какой-то отдельный раздел типа dev и там описывать инструкции как правильно вести разработку. И можно даже пару-тройку линков привести на какую-то дополнительную литературу.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 20:16 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Вскрылась проблема:

mingw и как выяснилось gcc, игнорируют директиву "naked" упорно вставляя пролог/эпилог в определение функции на inline asm. Из-за этого нет возможности написать базовые (hard) слова на чистом asm. Потенциально можно воспользоваться внешним ассемблером, но это связано с большими трудностями, особенно в Linux. Есть возможность конвертации строки байтов в тело функции, но для этого опять же нужен ассемблер, для получения байтов машинного кода.
Если отказаться от mingw и как следствие от gcc - то на чем писать? Чисто на ассемблере? как быть с Linux?

Какие есть предложения?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 22:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mgw писал(а):
Если отказаться от mingw и как следствие от gcc - то на чем писать? Чисто на ассемблере? как быть с Linux?

Какие есть предложения?

Я планирую писать на Си и использовать шитый код. Это не позволит выжать максимум производительности, но ведь Форт и так не предназначен для этого. Будем брать другим...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Вс июн 21, 2015 23:14 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Я провел испытание своего форта на D в Linux. Причем удалось собрать библиотеку с фортом как в статическом варианте ( forthd.a ), так и динамическом ( forthd.so ). На статическом варианте удалось собрать программу на C++ вместе со статической линковкой. Сборка:
Код:
dmd -c forthd.d
gcc main.cpp forthd.o libphobos2.a -lpthread -o mainTestFort


и с динамической:
Код:
dmd -c forthd.d
dmd -c forth.d
dmd -shared -offorthd.so forthd.o forth.o -defaultlib=libphobos2.so

# Программа проверки
gcc -omainf2 mainf2.c -ldl


forthd.so испытал на SP-Forth. Всё работает.

Так как генерируемый D код в бинарном представлении совместим с кодом C++ возможно смешение модулей обоих языков. D на 90% похож на C++

В связи с этим, а так же с уже имеющийся наработкой ядра, предлагаю рассмотреть вопрос о разработке проекта нового Форта на языке D.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Пн июн 22, 2015 00:01 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ну а чего мы сейчас будем скакать туда-сюда? На Qt ведь тоже есть наработки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Пн июн 22, 2015 10:42 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Ядро форта на D - это всего лишь OBJ. Включай его куда хочешь, хоть в Qt. Есть опыт работы из форта с Qt.
Само ядро очень быстрое --> подпрограммный шитый код. Ни чего не мешает изменять его, для достижения новых возможностей.

Сам D кроссплатформенный (на любой вопрос отвечают в течении 2 часов, вот пример: http://forum.dlang.org/thread/olhlvzmah ... .dlang.org ), компактный имеет очень активное сообщество, умеет делать 64 разрядные программы и имеет inline asm 64 разрядный. Освоить его - всего одна неделя, при условии знания С++. Интеграция D <---> C++ проверена и вполне функциональна.

На мой взгляд, на этой платформе ( используя опыт и имеющиеся наработки ) есть все предпосылки создать РЕАЛЬНО продвинутый вариант Форта


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Пн июн 22, 2015 10:48 
mgw писал(а):
На мой взгляд
Извините, что прерываю столь ученых господ, но факта того, что никакие два фортера никогда не говорятся на уровне реализации (если они у них конечно есть), никто пока не отменял. Тут и спорить не о чем (поэтому не надо это замечание считать за приглашение ко флуду). Обсуждали 100500 раз и всегда с одним и тем же результатом. И никакой лепро... тьфу... репозиторий тут не поможет.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Пн июн 22, 2015 13:09 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mgw писал(а):
На мой взгляд, на этой платформе ( используя опыт и имеющиеся наработки ) есть все предпосылки создать РЕАЛЬНО продвинутый вариант Форта

Ну мы ведь на то и делаем несколько веток. Идея была в том, чтобы забирать по мере необходимости C++. Но как вариант, можно забирать и obj. Да хоть ассемблер, в конце концов :) Пойдем по фактическому состоянию дел.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Ср июн 24, 2015 15:42 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Предлагаю на форуме завести отдельный раздел для обсуждения сабжа, во-первых, и, во-вторых, таки надо набросать ТЗ.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Ср июн 24, 2015 15:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
Предлагаю на форуме завести отдельный раздел для обсуждения сабжа, во-первых, и, во-вторых, таки надо набросать ТЗ.

А мы же и есть в отдельном разделе. ТЗ я предлагаю тоже разделить и иметь возможность делать собственные модификации.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: OpenForth: структура файлов
СообщениеДобавлено: Ср июн 24, 2015 15:58 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Hishnik писал(а):
А мы же и есть в отдельном разделе.

пардон ме, проворонил 8)

Hishnik писал(а):
ТЗ я предлагаю тоже разделить и иметь возможность делать собственные модификации.

имхо, надо для начала иметь хоть какое-то, и начинать не с написания кода, а с требований к нему.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

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


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

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


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

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