PureBasic

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

Liên kết ngoài 
 
 

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

Phần mềm năm 1998
Ngôn ngữ lập trình
Ngôn ngữ lập trình bậc cao
Môi trường phát triển tích hợp
Ngôn ngữ lập trình thủ tục