**PureBasic** là ngôn ngữ lập trình máy tính sử dụng thủ tục được phân phối thương mại và môi trường phát triển tích hợp dựa trên BASIC và được Fantaisie Software phát triển cho Microsoft Windows 32/64-bit, Linux 32/64-bit và macOS. Một phiên bản cho Amiga là có sẵn, mặc dù nó đã bị ngừng và một số phần của nó được phát hành dưới dạng mã nguồn mở. Bản phát hành công khai đầu tiên của PureBasic cho Windows là vào ngày 17 tháng 12 năm 2000. Phần mềm này đã được cập nhật liên tục kể từ đó.

PureBasic có một "mô hình giấy phép trọn đời". Như được trích dẫn trên trang web, người dùng PureBasic đầu tiên (đăng ký vào năm 1998) vẫn có quyền truy cập miễn phí vào các bản cập nhật mới nhất và điều này sẽ không thay đổi.

PureBasic biên dịch trực tiếp các tập lệnh x86, x86-64, PowerPC hoặc 680x0, tạo ra các tập tin thực thi độc lập nhỏ và các tập tin DLL không cần các tập tin thư viện đặc biệt mà chỉ cần các thư viện hệ thống chuẩn. Các chương trình được phát triển mà không sử dụng các giao diện lập trình ứng dụng cụ thể cho nền tảng (API) có thể được xây dựng dễ dàng từ cùng một tập tin nguồn mà gần như không phải sửa đổi gì.

PureBasic hỗ trợ hợp ngữ trên dòng lệnh, cho phép nhà phát triển đưa vào các lệnh hợp ngữ FASM trong mã nguồn PureBasic, trong khi sử dụng các biến được khai báo trong mã nguồn PureBasic, cho phép các lập trình viên có kinh nghiệm cải thiện tốc độ của các đoạn mã cần tốc độ. PureBasic hỗ trợ và đã tích hợp Môi trường 3D OGRE. Các môi trường 3D khác như Engine Irrlicht được hỗ trợ không chính thức.

Ngôn ngữ lập trình
------------------

### Đặc điểm

PureBasic là một trình biên dịch BASIC 32 bit và 64 bit. Mã có tính di động cao. Các hệ thống được hỗ trợ hiện tại là Windows, Linux, macOS. Phiên bản AmigaOS hiện tại là di sản và mã nguồn mở. Trình biên dịch tạo ra các tệp thực thi rất nhanh, được tối ưu hóa cao và cú pháp của PureBasic rất đơn giản và dễ hiểu. Nó có thể biên dịch các ứng dụng giao diện điều khiển, các ứng dụng GUI, và các tệp DLL.

### Ví dụ Hello World

Dòng lệnh đơn giản sau của mã PureBasic sẽ tạo một tệp thực thi x86 độc lập (4,5 KB (4,608 byte) trên phiên bản Windows) hiển thị hộp thông báo có văn bản "Hello World ". 

```
 MessageRequester("Message Box", "Hello World")

```

Và biến thể sau của cùng một mã nguồn, thay vào đó sử dụng một lệnh Windows API trên dòng lệnh mà không cần khai báo hoặc tham chiếu bên ngoài khác, sẽ tạo một tệp thực thi x86 độc lập 2.0 KB (2.048 byte) cho Windows.

```
 MessageBox\_(0, "Hello World", "Message Box", 0)

```

Sau đây là một phiên bản console của ví dụ Hello World.

```
 OpenConsole() ; Mở cửa sổ bảng điều khiển.
 Print("Hello, World!")

```

### Lập trình thủ tục

PureBasic là một ngôn ngữ "BASIC thế hệ thứ hai", với các điều kiện có cấu trúc và các vòng lặp, và lập trình hướng thủ tục được hỗ trợ. Người dùng không bắt buộc phải sử dụng các thủ tục, do đó, một lập trình viên có thể chọn kiểu mã hóa bao gồm Goto, Gosub Label và Return.

Dưới đây là một thủ tục mẫu để sắp xếp một mảng, mặc dù SortArray bây giờ là một hàm dựng sẵn của PureBasic. 

```
 Procedure bubbleSort(Array a(1))
 Protected i, itemCount, hasChanged
 
 itemCount = ArraySize(a())
 Repeat
 hasChanged = #False
 itemCount - 1
 For i = 0 To itemCount
 If a(i) > a(i + 1)
 Swap a(i), a(i + 1)
 hasChanged = #True
 EndIf 
 Next 
 Until hasChanged = #False
 EndProcedure

```

Dưới đây là một chương trình mẫu hiển thị một trình soạn thảo văn bản khá lớn với hai mục menu.

```
;Create Window:
OpenWindow(0, #PB\_Ignore, #PB\_Ignore, 800, 600, "Simple Text Editor", #PB\_Window\_SystemMenu | #PB\_Window\_MinimizeGadget | #PB\_Window\_MaximizeGadget | #PB\_Window\_SizeGadget)

;Add 2 menus:
CreateMenu(0, WindowID(0))
MenuItem(1, "&OK")
MenuItem(2, "&Cancel")

;Add Editor:
EditorGadget(0, 0, 0, 0, 0)
SetGadgetFont(0, LoadFont(0, "Courier New", 10))

;Process window messages until closed:
Repeat
 Select WaitWindowEvent()
 Case #PB\_Event\_Menu
 Select EventMenu()
 Case 1: MessageRequester("OK clicked directly or with '&' mnemonic.", GetGadgetText(0))
 Case 2: Break
 EndSelect
 Case #PB\_Event\_SizeWindow: ResizeGadget(0, 0, 0, WindowWidth(0, #PB\_Window\_InnerCoordinate), WindowHeight(0, #PB\_Window\_InnerCoordinate))
 Case #PB\_Event\_CloseWindow: Break
 EndSelect
ForEver

```

Lưu ý rằng PureBasic không ngắt chuỗi bằng các dấu ngoặc kép vì vậy chúng phải được nối với Chr(34).

### Lập trình hướng đối tượng

Fred, nhà phát triển của PureBasic, đã tuyên bố rằng PureBasic sẽ không bao giờ hướng đối tượng. Tuy nhiên, nhiều người dùng đã tạo ra các hệ thống hỗ trợ hướng đối tượng.

Chú thích
---------

1. ↑  FAQ, lifetime licence details
2. ↑  , PureBasic home page
3. ↑  , PureBasic - Console
4. ↑  , PureBasic - Gadget
5. ↑  , Building a DLL
6. ↑  , PureBasic won't be object oriented
7. ↑  , PureObject - PureBasic OOP support
8. ↑  , OOP tutorial
9. ↑  , Another OOP PreCompiler

Liên kết ngoài
--------------

* Trang web chính thức
* PureBasic trên DMOZ

Bài báo
* PureBasic - The Perfect Cross-Platform & Native Development Language
* A little PureBasic review

Thư viện và mã nguồn mở
* Andre Beer's Open Source PB code archive

| * x
* t
* s
Các biến thể của ngôn ngữ lập trình BASIC |
| --- |
| Cổ điển | 
* Altair BASIC
* Applesoft BASIC
* Atari BASIC
* Atari Microsoft BASIC
* Atari ST BASIC
* BASICA
* BASIC A+
* BASIC Programming
* BASIC XE
* BASIC XL
* Casio BASIC
* Chipmunk Basic
* Color BASIC
* Commodore BASIC
* Extended Color BASIC
* Dartmouth BASIC
* Disk Extended Color BASIC
* Family BASIC
* GFA BASIC
* GW-BASIC
* HP BASIC for OpenVMS
* HP Time-Shared BASIC
* IBM BASIC
* Integer BASIC
* Locomotive BASIC
* Mallard BASIC
* Microsoft BASIC
* MSX BASIC
* Pure Basic
* Rocky Mountain BASIC
* S'-BASIC (Tandy, Casio, Sharp Pocket Computers)
* ScriptBasic
* Sinclair BASIC
* Southampton BASIC System
* STOS BASIC
* TI BASIC (TI 99/4A)
* TI-BASIC (calculators)
* TI Extended BASIC (aka XBasic)
* Tiny BASIC
* Turbo-Basic XL
* Tymshare SUPER BASIC
* UBASIC
* Vilnius BASIC
* XBasic

 |
| Hướng thủ tục | 
* AmigaBASIC
* AMOS BASIC
* ASIC
* BBC BASIC
* Beta BASIC
* DarkBASIC
* FreeBASIC
* FutureBASIC
* GFA BASIC
* GLBasic
* Liberty BASIC
* Microsoft Small Basic
* PowerBASIC
* PureBasic
* QBasic
* QB64
* QuickBASIC
* SmallBASIC
* SuperBASIC
* ThinBasic
* True BASIC
* Turbo Basic
* XBasic
* Xblite
* Basic4ppc
* Visual Test
* B4J

 |
| Với mở rộng đối tượng | 
* AutoIt
* Basic For Qt (KBasic)
* BlitzMax
* Chipmunk Basic
* FreeBASIC
* Gambas
* GLBasic
* Monkey X
* OpenOffice Basic
* PowerBASIC
* ProvideX
* RapidQ
* REALbasic
* Run BASIC
* Visual Basic
* Visual Basic .NET
* Xojo

 |
| Cho thiết bị di động | 
* B4X
* Basic4android (B4A)
* Basic4ppc
* GLBasic
* NS Basic
* Basic4ios (B4i)

 |
| Microsoft | 
* Microsoft BASIC
	+ MBASIC
	+ IBM BASIC/BASICA
	+ GW-BASIC
	+ QuickBASIC
	+ QBasic
* VBScript
* Visual Basic
* VBA
* Visual Basic .NET
* Embedded Visual Basic
* VB 5 for Microsoft Excel 5.0
	+ VSTO
	+ VSTA
* WordBASIC
* TRS-80 Basics (Level I, Level II, Level III)
* Microsoft Small Basic

 |
| Phần mềm của hãng thứ 3 mô phỏng VB | 
* B4X
* Basic For Qt
* Gambas
* Hummingbird Basic
* LotusScript
* WinWrapBasic
* Xojo

 |