0
0
Lập trình
Admin Team
Admin Teamtechmely

Hành Trình 49 Năm: Từ IBM 5100 Đến Xây Dựng BASIC AI

Đăng vào 1 ngày trước

• 6 phút đọc

Giới thiệu về tôi

Chào mọi người,

Tôi muốn tự giới thiệu một cách đầy đủ và chia sẻ về dự án đã trở thành niềm đam mê của tôi. Hãy bắt đầu với phiên bản bình luận mã:

vb Copy
// Tên: AtomiJD
// Lập trình từ: 1976 (APL trên IBM 5100)
// Ngôn ngữ hiện tại: C++, Python, C#
// Đam mê lớn nhất: Xây dựng ngôn ngữ lập trình

Bình luận nhỏ này đã trải qua gần năm thập kỷ. Lần đầu tiên tôi tiếp xúc với lập trình là trên một chiếc IBM 5100 bằng APL.

Nhưng bài viết này không chỉ nói về quá khứ. Nó đề cập đến một câu hỏi: Điều gì sẽ xảy ra nếu BASIC không ngừng phát triển? Nếu nó tiếp tục cải tiến, mượn ý tưởng từ APL, Python, và LISP, và thậm chí chấp nhận cách mạng AI?

Tôi quyết định tìm hiểu điều đó.

Sprint: Xây Dựng jdBasic Với Một Đối Tác AI

Dự án này, jdBasic, đã được hình thành trong một cuộc marathon lập trình kéo dài hai tháng. Đó không phải là một hành trình đơn độc trong căn phòng tối. Đây là một quá trình năng động, hiện đại mà tôi chỉ có thể mô tả như là "lập trình theo cảm hứng" với sự hỗ trợ của Google Gemini và ChatGPT.

Kết quả là một ngôn ngữ mà tôi tin rằng thực sự độc đáo. Nó là sự kết hợp giữa sự đơn giản cổ điển và sức mạnh hiện đại.

jdBasic Là Gì? Khám Phá Các Tính Năng Cốt Lõi

jdBasic là một trình thông dịch hiện đại được thiết kế để dễ học nhưng đủ mạnh cho những nhiệm vụ phức tạp. Dưới đây là một số điều làm cho nó đặc biệt:

  • Lập Trình Mảng Lấy Cảm Hứng Từ APL: Tại cốt lõi, jdBasic là một ngôn ngữ thiên về mảng. Hầu hết các phép toán là theo phần tử mặc định. Bạn có thể nhân một toàn bộ véc-tơ với một số hoặc cộng hai ma trận mà không cần một vòng lặp FOR nào.
  • Cốt Lõi Hàm: Nó chấp nhận các khái niệm hàm như hàm bậc cao, lambda và một toán tử ống (|>) để tạo ra các đường ống dữ liệu thanh lịch và dễ đọc.
  • Phong Cách Đối Tượng: Bạn có thể định nghĩa các cấu trúc dữ liệu phức tạp của riêng mình với các phương thức sử dụng TYPE...ENDTYPE, cho phép một cách tiếp cận sạch sẽ và hướng đối tượng.
  • Công Cụ Game 2D Tích Hợp: Nó có một bộ công cụ đa phương tiện hoàn chỉnh với hệ thống sprite (bao gồm hỗ trợ animation Aseprite), tích hợp tilemap (từ trình soạn thảo Tiled), phát hiện va chạm, âm thanh và lệnh đồ họa.
  • Lập Trình Phản Ứng: Tạo biến tự động cập nhật khi các giá trị mà nó phụ thuộc thay đổi, sử dụng một toán tử đơn giản -> để có hành vi giống như bảng tính.
  • Một Động Cơ AI Tích Hợp: Đây là điểm nổi bật. jdBasic có một đối tượng Tensor tích hợp với khả năng phân biệt tự động. Bạn có thể xây dựng và huấn luyện các mạng nơ-ron phức tạp, từ các mô hình đơn giản đến Transformers, ngay bên trong trình thông dịch với các lệnh cấp cao.

Hãy Thực Hiện: jdBasic Trong Hành Động

Nói thì dễ. Dưới đây là mã thực sự trông như thế nào.

1. Đường ống Hàm

Ở đây, chúng ta tạo ra các số từ 1 đến 10, lọc ra các giá trị lớn hơn 5 và nhân chúng với 10 - tất cả trong một dòng rõ ràng và tuyên bố.

vb Copy
' Bắt đầu với một chuỗi số từ 1 đến 10
numbers = IOTA(10)

' Đường ống này:
' 1. Lọc các số > 5
' 2. Nhân các số còn lại với 10
result = numbers |> FILTER(lambda val -> val > 5, ?) |> SELECT(lambda v -> v * 10, ?)

PRINT "Kết quả: "; result
' Dự kiến đầu ra: [60 70 80 90 100]

2. Sức Mạnh Của Các Dòng Một Lần APL

Sức mạnh thực sự của thiết kế thiên về mảng là bạn có thể tạo ra đầu ra hình ảnh phức tạp mà không cần vòng lặp. Dòng mã đơn này tính toán và vẽ biểu đồ nhịp sinh học cá nhân trực tiếp trong bảng điều khiển.

vb Copy
BD="1967-10-21":W=41:H=21:D=DATEDIFF("D",CVDATE(BD),NOW()):X=D-W/2+IOTA(W):C=RESHAPE([" "],[H,W]):PY=INT((SIN(2*PI*X/23)+1)*((H-1)/2)):EY=INT((SIN(2*PI*X/28)+1)*((H-1)/2)):IY=INT((SIN(2*PI*X/33)+1)*((H-1)/2)):C[H/2,IOTA(W)-1]="-":C[IOTA(H)-1,INT(W/2)]="|":C[PY,IOTA(W)-1]="P":C[EY,IOTA(W)-1]="E":C[IY,IOTA(W)-1]="I":PRINT "Nhịp sinh học cho " + BD + " | P=Thể chất(23) E=Cảm xúc(28) I=Trí tuệ(33)":PRINT FRMV$(C)

3. Các TYPE Đối Tượng cho Một Trò Chơi

Định nghĩa một loại Player với dữ liệu và phương thức riêng, giống như một lớp.

vb Copy
TYPE Player
    Name AS STRING
    Health AS INTEGER

    ' Phương thức nhận sát thương
    SUB TakeDamage(damage)
        THIS.Health = THIS.Health - damage
        IF THIS.Health < 0 THEN THIS.Health = 0
        PRINT THIS.Name; " nhận "; damage; " sát thương! Sức khỏe hiện tại là "; THIS.Health
    ENDSUB
ENDTYPE

' Tạo một thể hiện người chơi
DIM Hero AS Player
Hero.Name = "Arion"
Hero.Health = 100

Hero.TakeDamage(15)

4. Ma Thuật Của AI Tích Hợp (Phân biệt tự động)

Không cần Python, không cần thư viện phức tạp. Chỉ cần tạo các đối tượng Tensor, thực hiện toán học và gọi TENSOR.BACKWARD để tự động tính toán tất cả các gradient cần thiết cho việc huấn luyện một mạng nơ-ron.

vb Copy
' Tạo hai tensor đơn giản
A = TENSOR.FROM([[1, 2], [3, 4]])
B = TENSOR.FROM([[5, 6], [7, 8]])

' Bước tiến (lịch sử của phép toán này được theo dõi)
C = MATMUL(A, B)

' Bước lùi (tính toán gradient cho A và B tự động)
TENSOR.BACKWARD C

' Kiểm tra gradient đã tính toán
PRINT "Gradient của A:"; TENSOR.TOARRAY(A.grad)

Đối Tượng Sử Dụng Là Ai?

Tôi thiết kế jdBasic để trở thành một ngôn ngữ "thực hiện công việc" cho một số nhóm:

  • Giáo viên và Người đam mê: Một môi trường đơn giản, tự chứa để dạy lập trình, từ đồ họa rùa đến logic trò chơi.
  • Nhà phát triển game Indie: Một cách nhanh chóng để tạo mẫu và xây dựng các trò chơi 2D cổ điển mà không gặp rắc rối với các engine lớn.
  • Sinh viên AI/ML & Lập trình viên tò mò: Một cách cực kỳ dễ tiếp cận để học các nguyên tắc cơ bản của mạng nơ-ron mà không bị lạc trong hệ sinh thái Python.
  • Người dùng nâng cao & Lập trình viên kịch bản: Một ngôn ngữ "keo" mạnh mẽ để tự động hóa nhiệm vụ, phân tích tệp và thậm chí tạo các API web đơn giản với máy chủ HTTP tích hợp.

Tôi Rất Muốn Nghe Ý Kiến Của Bạn

Dự án này là sự kết hợp của toàn bộ kinh nghiệm nghề nghiệp của tôi với công nghệ tuyệt vời ngày nay. Giờ đây, tôi rất vui được chia sẻ nó với một cộng đồng rộng lớn hơn.

Bạn có thể kiểm tra dự án, tải xuống phiên bản mới nhất và tìm hiểu tài liệu trên GitHub:

  • Repo chính: https://github.com/AtomiJD/jdBasic
  • Tài liệu: Tham khảo ngôn ngữ (https://github.com/AtomiJD/jdBasic/languages.md) và Sổ tay chính thức (https://github.com/AtomiJD/jdBasic/manual.md)

Tôi có một vài câu hỏi dành cho cộng đồng DEV:

  1. Ngôn ngữ lập trình đầu tiên nào đã khiến bạn yêu thích mã?
  2. Nhìn vào các tính năng, điều gì là thứ đầu tiên bạn muốn xây dựng với jdBasic?
  3. Một ngôn ngữ như thế này có chỗ đứng ở năm 2025 không?

Cảm ơn bạn đã đọc. Tôi không thể chờ đợi để xem bạn nghĩ gì!

Chúc mọi người sức khỏe :- )

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào