Цель создания своего языка программирования – это желание создать удобный для себя объектноориентированный, русскоязычный и легко читабельный язык, внутри которого будет встроена полноценная справочная система. Все библиотеки и русскоязычные операторы и объекты используются мной в реальных проектах на FoxPro9, которые я пишу для своих клиентов. А чтоб ими могли пользоваться и другие программисты, я начал разрабатывать данный язык программирования. К тому же мне, при выполнении каких то действий не всегда удобно запускать громоздкий FoxPro 9. Гораздо удобнее использовать маленький интерпретатор (менее 30 мб) на флешке, который не требует инсталляции.
Данный проект позволяет мне после усвоения нового материала создавать новые функции и объекты в Русском Фоксе (РФокс). Таким образом, РФокс для меня своего рода конспект, в котором я попытаюсь объединить опыт работы с другими языками программирования и развивать русскоязычную библиотеку для FoxPro9, так как библиотека РФокса полностью совместима в FoxPro.
РФокс – это один из самых простых свободно распространяемых языков для освоения начинающими. Легко создаются экранные формы для ввода информации, сохраняются в простых DBF таблицах и легко формируются отчеты на основе шаблонов Excel и LibreOffice (OpenOffice). Для начального изучения программированию, в том числе объектно ориентированному, самое то. Можно его без особых затрат сделать и многоязычным. Была идея сделать единственный в мире башкирскоязычный язык программирования, но пока не нашел в Башкирии желающих популяризировать башкирский язык и обучать детей в национальных школах программированию на башкирском.
К сожалению, следует признать, что это пока единственный достаточно объемный объектно ориентированный русскоязычный язык программирования в мире. 1С и OneScript не позволяют создавать объекты, потому их не учитываем. Но на Украине, благодаря стараниям Сергея Рогаткина, уже появился конкурент (но в реальности соратник) в иной весовой категории //infostart.ru/public/1101638/ , на котором заодно можно создавать DLL-файлы, чтоб подключать их в РФоксе. Кроме того, разработанный редактор языка программирования Перфолента подходит и для программирования на РФоксе. Автор Перфоленты добавил возможность открывать для редактирования и последующего запуска файлы РФокса и OneScript. Но кроме редактора Перфолента вы можете использовать и NotePad++. Описание по настройкам есть в документации и на видео.
Я умышленно создал базовые функции для РФокса аналогичными, как в 1С, так как сам программирую на 1С. Кстати, и Перфолента имеет такие русскоязычные функции. Потому пользователю будет легко программировать в РФокс, в Перфолента, в OneScript и в 1С. Надо только учитывать, что в РФокс знак «;» означает перевод команды на следующую строку, а не окончание команды, как в 1С, в OneScript и Перфолента. К этому придется привыкнуть.
Сразу скажу, что РФокс – это 32-разрядный язык программирования и работает только под Windows (лично меня это пока устраивает), но на нем можно генерировать пока простой PHP-код, а так же будет генерация кодов для других языков программирования. РФокс уже содержит объекты для генерации HTML и CSS кода.
В отличие от FoxPro9, кодировка исходного текста которого может быть только Win1251, РФокс, кроме кодировки Win1251, понимает и UTF8-BOOM, поэтому вы можете писать код для РФокс на современных редакторах.
РФокс, как наследник FoxPro9, обладает практически всей мощью языка FoxPro9. Вы можете смешивать англоязычное программирование на FoxPro9 с программированием на РФокс в одном коде и, например, написать так:
IF Значение=ИСТИНА ТОГДА
MESSAGEBOX(«Высвечиваю сообщение из MessageBox()»)
Предупреждение(«Высвечиваю сообщение из Предупреждение()»)
КОНЕЦЕСЛИ;
Так что справочник и документация по FoxPro вам так же будет полезна.
Кроме того, как промежуточный файл компиляции генерируется файл PRG в кодировке win1251, а затем исполняемый код для FoxPro9 с расширением fxp, который можно запускать без первоначального исходного текста. Экранные формы, меню и модули fxp, созданные в среде FoxPro, вы можете подключать и в РФоксе. Но зачем вам возиться с англоязычным FoxPro, когда у вас есть Русский Фокс ?
Встроенные объекты РФокс существенно расширяют возможности FoxPro9. Функции в РФоксе бывают свободными (С) и большинство функций находятся в составе объектов. Часть свободных функций являются аналогами 1С. В справочной системе они обозначены как (1С). Большинство функций сгруппированы в объектах. Каждый объект имеет свойство Помощь() (возвращает строку с помощью по объекту) и ПоказатьПомощь() (высвечивает на экран помощь по объекту). Если в помощи объекта при описании функции стоит знак (С), то это значит, что функция имеет свободный аналог, то есть может быть вызвана без создания объекта. А если стоит знак (1С), то эта свободная функция работает аналогично, как в системе 1С, то есть для изучения этой функции можно смотреть руководство по 1С. Часть объектов в РФокс являются предопределенными, то есть создаются при запуске вашего модуля: ОбъектСтрока (содержит функции по работе со строками), ОбъектДата (работа с датами), ОбъектЧисло, ОбъектФайл, ОбъектСистема, ОбъектДиалог, ОбъектРабочийСтол, ОбъектИсследование, RusFox (объект с кратким описанием объектов в РФокс). Функции заключенные в предопределенных объектов можно вызывать, не создавая объекта. Например, посмотреть на экране помощь по объекту: ОбъектСтрока.ПоказатьПомощь(). Если же объект не предопределен, то следует сначала создать объект:
CSS = НовыйОбъект(«Генератор_CSS»)
CSS. ПоказатьПомощь()
Если запустить RusFox.exe без параметров, то откроется окно, в котором вы можете получить на экран помощь по всем объектам РФокса и скопировать этот текст в любой редактор. Список объектов постоянно пополняется, а так же появляются новые функции в объектах.
Чтоб поверхностно понять нынешние возможности РФокса можно ознакомиться со списком существующих объектов в РФоксе версии 5.13: Диск, ЗапускПрогWindows, ЭкспортИмпорт, ПросмотрКурсора, КаталогиWindows, Реестр, ФункцииDBF, ФайлDBF, Курсор, Массив, ОбъектМассив, RepOpenOffice, Excel, ТабличныйОтчет, Перфолента, PHP, clickermann, Интернет, ВебКлиентPHP, ВебКлиентMySQL, ВебКлиент, ВебСервер, Сеть, Shell, ФормаГлавная, ФормаОкно, Коллекция, Редактор, Флажок, СтрокаВвода, Надпись, Кнопка, КомбинированныйСписок СписокСтрок Таймер Страницы ГруппаКнопок ГруппаПереключателей, Изображение, Спиннер, Фигура, ТаблицаКарточки, HTML5, Генератор_CSS. К этому можно добавить документацию по FoxPro9. Все объекты существующие в FoxPro9 так же могут быть созданы. Объекты Коллекция … - Фигура – это наследники аналогичных объектов из FoxPro9.
В каталогах РФокс содержатся примеры программирования и примеры различных программ на РФоксе, которые позволят вам быстрее освоить программирование на РФоксе.
РФокс пока не создает exe и dll файлов, но умеет подключать dll файлы от windows, а так же типовой стандарт dll файлов C#, Перфоленты и т.п. Умеет запускать статические и динамические методы объектов из dll-файлов.
На РФокс можно писать и скрипты. Он может запускать командную строку и принимать результат вывода. А если возникнет потребность вывести строки в терминал, то можно их записать в текстовый файл, а затем через командную строку запустить просмотр этого текстового файла в терминале.
Думаю, РФокс полезен для системных администраторов (см. функции объекта Сеть), работающих с Windows, которым некогда серьезно изучать программирование, но есть потребность автоматизировать рутинные операции. С Linux так же можно создать канал для работы, используя объект ВебСервер и ВебКлиент. ВебСервер генерируется на PHP объектом ВебСервер и данный файл server.php помещается в каталог ВебСервера. Он может принимать, отдавать файлы и запускать программы. Правда я пока не занимался вопросами безопасности и шифрования для такого соединения, так как пока не было надобности.
Так как проект не коммерческий и я занимаюсь им в свободное от основной работы время, то прошу не сильно критиковать меня за обнаруженные дефекты, но сообщать о них. Желающие могут помочь в развитии объектов РФокса. Например, знатоки PHP могут развить объект PHP. А знатоки Python, JavaScript, Java и т.д. могут помочь в создании соответствующих объектов по аналогии с объектом PHP.