Harbour (perisian)

Harbour ialah sebuah bahasa pengaturcaraan komputer moden. Ia serasi dengan Clipper yang rentas-pelantar, mampu berjalan pada kebanyakan sistem pengendalian (DOS, Microsoft Windows, Linux, varian Unix, beberapa keturunan BSD, Mac OS X, MINIX 3, Windows CE, Pocket PC, Symbian, iPhone, QNX, VxWorks, OS/2/eComStation, BeOS/Haiku, AIX) menggunakan kod sumber dan pangkalan data yang sama.

Projek Harbour
ParadigmaPelbagai paradigma: imperatif, kefungsian, berorientasikan objek, pantulan
Muncul pada1999
Direka olehAntonio Linares
PembangunViktor Szakáts dan komuniti
Lepasan stabil3.0.0 (17 Julai 2011; 12 tahun yang lalu (2011-07-17))
Lepasan pratunjuk3.1.x tersedia daripada SVN
Disiplin penjenisansecara pilihan itik, dinamik, selamat, separuh tegas
DialekClipper, Xbase++, Flagship, FoxPro, xHarbour
DipengaruhidBase, Clipper
MempengaruhixHarbour
OSRentas-pelantar
LesenSumber terbuka serasi GPL
Sambugan fail biasa.prg, .ch, .hbs, .dbf
Laman webhttp://www.harbour-project.org/

Walaupun ia sebuah bahasa pengaturcaraan serbaguna yang hebat, namun ia diguna terutamanya untuk mencipta atur cara pangkalan data/perniagaan. Harbour telah diselenggarakan dengan aktif mencari kepelbagaian sambil mengekalkan keserasian kebelakang dengan gaya Clipper. Ia telah melalui pelbagai perubahan dan mendapat kepopularan meluas dalam tahun 1980-an dan 1990-an.

Lesen sumber terbuka Harbour[1] serupa dengan Lesen Awam Am GNU, kecuali ia menyokong aplikasi hak milik, jadi sesebuah aplikasi hak milik boleh dihasilkan dengan Harbour dan diedarkan.

Contoh sunting

Ringkas sunting

Contoh atur cara "hello world" biasa ialah:

 
  ? "Hello, world!"

Atau:

  QOut( "Hello, world!" )

Atau:

  Alert( "Hello, world!" )

Atau, dikurung dalam tatacara nyata:

 PROCEDURE Main()
 
    ? "Hello, world!"

 RETURN

OOP sunting

 #include "hbclass.ch"

 PROCEDURE Main()

    LOCAL oPerson := Orang( "Dave" )

    oPerson:Eyes := "Invalid"

    oPerson:Eyes := "Blue"

    Alert( oPerson:Describe() )
 RETURN

 CLASS Person
    DATA Name INIT ""

    METHOD New() CONSTRUCTOR

    ACCESS Eyes INLINE ::pvtEyes
    ASSIGN Eyes( x ) INLINE IIF( ValType( x ) == 'C' .AND. x IN "Blue,Brown,Green", ::pvtEyes := x, Alert( "Invalid value" ) )

    // Contoh pentakrifan Method DALAM-BARIS
    INLINE METHOD Describe()
       LOCAL cDescription

       IF Empty( ::Name )
          cDescription := "I have no name yet."
       ELSE
          cDescription := "My name is: " + ::Name + ";"
       ENDIF

       IF ! Empty( ::Eyes )
          cDescription += "my eyes' color is: " + ::Eyes
       ENDIF
    ENDMETHOD

    PRIVATE:
       DATA pvtEyes
 ENDCLASS

 // Contoh pentakrifan Method biasa.
 METHOD New( cName ) CLASS Person

   ::Name := cName

 RETURN Self

Rujukan sunting