1 / 22

Delta Forth .NET

World’s first Forth compiler for the .NET platform. Delta Forth .NET. Valer BOCAN , PhD. Agenda. What is Forth anyway? Reverse Polish Notation Stack-based programming Delta Forth .NET Demonstration. What is Forth anyway?.

umeko
Download Presentation

Delta Forth .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. World’s first Forth compiler for the .NET platform Delta Forth .NET Valer BOCAN, PhD

  2. Agenda • What is Forth anyway? • Reverse Polish Notation • Stack-based programming • Delta Forth .NET • Demonstration

  3. What is Forth anyway? • Procedural, stack-based language that is compiled and interpreted at the same time • Developed by Chuck Moore at the US National Radio Astronomy Observatory in the early 1970s • Procedures are called words that are grouped in vocabularies. • Forth is a meta-language, as new words can form new specialized Forth-like languages

  4. Where is Forth used? • Popular for developing embedded systems. • Implemented on RISC processors • Open Firmware boot ROMs used by Apple, IBM, and Sun Microsystems • First stage boot controller for FreeBSD • Software that controlled the robotic arm that repaired the Hubble Space Telescope

  5. Implementing Forth • 50-70% of a typical Forth implementation is written in… Forth • Implementation effort is small; a single developer can create a Forth system on a new platform in months • Delta Forth .NET was implemented in just 5 weeks

  6. Agenda • What is Forth anyway? • Reverse Polish Notation • Stack-based programming • Delta Forth .NET • Demonstration

  7. Reverse Polish Notation (RPN) • Invented by Charles Hamblin in 1950’s to enable zero-address memory stores • In postfix notation, the operators follow their operands, i.e. 3 + 5 becomes 3 5 + • RPN obviates the needs for parentheses otherwise required by infix notation • Reading from left to right, calculations can occur as soon as an operator is read

  8. RPN Sample • Take infix expression (2 + 5) * (10 – 4) • This translates to postfix expression 2 5 + 10 4 - * • See how the postfix expression is evaluated using a stack-based algorithm - + 4 * 5 10 6 2 7 42

  9. Agenda • What is Forth anyway? • Reverse Polish Notation • Stack-based programming • Delta Forth .NET • Demonstration

  10. Stack-based programming • Unusual programming style, close to machine • Forth uses two stacks: • Parameter stack, used to transmit parameters between words • Return stack, used to hold the return address of the word caller and some counter for loop functions • There are some powerful primitives to handle the stacks

  11. Forth primitives (1/5) • DUP – duplicates the topmost element on the stack DUP 33 33 33 20 20 9 9

  12. Forth primitives (2/5) • DROP – drops the topmost element on the stack DROP 33 20 20 9 9

  13. Forth primitives (3/5) • SWAP – swaps the two topmost elements on the stack SWAP 33 20 20 33 9 9

  14. Forth primitives (4/5) • OVER – duplicates the second topmost element on the stack OVER 20 33 33 20 20 9 9

  15. Forth primitives (5/5) • ROT – rotates the three topmost elements on the stack ROT 10 33 33 20 20 10 9 9

  16. Agenda • What is Forth anyway? • Reverse Polish Notation • Stack-based programming • Delta Forth .NET • Demonstration

  17. Delta Forth .NET • Sequel of the Delta Forth for Java project (1997) • C# command-driven application • This dialect is not interpreted, the generated code is fully managed • Supports Forth at the .NET consumer level (i.e. no new .NET classes can be derived) • Supports interoperability with other .NET libraries

  18. Hello World in Forth • Perhaps the most odd looking Hello World out there : main \ Entry point ."Hello World" ;

  19. Forth Sample (1/2) • Finding prime numbers (up to 400 in this case) 400 constant limit : isprime \ Returns 1 if the number on top of stack is a prime number 2 begin over over mod 0= 0= rot rot dup >r over 2 / > 0= rot and r> swap while 1+ repeat over 2 / > ; : main \ Entry point ."Prime numbers up to " limit . .": " limit 1 do iisprime if i . space then loop ;

  20. Forth Sample (2/2) • Euclid’s algorithm 4330 constant num1 \ The first number 8235 constant num2 \ The second number ( Word to test if value on top of stack is equal to or less than 0 ) : ZeroLessEqual dup 0= swap 0< or ; : gcd (num1 num2 - - -) over ZeroLessEqual if (num1 is <= 0) drop drop else dup ZeroLessEqual if (num2 is <= 0) drop drop else begin over over = if (We've got the result) . else over over > if swap then over - 0 then until then then ; : main \ Entry point ."GCD of " num1 . ." and " num2 . ." is " num1 num2 gcdcr ;

  21. Agenda • What is Forth anyway? • Reverse Polish Notation • Stack-based programming • Delta Forth .NET • Demonstration

  22. Questions? www.bocan.ro/deltaforthnet valer@bocan.ro

More Related