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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 108 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: Forth++
СообщениеДобавлено: Вт окт 26, 2010 18:17 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Достоинства Форта известны. Это и расширяемый синтаксис, и встроенный ассемблер и т.д. и т.п. Однако позиционировать его можно только на уровень языка С. Кстати отсюда стремление народа написать Форт ОС. И это реально. Пишут же на С операционные системы.

Однако современная действительность требует взаимодействия языка программирования с объектно-ориентированными библиотеками, которые в большинстве написаны на C++. И Python и Java объектные с низу до верху. Вот если бы с Форта (с SPF например) можно было бы использовать объекты С++ из DLL или SO, это дало бы мощнейший толчок популяризации форта, как языка программирования.

Нужно модернизировать C-CALL для вызова конструкторов или написать новый вариант, например C-CALL++.

Может быть, сосредоточимся на реализации ОО в Фоте (Forth++) и попытаемся научиться использовать С++ библиотеки из Форта?


Последний раз редактировалось mgw Ср окт 27, 2010 19:21, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 18:34 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 18:36 
Не в сети

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 19:19 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 19:28 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Цитата:
А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth.

Мешает Name Mangling in C++ (перегрузка имен), передача параметров в конструктор и т.д. Конечно, можно взять компилятор C++, написать wrapping (обертку) на объекты (при этом потеряв наследование) и получить очередную DLL или SO. Потом подключить её к Форту и т.д., а вот как использовать объекты непосредственно с Форта? И возможно ли это вообще?


Последний раз редактировалось mgw Вт окт 26, 2010 19:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 19:32 
Не в сети

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Antender писал(а):
А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth.

И примеры вызова ООП-ных есть?
Например QT. ;)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 19:58 
mgw писал(а):
Вот если бы с Форта (с SPF например) можно было бы использовать объекты С++ из DLL или SO, это дало бы мощнейший толчок популяризации форта, как языка программирования.

А в DLL есть объекты? Насколько помню они исчезают сразу после компиляции.
Ну а вызов функции из dll-ки примерно так:

WINAPI: FreeLibrary KERNEL32.DLL

и дальше работаешь с ней как с обычным словом...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 20:19 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Судя по ответам выше я не могу раскрыть суть проблемы.
Попробую на примере:
Задача, имея SPF и имея QtGui.dll и QtCore.dll (и ни чего более) с SPF инициализировать графическую оболочку Qt, вызвать конструктор (например QWidget(…)) и отобразить на экране полученное окошко. Только и всего :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 20:24 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
WINAPI: Init QtСore.dll
WINAPI: QWidget QiGui.dll
Init
QWidget

Что-то в этом духе


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Вт окт 26, 2010 20:33 
Не в сети

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Ср окт 27, 2010 05:55 
mgw писал(а):
а вот как использовать объекты непосредственно с Форта? И возможно ли это вообще?

Вариант: использовать объекты через COM (да, это возможно)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Ср окт 27, 2010 10:51 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Можно подключиться и напрямую к DLL с объектами. Пример http://mgw.narod.ru/algoritms.htm#fromDLLCPP Но это макет. А вот ввести бы в SPF поддержку такого механизма было бы очень хорошо!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Ср окт 27, 2010 14:48 
Не в сети
Moderator
Moderator
Аватара пользователя

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

вводите

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Ср окт 27, 2010 18:16 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Проблема в C-CALL при вызове конструктора. В win вроде работает, а в Linux нет. В чем проблема понять не могу. Тут нужен спец по ассемблеру. Моих знаний не хватает :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Forth++
СообщениеДобавлено: Чт окт 28, 2010 14:39 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mgw писал(а):
Проблема в C-CALL при вызове конструктора. В win вроде работает, а в Linux нет.

Смотрим в SPF420:
Код:
CODE C-CALL ( x1 ... xn n adr -- res)
\ Порядок экспортируемых аргументов обратный, по сравнению
\ со словами API-CALL (spf_win_api.f) и CAPI-CALL (~af/lib/c/capi.f).
\ Порядок обращается при их переносе на R-стек.

     MOV EBX, [EBP]      \ число аргументов
     MOV ESI, # 4
@@1: OR EBX, EBX
     JZ @@2
\     PUSH [EBP] [ESI]
A;   0xFF C, 0x74 C, 0x35 C, 0x00 C,
     LEA ESI, 4 [ESI]
     DEC EBX
     JMP @@1
@@2: CALL EAX
     MOV ECX, [EBP]
     SHL ECX, # 2
     ADD ESP, ECX
     ADD ECX, # 4
     ADD EBP, ECX
     RET
END-CODE

Код выполняет копирование параметров со стека параметров на стек возвратов, затем идет
вызов по адресу в EAX и убирание параметров со стека параметров. В EAX после вызова процедуры должен оказаться ее результат.
Видим несоответствие комментария и самого кода:
Код:
   \  PUSH [EBP] [ESI]
A;   0xFF C, 0x74 C, 0x35 C, 0x00 C,


тут должно быть
Код:
\ PUSH [ESI][EBP]
A;   0xFF C, 0x74 C, 0x2E C, 0x00 C,

Это просто навскидку, сам окнами и GUI не занимаюсь, тем более в Linux, поэтому ничего не проверяю.

_________________
С уважением, chess


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

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


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

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


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

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