FORTH có đức tính trên các máy nhỏ, nhưng có một chút đường cong học tập.
FORTH có nhiều mặt, bất kỳ hoặc tất cả đều có thể được sử dụng để phát triển nhúng.
Một phần của cuộc đấu tranh với FORTH là đối phó với sự phân đôi được trình bày.
Trên trang web có, các FORTH nhỏ, thô tục, bạn cũ Z-80 FigForth phiên dịch luồng, là rất thấp về môi trường mà họ cung cấp cho bạn, nhà phát triển. Họ chắc chắn là cao hơn so với lắp ráp, nhưng, được cho là, (trong một số trường hợp) hơn C.
Ví dụ, ra khỏi hộp, FORTH (những đứa trẻ lớn tuổi hơn nhiều người nghĩ về CPU nhỏ) không cho phép bạn phân bổ bộ nhớ động hoặc làm số học con trỏ (dễ). Nó thậm chí không có "cấu trúc" như một khái niệm ngôn ngữ. Về cơ bản bạn có thể chơi với các offset thông qua các hằng số. Ban đầu, bạn thậm chí không thể làm đệ quy. Có thể cho rằng, hạn chế lớn nhất là nó không có loại dữ liệu thực. Nó không được gõ ở tất cả, đó là tất cả các con số mà có thể hoặc có thể không được con trỏ đến bộ nhớ có thể hoặc có thể không phải là dữ liệu hoặc ký tự hoặc bất cứ điều gì.
Tất nhiên, đồng thời, bạn có thể có được toàn bộ hệ thống, với một trình biên tập và trình soạn thảo, v.v. tất cả trong phạm vi 8K RAM.
Vì vậy, theo cách đó, đó là, vâng, mức cao hơn so với lắp ráp, nhưng thấp hơn so với C.
Nhưng (và đó là một lớn Nhưng) ...
Trong khi nó có thể bắt đầu ở mức độ thấp, bạn, với tư cách là lập trình viên, có thể nâng nó lên bất kỳ mức độ trừu tượng nào mà bạn hài lòng - bạn có thể lấy nó khá nhiều như bạn muốn.
Bạn muốn cấu trúc? Bạn muốn một đống để malloc từ? Bạn muốn có một hệ thống đối tượng? Đó là tất cả có sẵn cho các tòa nhà trên nền tảng.
Bạn muốn hỗ trợ lớp học đầu tiên, ở cấp độ ngôn ngữ, cho hệ thống bản ghi dựa trên ISAM nhỏ của bạn? Dễ dàng.
Cân nhắc chung Lisp. Hai trong số các tính năng mạnh mẽ nhất của nó là Macros và Reader, cho phép bạn chuyển đổi văn bản tùy ý thành mã sau đó được biên dịch.
FORTH có cùng khả năng, chỉ có thể đi xa hơn. Trong các FORTH cũ hơn, bạn thậm chí có quyền truy cập vào trình biên dịch, không chỉ là đầu vào cho trình biên dịch. Trình thông dịch có luồng khá đơn giản và dễ sửa đổi. Bạn có quyền truy cập "thô" vào hình ảnh bộ nhớ, bạn thực sự có thể làm bất cứ điều gì bạn muốn - tất cả đều từ chính hệ thống FORTH.
Đây là cách FORTH có thể "tự chuyển" các kiến trúc khác một cách dễ dàng, cách chúng có thể tối ưu hóa cấu trúc dữ liệu cụ thể. Nhiều FORTH cũ hơn là Thông dịch viên được tạo luồng, nhưng không có lý do gì họ phải làm. Bạn có thể biên dịch FORTH thành mã máy thuần túy (ví dụ: không có thông dịch viên) nếu bạn muốn.
Tất nhiên, trên bộ điều khiển "vi mô" hiện đại, bạn có thể dễ dàng chuyển toàn bộ môi trường dev sang thiết bị. Không bao giờ sao chép một hình ảnh trên dây một lần nữa (cho đến khi bạn trở lại nó lên tất nhiên).
Tất cả điều này đều có tác dụng, tất nhiên. Có lẽ quá nhiều công việc, đó là tùy thuộc vào nhà thiết kế/lập trình viên để quyết định. Đó là một bộ công cụ nguyên thủy có thể được sử dụng để tạo ra những thứ rất mạnh mẽ.
Hầu hết các ngôn ngữ "hiện đại" như C#, Java, Ruby, Python * yêu cầu * bộ sưu tập rác trong quá trình triển khai. Điều đó rất khó thực hiện trong một bộ vi xử lý nhỏ và có tác động xấu đến hiệu năng thời gian thực. Các chàng trai Java đã định nghĩa Java "RealTime", nhưng nó không phải là rất phổ biến và bạn vẫn cần một thời gian chạy khá lớn để thực thi nó, vì nó có * cả bộ sưu tập rác và phân bổ lưu trữ xác định. Bạn có thể sử dụng các ngôn ngữ này trong "hệ thống nhúng" dựa trên x86 và có số lượng RAM lớn. Nhưng nếu không C, C++ và FORTH thích hợp hơn. –
Tại sao bạn quan tâm, tò mò? Lập trình nhúng gần như luôn luôn rất gần với máy, cho thấy rằng một ngôn ngữ cấp thấp như C hoặc C++ sẽ phù hợp. Python là một ngôn ngữ rất tốt, nhưng yêu cầu hỗ trợ thời gian chạy nhiều hơn và cố tình tránh xa silicon. –
Chỉ cần thêm một số thông tin về Python: Bộ sưu tập rác có thể được kiểm soát rõ ràng, việc đếm tham chiếu được sử dụng cho hầu hết các trường hợp trong quá trình thực hiện tham chiếu và có một triển khai thay thế nhỏ tại đây: http://www.tinypy.org/ Lua là tốt. –