2010-07-08 26 views
23

Tôi đang tìm cách phát triển hệ thống Forth mới, nhằm giúp việc phát triển trò chơi trở nên dễ dàng hơn trên một hoặc nhiều nền tảng giao diện điều khiển retro. Tôi là một người mới bắt đầu từ Forth, và cần sự giúp đỡ của bạn để quyết định mã Forth nào sẽ bắt đầu chuyển.Forth nào bắt đầu chuyển từ?

Tôi về cơ bản đang tìm kiếm những thành tích/nhược điểm của Forths cụ thể so với nhau. Tôi đã đọc nguồn để JonesFORTH cũng như cả lời khen ngợi và chỉ trích của nó, và các cuộc thảo luận về ANS ra, và tiếc là đã để lại cảm giác khá bối rối. Cộng đồng Forth, từ những gì tôi có thể nói, dường như bị phân chia khá tàn bạo theo vấn đề tuân thủ tiêu chuẩn, với những lập luận rất tốt của cả hai phe về lý do tại sao tiêu chuẩn vừa là tốt vừa là một điều khủng khiếp. Tuy nhiên tôi dường như không thể tìm thấy lời khuyên thực tế tốt về chính xác những thay đổi tiêu chuẩn, khác với một ý nghĩa chung rằng nó làm cho mọi thứ phức tạp hơn và bloaty hơn họ có lẽ cần phải được.

Tôi hy vọng sẽ giúp các lập trình viên và người có sở thích phát triển dễ dàng hơn bởi triển vọng phát triển trong lắp ráp hoặc C, vì vậy tôi đang hướng tới một Forth đơn giản hơn, nhưng tôi thực sự không biết đủ về Forth chưa đưa ra quyết định có học vấn.

Trả lời

6

Tôi thuộc loại bạn đang ở ngay bây giờ. Tôi đã tình cờ đọc trên Forth một thời gian và cũng nghĩ rằng nó có rất nhiều tiềm năng - có thể cho quá trình viết kịch bản. Tuy nhiên, tôi không ở đâu gần một thẩm quyền, nhưng đây là những suy nghĩ của tôi.

Trước hết, Forth có vẻ là ngôn ngữ lập trình cuối cùng có thể lập trình - thậm chí còn hơn cả lisp. Để kết thúc, tôi không chắc chắn bao nhiêu C hoặc lắp ráp bạn sẽ cần phải mã. Tôi đã nghiêng về hướng phát triển từ vựng trong chính Forth. Sau khi tất cả, đó là cách nó được cho là được sử dụng.

Thứ hai, các triển khai mà tôi đã thử, tôi thích Gforth và Pforth là tốt nhất.

Bạn đang sử dụng ứng dụng nào?

Cuối cùng, đây là một danh sách các tuyến ra đọc tôi đã phát hiện ra:

  • Starting Forth
  • Thinking Forth
  • Forth Primer
  • Forth Language
  • Forth Tutorials
  • Pforth Tutorial
  • Gforth Manual
  • Begin Forth
  • Forth Links
  • WikiForth
  • OLPC Forth
  • Lets Build a Compiler
  • Jones Forth
  • Bạn đã tìm thấy bất kỳ những người khác?

    4

    Hệ thống Forth cơ bản rất nhỏ và có thể được triển khai nhanh chóng. Tôi nghĩ trang sau sẽ rất hữu ích cho bạn: "A sometimes minimal Forth compiler and tutorial for Linux/i386 systems". Nó là một hướng dẫn tuyến tính về bootstrapping một hệ thống Forth!

    Đảm bảo triển khai các từ xác định (từ thực hiện tại thời gian biên dịch).Đó là nơi sức mạnh của Forth xuất phát từ; làm cho nó thật sự mở rộng.

    Tôi chưa thực sự thử nó, nhưng tôi đã từng định cư cho bigFORTH vì đây là một trong số ít Forth với giấy phép nguồn mở. Nó cũng được duy trì tích cực; ví dụ có một bản phát hành đầu năm nay.

    Tôi đã thu thập a set of annotated links about Forth trong vài năm qua. Một số của nó là khó khăn để tìm công cụ.

    Về nói tiêu chuẩn: đây là cuộc thảo luận 20 năm tuổi. Tôi nghĩ điều quan trọng hơn là thực sự làm điều gì đó thay vì nói: triển khai phần mềm, cung cấp các ví dụ giết người, viết tài liệu, mời người khác tham gia, vv. Charles Moore đã chuyển sang và thực hiện Forth chips, machineForthColorFORTH. Nếu bạn tìm kiếm "machineForth" và "ColorFORTH" trong danh sách liên kết được chú thích, bạn có thể tìm thấy một số bài viết và câu lệnh thú vị. Charles Moore cũng có một số blog ngay bây giờ.

    2

    Tôi khuyên bạn nên tìm kiếm eForth, bản Ting đã viết. Loại hình hiện đại trong một số cách. Ông có một hạt nhân bằng văn bản trong C, nhưng eForth hạt nhân/hệ thống đã được chuyển đến nhiều nền tảng/cpus nhất có hạt nhân lắp ráp/lõi. Tuy nhiên, có một điều thú vị được gọi là Factor. Nó bắt đầu như 'chỉ dành cho trò chơi' và kết thúc ở một góc hoang dã và thú vị của thế giới ngôn ngữ lập trình

    2

    Một điều bạn có thể muốn thử làm bước đầu tiên là viết một trình thông dịch Forth ở một số ngôn ngữ cấp cao hơn như Java, C++, Python, vv Nó sẽ thiếu những lợi ích chính của Forth cấp độ máy: tốc độ và độ chặt, nhưng bằng cách viết máy ảo của riêng bạn, bạn sẽ hiểu được các loại luồng khác nhau, v.v., được sử dụng trong các hương vị khác nhau của Forth.

    Hầu hết các triển khai Forth mới về cơ bản đều bắt đầu bằng cách xem CPU như máy ảo - vì vậy việc tạo một máy ảo rõ ràng không bị lãng phí khi chuyển từ phiên bản phiên dịch sang phiên bản máy. Ngoài ra, bạn sẽ có một kế hoạch chi tiết mã của riêng bạn để tham khảo chéo khi xây dựng phiên bản máy.

    Nếu, tuy nhiên, bạn thực sự, thực sự thoải mái với mã máy, bạn có thể bỏ qua bước trên và chỉ cần chuyển một trong các tiêu chuẩn trực tiếp.

    Theo như tiêu chuẩn, tôi muốn chọn một số tiêu chuẩn nhưng tối thiểu để bắt đầu. Nếu bạn cần vượt qua một tiêu chuẩn về những thứ khác với những từ do người dùng định nghĩa, bạn luôn có thể phát triển theo hướng đó - tiêu chuẩn hoặc không chuẩn - như nhu cầu thực hiện. Một trong những điều tuyệt vời nhất về Forth là nó đơn giản đến nỗi bạn có thể viết lại toàn bộ trình biên dịch dễ dàng hơn bạn có thể viết lại một số mã Forth bạn sẽ chạy trên đó, lol.

    1

    Gameduino, nền tảng phát triển trò chơi trên nền tảng Arduino, có CPU tối thiểu (J1) chạy bên trong.

    Ngoài mã nguồn Verilog của J1 forth, cũng có trình mô phỏng PC, trình biên dịch được viết bằng google go, here bởi Serge Zaitsev.

    J1 đã được triển khai trong Xilinx FPGA. Nó cũng có thể "mô phỏng" CPU J1 trên bất kỳ MCU hiện đại nào.

    0

    Về khả năng tương thích ANSI, nếu bạn đang sử dụng Forth cho ứng dụng của riêng mình, bạn có thể loại bỏ bất kỳ thứ gì bạn không cần hoặc thậm chí thay đổi những thứ bạn không thích. Forth được tạo chuỗi gián tiếp nằm trong số các bộ vi xử lý nhỏ nhất trên bộ xử lý 16 bit (không nhiều hơn 64 bit). Vì vậy, đây có lẽ là con đường để đi.

    Sự nổi tiếng của Forth-Forth gián tiếp được gọi là FIG-Forth vẫn là tài liệu giáo dục. jonesforth là một ví dụ của Forth mà đi vào trong cùng một tĩnh mạch. Bản thân tôi là tác giả của ciforth đó là một trong những nguồn cảm hứng cho jonesforth và của yourforth, đó có lẽ là giá trị trong khi của bạn bởi vì nó cố gắng để giải thích lý do cho việc thiết kế những thứ theo cách họ đang có. Eforth của Ting (khắp nơi) và Camelforth là những ví dụ hay. gforth với đường vòng của nó qua c và số lượng lớn của nó ít có giá trị đối với bạn.

    Một lời khuyên chung, nếu bạn cần một từ mã (được mã hóa trong trình biên dịch, không phải Forth, mức thấp nhất), bạn tốt hơn là đánh cắp nó, sau đó reimplementing. Mã cho một nói 32 bit bởi 16 bit phân chia trên tất cả, nhưng các bộ xử lý tối nghĩa nhất là ràng buộc để được tìm thấy ở đâu đó. Vì vậy, thu thập một vài Forth được thực hiện trên bộ xử lý bạn đang sử dụng.

    Bạn phải chọn một bộ xử lý và điều đó sẽ khóa bạn khá nhiều Sau đó, bạn chỉ có thể sử dụng một trong những Camelforth (vì nó có sẵn cho hầu hết các bộ vi xử lý phổ biến) và bắt đầu với ứng dụng của bạn. Nếu bạn không hoàn toàn hạnh phúc, bạn có thể sửa đổi nó để trở thành Forth của riêng bạn. Nếu bạn đang sử dụng bộ xử lý 6809 hoặc bộ xử lý Renesas hoặc 16 bit i86, bạn có thể sử dụng ciforth làm điểm bắt đầu.

    Các vấn đề liên quan