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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Блог программиста любителя
СообщениеДобавлено: Пт сен 02, 2016 01:32 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 189
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
Здравствуйте! Я програмvист=любитель, пишу программы для себя.
То есть у меня нет проблем в том, что бы поддерживать пользователей,
соблюдения сроков и другой кухни проффессионалов.
Но нет и благотворной критики.
Решил завести небольшой блог, думаю для меня это будет большим стимулом
улучшать качество и опрятность своих работ, раз их придеться демонстрировать
другим людям.

Интересует прежде всего программирование для мобильных устройств.
Для десктопов и ноутбуков давно стали доступны юниксподобные системы, с развитым
командным языком. Тут особо нечего программировать. Возможности bash
и прилагаемых утилит как правило достаточен что бы автоматизировать
любую деятельность. Тут проблема скорей в методологии - как заставить пользователя
изучать этот самый bash.
В мобильном программировании другое дело. Как правило это программы с убогой
функциональностью или громоздкие, глюкавые, с кучей меню и настроек,
которыми очень трудно пользоваться, особенно на солнце, когда меню не читается.
И у меня уже давно возникла идея, присобачить скриптовый движок внутрь программы.
Собственно этим я и занимаюсь с разной степенью успешности.

_________________
Линукс решает, винда глотает.


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

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 189
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
Коротко опишу основные программы, которые написал.
Если кого заинтересует, пришлю файлы, вместе с исходниками,
или выложу куда=нибудь, на sourceforge например.

Их три - электронная таблица, навигационная, и программа для фотографирования.
Все они написанны для j2me (старых телефонов с поддержкой ява),
но буду адаптировать их на андроид.

Почемц j2me, а не андроид или айфон?
Дело в том, что я заядлый велосипедист, и в автономе бываю довольно часто.
Анлроиды и разные GoPro, навигаторы, зеркалки и прочая лабуда
много весит, занимает место, жрет электричество в огромных
кол-вах. Для запитывания всей этой фигни. возят с собой
еще powerbank. Кто-то пытался использовать солнечные
батареи, но получается очень громоздко.
Все перечисленное может делать старый телефон. Похуже конечно.
Но к нему можно взять легкую запасную батарею, а от
повербанк его можно подзаряжать в течение года.
И еще, попробуйте набрать номер, одной рукой управляя
велосипедом, а другой елозя пальцем по стеклу.
На мой взгляд, здесь дауншифтинг полностью оправдан.
Вообще, туристические форумы переполнены тысячистраничными темами
про электропитание в походах.

Итак, фотопрограмма. После запуска, при нажатии на какую-нибудь клавишу
из правого ряда 3, 6, 9 делается фотография, а при нажатии на левый ряд
1 4 7 записывается 15 секунд звука. Звуковой файл имеет тоже название,
что и последний jpg файл, только расширение amr, Так что к какой еартинке
относится конкретный звуковой коментарий, не перепутаешь.
Превью при этом не показывается, так что это еще и скрытая камера.
На самом деле это сделано не для того чтобы шпионить, а чтоб
экономить энергию. Впрочем, если нажать на клавишу меню, превью появится,
и можно камеру аккуратно навести.
Все это сделано, чтобы было проще снимать, управляя велосипедом.
Во время поездки, у меня выходит по 150-200 фоток и звуковых
коментариев в день. В конце использования, программа пакует все файлы в
tar архив. Это во первых удобно, а во вторых сохраняет время создания
файла, что очень важно. При переброски через блютуз время создания
заменяется на время переброски, а в tar все сохраняется.
пример фоточки, велосипедисты одноколесники
Изображение
В андроид версии будет реализован язык сценариев, возможностей
програмировать камеру столько, что никаких меню не хватит.

Фотопрограмма - самая успешная моя разработка.
Ее у меня выпросили примерно десять человек, в основном туристы.

Навигация: в настоящий момент разложена. Придеться переписывать
заново, как особо нужную. Сейчас вынужден возить устройство под wince.
Программа должна была показывать карты openstreetmap,
положение солнца на небе в определенный час, что бы в прохладу ехать по
освещенным солнцем улицам а в жару, по затененным домами и прочие хотелки.
Но не справился с астрономией и программа стала врать. Но когда программа
была проста и не такая амбициозная, она была полезна.

Таблица: формулы вводятся в стековой нотации.
В ячейках можно хранить ссылки на другие таблицы, как в html,
и фортскрипты.
Подробней о таблицах позже.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Вт сен 13, 2016 16:14 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 189
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
Итак таблица. Поддерживает кнопочную клавиатуру и стилус.
Отличается от обычных таблиц

1) В ячейках мохно хранить тексты, содерхащие перенос,
а не просто строки.
2) В ячейкам можно хранить ссылки на другие таблицы, хранящиеся
в памяти телефона или в интернете. При нажатии на эту ячейку
загружается соответствущая таблица. Это очень удобно, можно
мгновенно построить простую информационную систеиу.
3) Формулы используют стековую нотацию, до обычной записи не дошли руки,
да и я являюсь единственным пользователем системы.
4) В ячейках может размещаться псевдоФорт скрипты.

Есть недостатки, интерфейс неочевиден, хоть и удобен.
Можно выйти из программы и забыть сохранить файл и все изменения пропадут.
Это часто происходит, если по каким-то причинам долго таблицей не
пользоваться. С другой стороны, зачем совершенствовать систему,
написанную поверх дурного ядра?
Подробно описывать не буду, систему буду переписывать.
Если кому нужна, выложу как есть на сегодняшний день.

Теперь о роли таблиц в мобильном программирование.
Напомню, речь идет о любительском программирование,
когда программа пишется для себя, минимизация рутины приоритетнее,
чем внешний вид.
Таблица здесь - это тоже, что и текст в unix системах.
Используя конвеер, перенаправления, фильтры итд можно
в unix системах решать сложнейшие задачи, не прибегая к
классическому программированию, используя только bash.
В мобильном программирование такая идилия мало доступна.
Строкв текста тупо не влезает в ширину экрана.

Изображение
tel2.png


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

Изображение
Tel1.png

Это первое преимущества таблиц.

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

Третье. Еще до того, как встроенная программа начнет разрабатываться,
таблицу можно начинать заполнять данными. То есть ввести в эксплуатацию
программу, которая только еще задумана.

Четвертое. Простейшая таблица, без украшательств и вычислений
очень компакта, в скомпилированном виде у меня заняла примерно 8 кб
кода. То есть ее можно сделать компонентом любой
ява(или другого языка) программы, в ней можно хранить и редактировать
например конфигурацию.

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

Почти все, что я перечислил, проверенно на сравнительно простых
задачах. Не знаю, облегчит ли все это решение сложных задач,
или внесет лишние сущности. Посмотрим.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Блог программиста любителя
СообщениеДобавлено: Пн окт 10, 2016 14:25 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 189
Откуда: Москва
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
Немного о форте, который я использую.
Основан на ретрофорт. http://forthworks.com/retro/
Но имеются очень серьезные отличия. Стек, как и в ретро - 32 битный,
но память для кода 16 битная. Это сделано для того, чтобы код типа
lit 1 lit 2
не занимал 16 байт, состоящих почти целиком из нулей

Еще порты - в ретро это вроде как имитируют "железо",
у меня через порты передается номер внешней функции.
Это нужно, чтобы форт виртуальная машина (FVM) могла вызывать
функции различных API, которые привязаны к соотвктствующим портам.
Есть и другие отличия..

Код на ява, можно рассматрмвать как псевдокод

Стек почти ничего не изменил из ретрофорт.
Код:
/* from retro forth
http://forthworks.com/retro/
*/
package  forth;

public class STACK {

public int [] stack = null;  //

public int sp;

public void push(int v) {stack[sp++] = v; }

public int pop()        {return stack[--sp];} // --sp
   
public int peek() { return stack[sp - 1];}  // неразрушающее чтение стэка
   
public int peek2() {   return stack[sp - 2];   }
   
public void drop(int i) {sp -= i;   }

public int getDepth() {   return sp; }
}   

_________________
Линукс решает, винда глотает.


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

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


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

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


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

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