Học những gì để tạo ra một ngôn ngữ lập trình?
lập trình
,công nghệ thông tin
Câu hỏi được gộp với Tạo một ngôn ngữ lập trình thuần Việt với các hàm, câu lệnh bằng tiếng Việt thì ta cần gì?
Ngôn ngữ tiếng việt nó phức tạp và nhiều nghĩa ngay cả con người tạo ra nó còn bối rối khi dùng từ thì việc lập trình tiếng việt như dắt con bò chui qua lỗ kim.
Tuy nhiên đây cũng là ý tưởng táo bạo dẫn đến tham vọng tiếng việt sẽ được phổ biến và trở nên thông dụng thì lúc đó sẽ biết đâu có thể lập trình tiếng việt.
Nội dung liên quan
Nội dung sắp xếp theo thời gian
Huyền Phong
Nam Tran
Đúng là không nên dùng chữ viết 2 Byte để mã hóa thông tin "Mã Nguồn-Code", tốn lưu trữ, mà không mang lợi ích nhiều
Tuy nhiên, nếu ý tưởng của bạn theo kiểu "Ngôn ngữ tự nhiên", thì:
Mình mô tả 1 chút về quy trình các thiết bị, máy móc hoạt động dựa trên Ngôn ngữ lập trình.
+ Mã máy => Vi xử lý/Chip {Mỗi Chip có 1 nhiệm vụ cụ thể, rất rõ ràng}
+ JAVA,C#, C++,...<ByteCode,Assembly,MSIL,CIL> => Mã Máy { Mỗi ngôn ngữ bậc cao đều phải học "Ngôn ngữ mã máy" }
+ MatLab,R,Go,Scala,PHP,JS,HTML,JSP,Python,... => JAVA,C#, C++,... { Một số ngôn ngữ chuyên dụng, dành cho 1 số lĩnh vực nhất định }
+ Ngôn ngữ tự nhiên <Tiếng việt, tiếng anh,...> => MathLab,R,Go,Scala,PHP,JS,HTML,JSP,... {Chatbot of KGM, GoogleNow,Siri,Cortana, người máy ...}
=> Đó, bạn mà dùng tiếng việt để tạo ngôn ngữ lập trình, một dạng ngôn ngữ tự nhiên, thì nên hướng làm 1 con AI/Robot nhé.
Khánh Toàn Nguyễn
tạo 1 ngôn ngữ lập trình bằng tiếng Việt ko đơn giản đâu. khi dịch các vòng lặp while, for bạn sẽ rõ. nếu ko phải là 1 ngôn ngữ front-end chạy trên web thì ko thể chạy trên terminal đc. hơn nữa mã ASCII sẽ nhẹ hơn nhiều so với bộ UTF-8 có dung lượng gấp đôi. Hoàn toàn ko thể tạo được
Minh Q. Hoang
Câu trả lời là bạn cần quên ý tưởng đó đi :D
Lý do là ngôn ngữ bậc cao thực chất là một tập hợp các từ khóa để trình biên dịch (compiler) dịch ra mã máy và chạy. Thông thường người ta dùng tiếng Anh, tận dụng bộ mã ASCII để tiết kiệm bộ nhớ (do 1 kí tự chỉ cần 1 byte), với tiếng Việt, sử dụng bộ mã Unicode sẽ cần 2 byte cho 1 kí tự => dung lượng code tăng gấp đôi trong khi hiệu quả ko tăng.
Nguyễn Quốc Khánh
Không khả quan
Tùng Hoàng
Mình nghĩ mục đích của bạn ý là để áp dụng cho việc học tập cũng rất ok.
Để tạo ra 1 ngôn ngữ lập trình thì nó sẽ bao gồm mấy module chính như sau:
Lexer: Bộ phân tích cái code của bạn thành các token (các phần tử có nghĩa trong code, keywork, số, chuỗi, các phép toán...) ví dụ token trong ngôn ngữ c là : "for", "if", "+", ";"
Parse: Khi bạn đưa code qua bộ Lexer thì bạn sẽ có 1 mảng các token. Nhiệm vụ của bạn lúc nào là đọc cái mảng đó để chuyển nó về 1 dạng cấu trúc cây AST. Cái cây này sẽ thể hiện cho bạn mối quan hệ giữa các token
Transform: Khi bạn có cây AST rồi thì mình cần thực thi nó để ra được kết quả cuối cùng. Transform sẽ làm nhiệm vụ chuyển cây AST thành một ngôn ngữ mà máy có thể hiểu được. Ở đây là ngôn ngữ máy hoặc Assambly. Nhưng bạn cũng có thể biên dịch nó thành ngôn ngữ C/C++ và lấy C++ là kết quả sau biên dịch. Như thế sẽ bớt nhiều sức học hơn =))
Ngoài ra thì còn những module giúp kiểm tra cú pháp, gỡ lỗi....
Đó là kiến thức mình nghiên cứu dc khi cũng có ý định làm 1 ngôn ngữ lập trình =))))