Re: My thoughts on C# and gaming.
Emil Dotchevski <[email protected]>
| Newsgroups | gmane.games.devel.sweng |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jan 27, 2010 at 2:00 PM, Bill Kelly <[email protected]> wrote: > Emil Dotchevski wrote: >> On Wed, Jan 27, 2010 at 2:26 AM, Bill Kelly <[email protected]> wrote: >>>> Being able to do things like this is not what makes a language great. >>>> In fact I am not sure what makes most languages great. It seems to me >>>> that most languages should have been a C++ library or a LISP library >>>> instead -- all other differences are primarily syntactical in nature >>>> and thus not very interesting as far as I am concerned. > > An example of a Ruby DSL, in this case an assembler for Common > Intermediate Language bytecode: > > http://www.iunknown.com/2005/12/refining-the-ru.html > > require 'RbDynamicMethod' > > RbDynamicMethod::create_ruby_method('say_hello') do > include 'System, System.Collections' > ldstr 'Hello, World, int = {0}, double = {1}' > ldc_i4 42 > box 'Int32' > ldc_r8 3.141592654 > box 'Double' > call 'static Console.WriteLine(String,Object,Object)' > br_s 'end_of_method' > ldstr 'Goodbye, World' > call 'static Console.WriteLine(String)' > label 'end_of_method' > ldc_i4_4 > ret > end Compare such VM design to the simplicity of a LISP interpreter. LISP is not just the grandfather of all dynamic languages, it is the most basic and most powerful of the bunch. C++ is similarly basic and powerful in the "static type checking" domain. In fact it is C++ that introduced the concept to begin with, only later it was adopted by C. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode _______________________________________________ Sweng-Gamedev mailing list [email protected] http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com