thinBasic - thinBasic

ThinBasic
ThinBasic logó
Fejlesztő Eros Olmi
Stabil kiadás
v.1.9.15.0 / 2015. január 11 . ; 4 évvel ezelőtt ( 2015-01-11 )
Előzetes verzió
v1.10.4.0 / 2017. szeptember 29 ; 16 hónappal ezelőtt ( 2017-09-29 )
OS ablakok
Engedély Ingyenes / szabadalmaztatott
Weboldal www .thinbasic .com
Nyelvjárások
ALAPVETŐ
Befolyásolta
Powerbasic

A thinBasic egy BASIC- szerű számítógépes programozási nyelvi tolmács , központi magrendszer-architektúrával, sok speciális modullal körülvéve. Noha eredetileg elsősorban számítógépes automatizálásra tervezték, moduláris felépítésének köszönhetően széleskörű feladatokhoz használható.

Főbb jellemzői

Szintaxis

Ahogy a neve is sugallja, ennek a nyelvnek a szintaxisára a legnagyobb hatást gyakorolta a BASIC nyelv. A hagyományos BASIC-kel ellentétben, amint az a 8 bites korszakból ismert, a thinBASIC néhány fontos pontban is különbözik.

Például megköveteli a programozótól, hogy deklarálja a változókat, és nem tartalmazza a hírhedt GOTO és GOSUB utasításokat. A szintaxis egyes aspektusait még a nem BASIC nyelvek is inspirálják, például a C / C ++ . Ennek köszönhetően a thinBASIC opcionálisan lehetővé teszi az implicit vonal folytatódást, az egyszerűsített összeadás, kivonás, szorzás és osztás operátort, rövidített változó deklarációt és inicializálást:

' 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

Az inspiráció másik forrása a BASIC modern verziói, például a Visual Basic vagy a PowerBASIC .

A ThinBASIC a fő áramlásszabályozó állításokat, például a SELECT CASE, IF ... THEN / ELSEIF / ELSE / END IF, hurkokat ( végtelen , feltételes , FOR , WHILE / WEND, DO / LOOP WHILE ..., DO / LOOP UNTIL ...), és ezenkívül nagyon erőfeszítéseket tesz a beépített funkciók széles skálájának biztosításával a számok összeroppantására és különösen a karakterlánc kezelésére.

Változók és adattípusok

A ThinBASIC számos numerikus és karakterlánc-adattípust támogat.

Egész szám Lebegőpont Húr Egyéb
BYTE EGYETLEN HÚR VÁLTOZAT
SZÓ KETTŐS STRING * n GUID
DWORD VALUTA ASCIIZ * n BOOLEAN
EGÉSZ SZÁM EXTEDED, EXT UDT (felhasználó által meghatározott típus)
HOSSZÚ SZAKSZERVEZETEK
QUAD IDispatch

A fenti táblázatban említetteken kívül a programozó meghatározhat mutatókat, felhasználó által meghatározott típusokat és uniókat .

A thinBASIC felhasználó által definiált típusokhoz kapcsolódó különleges szolgáltatások:

  • a tagok öröklésének lehetősége egy vagy több felhasználó által meghatározott típustól
  • statikus tagok (tagok, amelyek értékét megosztják az adott UDT minden változója között)
  • dinamikus húrok

A változók meghatározhatók globális, helyi vagy statikus hatókörben. A ThinBASIC legfeljebb három dimenziós tömböket támogat.

modulok

A nyelv alapvető funkcionalitását az úgynevezett Core modul biztosítja, amely alapértelmezés szerint betöltve van, és gondoskodik az elemzésről is.

A Core modul mellett a thinBASIC más modulokat is kínál, amelyek mindegyike egy bizonyos funkciós területet lefed, például:

  • GUI létrehozása
  • konzol kezelése
  • fájlkezelés
  • 3D grafika
  • hálózatba
  • ...

Minden modult egyetlen DLL képvisel, sajátos felépítéssel. Ez lehetővé teszi a modul számára, hogy ne csak a tipikus funkciókat és eljárásokat tartalmazza, hanem például állandókat és a felhasználó által definiált típusdefiníciókat is, amelyek a szkriptek számára azonnal elérhetők, fejlécfájl nélkül. Csak az szükséges, hogy kifejezetten megemlítsék a modul használatát a kódban - a fájlkezeléshez ez így nézne ki:

' 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")

Funkciók és eljárások

A kód jobb strukturálása érdekében a thinBASIC biztosítja a funkciókat és az eljárásokat. Van egy speciális kezeléssel működő funkció, az úgynevezett TBMAIN, amelyet garantáltan először hajtanak végre. Ugyanazt a funkciót képviseli, mint a main () függvényt a C programozási nyelven, de használata opcionális.

A programozó meghatározhatja az egyedi funkciókat és eljárásokat (úgynevezett Subs); akár 32 paraméter is lehetnek. Mind a funkciókat, mind az eljárásokat használat előtt nem kell deklarálni. A paraméterek opcionálisként megjelölhetők, és alapértelmezett értékekre is inicializálhatók. Minden paramétert megadhatunk érték (alapértelmezett) vagy referencia alapján átadásra.

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

A függvényeket közvetlenül meg lehet hívni, mint ahogy a fenti felsorolásban, vagy úgy, hogy a nevüket futásidőben összeállítják.

Kötelező harmadik fél API-kat

A ThinBASIC támogatja a hívó funkciókat harmadik féltől származó DLL-ekből; A programozónak először be kell jelentenie őket a funkció eléréséhez.

Ennek a mechanizmusnak köszönhetően a thinBASIC lehetővé teszi olyan technológiák használatát, mint az OpenGL , OpenCL , XML , ODE és még sokan mások.

Kódszervezés

A ThinBASIC jelenleg nem támogatja a projekt fájlok formáját, de ösztönzi a kódok felosztását az egységek számára, több fájl kiterjesztés biztosításával, különféle felhasználás céljából:

  • .tBasic - fő kód
  • .tBasicI - tartalmaz egy fájlt, amely például a harmadik féltől származó DLL-ek funkcióinak deklarációját tartalmazza
  • .tBasicU - kiegészítő egységeket tartalmazó kód egység

A fő kód hivatkozhat ezekre a fájlokra a #include irányelv használatával, amely helyettesítő karaktereket használhat:

#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

testreszabás

A nyelv fokozhatjuk modul fejlesztéshez SDK többféle nyelven ( PowerBASIC , freebasic , C , MASM ).

Dokumentáció

A fejlesztői csapat nagy hangsúlyt fektet a nyelv dokumentálására és a tanulási forrásokra. Maga a nyelv dokumentálva van egy széles súgófájlban, és az alapértelmezett telepítés oktatóanyagot és sok példakódot is tartalmaz.

A ThinBasic Journal formájában és a programozási nyelv honlapján is megjelentek különféle cikkek a thinBASIC használatáról (lásd a külső linkeket).

Integrált fejlesztési környezet (IDE)

Image
thinAir, thinBasic IDE

A ThinBASIC saját IDE-vel érkezik, az úgynevezett thinAir, az alapértelmezett telepítés során. Kínál:

  • Testreszabható szintaxis kiemelés
  • Kódsablonok
  • Több forrásfájl egyszerre nyílik meg a lapokon
  • Egy forrás több nézet használatával történő megtekintésének képessége
  • Opcionális szkript-összeomlás
  • A szkriptből független végrehajtható fájl létrehozása
  • Hozzáférés a súgófájlhoz


A thinAir lehetővé teszi a hibakereső használatát is.
Ezt az összetevőt thinDebug-nak hívják, és megnézhető az alább hivatkozott képen.

Kódminták

Konzolprogram, amely megkérdezi a felhasználót a névről, majd üdvözli őt:

' 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

Érvek és ellenérvek

A ThinBASIC-t a Windows platformon fejlesztették ki , ezért hasznosítja a rendszer által biztosított erőforrásokat, például a nyilvántartást , a felhasználói felületet, a folyamatokkal való munkát, a COM , a DLL fájlokat . Annak ellenére, hogy értelmezzük, a thinBASIC rendszerint gyors végrehajtással rendelkezik. Amikor a nyelv értelmező jellege eléri a korlátokat, optimalizálást végezhet részleges JIT-összeállítás segítségével. A nyelv másik erőssége a különféle érdeklődési területeket lefedő parancsok széles köre, és a BASIC számára hagyományosan - a húrok kezelésére koncentrálva. A nyelv folyamatos fejlesztése és karbantartása alatt áll.

Az a tény, hogy a thinBASIC csak Windows rendszerre lett kifejlesztve, hátrányosnak tekinthető azok számára is, akik platformközi eszközöket keresnek. A végrehajtás sebessége optimalizálás nélkül alacsonyabb a fordító kimenetéhez képest , a nyelvi értelmező jellegének köszönhetően .

Kompatibilitás

A thinBASIC-t a Microsoft Windows XP Professional alatt fejlesztették ki a PowerBASIC használatával , és az Internet Explorer 5.50 vagy újabb verziójára van szükség .

Irodalom

Külső linkek