Compiler as dll
Bill Baxter
wbaxter at gmail.com
Thu Jan 29 16:35:00 PST 2009
On Fri, Jan 30, 2009 at 8:40 AM, Christopher Wright <dhasenan at gmail.com> wrote:
> Daniel Keep wrote:
>>
>> Personally, I think the best approach is to combine the two; write the
>> hot spots in C, D or some other fast language, and all the glue in a
>> dynamic language. For all it's expressiveness, there are just some
>> things that are easier to do with a dynamic language like Python or Lua
>> than with D.
>
> I keep hearing this stated, but I don't see very many use cases put forth
> where it is clearly better to use a dynamic language. For me, I'm not
> familiar with any dynamic languages to a sufficient degree to ever get an
> advantage from using them, but if I see a sufficient use case, I'll change
> that.
Since Variants are kind of the basic variable type in dynamic
languages, basically anywhere you can benefit from variants is a win
for dynamic langs. More generally there are times when you can't
really know what types things are going to be till run time. For
instance dealing with a database. In a dynamic lang you can create
new aggregate types on the fly that are just like built-in types. Or
say you have an algorithm that can work on lots of different kinds of
data types. But you need to load the data from a file at runtime,
including the type. To do that with C++/D templates you have to
pre-instantiate every possible type you want to support, even though
most runs of your program will use only one or two instantiations of
it. With a dynamic language you don't have to pre-instantiate
anything, so such things are a lot easier.
In GUIs when you need to loosely couple different components, dynamic
langs can make life a lot easier. With std.signals in D, for
instance, you have to be so anal about the call signatures. And you
may have trouble calling a delegate that takes a bool when the signal
sends out an int, etc Such things are rarely any problem for a
dynamic language. Variable numbers of args are also generally very
easy to use.
Basically imagine any annoyance you have with D or C++. With a
dynamic language it pretty much disappears. :-) (But of course you
will encounter new issues, like performance, or higher testing burden
because no types are statically checked).
One thing, though, that I noticed using Python, is that a lot of what
is considered so easy-to-use about dynamic languages is just that
people are more willing to use expensive (but elegant) abstractions.
If you're willing to do things in a slightly less efficient way, you
can make the code look pretty darn elegant. I think this is the basis
of much of Bearophile's libs. Most of the time you really don't need
that extra performance. With a dynamic language there's no way to
really get the performance, anyway, so you might as well use something
elegant. People seem to have a harder time throwing away their
desire for efficiency when they know their language *is* capable of
being efficient. I'm certainly included in that group. I would have
a hard time convincing myself to code in D similar to how I code in
Python. It just feels so sloppy to me when it's in D, because I know
D can do better. But in truth, most of the code I write would
probably perform fine even with large helpings of extra slop.
--bb
More information about the Digitalmars-d
mailing list