Harbour (perisian)

Daripada Wikipedia, ensiklopedia bebas.
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/

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.

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 | sunting sumber]

Ringkas[sunting | sunting sumber]

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 | sunting sumber]

 #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 | sunting sumber]