Havneprojekt | |
---|---|
Type | programmeringssprog , proceduremæssigt programmeringssprog , deklarativt programmeringssprog og multi-paradigme programmeringssprog |
Første udgave | 1999 |
Internet side | harbor.github.io |
havn | |
---|---|
Sprog klasse | imperativ , struktureret , objektorienteret |
Dukkede op i | 1999 |
Forfatter | Antonio Linares |
Udvikler | Przemyslaw Czerpak, Viktor Szakáts og samfundet |
Frigøre | 3.0.0 |
Test version | 3.2.x tilgængelig fra SVN |
Type system | valgfri implicit , dynamisk , beskyttet , delvist streng |
Dialekter | Clipper , Xbase++ , Flagship , FoxPro , xHarbour |
Blev påvirket | dBase , Clipper |
påvirket | xHavn |
Licens | Open source GPL-kompatibel |
Internet side | harbor.github.io |
Harbor er et programmeringssprog og cross-platform compiler med en præprocessor , der er fuldt ud kompatibel med Clipper . Det giver dig mulighed for at oprette 16-, 32- og 64-bit applikationer til DOS , Windows , Unix / Linux , OS/2 , Mac OS X , Windows CE , BSD , Pocket PC , Symbian , iOS , QNX , VxWorks , eComStation , Haiku / BeOS , AIX . Harbor er gratis software .
Ud over at arbejde med lokalt placerede data giver Harbor dig mulighed for at arbejde med data både i "filserver"-tilstand og i klient-server- tilstand (inklusive i tilstanden for forespørgsler til et eksternt databasestyringssystem, der understøtter SQL ).
Sproget bruger traditionelle Clipper-konstruktioner, C++ objektnotation, og evnen til at skrive i C. Harbor udvikles aktivt, og nogle moderne programmeringsteknologier er ved at blive inkorporeret i sproget.
xHarbour ( eng. extended Harbor ) - en gren af havneprojektet, findes både i kommercielle og i gratis versioner.
Der er GUI- biblioteker, både kommercielle og gratis (især MiniGUI til Windows ; HwGUI [1] til Windows og GNU/ Linux ).
Harbor distribueres under en gratis licens , der ligner GNU General Public License , bortset fra at det er muligt frit at udvikle og distribuere kommercielle applikationer på havnen (som et eksempel på replikeret kommerciel software - BEST-4+ System for Accounting and Enterprise Ledelse [2] ). Se også i slutningen af artiklen Replikerbar software skrevet i Harbor .
Grundlæggeren af projektet er den spanske programmør Antonio Linares ( spansk: Antonio Linares ). Han postede først "tanker i luften" om at tilpasse Clipper-softwaren til de nye realiteter og indledte dermed diskussionen, der førte til oprettelsen af Harbor, i Comp.lang.clipper Usenet-gruppen den 16. marts 1999 [2] . Navnet Havn ( russisk bugt, havn ) blev foreslået af Linares for fællesligheden af den "marine kontekst" med navnet på kompilatoren Clipper ( russisk klipper ) (i betydningen "sikker havn for klipperen"). I samme 1999 blev en gruppe udviklere, blandt hvilke udover Linares, især Ryszard Glab ( polsk Ryszard Glab ), de første versioner af compileren udgivet.
I 2009 blev Harbour dybt redesignet af et internationalt fællesskab af udviklere ledet af Viktor Szakáts ( Hung. Viktor Szakáts ) og Przemysław Czerpak ( polsk: Przemysław Czerpak ), fra 2021 er aktiv udvikling og udvikling i gang, der er både internationale og sproglige -orienterede fællesskaber af udviklere og brugere (russisk, spansk, portugisisk, italiensk og på andre sprog).
I øjeblikket oprettes både gratis og kommercielle applikationer ved hjælp af Harbor.
Harbor udvider mulighederne for de databasedrivere, der bruges i Clipper (RDD, eng. Replaceable Database Drivers ). Den understøtter traditionelle Clipper RDD'er såsom DBF , DBFNTX, DBFCDX, DBFDBT og DBFFPT. I Harbor kan du bruge forskellige drivere i én applikation (f.eks. tage data fra en traditionel Clipper-database i DBFNTX-format og skrive det i FoxPro-format - DBFCDX), samt oprette nye (“logiske”) RDD'er fra en kombination af flere eksisterende. Arkitekturen af RDD tillader arv, det vil sige, at en ny driver kan bruge funktionaliteten af eksisterende. De mest populære tredjepartsdrivere er blevet omskrevet til Harbor: RDDSQL, RDDSIX, RMDBFCDX, ADS ( Advantage Database Server ), Mediator . RDD'er såsom NETIO og LetoDB [3] muliggør fjernadgang til databaser via TCP -protokollen ved at skabe webapplikationer, der fungerer på serversiden af et lokalt netværk eller webserver, med brugeradgang til data over netværket ved hjælp af enhver internetbrowser og evt. operativ system.
Harbor bruger dataadgang via ODBC- og ADO -teknologier , specielle biblioteker er blevet oprettet for at få adgang til nogle populære DBMS : MySQL , PostgreSQL , SQLite , Firebird , Oracle Database , ved hjælp af applikationsprogrammeringsgrænsefladen i C -sprog .
I Harbour-projektet stræber de efter at sikre cross-platform på kildekodeniveau med specifik kompilering for hver platform, efter konceptet ( skrevet én gang - kompileret overalt ). Hvis der er egnede Harbor-kompilere til et sæt operativsystemer, er der ingen hindring for at skabe identiske programmer til alle disse platforme ved at skrive kildekoden én gang, undtagen når der bruges funktioner, der er specifikke for forskellige operativsystemer. Krydskompilering er mulig takket være MinGW32 . Portering af en Clipper-applikation, der kører under DOS , til andre platforme såsom Linux eller Windows Mobile kræver relativt lidt tilpasning. . Et stort antal programmer, hvis kildekode tidligere blev skrevet til at arbejde med Xbase++ , Flagship[ klargør ] FoxPro- , xHarbour- og andre xBase - dialekter kan også nemt tilpasses til kompilering via Harbor.
Harbor kan bruge mange C-kompilere , især: GCC , MinGW , Clang , ICC , Microsoft Visual C++ (6.0+), Borland C++ , Watcom C , Pelles C og Sun Studio .
Project Harbor emulerer mange grafiske terminaler, inklusive konsoldrivere, såvel som hybrid konsolgrafik som GTWvt og GTWvg.
Harbor understøtter eksterne grafiske brugergrænsefladebiblioteker , både gratis (de bedst kendte er HWGui [1] , MiniGUI og Qt ) og kommercielle (f.eks. FiveWin eller Xailer). Interaktion med Qt sker gennem hbQt-biblioteket.
Udviklerne af projektet hævder, at Harbor-sproget er 100 % kompatibelt med Clipper på kildekodeniveau [4] .
En af de mest kraftfulde funktioner i xBase -sprog er makro '&'-operatoren. Implementeringen af makrosætningen i havnen giver dig mulighed for at oprette et hvilket som helst udtryk, der er gyldigt i havnen på tidspunktet for programmets udførelse (run-time compilation). Et sådant kompileret udtryk kan bruges som en værdi, det vil sige på højre side af en tildelingsoperator (rvalue), men også - mere interessant - også som en venstre side af en tildelingsoperator (lvalue), det vil sige som en PRIVATE eller PUBLIC variabel , eller som en feltdatabase (FIELD ).
Derudover kan en makrosætning kompilere på farten og foretage funktionskald, udføre værditildelinger eller endda oprette en argumentliste – og resultatet af makrosætningen kan bruges i enhver af de specificerede sammenhænge i et kompileret applikationsprogram. Med andre ord kan enhver Harbor-applikation ændre logikken i sit arbejde under kørsel, skabe og udføre den nødvendige kode "on demand".
Den endelige makrokompiler kan kompilere enhver kode, der er tilladt i havnen, inklusive præprocessorkode, der behandles før kompilering.
Makrosætningssyntaks:
&(...)Tekstværdien af udtrykket i parentes '...' vil blive kompileret under kørsel, og resultatet af makroen vil være den værdi, der opnås som et resultat af at udføre den kompilerede kode.
&SomeIddet er en kortere form af &(SomeId) makrooperatoren.
&SomeId.postfixdette er en kortere form af makrooperatoren &(SomeId + "postfix").
Funktionerne fra makrooperatøren forenkler programmeringen i høj grad.
Lad os f.eks. forestille os en situation, hvor programmet skal læse ind i variablen " data1 " nogle data fra feltet "FIELD1" i en af de mange tilgængelige databaser (for eksempel biblioteksdatabaser, der kun adskiller sig i navne, men identiske i struktur) . Navnet på kildedatabasen indtastes af brugeren (eller opnås på anden måde) i variablen " bd ".
Uden at bruge en makrooperator skal vi i programmets kildekode beskrive alle de mulige værdier, som variablen " bd " kunne modtage under programmets drift , og beskrive hvilken base, der skal åbnes i dette særlige tilfælde - noget som:
if bd == "BAZA1" brug BAZA1 alias BAZASP ny Afslut Hvis if bd == "BAZA2" brug BAZA2 alias BAZASP ny Afslut Hvis .... (og så mange, mange gange, for alle mulige værdier) .... data1 := BAZASP->FELT1 ....I tilfælde af at bruge en makrooperator er det nok for os blot at skrive:
brug &(bd) alias BAZASP ny data1 := BAZASP->FELT1og det er nok!.. Tja, måske endda før du forsøger at åbne den, tjek eksistensen af en database med dette navn:
hvis ikke. fil( bd + ".DBF") ? "Database med navnet " + bd + ".DBF ikke fundet!" ... (og her er håndteringen af denne situation - ... hvad programmet eller brugeren skal gøre i dette tilfælde) Afslut HvisHarbor kræver ikke yderligere biblioteker for at bruge klasser, objektorienteret programmering er en del af sproget her, og Harbor giver flere funktioner end Clipper med alle tredjepartsbiblioteker. [5]
Harbor - som et hvilket som helst xBase-sprog - er ufølsomt mellem store og små bogstaver (det vil sige, kommandoer eller variabelnavne behandles ens, når de skrives med store eller små bogstaver: f.eks. er "sStr", "sstr" og "SStr" den samme variabel; "DbCreate () " og "dbCREATE()" er den samme funktion) og indeholder muligheden for at genkende reserverede nøgleord (for eksempel kommandoer) med de første fire bogstaver (for eksempel i stedet for kommandoen "COPY STRUCTURE EXTENDED ... " du kan blot skrive "COPY STRU EXTE ..." ).
Harbor har 6 skalardatatyper: intet nul , streng String , dato dato , boolesk type Logisk , tal Tal , pointer Pointer og 4 sammensatte typer: array Array , objekt Objekt , kodeblok CodeBlock og hash Hash . Skalære data indeholder en enkelt værdi, såsom en streng, et tal eller en variabel reference af enhver anden type. Arrays er ordnede lister med skalære eller sammensatte værdier (det vil sige, et array-element kan være et andet array, og dets element kan være et andet osv.), indekseret efter tal, startende fra 1 (og ikke fra 0, som i nogle andre sprog). Hash-tabeller eller associative arrays er uordnede samlinger af værdier af enhver type, indekseret af den nøgle, der er knyttet til hver værdi, som kan være af enhver skalær eller sammensat type.
Bogstavelig (statisk) repræsentation af skalartyper:
Sammensatte typer kan også repræsenteres som bogstavelige værdier:
I hash-tabeller kan en værdi af enhver type bruges som en nøgle for ethvert element, inklusive en anden hash-tabel. Hash-tabeller og arrays kan indeholde enhver type værdi som værdien af ethvert element, herunder indlejrede arrays og hash-tabeller.
Kodeblokke kan indeholde referencer til variabler for proceduren, funktionen eller metoden, hvor kodeblokken er defineret. Sådanne kodeblokke kan returneres som en værdi eller i et argument sendt ved reference; i dette tilfælde vil kodeblokken "udleve" den subrutine, som den er defineret i, og alle variabler, den refererer til, vil være "fritstående" variable.
Adskilte variabler bevarer deres værdi, så længe den kodeblok, der refererer til dem, eksisterer. Disse værdier vil være fælles for alle kodeblokke, der har adgang til de samme variabler. Hvis en kodeblok ikke overlever sin indeholdende subrutine og evalueres i løbet af den subrutine, hvori den er defineret, afspejles ændringer i dens adskilte variable forårsaget af dens evaluering i den subrutine.
En kodeblok kan evalueres et ubegrænset antal gange ved hjælp af funktionen Eval(kodeblok ) .
Leto DB Server (letodb) er en 32/64-bit multi-platform databaseserver primært designet til klientprogrammer skrevet på Harbor-sproget for at få adgang til filer i dbf -format . Letodb-projektet startede i 2008 , dets forfatter er Alexander Kresin [6] . I 2011 blev Letodb væsentligt forbedret og bliver fortsat forbedret af udviklerfællesskabet, udvikling koordineres gennem LetoDB-projektstedet [3] .
Letodb er et højtydende relationelt DBMS med klient-server- arkitektur til netværk, stand-alone (lokale) og internetdatabaseapplikationer. Det er open source-software , udviklet under GPL-licensen , der giver ret til gratis brug. Fordelen ved letodb er kombinationen af traditionel xBase -databaseadgang og klient-server-teknologi. letodb-serveren er ansvarlig for al databaseadgang (på vegne af klienter). Med en optimeret dataadgangsmetodologi sikrer Letodb datasikkerhed, stabilitet og dataintegritet med minimale vedligeholdelseskrav.
Letodb Database Server forbedrer webdatabasens ydeevne. Letodb aflaster det meste af det arbejde, der typisk udføres af hver klientarbejdsstation. Når du arbejder med netværket, behandler letodb anmodninger om data og returnerer information til klienter på netværket. Letodb-databaseserveren bruger en klient-server-arkitektur, hvilket forbedrer flerbrugeroplevelsen, databasestabiliteten og databasesikkerheden. letodb-serveren understøtter transaktioner . Samtidig er der garanti for, at den komplekse databaseopdatering vil blive gennemført i sin helhed. Det er også muligt at oprette serverprocedurer, der kaldes fra klienten og udføres på serveren.
Letodb-serveren (både server- og klientsiden) kan bruges til MS Windows , Linux og MacOS operativsystemer . For MS Windows, Windows 98/ME, Windows NT/2000/2003, Windows XP 32/64 bit, Windows Vista 32/64 og Windows 7 32/64 bit operativsystemer understøttes.
Under MS Windows kører letodb-serveren som en tjeneste, men det er muligt at bygge den som en applikation. For hele linjen af bit Windows OS: fra Windows 98 til Windows 7 bruges den samme serversamling. Under Linux -operativsystemet kører letodb-serveren som en dæmon . Som regel skal letodb-serveren for forskellige versioner af Linux bygges separat for hver. Letodb-serveren (som Harbour) kommer med kildekode og build-regler. Letodb-serveren er nem at konfigurere: Angiv blot mappen, hvor databaserne er placeret, og nogle andre indstillinger. Letodb-serveren kræver ingen særlig vedligeholdelse under drift. Letodb opretter forbindelse til klientapplikationer ved hjælp af TCP/IP-protokollen . Som standard bruger denne port 2812, selvom det er muligt at arbejde gennem en anden port. Tilslutning til serveren er mulig både via det lokale netværk og via internettet og intranetnetværk.
Letodb-serveren giver dataadgangssikkerhed. Det er muligt at aktivere krypteringstilstanden for transmitteret trafik . Der er også værktøjer til brugerautorisation. I dette tilfælde vil letodb-serveren kun betjene de forbindelser, der angiver autorisationsparametrene: brugernavn og adgangskode. For brugere kan du indstille rettighederne til at administrere serveren, administrere serveren samt retten til at ændre data.
letodb-klienten er et bibliotek, der indeholder letodb-driveren til Harbor, et rdd-modul, der opfylder standarden for erstatningsdrivere til Harbor-sprogdatabasen, der er kompatible med dbfcdx/dbfntx-driverne og understøtter deres kernefunktionalitet. Letodb-klientbiblioteket indeholder også et sæt funktioner til styring og administration af letodb-serveren, funktioner til at arbejde med transaktioner og et sæt ekstra funktioner til optimering af arbejdet med databasen. Letodb-klientbiblioteket giver dig mulighed for at bygge en applikation, der fungerer med letodb-serveren, både til MS Windows og Linux. Klientapplikationen kan arbejde i et heterogent netværk, der bruger letodb-servere, der kører forskellige operativsystemer: både MS Windows og Linux.
For at konfigurere klientapplikationen er det nok at angive IP-adressen eller navnet på den computer, hvor letodb-serveren kører, det anvendte portnummer og mapperne på serveren, hvor databasen er placeret. Der er ingen grund til at åbne netværksressourcer for at arbejde med databasen.
Adgang til forskellige metadata (dokumentskabeloner, scripts , rapporter) udføres også ikke gennem filoperationer, men gennem anmodninger til letodb-serveren. Det er muligt at forbinde applikationer ved hjælp af letodb klientbiblioteket til fjerndatabaser over internettet og intranettet .
Der findes et separat hjælpeprogram til at styre serveren, som kan køres både på klienten og på den computer, der kører serveren. Med dette værktøj kan du se alle klientapplikationer, der har oprettet forbindelse til letodb-serveren, såvel som åbne databasetabeller. Om nødvendigt er det muligt at administrere (deaktivere) forbindelser.
Listen omfatter udviklinger (både kommercielle og gratis) af replikeret software skrevet ved hjælp af Harbor (xHarbour).
BordStatus (C = kommerciel, open source = gratis, open source = open source) |
Navn | Leveringsstart år | Anvendelsesområde | Udvikler, land |
Anmeldelse | Hvad af Havnen og beslægtet bruges |
---|---|---|---|---|---|---|
Til | System til regnskab og virksomhedsledelse "BEST - 4+" | 2010 | regnskab | Virksomheden "BEST" , Rusland |
Oversigt på virksomhedens hjemmeside | Havn, Leto DB |
SPO | Softwarekompleks "BARS-Budget" | 2010 | regnskab | Gruppe af virksomheder "BARS Group" , Rusland |
BARS-Group : Budgetregnskab for SPO | Havn, Leto DB |
Til | Analyse af hospitalets økonomiske aktivitet for CHI | 2008 | medicinen | MIAC (Sverdlovsk-regionen) , Rusland |
Havn, MiniGUI Ext. | |
Til | "AS Polyclinic" ("Søg efter recept"-modul, "Eksporter til Excel" undermodul) | 2008 | medicinen | MIAC (Sverdlovsk-regionen) , Rusland |
Havn, MiniGUI Ext. | |
Til | Lagerregnskab og analysesystem "BOG" | på markedet siden 1994 (Havn - startende fra ? år) | regnskab | Lukashevsky A. A. , Rusland |
Oversigt på siden | Havn, + ? |
GRO | Universelt komplekst informationssystem til regnskab og analyse af industrielle og kommercielle små virksomheder. "KIS Lack" og "US Land" | 2008 (siden 2009 - OPO) | regnskab | A. N. Zhukov , Rusland |
Internet side | Havn, + ? |
? | Evaluering af effektiviteten af finansiering af investeringsprojekter | 2011? | analyser | Statens videnskabelige institution Nordkaukasiske forskningsinstitut for mekanisering og elektrificering af landbrug ved det russiske akademi for landbrugsvidenskaber, Rusland |
Sitegennemgang Arkiveret 4. marts 2016 på Wayback Machine | xHarbour, MiniGUI |
Til | Informationssøgningssystem til registrering af borgere med behov for bedre boligforhold og tilvejebringelse af boliger i Dmitrovsky-distriktet - "Boligregnskab" Dmitrovsky-distriktet (Moskva-regionen) | 1996 (Havn - siden 2003) |
kommunalt regnskab | Verchenko A. G., Rusland |
xHavn | |
Til | Informationssøgningssystem til registrering af borgere med behov for bedre boligforhold og tilvejebringelse af boliger i landdistrikter i Dmitrovsky-distriktet - "Regnskab for boliger i landdistrikter" Dmitrovsky-distriktet (Moskva-regionen) | 2006 | kommunalt regnskab | Verchenko A. G., Rusland |
xHavn | |
Til | Informationssøgningssystem til regnskab for privatiseret boligmasse i Dmitrovsky-distriktet - "Privatisering af boliger" Dmitrovsky-distriktet (Moskva-regionen) | 2000 (Havn - siden 2003) |
kommunalt regnskab | Verchenko A. G., Rusland |
xHavn | |
Til | Automatiseret system til overvågning af udførelsen af indgående og udgående dokumenter og deres registrering - "Kontrol" Dmitrovsky-distriktet (Moskva-regionen) | 2000 (Havn - siden 2003) |
kommunalt regnskab | Verchenko A. G., Rusland |
xHavn | |
Til | Informations- og beregningssystem til opsummering af fordelingen af boligareal, placering af borgere i køen, distribution osv. i Dmitrovsky-distriktet - "Hjælp-analyse" Dmitrovsky-distriktet (Moskva-regionen) | 2003 | kommunalt regnskab | Verchenko A. G., Rusland |
xHavn | |
Til | Informationshentning afregningssystem "Subscriber4" til automatisering af regnskab for vedligeholdelse af samtaleanlæg og videosystemer | 1999 (Havn - siden 2003) |
Regnskab, bogføring | Verchenko A. G., Rusland |
Oversigt på siden | xHarbour, MiniGUI Ext. |
xbase programmeringssprog | |
---|---|
Implementeringer |
|
Rammer |
|
IDE | |
Værktøjer |
|