Cách tạo ngôn ngữ lập trình: 15 bước (có hình ảnh)

Mục lục:

Cách tạo ngôn ngữ lập trình: 15 bước (có hình ảnh)
Cách tạo ngôn ngữ lập trình: 15 bước (có hình ảnh)

Video: Cách tạo ngôn ngữ lập trình: 15 bước (có hình ảnh)

Video: Cách tạo ngôn ngữ lập trình: 15 bước (có hình ảnh)
Video: 1 Phút vệ sinh fan tả nhiêt CPU CŨ THÀNH MỚI 2024, Có thể
Anonim

Nhiều người gặp khó khăn hoặc thất vọng với ngôn ngữ lập trình mà họ sử dụng hàng ngày. Một số muốn mọi thứ được xử lý trừu tượng hơn, trong khi những người khác không thích triển khai các tính năng mà họ muốn là 'tiêu chuẩn'. Cho dù bạn là một chuyên gia CNTT hay chỉ là một người có sở thích, nhiều lần bạn có thể thấy mình muốn tạo ra một ngôn ngữ lập trình mới.

Các bước

Tạo ngôn ngữ lập trình Bước 1
Tạo ngôn ngữ lập trình Bước 1

Bước 1. Làm quen với công nghệ

Bạn không thể tạo ngôn ngữ lập trình nếu bạn không biết sử dụng máy tính.

Tạo ngôn ngữ lập trình Bước 2
Tạo ngôn ngữ lập trình Bước 2

Bước 2. Làm quen với thuật ngữ

Người viết trình biên dịch thường sử dụng thuật ngữ không quen thuộc. Đọc các trình biên dịch trước khi tiếp tục. Hãy chắc chắn để biết tất cả mọi thứ mà bạn cần biết.

Tạo ngôn ngữ lập trình Bước 3
Tạo ngôn ngữ lập trình Bước 3

Bước 3. Quyết định xem ngôn ngữ của bạn đang giải quyết vấn đề gì

Nó giải quyết một vấn đề của miền cụ thể hay nó là một ngôn ngữ có mục đích chung?

Tạo ngôn ngữ lập trình Bước 4
Tạo ngôn ngữ lập trình Bước 4

Bước 4. Suy nghĩ về ngữ nghĩa của ngôn ngữ của bạn và các khái niệm về ngôn ngữ đó

  • Bạn có cho phép truy cập trực tiếp con trỏ hay không?
  • Các loại dữ liệu ngôn ngữ của bạn là gì?
  • Nó là một ngôn ngữ tĩnh hay động?
  • Mô hình bộ nhớ của bạn là gì? Bạn sẽ sử dụng bộ thu gom rác hoặc quản lý bộ nhớ thủ công? (Nếu bạn sử dụng công cụ thu gom rác, hãy chuẩn bị viết một hoặc điều chỉnh một công cụ hiện có sang ngôn ngữ của bạn.)
  • Làm thế nào để xử lý đồng thời? Bạn sẽ sử dụng mô hình khóa / ren đơn giản hay mô hình phức tạp hơn như Linda hoặc mô hình diễn viên? (Vì ngày nay máy tính có nhiều lõi.)
  • Có các hàm nguyên thủy được nhúng trong ngôn ngữ hay mọi thứ đều đến từ một thư viện?
  • Mô hình hoặc mô hình ngôn ngữ của bạn là gì? Chức năng? Hướng đối tượng? Nguyên mẫu (như JavaScript)? Định hướng theo khía cạnh? Định hướng mẫu? Hay một cái gì đó hoàn toàn mới?
  • Làm thế nào để ngôn ngữ của bạn giao tiếp với các thư viện và ngôn ngữ hiện có (chủ yếu là C)? Điểm này rất quan trọng nếu bạn đang xây dựng một ngôn ngữ dành riêng cho miền.
  • Cuối cùng, một số câu trả lời cho những câu hỏi này sẽ được trả lời ở bước thứ hai và sẽ giúp bạn trả lời ở bước tiếp theo.
Tạo ngôn ngữ lập trình Bước 5
Tạo ngôn ngữ lập trình Bước 5

Bước 5. Nghĩ về một số nhiệm vụ cụ thể mà ai đó muốn có thể thực hiện bằng ngôn ngữ của bạn

Ví dụ: 'họ có thể muốn hướng một robot đi theo một đường thẳng' hoặc 'họ có thể muốn tạo các chương trình máy tính để bàn tương đối di động trong đó' hoặc 'họ có thể muốn tạo các ứng dụng web với nó'.

Tạo ngôn ngữ lập trình Bước 6
Tạo ngôn ngữ lập trình Bước 6

Bước 6. Thử nghiệm với các ý tưởng cú pháp (văn bản của ngôn ngữ) cho các ví dụ trên

Hãy cẩn thận giữ ngôn ngữ của bạn trong danh mục ngôn ngữ không có ngữ cảnh hoặc thứ gì đó bên trong nó. Trình tạo phân tích cú pháp của bạn và bạn sẽ đánh giá cao nó sau này

Tạo ngôn ngữ lập trình Bước 7
Tạo ngôn ngữ lập trình Bước 7

Bước 7. Viết ra một ngữ pháp chính thức cho cú pháp

Tạo ngôn ngữ lập trình Bước 8
Tạo ngôn ngữ lập trình Bước 8

Bước 8. Quyết định xem ngôn ngữ sẽ được thông dịch hoặc biên dịch

Có nghĩa là trong thế giới thông dịch, người dùng của bạn thường sẽ chỉnh sửa chương trình của bạn trong một trình chỉnh sửa và chạy nó trực tiếp trên trình thông dịch; trong khi trong thế giới biên dịch, người dùng của bạn sẽ chỉnh sửa chương trình của bạn, biên dịch nó, lưu tệp thực thi kết quả ở đâu đó và chạy nó.

Tạo ngôn ngữ lập trình Bước 9
Tạo ngôn ngữ lập trình Bước 9

Bước 9. Viết trình quét và phân tích cú pháp giao diện người dùng hoặc tìm một công cụ giúp bạn làm việc này

Ngoài ra, hãy nghĩ về cách trình biên dịch / thông dịch của bạn sẽ cảnh báo người dùng của bạn về các chương trình sai và lỗi cú pháp

Tạo ngôn ngữ lập trình Bước 10
Tạo ngôn ngữ lập trình Bước 10

Bước 10. Sử dụng thông tin phân tích cú pháp để viết mã đối tượng hoặc một biểu diễn trung gian

Yêu cầu trình phân tích cú pháp tạo AST, sau đó tạo mã đối tượng của bạn từ AST bằng cách sử dụng mã ba địa chỉ hoặc SSA anh em của nó, sau đó tạo bảng ký hiệu để xác định các hàm, biến toàn cục, v.v. của bạn.

Ngoài ra, tùy thuộc vào ngôn ngữ của bạn, bạn cũng có thể muốn tạo bảng con trỏ ảo hoặc bảng thông tin cho các lớp của mình (để hỗ trợ phản xạ hoặc RTTI)

Tạo ngôn ngữ lập trình Bước 11
Tạo ngôn ngữ lập trình Bước 11

Bước 11. Viết trình thực thi hoặc trình tạo mã sẽ liên kết mọi thứ với nhau

Tạo ngôn ngữ lập trình Bước 12
Tạo ngôn ngữ lập trình Bước 12

Bước 12. Viết nhiều chương trình thử nghiệm để kiểm tra ngôn ngữ

Bạn muốn tạo các chương trình giảm nhẹ gánh nặng của ngữ pháp chính thức để thấy rằng trình biên dịch của bạn chấp nhận mọi thứ bên trong định nghĩa của bạn và từ chối mọi thứ bên ngoài nó

Tạo ngôn ngữ lập trình Bước 13
Tạo ngôn ngữ lập trình Bước 13

Bước 13. Xem xét cách người dùng sẽ gỡ lỗi các chương trình của riêng họ

Tạo ngôn ngữ lập trình Bước 14
Tạo ngôn ngữ lập trình Bước 14

Bước 14. Nếu ngôn ngữ của bạn sử dụng một thư viện chuẩn, bạn sẽ muốn viết nó

Cùng với bộ thu gom rác hoặc các tính năng thời gian chạy khác nếu bạn cần.

Cụ thể, nếu bạn viết một trình biên dịch, bạn sẽ cần mã mà hệ điều hành sẽ thực thi để bắt đầu chạy mã người dùng (ví dụ: phân bổ tất cả các biến toàn cục)

Tạo ngôn ngữ lập trình Bước 15
Tạo ngôn ngữ lập trình Bước 15

Bước 15. Xuất bản ngôn ngữ của bạn, cùng với đặc điểm kỹ thuật cho nó và một số ví dụ về những gì bạn có thể làm trong đó

Đừng quên ghi lại cách bạn có thể tích hợp với các thư viện, ngôn ngữ hiện có và cách sử dụng các tính năng thời gian chạy và / hoặc thư viện chuẩn

Video - Bằng cách sử dụng dịch vụ này, một số thông tin có thể được chia sẻ với YouTube

Lời khuyên

  • Bắt đầu bằng cách thiết kế ngôn ngữ của bạn và không viết bất kỳ mã nào, cho đến khi bạn hài lòng và đã trả lời tất cả (hoặc hầu hết) các câu hỏi hoặc vấn đề liên quan đến thiết kế của bạn vì việc thay đổi thiết kế sớm hơn sau này sẽ dễ dàng hơn.
  • Biết nền tảng mục tiêu của bạn (hệ điều hành và các thư viện) cho trình biên dịch / thông dịch của bạn, sau cùng, bạn sẽ sử dụng nó và thao tác với nó.

Cảnh báo

  • Hãy suy nghĩ xem bạn có thực sự cần một ngôn ngữ mới và ngôn ngữ của bạn có gì mới mà các ngôn ngữ khác không có (Nó có thể là sự kết hợp của các tính năng hoặc một tính năng duy nhất).
  • Viết ngôn ngữ rất khó nếu bạn không biết mình đang làm gì. Nó cũng cần phải thực hành rất nhiều.
  • Chuẩn bị dành một chút thời gian cho thiết kế ngôn ngữ, vì bạn sẽ không có cơ hội thay đổi ngôn ngữ của mình khi bạn đã viết trình biên dịch và vượt qua điểm thiết kế.
  • Đừng cố đặt các tính năng của bạn thành một tổ hợp nhiều ngôn ngữ, chẳng hạn như nói rằng ngôn ngữ của bạn sẽ là một tổ hợp ngôn ngữ X, ngôn ngữ Y và ngôn ngữ Z. Lịch sử đã cho chúng ta thấy rằng những ngôn ngữ được tạo ra theo cách như vậy sẽ không bao giờ thành công, hoặc mọi người sẽ lập trình PL / 1 thay vì một cái gì đó dựa trên C.

Đề xuất: