www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D for projects similar to Forth Interpreters?

reply JohnZ <nospam myip.tks> writes:
In this case what would be the pros and cons if any of D compared with
C or asm?
Feb 28 2009
next sibling parent reply "Tim M" <a b.com> writes:
On Sat, 28 Feb 2009 22:53:25 +1300, JohnZ <nospam myip.tks> wrote:

 In this case what would be the pros and cons if any of D compared with
 C or asm?
C probably optimizes well based on its age. Asm will make some routines a few microseconds faster. But D will ensure whole project not be delayed by a few years. Profile the d for the slow spots, optimize those and maybe include inline asm there. Have the ability to link to existing c (and some C++) libraries if needed. Profit :) D is well suited to interpreters. PS: any thing unique about forth interpreters compared to other interpreted languages?
Feb 28 2009
parent Daniel Keep <daniel.keep.lists gmail.com> writes:
Tim M wrote:
 PS: any thing unique about forth interpreters compared to other
 interpreted languages?
Forth (actually, postfix languages in general) are awesome fun, and they're incredibly simple to play with. I made a simple Forth-like language interpreter in Python to play around with the idea of a postscript-style language for cairo rendering. I managed to get it to the point where if and subroutines were implemented as functions, which I thought was just hilarious. :D -- Daniel P.S. Here's an old fib subroutine I made in it. Anything in ( parens ) is a comment. ( Defines a fib word that computes the nth Fibonacci number. ) `fib ( n -- n' ) : dup 1 <= not if-then 1- dup fib swap 1- fib + end-if .
Feb 28 2009
prev sibling next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
JohnZ Wrote:
In this case what would be the pros and cons if any of D compared with C or
asm?<
If you use C with GCC you can use the computed goto, that is really useful to speed up an interpreter like a Forth one. D misses still such feature because it was thought as not useful enough. Bye, bearophile
Feb 28 2009
next sibling parent reply Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Sat, Feb 28, 2009 at 6:10 AM, bearophile <bearophileHUGS lycos.com> wrote:
 JohnZ Wrote:
In this case what would be the pros and cons if any of D compared with C or
asm?<
If you use C with GCC you can use the computed goto, that is really useful to speed up an interpreter like a Forth one. D misses still such feature because it was thought as not useful enough.
D turns many switch statements into computed gotos. It's a compiler optimization.
Feb 28 2009
parent JohnZ <not here.net> writes:
== Quote from Jarrett Billingsley (jarrett.billingsley gmail.com)'s
article
 On Sat, Feb 28, 2009 at 6:10 AM, bearophile
<bearophileHUGS lycos.com> wrote:
 JohnZ Wrote:
In this case what would be the pros and cons if any of D compared
with C or asm?<
 If you use C with GCC you can use the computed goto, that is
really useful to speed up an interpreter like a Forth one. D misses still such feature because it was thought as not useful enough.
 D turns many switch statements into computed gotos.  It's a compiler
 optimization.
ah that might be useful..
Mar 01 2009
prev sibling next sibling parent JohnZ <not here.net> writes:
== Quote from bearophile (bearophileHUGS lycos.com)'s article
 JohnZ Wrote:
In this case what would be the pros and cons if any of D compared
with C or asm?<
 If you use C with GCC you can use the computed goto, that is really
useful to speed up an interpreter like a Forth one. D misses still such feature because it was thought as not useful enough.
 Bye,
 bearophile
ah....project similar to forth interpreter was an easy way of saying an attempt at an interaction machine emulator. if any of you know who Peter Wegner is you'll get the joke here :D
Mar 01 2009
prev sibling parent johnZ <not here.net> writes:
sorry I emailed you...twice..first time I clicked reply to author by
accident..

JohnZ
Mar 01 2009
prev sibling next sibling parent reply Walter Bright <newshound1 digitalmars.com> writes:
JohnZ wrote:
 In this case what would be the pros and cons if any of D compared with
 C or asm?
You can compare C++ for an interpreter with the same code translated to D with Digital Mars' javascript engine http://www.digitalmars.com/dscript/index.html The D version is about 30% less source code and runs slightly faster.
Feb 28 2009
parent JohnZ <not here.net> writes:
 You can compare C++ for an interpreter with the same code translated
to
 D with Digital Mars' javascript engine
 http://www.digitalmars.com/dscript/index.html
 The D version is about 30% less source code and runs slightly faster.
Thanks I'll take a look at the source code
Mar 01 2009
prev sibling parent reply Dmitry Ponyatov <dponyatov gmail.com> writes:
 In this case what would be the pros and cons if any of D 
 compared with C or asm?
If you're not chasing for speed, using objects, types stack and `Object*[string] W` vocabulary and symbolic string-addressed memory looks more fun than classical raw machine numbers and bytes. I did this with Python version earlier (and tried C++ also), so having `[ <int:123> <point:45 67> <window:hello> ]` on data stack looks much handy than dumb integers. Interpreter tracks all typed operations, and parser allows you to use inline arithmetics and pushes executable ASTs on top of stack. So, D has its own gc, and you don't need to bother about refrecounting and manual memory management across all the code as you must do it in C++.
Apr 06
parent Nicholas Wilson <iamthewilsonator hotmail.com> writes:
On Saturday, 6 April 2024 at 08:43:36 UTC, Dmitry Ponyatov wrote:
 In this case what would be the pros and cons if any of D 
 compared with C or asm?
If you're not chasing for speed, using objects, types stack and `Object*[string] W` vocabulary and symbolic string-addressed memory looks more fun than classical raw machine numbers and bytes. I did this with Python version earlier (and tried C++ also), so having `[ <int:123> <point:45 67> <window:hello> ]` on data stack looks much handy than dumb integers. Interpreter tracks all typed operations, and parser allows you to use inline arithmetics and pushes executable ASTs on top of stack. So, D has its own gc, and you don't need to bother about refrecounting and manual memory management across all the code as you must do it in C++.
Why did you reply to this thread? it is 15 years old.
Apr 06