Click here to Skip to main content
15,879,326 members
Articles / Programming Languages / Forth.NET
Tip/Trick

Delta Forth .NET

Rate me:
Please Sign up or sign in to vote.
4.94/5 (20 votes)
19 Aug 2013CPOL2 min read 288.7K   1.4K   48   41
World's first Forth compiler for the .NET platform

Delta Forth .NET - World's first Forth compiler for the .NET platform

Delta Forth is a non-standard Forth dialect. It has several limitations over traditional standards; however it may be an excellent starting point for beginners. The traditional compreter (compiler – interpreter) approach of other implementations did not appeal when the Delta dialect was designed since computers evolved enormously since the original Forth specification was written. Instead, we deal with compiled programs and thus several original Forth words – mainly related to chained execution - have lost their meaning (see STATE, COMPILE, IMMEDIATE, etc.).

It has been stated that a complete traditional Forth environment can be coded by a single person in a three month time frame. I managed to release the beta 1 version of Delta in half that time. Despite the short time it took to be developed, this tool has a long history, being a continuation of the award-winning Delta Forth for Java project that I started back in 1997. At that time, it was the first Forth compiler for Java and was a real surprise when I presented it as my graduation project two years later. 

Main Features 

  • Targets the Common Language Runtime (CLR) directly, i.e. there is no intermediate p-code generation
  • Compilation to either .EXE or .DLL
  • Support for integer and string constants
  • Support for local variables
  • Support for include files
  • Support for external libraries
  • Support for signed assemblies 

What others have said... 

"Well done on your Forth compiler for .NET. It must be over fifteen years since I last touched Forth, but it’s a great example of how the .NET Framework supports stack-based languages well." Tim Sneath, .NET Developer Group, Microsoft Corp. 

"I work with all of our .NET language partners, and noticed your recent announcement of your Forth compiler [...]"Brad Merrill, Microsoft Corp.

"Excellent work Valer - I'm most impressed!" Chris Maunder, CodeProject.com

"What a delight to trip across your Delta Forth .NET.  I was wondering who'd have the first FORTH .NET offering. I need wonder no more. [...] Keep up the good work." Dennis Misener

"I started out with your Delta Forth. NET [...] and found it very interesting using Forth for writing .NET applications." Lennie De Villiers

Read more on my website at http://www.bocan.ro/deltaforthnet 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect
Romania Romania
I am a software engineer based in Timișoara, Romania and currently hold the position of software architect for one of the largest companies in the world.

I invented a dialect of the Forth programming language and implemented the first Forth compiler for the .NET platform. I reverse-engineered the communication protocol of some GPS trackers and wrote from scratch a vehicle tracking system that is currently used to track my two cars. I hold a PhD in computer science and I am the author of several papers and a book chapter. In the 90s I wrote several computer viruses in assembly language for my own research and I was the first to devise a technique to deter heuristic virus scanners. In short, a humble man.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Southmountain19-Aug-13 13:08
Southmountain19-Aug-13 13:08 
QuestionWHich Version Pin
Wisen Technologies17-Aug-13 2:42
Wisen Technologies17-Aug-13 2:42 
AnswerRe: WHich Version Pin
Valer BOCAN19-Aug-13 4:51
Valer BOCAN19-Aug-13 4:51 
QuestionDelta Forth supported? maintained? Pin
Bruce Axtens28-Jun-10 16:33
Bruce Axtens28-Jun-10 16:33 
GeneralEmbarrassed Pin
jimmygyuma1-Nov-09 7:40
jimmygyuma1-Nov-09 7:40 
AnswerRe: Embarrassed Pin
Valer BOCAN1-Nov-09 18:32
Valer BOCAN1-Nov-09 18:32 
QuestionHELP! Pin
fasehah6-May-08 4:08
fasehah6-May-08 4:08 
GeneralIncredible job! Pin
Eric Engler1-Jul-06 16:50
Eric Engler1-Jul-06 16:50 
This is a great implementation of Forth for .NET!

Some people love to criticize Forth, and to some extent this is justified. However, it is NOT justified to complain that Forth isn't a good OOP language because it wasn't intended to be.

Forth is both odd and elegant at the same time. When you consider it's objectives: to be an efficient threaded and extensible language, it becomes more clear that it has met those goals.

To me, the most powerful aspects of Forth (ability to modify and add new keywords, and change the syntax of the language) are also the reasons why it's hard to learn and use Forth. Above all, the hardest thing for me to do is to modify someone else's program, because I'm not just learning his imperative code, but I also have to learn the vocabulary of that program.

The best aspect of Forth is that you aren't limited in any way and you can define your own words and syntax that is best suited for a given application. It's almost like designing a new language specific to an application. You can do a whole lot in a very small program, and the final "highest level" block of code can appear to be very sweet, indeed.

The main reason I don't use Forth is not because it's a weak language, but rather that I'm not intelligent enough to adapt my thinking to let me "get into the mind" of the author of a given program. This is easier in traditional languages because the "words" and syntax are statically defined.
Make no mistake: some of the smartest developers I've ever heard of were great with Forth. And many mathematicians love it.

Try to get a hold of one of Leo Brodie's books if you want to see a good tutorial of Forth. I like "Starting Forth" best, but you can find a color PDF of "Thinking Forth" online. The latter book isn't good for beginners.

For the latest implementation of Delta Forth, see the author's website given in this article. This is truly a fine work!
GeneralRe: Incredible job! Pin
Eric Engler5-Jul-06 17:06
Eric Engler5-Jul-06 17:06 
GeneralEmbbed Pin
sudheerravindran30-May-04 21:58
sudheerravindran30-May-04 21:58 
GeneralRPL Pin
bouli17-Dec-03 11:27
bouli17-Dec-03 11:27 
QuestionWhat's it good for? Pin
b0blee31-Jul-03 12:02
sussb0blee31-Jul-03 12:02 
AnswerRe: What's it good for? Pin
Valer BOCAN31-Jul-03 21:00
Valer BOCAN31-Jul-03 21:00 
QuestionDid Valer get his PhD? Pin
Nish Nishant19-Apr-03 13:20
sitebuilderNish Nishant19-Apr-03 13:20 
AnswerRe: Did Valer get his PhD? Pin
Valer BOCAN20-Apr-03 20:38
Valer BOCAN20-Apr-03 20:38 
GeneralFunny quote Pin
R. Reyes13-Feb-03 23:21
R. Reyes13-Feb-03 23:21 
QuestionI wonder what Chuck thinks of this? Pin
synchromesh18-Nov-02 9:16
synchromesh18-Nov-02 9:16 
QuestionWhy no .NET compiler implementations? Pin
Heath Stewart15-Nov-02 3:28
protectorHeath Stewart15-Nov-02 3:28 
AnswerRe: Why no .NET compiler implementations? Pin
Valer BOCAN15-Nov-02 3:37
Valer BOCAN15-Nov-02 3:37 
GeneralYour approach Pin
Shaun Wilde19-Jul-02 10:18
Shaun Wilde19-Jul-02 10:18 
GeneralRe: Your approach Pin
Valer BOCAN26-Jul-02 20:31
Valer BOCAN26-Jul-02 20:31 
GeneralRe: Your approach Pin
RichT6666-May-03 21:22
sussRichT6666-May-03 21:22 
GeneralRe: Your approach Pin
Zdenek Navratil21-May-03 21:06
Zdenek Navratil21-May-03 21:06 
GeneralThe link to the source code Pin
22-Jan-02 6:54
suss22-Jan-02 6:54 
GeneralRe: The link to the source code Pin
Valer BOCAN22-Jan-02 7:23
Valer BOCAN22-Jan-02 7:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.