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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Вт авг 05, 2014 16:34 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 10 раз.
QtE – это библиотека, представляющая надстройку над стандартным Qt. Делал я её сугубо для себя и своих утилитарных нужд, по этому в ней нет системности и всеобъемлемости. Это эксперимент, развившийся до относительно законченного вида.
QtE по принципу строения больше всего похожа на Lazarus c Qt. Классы Qt «разбиваются» на конструкторы, деструкторы и методы. Далее на базе этого «плоского (не ООП)» набора функций строится новая иерархия классов на базе того языка программирования, с которым будет использоваться. На данный момент есть версия для SPF 4.20 Win/Linux 32 и D (dlang) для Win/Linux 32/64.
Сама QtE состоит из двух частей. Первая – это QtE.dll (so для Linux), которая представляет ту самую «плоскую» модель Qt. Вторая часть, это QtE.f (для SPF 4.20) или QtE.d (для D) дерево классов в терминах того языка, который будет использоваться.
QtE.dll – написана на C++ 32/64. В Linux используется gcc, в Windows mingw и соответствующая версия Qt. Я принципиально отказался от Microsoft C++, в целях унификации исходного кода.
Как выяснилось, после компиляции QtE.dll (so) для работы с Qt достаточно нескольких библиотек из Qt. Это позволяет не устанавливать Qt на компьютер, а просто скопировать несколько dll, этакий RunTime Qt, и спокойно работать с Форта или D.
С 32 разрядной версией ни каких проблем нет. А с 64 разрядной я работал только с D, т.к. нет у меня 64 разрядной версии Форта. По большому счету, я не вижу большой необходимости в 64 разрядной версии, но в качестве эксперимента «раскрутил» и её.
На данный момент я реализовал на QtE и D несколько «коммерческих» проектов (ПО на заказ). Всё 32 разрядное. Вот несколько скринов http://qte.ucoz.ru/index/screenshots/0-6
Может возникнуть вопрос, почему проекты на D а не на SPF например. Ответ – библиотеки, библиотеки и ещё раз библиотеки . Скорость написания на D раз в 10 выше скорости написания на Форте, именно благодаря стройному окружению.
Интересное наблюдение. D активно использует интерпретацию, для предварительного разбора исходного кода. Отсюда такие Фортовские штучки, как CREATE … DOES>, там они называются активные шаблоны, или например предварительные вычисления. Всё, что компилятор может вычислить самостоятельно (типы, выражения, функции и т.д.) на этапе разбора, он вычисляет и активно использует при создании exe. За счет этого просто удивляет интеллектуальность компилятора. Предвижу вопрос, а причем тут вообще Форт? А при том, что D (на мой взгляд конечно) это то к чему надо двигаться Форту. Все исходные уже есть, только собрать всё в кучу проверить и написать документацию. :)

Предвижу первый вопрос, тем более, что мне его уже задавали много раз. Зачем это всё нужно, QtE и всё такое. Ответ. Быстро написать кроссплатформенное приложение, используя мощь Qt и и при этом минимум инструментов, не заморачиваться с огромными IDE, компиляторами и т.д.

Исходники QtE можно скачать с http://qte.ucoz.ru/load

Готов ответить на вопросы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Вт авг 05, 2014 20:49 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Я так понял, для СПФ под вин32 вы не тестировали QtE от 060214 (я так понимаю, последний вариант).

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 06, 2014 12:55 
Воистину:
Цитата:
Мы сами куем свои собственные цепи...

Взять высокоуровневую хрень и сделать ее еще более высокоуровневой, чтобы иметь возможность прицепить к совершенно высокоуровневой...
Цитата:
- Знаете, в чем беда этой страны, Андерсон? Слишком много деревень.
Слишком много этих проклятых деревень - сотни, даже тысячи, и все похожи одна на другую. И слишком много в них людей. Если бы здесь не было такого множества удаленных друг от друга деревень, не было бы и войны и не надо нам было бы без конца ходить пешком. Вытащите-ка всех этих людей из деревень, сгоните их в один большой город - и не будет ни войны, ни маршей. А потом соберите ребят, которые служат в нашем Управлении экономической помощи и огребают по пятнадцать тысяч в год плюс деньжата на служебные расходы, и заставьте их изобрести большую машину, чтобы она сажала рис, и поливала рис, и пинала буйволов в зад, а потом собирала рис и посылала его в тот единственный город - пусть люди там делят его и едят. Вот тогда не будет войны и не будет американцев. Наша обязанность - дать им такие машины. /Вьетнам, 1968/

А я-то, дурак, со своим FOBOS...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 06, 2014 15:23 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 10 раз.
Сегодня смог собрать всё в кучу.
Два архива:
1- SPF-420-QtE-Windows32.zip ссылка для скачивания: https://yadi.sk/d/gL5FVIi0ZAnLq
2 - spf-420-qte-linux32.zip ссылка для скачивания: https://yadi.sk/d/saGeqldGZAnRn

Оба архива содержат полный каталог spf-420 с моими файлами QtE, консоли, вивера и всяких там мыслей. И там и там
стоит самый свежий QtE. Исходники там же. Исходники QtE 32/64.
Запуск:
spf4 console.f - версия консоли форта, но со старой версией QtE
spf4 console2.f - версия консоли форта, с новой версией QtE. Однако сама консоль не доделана :shuffle; увлекся D
view.exe - просмотрщик с подсветкой файлов форта. Исходник view.f
ff.exe и ffc.exe (ff.d и ffc.d) - быстрый поиск по файловой системе. ffc.exe - строит индексный файл, ff.exe - показывает и ищет.
Мне очень помогает. У меня поиск по полному Linux 2 секунды, по Windows 3 секунды.
Построить индексный файл: ffc.exe NameFileIndex.txt Dir1 Dir2 ...
Работа с индексным файлом: ff.exe NameFileIndex.txt

В версии windows лежит RunTime Qt 4.8.0 Windows 32, так что само Qt ставить не надо.
В версии для Linux лежит qte.so. Обычно RunTime Qt в Linux уже присутствует. Если нет, то поставить пакет Qt.i686
Запуск файлов в Linux лучше делать через скрипты *.sh
Например: sh console.sh

В начале перехода на D я старался переписать QtE.f в QtE.d Обе они работают с QtE.dll. По этому частично они совместимы. Сейчас версия для D намного больше по возможностям версии для форта. Но у меня сейчас нет времени для развития версии для форта, быдлкодорство (как говорит gudleifr) задовило.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 06, 2014 17:42 
Не в сети

Зарегистрирован: Ср май 10, 2006 13:51
Сообщения: 196
Откуда: Хмельницкий
Благодарил (а): 3 раз.
Поблагодарили: 4 раз.
Offtopic
mgw писал(а):
ff.exe и ffc.exe (ff.d и ffc.d) - быстрый поиск по файловой системе. ffc.exe - строит индексный файл, ff.exe - показывает и ищет.
Мне очень помогает. У меня поиск по полному Linux 2 секунды, по Windows 3 секунды.

В Linux для этого есть команда locate
/Offtopic


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 06, 2014 18:13 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 10 раз.
Написать ff (поиск файла по имени) меня "сподвигла" одна контора. У них файловый сервер на котором более 600 тыс файлов, причем с чудными именами типа "……..\ «Ёлки в производстве» за 2013 год» ? доходности.xlsx". Поиск в этой "свалке" был ..... жуть. А тут как раз D увлекся, вот и "слепил" им. Индекс обновляется каждой ночью на сервере. Ну а потом перенес её на Linux. Посмотреть как там будет работать. На Linux вообще красиво смотрится :)

А за locate - спасибо! Не знал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Вт авг 12, 2014 11:31 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 10 раз.
Вопрос:
Что есть работающего из форта 64 разрядного?
Хочу QtE на 64 разрядах протестировать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Вт авг 12, 2014 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1256
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
gForth, iForth.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 13, 2014 14:45 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
VoidVolker писал(а):
iForth.

на сколько знаю, платный?
Есть у кого исходники сего форта? Интересно посмотреть внутрь.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 13, 2014 16:35 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 926
Благодарил (а): 3 раз.
Поблагодарили: 33 раз.
mOleg писал(а):
VoidVolker писал(а):
iForth.

на сколько знаю, платный?
Есть у кого исходники сего форта? Интересно посмотреть внутрь.

Можно, в определённом виде получить дизасемблированный код для составления общего представления
и далее по мере интереса просматривать полученный ассемблерный код (с вариантом перевода его в Форт, по возможности).
Наверное можно и провести обратную сборку из асм лиcтинга полученного средствами SPF4

P.S. Есть некоторые "изыскания" в этом направлении "тела" VFX Форт системы, при наличии терпения читать асм код
или обрабатывать листинг утилитами (из дампа кодофайла) для получения необходимой информации.
Но задача дизасма плохо формализуема и специфична в путях её решения даже с применением Форт инструментария :) Могу проделать "черновой" пласт работы по IForth по заделу из VFX.


Последний раз редактировалось KPG Ср авг 13, 2014 16:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Ср авг 13, 2014 16:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
KPG писал(а):
Можно, в определённом виде получить дизасемблированный код для составления общего представления

не, это совсем не интересно.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Чт авг 14, 2014 10:54 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 10 раз.
Поставил gForth 64 на Linux. Но с подключением DLL проблема. Он пытается вызвать внешний компилятор С (gcc) и при этом валится по ошибке (выкидывает исключение). Сам подход мне не нравится, на любой чих вызывать внешний компилятор. Пытался понять, что ему не хватает (gcc у меня стоит в полном объеме), но там довольно сложно. После SPF, где всё легко и просто, тяжко .... Порадовало, что в gForth есть OOP, правда не смотрел, как и что ... В общем, SPF 64 нужен ... без него тяжело


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Чт авг 14, 2014 12:37 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
mgw писал(а):
В общем, SPF 64 нужен ... без него тяжело

что-то делал Михаил в этом направлении, пробегало тут недавно.
На сколько качественно реализовано не знаю, не смотрел

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: QtE - "обёртка" для Qt. Windows 32/64 и Linux 32/64
СообщениеДобавлено: Чт авг 14, 2014 13:49 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1256
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
mgw писал(а):
Поставил gForth 64 на Linux. Но с подключением DLL проблема. Он пытается вызвать внешний компилятор С (gcc) и при этом валится по ошибке (выкидывает исключение). Сам подход мне не нравится, на любой чих вызывать внешний компилятор. Пытался понять, что ему не хватает (gcc у меня стоит в полном объеме), но там довольно сложно. После SPF, где всё легко и просто, тяжко .... Порадовало, что в gForth есть OOP, правда не смотрел, как и что ... В общем, SPF 64 нужен ... без него тяжело

Он с си работает так примерно:
Код:
c-library socket
\c #include <netdb.h>
\c #include <unistd.h>
c-function gethostname gethostname a n -- n ( c-addr u -- ior )
\c #include <errno.h>
\c #define get_errno() errno
c-function errno get_errno -- n ( -- value )
\c #include <sys/types.h>
\c #include <sys/socket.h>
c-function socket socket n n n -- n ( class type proto -- fd )
c-function closesocket close n -- n ( fd -- ior )
c-function connect connect n a n -- n ( fd sock size -- err )
c-function send send n a n n -- n ( socket buffer count flags -- size )
c-function recv recv n a n n -- n ( socket buffer count flags -- size )
c-function recvfrom recvfrom n a n n a a -- n ( socket buffer count flags srcaddr addrlen -- size )
c-function sendto sendto n a n n a n -- n ( socket buffer count flags srcaddr addrlen -- size )
c-function listen() listen n n -- n ( socket backlog -- err )
c-function bind bind n a n -- n ( socket sockaddr socklen --- err )
c-function accept() accept n a a -- n ( socket sockaddr addrlen -- fd )
\c #include <stdio.h>
c-function fdopen fdopen n a -- a ( fd fileattr -- file )
\c #include <fcntl.h>
c-function fcntl fcntl n n n -- n ( fd n1 n2 -- ior )
\c #include <arpa/inet.h>
c-function htonl htonl n -- n ( x -- x' )
c-function htons htons n -- n ( x -- x' )
c-function ntohl ntohl n -- n ( x -- x' )
\c #define fileno1(file) fileno((FILE*)(file))
c-function fileno fileno1 a -- n ( file* -- fd )
\c #include <poll.h>
c-function poll poll a n n -- n ( fds nfds timeout -- r )
e? os-type s" linux-gnu" str= [IF]
    c-function ppoll ppoll a n a a -- n ( fds nfds timeout_ts sigmask -- r )
    \c #include <sys/epoll.h>
    c-function epoll_create epoll_create n -- n ( n -- epfd )
    c-function epoll_ctl epoll_ctl n n n a -- n ( epfd op fd event -- r )
    c-function epoll_wait epoll_wait n a n n -- n ( epfd events maxevs timeout -- r )
    s" uname -r" r/o open-pipe throw
    dup >r slurp-fid r> close-pipe throw drop
    2dup s" 3." string-prefix? >r drop free throw r> [IF]
   c-function recvmmsg recvmmsg n a n n a -- n ( sockfd hdr vlen flag timeout -- r )
   c-function sendmmsg sendmmsg n a n n -- n ( sockfd hdr vlen flag -- r )
    [THEN]
[THEN]
\c #include <netdb.h>
c-function getaddrinfo getaddrinfo a a a a -- n ( node service hints res -- r )
c-function freeaddrinfo freeaddrinfo a -- void ( res -- )
c-function gai_strerror gai_strerror n -- a ( errcode -- addr )
c-function setsockopt setsockopt n n n a n -- n ( sockfd level optname optval optlen -- r )
end-c-library

Этот код генерирует си-исходник, добавив к нему свои либы, отдает его GCC, который генерирует so-библиотеку. Напоминаю, что gforth64 есть только под линукс, под винду - только 32. При изменении кода внешней библиотеки надо удалить сгенерированную so-библиотеку (в домашнем каталоге пользователя).
Репозиторий gforth тут: https://github.com/forthy42/gforth/ - самый свежий. Сборка в дистрибутивах популярных ОС отстает на год-три.
СПФ64 под линуксом как бы есть: https://github.com/VoidVolker/spf64/ Это вот делал Михаил. Там еще куча багов, которые надо лечить. Я начал копать эту тему - но сейчас некогда :/

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


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

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


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

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


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

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