тонкийБазовый
Тема этой статьи Википедии может не соответствовать общему правилу по известности . ( июль 2012 г. ) |
Разработчик | Эрос Олми |
---|---|
Стабильная версия | v1.12
/ 28 января 2024 г |
ТЫ | Окна |
Лицензия | Бесплатное / проприетарное ПО |
Веб-сайт | www |
Диалекты | |
БАЗОВЫЙ | |
Под влиянием | |
PowerBasic |
ThinBasic — BASIC. подобный программирования, языка интерпретатор [1] с центральной архитектурой ядра, окруженной множеством специализированных модулей. Хотя изначально он был разработан в основном для компьютерной автоматизации, благодаря своей модульной структуре его можно использовать для решения широкого круга задач.
Основные возможности [ править ]
Синтаксис [ править ]
Как следует из названия, наибольшее влияние на синтаксис этого языка оказал язык BASIC. Но в отличие от традиционных BASICов, известных еще с 8-битной эпохи, ThinBASIC отличается по нескольким важным моментам.
Например, он требует от программиста объявления переменных и не содержит печально известных операторов GOTO и GOSUB. Некоторые аспекты синтаксиса даже созданы в языках, отличных от BASIC, таких как C / C++ . [2] Благодаря этому ThinBASIC опционально позволяет использовать неявное продолжение строки, упрощенные операторы сложения, вычитания, умножения и деления, сокращенное объявление и инициализацию переменных:
' Traditional syntax allowed in thinBASIC
DIM a AS INTEGER ' a is initialized to 0
a = 1 ' a now contains 1
a = a + 1 ' a now contains 2
' C/C++ inspired syntax allowed in thinBASIC
INTEGER a = 1 ' a is initialized to 1
a += 1 ' a now contains 2
' New syntax introduced in 1.9.10.0 allows defining type from string expression
STRING sType = "INTEGER"
DIM a LIKE sType
Еще одним источником вдохновения являются современные версии BASIC, такие как Visual Basic или PowerBASIC .
ThinBASIC предлагает основные операторы управления потоком, такие как SELECT CASE, IF ... THEN/ELSEIF/ELSE/END IF, циклы ( бесконечные , условные , FOR , WHILE/WEND, DO/LOOP WHILE ..., DO/LOOP UNTIL ...), а также прилагает очень большие усилия для предоставления широкого спектра встроенных функций для обработки чисел и особенно обработки строк.
Переменные и типы данных [ править ]
ThinBASIC поддерживает широкий спектр числовых [3] и строка [4] типы данных.
Целое число | Плавающая точка | Нить | Другой |
---|---|---|---|
БАЙТ | ОДИНОКИЙ | НИТЬ | ВАРИАНТ |
СЛОВО | ДВОЙНОЙ | СТРОКА * н | ГУИД |
ДВОРД | ВАЛЮТА | ASCIIZ * н | БУЛЕВОЕ значение |
ЦЕЛОЕ ЧИСЛО | РАСШИРЕННЫЙ, РАСШИРЕННЫЙ | UDT (определяемый пользователем тип) | |
ДЛИННЫЙ | СОЮЗЫ | ||
КВАД | iDispatch |
Помимо упомянутых в таблице выше, программист может определять указатели, определяемые пользователем типы и объединения .
К особым функциям, связанным с пользовательскими типами в ThinBASIC, относятся: [5]
- возможность наследовать члены от одного или нескольких других пользовательских типов
- статические члены (члены, значение которых является общим для всех переменных данного определяемого пользователем типа)
- динамические строки
Переменные могут быть определены в глобальной, локальной или статической области видимости. ThinBASIC поддерживает массивы размером до трех измерений.
Модули [ править ]
Элементарная функциональность языка обеспечивается так называемым модулем Core , который загружается по умолчанию и также занимается синтаксическим анализом.
Помимо модуля Core, ThinBASIC предлагает другие модули, каждый из которых охватывает определенную область функциональности, например:
- создание графического интерфейса
- обработка консоли
- обработка файлов
- 3D графика
- сеть
- ...
Каждый модуль представлен одной DLL со специальной структурой. Это позволяет модулю содержать не только типичные функции и процедуры, но также, например, константы и определения пользовательских типов, которые сразу же доступны для сценария без необходимости использования заголовочного файла. Единственное, что нужно — это явно указать в коде использование модуля — для работы с файлами это будет выглядеть так:
' This loads the module for use
Uses "File"
' Function File_Load comes from the module, it returns the content of passed file in form of String
String sBuffer = File_Load("C:\text.txt")
Функции и процедуры [ править ]
Чтобы лучше структурировать код, ThinBASIC предоставляет функциональные возможности функций и процедур. Есть одна функция со специальной обработкой, называемая TBMAIN, которая гарантированно выполняется первой. Она представляет ту же функцию, что и функция main() в языке программирования C , но ее использование не является обязательным.
Программист может определять собственные функции и процедуры (называемые Subs); они могут иметь до 32 параметров. И функции, и процедуры не нужно объявлять перед использованием. Параметры можно пометить как необязательные, а также их можно инициализировать значениями по умолчанию. Каждый параметр можно указать для передачи по значению (по умолчанию) или по ссылке.
Uses "Console"
' Program body starts in TBMain function
Function TBMain()
MyFunction(10) ' This will print 10 20 30, because unused optional parameters #2 and #3 are initialized to 20 and 30
MyFunction(10, 3) ' This will print 10 3 30, because unused optional parameter #3 is initialized to 30
MyFunction(10, 3, 5) ' This will print 10 3 5, because we specify all the parameters, so the defaults are discarded
Console_WaitKey
End Function
' User defined function with optional parameters with default values
Function MyFunction( a As Number, Optional b As Number = 20, c As Number = 30)
Console_PrintL(a, b, c)
End Function
Функции можно вызывать напрямую, как в листинге выше, или путем составления их имени во время выполнения.
Привязка к сторонним API [ править ]
ThinBASIC поддерживает вызов функций из сторонних DLL; программисту необходимо сначала объявить их, чтобы получить доступ к функциям.
Благодаря этому механизму ThinBASIC позволяет использовать такие технологии, как OpenGL , OpenCL , [6] XML , ODE и многие другие.
Организация кода [ править ]
ThinBASIC на данный момент не поддерживает какие-либо формы файлов проекта, но поощряет разделение кода на модули, предоставляя несколько расширений файлов для различного использования:
- .tBasic — основной код
- .tBasicI — включаемый файл, содержащий объявление функций, например, из сторонних DLL.
- .tBasicU — кодовый модуль, содержащий вспомогательные подпрограммы
Основной код может ссылаться на эти файлы с помощью директивы #include, которая может использовать подстановочные знаки:
#include "MyDLLWrapper.tBasicI"
#include "MyRoutines.tBasicU"
#include "dialog_*.tBasicU" ' This would include all files matching the wildcard dialog_*.tBasicU, when present
Function TBMain()
' -- Main code goes here, and can use functionality from #included files
End Function
Кастомизация [ править ]
Язык можно улучшить путем разработки модулей с использованием SDK для многих языков ( PowerBASIC , FreeBASIC , C , MASM ).
Документация [ править ]
Команда разработчиков уделяет большое внимание документации языка и учебным ресурсам. Сам язык описан в обширном файле справки. [7] а установка по умолчанию содержит руководство и множество примеров кода.
Различные статьи по использованию ThinBASIC были опубликованы в журнале ThinBasic Journal , а также на домашней странице языка программирования (см. внешние ссылки).
Интегрированная среда разработки (IDE) [ править ]
ThinBASIC поставляется с собственной IDE, называемой ThinAir, в установке по умолчанию. [8] Он предлагает:
- Настраиваемая подсветка синтаксиса
- Шаблоны кода
- Несколько исходных файлов, открытых одновременно во вкладках
- Возможность просмотра одного источника с использованием нескольких представлений
- Необязательная обфускация скрипта
- Создание независимого исполняемого файла из скрипта [9]
- Доступ к файлу справки
ThinAir также позволяет использовать отладчик.
Этот компонент называется ThinDebug. [10] и можно посмотреть на изображении по ссылке ниже.
Примеры кода [ править ]
Консольная программа, которая спрашивает пользователя об имени, а затем приветствует его:
' Specifies program will use functions from console module
uses "Console"
' TBMain represents main body of the program
function TBMain()
' Creates variable to hold user name
local UserName as string
' Asks user for the name
Console_Print("What is your name?: ")
' Stores it to variable
UserName = Console_ReadLine
' If length of username is 0 then no name is specified, else program will say hello
if len(UserName) = 0 then
Console_PrintLine("No user name specified...")
else
Console_PrintLine("Hello " + UserName + "!")
end if
' Waits for any key from user before program ends
Console_WaitKey
end function
Плюсы и минусы [ править ]
ThinBASIC был разработан для платформы Windows , и именно поэтому он эффективно использует ресурсы, предоставляемые этой системой, такие как реестр , пользовательский интерфейс, работа с процессами, COM , библиотеки DLL . Несмотря на интерпретацию,thinBASIC обычно имеет быстрое выполнение. [11] Когда природа интерпретатора языка достигает предела, можно выполнить оптимизацию с использованием частичной JIT-компиляции. Еще одной сильной стороной языка является широкий набор команд, охватывающий различные области интересов, а для BASIC традиционно — сильная ориентация на обработку строк. Язык постоянно развивается и поддерживается. [12]
Тот факт, что ThinBASIC разработан только для Windows, также может рассматриваться как недостаток для тех, кто ищет кроссплатформенные инструменты. Скорость выполнения без использования оптимизаций ниже по сравнению с выводом компиляторов языка из-за природы интерпретатора .
Совместимость [ править ]
ThinBASIC был разработан под управлением Microsoft Windows XP Professional с использованием PowerBASIC . [13] и требуется Internet Explorer версии 5.50 или выше.
- Всесторонне протестировано: Windows 2000 и Server , XP , Vista , Windows 7 , Server 2003 , Windows 8 , Windows 10.
- Частично поддерживается: Windows 98 SE , Me.
- Не поддерживается: Windows 95.
Ссылки [ править ]
- ^ Олми, Э. Справочное руководство ThinBASIC. Представляем тонкий БЕЙСИК . Проверено 21 сентября 2011 г.
- ^ Basic.mindteq.com. ТИНБЕЙСИК . Проверено 15 февраля 2013 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. Числовые переменные . Проверено 21 сентября 2011 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. Строковые переменные . Проверено 21 сентября 2011 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. Тип . Проверено 21 сентября 2011 г.
- ^ ШРАЙБЕР, П.; ОНДРОУШЕК, В.; ВЕЧЕТ, С.; КРЕЙСА, Дж.. Распараллеливание метода предварительно вычисленного сканирования для обработки видеокарты . Материалы 1-й международной конференции «Робототехника в образовании», RiE2010. 2010. с. 202
- ^ Олми, Э. Справочное руководство ThinBASIC. Как использовать . Проверено 21 сентября 2011 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. Как использовать . Проверено 21 сентября 2011 г.
- ^ Basic.mindteq.com. ТИНБЕЙСИК . Проверено 15 февраля 2013 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. ThinTools/thinDebug . Проверено 21 сентября 2011 г.
- ^ Basic.mindteq.com. ТИНБЕЙСИК . Проверено 15 февраля 2013 г.
- ^ Олми, Э. Справочное руководство ThinBASIC. Что нового . Проверено 29 июля 2017 г.
- ^ http://www.powerbasic.com . Создано с помощью PowerBASIC! . Проверено 21 сентября 2011 г.
Внешние ссылки [ править ]
- Официальный веб-сайт
- Форум сообщества
- Онлайн-помощь
- Страница загрузки
- ThinAir, официальная среда разработки ThinBasic
- ThinDebug, ThinBasic Отладчик
- Уроки графики
- ThinBASIC Создатель приключений
- ПКОПИ! Выпуск № 40 , 16 ноября 2007 г., О ThinBasic, Эрос Олми.
- ПКОПИ! Выпуск №50 , 15 марта 2007 г., 3D-графика в ThinBASIC, Петр Шрайбер.
- Журнал ThinBasic № 1 , 5 июля 2008 г., PDF
- Журнал ThinBasic № 2 , 26 ноября 2008 г., PDF
- MovieFX: Объединение фотографии с 3D-объектом , 1 сентября 2010 г.
- MovieFX: смешивание боке на основе смешивания , 1 января 2011 г.
- Обзор ThinBasic на сайте Basics.mindteq.com