Port

Proiectul Portului
Tip de limbaj de programare, limbaj de programare procedural, limbaj de programare declarativ și limbaj de programare multi-paradigma
Prima editie 1999
Site-ul web harbour.github.io
port
Clasa de limba imperativ , structurat , orientat pe obiecte
Aparut in 1999
Autor Antonio Linares
Dezvoltator Przemyslaw Czerpak, Viktor Szakáts și comunitatea
Eliberare 3.0.0
Versiune de testare 3.2.x disponibil de la SVN
Tip sistem opțional implicit , dinamic , protejat , parțial strict
Dialectele Clipper , Xbase++ , Flagship , FoxPro , xHarbour
A fost influențat dBase , Clipper
influențat xHarbour
Licență Conform GPL cu sursă deschisă
Site-ul web harbour.github.io

Harbour  este un limbaj de programare și un compilator multiplatformă cu un preprocesor care este pe deplin compatibil cu Clipper . Vă permite să creați aplicații pe 16, 32 și 64 de biți pentru DOS , Windows , Unix / Linux , OS/2 , Mac OS X , Windows CE , BSD , Pocket PC , Symbian , iOS , QNX , VxWorks , eComStation , Haiku / BeOS , AIX . Harbour este un software gratuit .

Pe lângă lucrul cu date localizate local, Harbour vă permite să lucrați cu date atât în ​​modul „fișier-server”, cât și în modul client-server (inclusiv în modul de interogări către un sistem de gestionare a bazelor de date la distanță care acceptă SQL ).

Limbajul folosește constructe tradiționale Clipper, notație obiect C++ și capacitatea de a scrie în C. Harbour este dezvoltată în mod activ și unele tehnologii de programare moderne sunt încorporate în limbaj.

xHarbour ( ing.  extins Harbour ) - o ramură a proiectului Harbour, există atât în ​​versiune comercială, cât și în versiuni gratuite.

Există biblioteci GUI , atât comerciale, cât și gratuite (în special, MiniGUI  pentru Windows ; HwGUI [1]  pentru Windows și GNU/ Linux ).

Harbour este distribuit sub o licență gratuită , similară cu Licența publică generală GNU , cu excepția faptului că este posibil să se dezvolte și să se distribuie liber aplicații comerciale pe Harbour (ca exemplu de software comercial replicat - sistemul BEST-4+ pentru contabilitate și întreprindere). Management [2] ). Vezi și la sfârșitul articolului Software replicabil scris în Harbour .

Istoricul creației

Fondatorul proiectului este programatorul spaniol Antonio Linares (în spaniolă:  Antonio Linares ). Mai întâi a postat „gânduri în aer” despre adaptarea software-ului Clipper la noile realități, inițiind astfel discuția care a dus la crearea Harbour, în grupul Comp.lang.clipper Usenet la 16 martie 1999 [2 ] . Denumirea Port ( golf rusesc , port ) a fost propus de Linares pentru comunitatea „contextului marin” cu numele compilatorului Clipper ( clipper rusesc ) (în sensul de „port sigur pentru tuns”). În același 1999, un grup de dezvoltatori, printre care, pe lângă Linares, în special Ryszard Glab ( polonez Ryszard Glab ), au fost lansate primele versiuni ale compilatorului.

În 2009, Harbour a fost profund reproiectat de o comunitate internațională de dezvoltatori condusă de Viktor Szakáts ( Hung. Viktor Szakáts ) și Przemysław Czerpak ( poloneză: Przemysław Czerpak ), începând cu 2021, dezvoltarea și dezvoltarea activă sunt în curs, există atât internaționale, cât și lingvistice. -comunități orientate către dezvoltatori și utilizatori (rusă, spaniolă, portugheză, italiană și în alte limbi).

În prezent, atât aplicațiile gratuite, cât și cele comerciale sunt create folosind Harbor.

Lucrul cu baze de date

Harbour extinde capacitățile driverelor de baze de date utilizate în Clipper (RDD, ing.  Drivere de bază de date înlocuibile ). Suportă RDD-uri Clipper tradiționale, cum ar fi DBF , DBFNTX, DBFCDX, DBFDBT și DBFFPT. În Harbour, puteți utiliza drivere diferite într-o singură aplicație (de exemplu, luați date dintr-o bază de date Clipper tradițională în format DBFNTX și scrieți-le în format FoxPro - DBFCDX), precum și creați noi RDD-uri ("logice") dintr-o combinație de mai multe existente. Arhitectura RDD permite moștenirea, adică un nou driver poate folosi funcționalitatea celor existente. Cele mai populare drivere terțe au fost rescrise pentru Harbor: RDDSQL, RDDSIX, RMDBFCDX, ADS ( Advantage Database Server ), Mediator .  RDD-uri precum NETIO și LetoDB [3] permit accesul de la distanță la bazele de date prin protocolul TCP prin crearea de aplicații Web care funcționează pe partea de server a unei rețele locale sau a unui server Web, cu acces utilizator la date prin rețea folosind orice browser de Internet și orice sistem de operare.


Harbour folosește accesul la date prin tehnologiile ODBC și ADO , au fost create biblioteci speciale pentru a accesa unele DBMS populare : MySQL , PostgreSQL , SQLite , Firebird , Oracle Database , folosind interfața de programare a aplicației în limbaj C.

Concepte

În proiectul Harbour, ei se străduiesc să asigure cross-platform la nivel de cod sursă cu compilare specifică pentru fiecare platformă, conform conceptului ( scris o dată - compilat peste tot ). Dacă există compilatoare Harbour potrivite pentru un set de sisteme de operare, atunci nu există nicio barieră în a crea programe identice pentru toate aceste platforme prin scrierea codului sursă o singură dată, cu excepția utilizării caracteristicilor specifice diferitelor sisteme de operare. Compilarea încrucișată este posibilă datorită MinGW32 . Portarea unei aplicații Clipper care rulează sub DOS pe alte platforme precum Linux sau Windows Mobile necesită o adaptare relativ mică. . Un număr mare de programe al căror cod sursă a fost scris anterior pentru a funcționa cu Xbase++ , Flagship[ clarifica ] FoxPro , xHarbour și alte dialecte xBase pot fi, de asemenea, adaptate cu ușurință pentru a compila prin Harbour.

Harbour poate folosi multe compilatoare C , în special: GCC , MinGW , Clang , ICC , Microsoft Visual C++ (6.0+), Borland C++ , Watcom C , Pelles C și Sun Studio .

Project Harbor emulează multe terminale grafice, inclusiv drivere de consolă, precum și grafică hibridă pentru consolă, cum ar fi GTWvt și GTWvg.

Harbour suportă biblioteci externe de interfețe grafice de utilizator , atât gratuite (cele mai cunoscute sunt HWGui [1] , MiniGUI și Qt ) cât și comerciale (ex. FiveWin sau Xailer). Interacțiunea cu Qt se face prin biblioteca hbQt.

Dezvoltatorii proiectului susțin că limbajul Harbour este 100% compatibil cu Clipper la nivelul codului sursă [4] .

Declarație macro (compilator runtime)

Una dintre cele mai puternice caracteristici ale limbilor xBase este operatorul macro „&”. Implementarea instrucțiunii macro în Harbour vă permite să creați orice expresie valabilă în Harbour chiar în momentul execuției programului (compilare run-time). O astfel de expresie compilată poate fi folosită ca valoare, adică în partea dreaptă a unui operator de atribuire (rvalue), dar și - mai interesant - și ca parte stângă a unui operator de atribuire (lvalue), adică ca variabilă PRIVAT sau PUBLIC , sau ca bază de date câmp (FIELD ).

În plus, o instrucțiune macro se poate compila din mers și poate efectua apeluri de funcții, poate efectua atribuiri de valori sau chiar poate crea o listă de argumente - iar rezultatul instrucțiunii macro poate fi folosit în oricare dintre contextele specificate într-un program de aplicație compilat. Cu alte cuvinte, orice aplicație Harbour își poate schimba logica de lucru în timpul rulării, creând și executând codul necesar „la cerere”.

Compilatorul final de macro poate compila orice cod permis în Harbour, inclusiv codul de preprocesor procesat înainte de compilare.

Sintaxa instrucțiunii macro:

&(...)

Valoarea text a expresiei dintre paranteze „…” va fi compilată în timpul execuției, iar rezultatul macro-ului va fi valoarea obținută ca urmare a executării codului compilat.

&SomeId

este o formă mai scurtă a operatorului macro &(SomeId).

&SomeId.postfix

aceasta este o formă mai scurtă a operatorului macro &(SomeId + „postfix”).

Caracteristicile oferite de operatorul macro simplifică foarte mult programarea.

De exemplu, să ne imaginăm o situație în care programul trebuie să citească în variabila „ data1 ” niște date din câmpul „FIELD1” al uneia dintre numeroasele baze de date disponibile (de exemplu, baze de date directoare care diferă doar ca nume, dar identice ca structură) . Numele bazei de date sursă este introdus de utilizator (sau obținut în alt mod) în variabila „ bd ”.

Fără a folosi un operator macro, ar trebui să descriem în codul sursă al programului toate valorile posibile pe care variabila „ bd ” le -ar putea primi în timpul funcționării programului și să descriem ce bază să deschidem în acest caz particular. - ceva asemănător cu:

if bd == "BAZA1" utilizați BAZA1 alias BAZASP nou endif if bd == "BAZA2" utilizați BAZA2 alias BAZASP nou endif .... (și de atâtea, de multe ori, pentru toate valorile posibile) .... data1 := BAZASP->FIELD1 ....

În cazul utilizării unui operator macro, este suficient să scriem pur și simplu:

utilizați &(bd) alias BAZASP nou data1 := BAZASP->FIELD1

și asta e suficient!... Ei bine, poate chiar înainte de a încerca să o deschideți, verificați existența unei baze de date cu acest nume:

dacă nu. fișier (bd + ".DBF")  ? "Baza de date numită " + bd + ".DBF nu a fost găsită!" ... (și iată cum se tratează această situație - ... ce ar trebui să facă programul sau utilizatorul în acest caz) endif

Programare orientată pe obiecte

Harbour nu necesită biblioteci suplimentare pentru a utiliza clase, programarea orientată pe obiecte face parte din limbajul de aici și Harbour oferă mai multe caracteristici decât Clipper cu toate bibliotecile terțe. [5]

Sintaxa și semantica limbajului

Harbour - ca orice limbaj xBase - nu ține seama de majuscule (adică comenzile sau numele variabilelor sunt tratate la fel atunci când sunt scrise cu litere mari sau mici: de exemplu, „sStr”, „sstr” și „SStr” sunt aceeași variabilă; „DbCreate ()” și „dbCREATE()” sunt aceeași funcție) și conține opțiunea de a recunoaște cuvintele cheie rezervate (de exemplu, comenzi) după primele patru litere (de exemplu, în loc de comanda „COPIEAZĂ STRUCTURA EXTINSĂ... " puteți scrie pur și simplu "COPY STRU EXTE ..." ).

Tipuri de date încorporate

Harbour are 6 tipuri de date scalare: nimic Nil , șir String , dată dată , tip boolean Logic , număr Number , pointer Pointer și 4 tipuri compuse : array Array , object Object , bloc de cod CodeBlock și hash Hash . Datele scalare conțin o singură valoare, cum ar fi un șir, un număr sau o referință variabilă de orice alt tip. Matricele sunt liste ordonate de valori scalare sau compuse (adică un element de matrice poate fi o altă matrice, iar elementul său poate fi altul etc.), indexate după număr, începând de la 1 (și nu de la 0, ca în unele alte limbi). Tabelele hash, sau tablourile asociative  , sunt colecții neordonate de valori de orice tip, indexate după cheia asociată fiecărei valori, care pot fi de orice tip scalar sau compus.

Reprezentarea literală (statică) a tipurilor scalare:

Tipurile compuse pot fi reprezentate și ca valori literale:

În tabelele hash , o valoare de orice tip poate fi folosită ca cheie pentru orice element, inclusiv un alt tabel hash. Tabelele hash și matricele pot conține orice tip de valoare ca valoare a oricărui element, inclusiv matrice imbricate și tabele hash.

Blocurile de cod pot conține referințe la variabile ale procedurii, funcției sau metodei în care este definit blocul de cod. Astfel de blocuri de cod pot fi returnate ca valoare sau într-un argument transmis prin referință; în acest caz, blocul de cod va „depăși” subrutinei în care este definit, iar toate variabilele la care se referă vor fi variabile „detașate”.

Variabilele detașate își păstrează valoarea atâta timp cât există blocul de cod care se referă la ele. Aceste valori vor fi comune tuturor blocurilor de cod care au acces la aceleași variabile. Dacă un bloc de cod nu supraviețuiește subrutinei care îl conține și este evaluat pe durata de viață a subrutinei în care este definit, modificările variabilelor sale detașate cauzate de evaluarea sa se reflectă în respectiva subrutine.

Un bloc de cod poate fi evaluat de un număr nelimitat de ori folosind funcția Eval( Cod Block ).

Dezvoltarea de aplicații client-server și bazate pe Web

Server DB Leto

Leto DB Server (letodb) este un server de baze de date multiplatformă pe 32/64 de biți, conceput în principal pentru programele client scrise în limbajul Harbour pentru a accesa fișierele în format dbf . Proiectul Letodb a început în 2008 , autorul său este Alexander Kresin [6] . În 2011, Letodb a fost îmbunătățit semnificativ și continuă să fie îmbunătățit de comunitatea de dezvoltatori, dezvoltarea fiind coordonată prin site-ul proiectului LetoDB [3] .

Letodb este un SGBD relațional de înaltă performanță cu arhitectură client-server pentru aplicații de bază de date de rețea, autonome (locale) și Internet. Este un software cu sursă deschisă , dezvoltat sub licență GPL , dând dreptul de utilizare gratuită. Avantajul letodb este combinația dintre accesul tradițional la baza de date xBase și tehnologia client-server. Serverul letodb este responsabil pentru toate accesul la bazele de date (în numele clienților). Cu o metodologie optimizată de acces la date, Letodb asigură securitatea datelor, stabilitatea și integritatea datelor cu cerințe minime de întreținere.

Letodb Database Server îmbunătățește performanța bazei de date web. Letodb descarcă cea mai mare parte a muncii efectuate de obicei de fiecare stație de lucru client. Când lucrează cu rețeaua, letodb procesează cererile de date și returnează informații clienților din rețea. Serverul de baze de date letodb utilizează o arhitectură client-server, îmbunătățind experiența multi-utilizator, stabilitatea bazei de date și securitatea bazei de date. Serverul letodb acceptă tranzacții . În același timp, există garanția că operația complexă de actualizare a bazei de date va fi finalizată în întregime. De asemenea, este posibil să se creeze proceduri de server care sunt apelate de la client și executate pe server.

Serverul Letodb (atât partea server, cât și partea client) poate fi utilizat pentru sistemele de operare MS Windows , Linux și MacOS . Pentru sistemele de operare MS Windows, Windows 98/ME, Windows NT/2000/2003, Windows XP 32/64 biți, Windows Vista 32/64 și Windows 7 32/64 biți sunt acceptate.

Sub MS Windows, serverul letodb rulează ca un serviciu, dar este posibil să îl construiți ca o aplicație. Pentru întreaga linie de sistem de operare Windows bit: de la Windows 98 la Windows 7, este utilizat același ansamblu de server. Sub sistemul de operare Linux , serverul letodb rulează ca un daemon . De regulă, pentru diferite versiuni de Linux, serverul letodb trebuie construit separat pentru fiecare. Serverul letodb (cum ar fi Harbour) vine cu cod sursă și reguli de compilare. Serverul letodb este ușor de configurat: trebuie doar să specificați folderul în care se află bazele de date și alte setări. Serverul letodb nu necesită nicio întreținere specială în timpul funcționării. Letodb se conectează la aplicațiile client folosind protocolul TCP/IP . În mod implicit, acesta utilizează portul 2812, deși este posibil să lucrați printr-un alt port. Conectarea la server este posibilă atât prin rețeaua locală, cât și prin rețelele de internet și intranet.

Serverul letodb oferă securitatea accesului la date. Este posibil să activați modul de criptare a traficului transmis . Există și instrumente de autorizare a utilizatorilor. În acest caz, serverul letodb va servi doar acele conexiuni care specifică parametrii de autorizare: nume de utilizator și parolă. Pentru utilizatori, puteți seta drepturile de administrare a serverului, administrarea serverului, precum și dreptul de a modifica datele.

Clientul letodb este o bibliotecă care conține driverul letodb pentru Harbor, un modul rdd care îndeplinește standardul pentru driverele de înlocuire a bazei de date în limbaj Harbor care sunt compatibile cu driverele dbfcdx/dbfntx și care acceptă funcționalitatea de bază a acestora. Biblioteca client letodb conține, de asemenea, un set de funcții pentru gestionarea și administrarea serverului letodb, funcții pentru lucrul cu tranzacții și un set de funcții suplimentare pentru optimizarea lucrului cu baza de date. Biblioteca client letodb vă permite să construiți o aplicație care funcționează cu serverul letodb, atât pentru MS Windows, cât și pentru Linux. Aplicația client poate funcționa într-o rețea eterogenă care utilizează servere letodb care rulează diverse sisteme de operare: atât MS Windows, cât și Linux.

Pentru a configura aplicația client, este suficient să specificați adresa IP sau numele computerului pe care rulează serverul letodb, numărul portului folosit și folderele de pe serverul pe care se află baza de date. Nu este nevoie să deschideți resurse de rețea pentru a lucra cu baza de date.

Accesul la diferite metadate (șabloane de documente, scripturi , rapoarte) se realizează și nu prin operațiuni cu fișiere, ci prin solicitări către serverul letodb. Este posibil să conectați aplicații folosind biblioteca client letodb la baze de date la distanță prin Internet și intranet .

Este furnizat un utilitar separat pentru gestionarea serverului, care poate fi rulat atât pe client, cât și pe computerul care rulează serverul. Cu acest utilitar, puteți vizualiza toate aplicațiile client care s-au conectat la serverul letodb, precum și tabelele de baze de date deschise. Dacă este necesar, este posibilă gestionarea (dezactivarea) conexiunilor.

Software replicabil scris în Harbour

Lista include dezvoltări (atât comerciale, cât și gratuite) de software replicat scris folosind Harbor (xHarbour).

Masa
Stare
(C = comercial,
open source = gratuit,
open source = open source)
Nume Anul de începere a livrării Zona de aplicare Dezvoltator,
țară
Revizuire Ceea ce despre Port și înrudit este folosit
La Sistem de contabilitate și management al întreprinderii „BEST - 4+” 2010 contabilitate Compania „BEST” ,
Rusia
Prezentare generală pe site-ul companiei Harbour, Leto DB
SPO Complexul de software „BARS-Buget” 2010 contabilitate Grupul de companii „BARS Group” ,
Rusia
BARS-Group : Contabilitate bugetară pentru SPO Harbour, Leto DB
La Analiza activitatii economice a spitalului pentru CHI 2008 medicamentul MIAC (regiunea Sverdlovsk) ,
Rusia
Harbour, MiniGUI Ext.
La „AS Policlinica” (modul „Căutare după prescripție”, submodul „Export în Excel”) 2008 medicamentul MIAC (regiunea Sverdlovsk) ,
Rusia
Harbour, MiniGUI Ext.
La Sistem de contabilitate și analiză depozit „CARTE” pe piata din 1994 (Harbour - incepand cu ? an) contabilitate Lukashevsky A. A. ,
Rusia
Prezentare generală pe site Port, + ?
GRO Sistem informatic complex universal pentru contabilitate și analiză a întreprinderilor mici industriale și comerciale. „KIS Lack” și „US Land” 2008 (din 2009 - OPO) contabilitate A. N. Jukov ,
Rusia
Site-ul web Port, + ?
? Evaluarea eficacității finanțării proiectelor de investiții 2011? analitice Instituția Științifică de Stat din Caucazia de Nord Institutul de Cercetare de Mecanizare și Electrificare a Agriculturii din cadrul Academiei Ruse de Științe Agricole,
Rusia
Revizuirea site-ului Arhivat 4 martie 2016 la Wayback Machine xHarbour, MiniGUI
La Sistem de regăsire a informațiilor pentru înregistrarea cetățenilor care au nevoie de condiții de locuință mai bune și furnizarea de spații rezidențiale în districtul Dmitrovsky - „Contabilitatea locuințelor” districtul Dmitrovsky (regiunea Moscova) 1996
(Port - din 2003)
contabilitate municipală Verchenko A. G.,
Rusia
xHarbour
La Sistem de recuperare a informațiilor pentru înregistrarea cetățenilor care au nevoie de condiții de locuință mai bune și furnizarea de spații rezidențiale în cartierele rurale din districtul Dmitrovsky - „Contabilitatea locuințelor în cartierele rurale” districtul Dmitrovsky (regiunea Moscova) 2006 contabilitate municipală Verchenko A. G.,
Rusia
xHarbour
La Sistem de regăsire a informațiilor pentru contabilizarea fondului de locuințe privatizate din districtul Dmitrovsky - „Privatizarea locuințelor” districtul Dmitrovsky (regiunea Moscova) 2000
(Port - din 2003)
contabilitate municipală Verchenko A. G.,
Rusia
xHarbour
La Sistem automat de monitorizare a executării documentelor de intrare și de ieșire și înregistrarea acestora - districtul „Control” Dmitrovsky (regiunea Moscova) 2000
(Port - din 2003)
contabilitate municipală Verchenko A. G.,
Rusia
xHarbour
La Sistem de informare și calcul pentru rezumarea distribuției spațiului de locuit, plasarea cetățenilor la coadă, distribuția etc. în districtul Dmitrovsky - "Ajutor-analiza" districtul Dmitrovsky (regiunea Moscova) 2003 contabilitate municipală Verchenko A. G.,
Rusia
xHarbour
La Sistem de decontare pentru preluarea informațiilor „Abonat4” pentru automatizarea contabilității pentru întreținerea interfoanelor și sistemelor video 1999
(Port - din 2003)
Contabilitate, contabilitate Verchenko A. G.,
Rusia
Prezentare generală pe site xHarbour, MiniGUI Ext.

Note

  1. 1 2 HwGUI pe SourceForge.Net Arhivat 15 septembrie 2013 la Wayback Machine 
  2. [1] engleză. 
  3. 1 2 LetoDB pe SourceForge.Net Arhivat 6 ianuarie 2010 la Wayback Machine 
  4. Pagina oficială Harbour Arhivată 5 iunie 2012.
  5. Port pentru începători . Preluat la 17 decembrie 2019. Arhivat din original la 24 decembrie 2019.
  6. Site-ul lui Alexander Kresin, autorul Leto DB server. . Preluat la 9 mai 2022. Arhivat din original la 2 aprilie 2022.

Link -uri