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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Блог программиста любителя
Автор Сообщение
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Работа продолжается. Основная трудность - неопределенность предполагаемой системы, для которой
пишешь интерфейс. Когда система наконец создана, становится очевидны дефекты интерфейса,
которые должны поддерживать систему. Работа идет на новый круг, что психологически тяжело и неприятно.
Сейчас прорабатываю функцию assign.
Она назначает параметры устройствам ввода-вывода, куда и откуда forth скрипт будет выдавать
и забирать данные, не заботясь, куда эти данные попадут на самом деле.
Устройством ввода вывода может быть что угодно, его даже можно написать на форте.

Остановился на следущем дизайне функции assign
Код:
  \  .s" name" - оставляет на стеке адрес и длину слова name
.s" protocol  param1 ... paramN" 
.s" filename"
channal  assign   \ int int   int int  int assign

сейчас развиты следущие протоколы
Код:
s" file" s" anyFileName"  5 assign \ тут все понятно файл назначается 5 каналу
( url =  IP_or_HOSTNAME:port  or  user:password@IP_or_HOSTNAME:port/path )
s" udp  url"  s" filename" 5 assign
s" tcp  url"  s" filename" 5 assign
s" ftp url"   s" filename" 5 assign

Запись - чтение осуществляется функциями
readchan writechan - для текстов
writebytes readbytes - массивы байт

Это все у меня уже находится в эксплуатации, скрипты буду понемногу выкладывать.
Сам forth пока выкладывать не буду, код еще пока грязный.
Сообщение Добавлено: Вс ноя 13, 2022 03:06
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
По причине отсутствия опыта работы с сокетами, довольно много кода пришлось переписывать
много раз. Пока идет чистка кода после всех экспериментов.
Но уже есть сетевые разработки, Wake on lan, ftp-клиент.
Не сложно также оснастить каждое приложение, содержащее форт, своим ftp-сервером,
что бы можно было без геморойно обмениваться с ним данными.
Сейчас выложу рабочую версию самодельной wol.
( удаленное включение компьютеров.
https://admcomp.ru/wol.html
)
К сожалению технология сбойная, иногда не срабатывает.
Но вероятность сбоя самодельной wol и "официальной" программы wol примерно равно.

Для запуска нужно реализовать ф-ции
adrString lenString index getchar
и
adrByte len send - которая посылает udp-пакет определенному хосту
Код:
  2variable mk    s" 00:1A:4D:2F:89:0C"  mk 2!  \   адрес и размер строки mac-адреса
 
  variable aa  variable bb variable er
 
   :  dps  \   int n  int a int b   a>b   диапазон a < n < b ,-1 a n b > 0   
     0 er !
     bb !  aa !
     dup aa @ -  0> 
     if
       DUP bb @ - 0<
       if -1 er !
       then
      then 
     drop
     er @ 
    ;  \  -1 -- входит в диапазон  между a и b
   
  : ifdig16  \ char - log ( num | -1 )  0 - 9 , a - f ; -1 false
     dup 47 59 dps         \ 0-9
         if 48 -
    else
      dup 96 103  dps  \ a-f
      if 87 - 
      else
        dup 64 71 dps  \ A-F
        if 55 -
        else drop -1   
        then   
            then
          then
    ;  \ 0 - Н или -1
   
  : sum16  ( dig1 dig2 - byte or -1000  )
      swap
      dup 0<  if  \ error (-1)
              drop drop -1000
              else
         swap
         dup 0< if
                drop drop -1000
           else   
                     4 shl or \ сдвигает и складывает
                     then
         then     
  ; 
   
    variable qu 0 qu !
 
  : to_byte \  ..  - byte  два соседних символа из строки mk превращает в байт
    mk 2@ qu @ getchar \ char from string
    1 qu +!   
    ifdig16            \    dup .
    mk 2@ qu @ getchar
    1 qu +!   
    ifdig16             \    dup .
    swap
    sum16
   ;  \ qu приращается
 

  : mac     \  Читает mac-строку и укладывает байты           
      to_byte  1 qu +!  c,
      to_byte  1 qu +!  c,
      to_byte 1 qu +!   c,
      to_byte 1 qu +!   c,
      to_byte 1 qu +!   c,
      to_byte           c,
   0 qu !
   ;
variable macm
  here macm  !
mac  \  в macm - адрес байтов mac
   
6  6 16 * +  constant dtg.length  \ 102 
create datagram[]  dtg.length allot
0 qu !

: fillFF  \ заполнить 6 байтов структуры datagram байтом ff
   datagram[] dup 5 + swap
   do 255  i  c! loop 
;   
 
: movMak \ копировать байты mak адреса
   6 qu +!
   \ qu dup 5 + swap   \ qu текущий адрес в datagram
   5 0
   do
     macm @  i + c@   qu @ i + c!
  loop
  ;

: 4mv  movMak  movMak  movMak  movMak ;

: 16mv 4mv 4mv 4mv 4mv ; 

: pre
   fillff  \ 16mv
   datagram[] qu !
   16mv
  ;
  pre
  datagram[]  dtg.length  send

Реализовано конечно аляповато, но ковырятся времени нет.
Сообщение Добавлено: Ср окт 26, 2022 15:06
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Все это время выгуливал эту программу в велосипедных поездках.
Программа умеет работать с одним загруженным треком и отображать
текущий, формируемый трек. В принципе, несложно было бы написать
форт-программу, которая давала бы, например, звуковое оповещение в случае
отклонения от заданного трека, но почему-то поленился это сделать.
Вместо этого, используя Intent, реализовал вызов фотографической
программы пользователя Longer
http://fforum.winglion.ru/viewtopic.php?p=44257#p44257

(Кстати, много кода я надергал с его camSnap'a, на тот момент
я был чайником в андроид программировании)
Intent вызывается при нажатии на кнопку wpt, что позволяет
не только зафиксировать координаты путевой точки, но и отфотографировать ее
со всех сторон. Для этого ослабил крепление смартфона на руле так,
что бы можно было переворачивать его вертикально, для фотографирования,
или горизонтально, для навигации.
В целом, две взаимодействующие примитивные программы оказались
гораздо удобнее каких-то иных средств. Когда же в обоих окажется
отлаженный forth, использование таких программ станет еще
на порядок гибче.

Работа над фортом продолжается - введено много улучшений.
Прорабатывается многозадачность, каналы.
Добавилась возможность работать не только с файлами, но и с датаграммами.
Сообщение Добавлено: Вс окт 09, 2022 07:46
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Цитата:
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?


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

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

Изображение

На телефоне карту можно перемещать, написал свою реализацию перемещения
экрана, та, что используется в android api ужастна, экран залипает.

Код:
  float Xdown, Ydown;// координаты касания
  @Override
    public boolean onTouch(View v, MotionEvent event ) {

    float x,y;
    x = event.getX();   y = event.getY();
   
    switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN: // нажатие
      Xdown=x; Ydown=y;
      break;
      case MotionEvent.ACTION_MOVE: // движение .. на некоторых моделях работает муторно
      break;
    case MotionEvent.ACTION_UP: // отпускание  !! убрать инт
       int dxp=(int)(Xdown-x); // смещение в пикселях 
       int dyp=-(int)(Ydown-y);                       
       double  dxm=dxp*PixelSizeMetres;  // смещение в метрах
       double dym=dyp*PixelSizeMetres;
       float klat=111111.0f;  // метров  в градусе по широте
       float kLon=(float ) (40000*Math.cos( Math.toRadians(  centrLat) )/360 ) *1000; // по долготе     
       double dxg = dxm/kLon;
       double dyg = dym/klat;
       centrLat=centrLat+dyg; 
       centrLon=centrLon+dxg;
       PixelSizeMetres = AU.calcMetrsPix(centrLat, zoom);
            dispCorner = AU.calcDispCorner(centrLat,centrLon,PixelSizeMetres, displaywidth , displayheight);       
        navView.tileArray=macroTileArray(   centrLat, centrLon,   zoom,    displaywidth  ,    displayheight);   
        if (AU.Wpt!=null)updateWP(  AU.Wpt,    dispCorner , PixelSizeMetres);
        if (AU.TRK!=null) updateTRK(AU.TRK);
        if (TRKp!=null)  updateGPS(TRKp);
        navView.invalidate();
      break;
    case MotionEvent.ACTION_CANCEL: 
      break;
    }
    return true;
  }


В работе использовал только сферическую геометрию и информацию отсюда
https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

Никакими сторонними библиотеками не пользовался.
Сообщение Добавлено: Вс авг 14, 2022 03:32
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Цитата:
Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб


AIDE
https://play.google.com/store/apps/details?id=com.aide.ui&hl=ru&gl=US

Можно разрабатывать прямо на телефоне, можно копировать исходные тексты
в телефон и там компилировать. При этом полная среда, собирает проекты
в том числе и android studio.
В бесплатной версии может работать с пятью java файлами. Платная стоит
порядка 800 рублей, часто бывают скидки. Из за ограничений в 5 файлов
вынужден был поместить весь код форта в один большой файл.

Есть утилиты коммандной строки, их можно скачать в android developer
К сожалению, надо очень точно настраивать манифесты, версии и прочие траблы.
Проекты хотя и собираются, но только один раз удалось установить его на телефон.
Забросил эту ковыряльню. Когда будет время, напишу скрипты.
Сообщение Добавлено: Чт авг 11, 2022 17:08
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
KPG писал(а):
Total Vacuum писал(а):
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )

Да, вариантов выбора точно мало, если нужен именно нативный Форт.
Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид
Кто-то же рыпается писать под ведроид.
Что мешает? Танцы не в счёт. :)
Сообщение Добавлено: Чт авг 11, 2022 16:21
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Total Vacuum писал(а):
Sotnik писал(а):
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
А на каком Форте-то, да еще и под Андроид?
Вот это и наша беда, что не все платформы перекрыты поддержкой.
Ресурса нет, денег нет на раскрутку, идей куча, но решать не на чем - только извращённые ЯП...
Сообщение Добавлено: Чт авг 11, 2022 16:19
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Total Vacuum писал(а):
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) )

Да, вариантов выбора точно мало, если нужен именно нативный Форт.
Есть, к примеру, gForth но он. вроде, капризно запускается под Андроид
Сообщение Добавлено: Чт авг 11, 2022 15:56
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Sotnik писал(а):
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
А на каком Форте-то, да еще и под Андроид? Я что-то не знаю ни одной среды разработки под Андроид весом меньше 1Гб :) Так что появление нормального, хотя и самодельного, Форта под Андроид надо только приветствовать. Наверняка кому-то пригодится...

И, кстати, почему приложения под Андроид такие жирные? Пара кнопочек, а уже 100Мб, а ведь бывают и по 500... По рукам бы надавать тем, кто такие жирные программы пишет. :)
Сообщение Добавлено: Чт авг 11, 2022 15:46
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
vikt писал(а):
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
Тебе мало кладбища с надгробиями с названиями фортов???

А просто писать на ФОРТЕ, использую всю красоту и мощь можно?
Под каким из надгробий есть внятное описание что там лежит?
Единицы живых, которые ещё трепыхаются.

P.S. Это не моё, но точно характеризует что гробит Форт...
Форт - это пустые бутылки.
Его выпивают, написав для решения своей задачи, практической или теоритической, и потом... выкидывают в народ как ненужную пустую бутылку...
Использовали - вот вам, авось ещё кому пригодиться. Ни этикетки толком, ни описания содержимого, ни поддержки в наполнении.
Вот такими пустыми бутылками и завалены ресурсы "по форту".
В них есть остатки, капли, которые создают запахи, чтоб мир понял, что Форт ещё существует.
А более ... хранят в сейфе, подальше от посторонних, и втихаря делают хорошие глотки, громко рассказывая: - Какой у меня отличнейший ФОРТ есть!
Он (Форт у меня) во-о-о-от та-а-а-акой за-а-а-ашибательский.

Выдвигаются громадные словесные конструкции (не фортовские), сваливающие любые начинания в болтовню.
- Ну вот же, и вот тут, и там, всё же завалено пустыми бутылками - наполняй и используй!!!
Сообщение Добавлено: Чт авг 11, 2022 15:06
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Продолжаю работать над проектом.
Успешно реализовывая навигационную часть проекта, к сожалению
допустил какую-то непонятную ошибку в фортовской части, конкретно в графике.
Решил не разбираться с этим, тем более, что осталось реализовать
только загрузку из сети, кэширование и отображение карты.
Затем буду переписывать проект.
В частности форт сделаю намного более полным и читаемым.
И с графикой, прежде чем внедрить ее в навигационный прект, буду разбираться
на более простом проекте, не отягощенным навигационными приблудами.

Сейчас реализованы 1) загрузка и отображение gpx файла. ( путевые точки и трек в
формате xml )
2) Отображение и сохранение точек трека, полученные через gps приемник в формате gpx.

Изображение

https://nakarte.me/#m=15/55.96711/37.80035&l=O&nktl=qZJcKV_rT86ZQCGiPOZiqA

Скошанные углы на повороте объясняются тем, что я забираю данные с gps один
раз в 10 секунд.

Кстати, реализацию фортов, оформлю отдельным проектом.
Думаю, форт сообществу надо было сделать это давно,
с тех пор, как возникла идея,
"каждый фортер должен написать свой форт".
Вполне согласен с этим утверждением.
Во первых, это поможет понять create does компилирущие слова итд.
Во вторых - в хозяйстве пригодицо.
Книга Баранова и Ноздрунова расчитана на очень подготовленного читателя,
и из за мизерного объема ее многие вещи мало раскрыты.
Сообщение Добавлено: Чт авг 11, 2022 14:50
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Total Vacuum писал(а):
А какой там формат вызова для OpenGL-слов?

Калька с обычного. Только нет автоматической подгрузки всей dll.


Вложения:
irbis_gl.png
irbis_gl.png [ 35.7 Кб | Просмотров: 9653 ]
Сообщение Добавлено: Пт июн 24, 2022 23:10
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Hishnik писал(а):
А Ирбис ... одно пространство OpenGL.
А какой там формат вызова для OpenGL-слов?
Сообщение Добавлено: Пт июн 24, 2022 20:18
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Total Vacuum писал(а):
Кстати, а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?

Кварк-Форт :) А Ирбис таких имеет вообще N штук, плюс одно пространство OpenGL.
Сообщение Добавлено: Чт июн 23, 2022 23:59
  Заголовок сообщения:  Re: Блог программиста любителя  Ответить с цитатой
Цитата:
Маловат все-таки буфер на 1000 графических примитивов.

Можно задать больший. Это черновой вариант,

Цитата:
а можно в памяти задать массив на width*height точек, а потом выводить его в canvas в качестве картинки?

Можно, есть тип данных bitmap, он многофункцианальный.
Вообще, графику лучше выводить с помощью java, так как этот процесс высокозатратный,
а предложенную технику использовать для того, что бы подрисовать чего-нибудь к
сформированному изображению.
Вообще, в андроид апи очень много графических ф-ций, opengl, матричные преобразования и др.
Ковырятся с ними долго, ограничусь только подмножеством, необходимым для реализации
навигационной программы. Каждый может без труда добавить необходимые
ему функции по шаблону. А иначе я никогда не закончу даже черновой проект.
Сообщение Добавлено: Чт июн 23, 2022 17:39

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


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