On Monday, 6 April 2015 at 23:51:17 UTC, Adam Hawkins wrote:
Hello everyone, this is my first post on the forum. I've been
investigating the language for the past few weeks. I was able
to complete my first useful program thanks to very helpful
people in #d on IRC . The experience made me very interested in
the language and improving the community around it.
I'm primarily Ruby developer (been so about the last 7-8 years)
doing web stuff with significant JavaScript work as well. I
wrote a blog post on why I'm excited about D. You can read it
here: http://hawkins.io/2015/04/excited-about-d/.
I've been reading the forums here so I can see that there is a
focus on improving the marketing for the language and growing
the community. I see most of the effort is geared towards C++
programmers, but have you considered looking at us dynamic
languages folk? I see a big upside for us. Moving from Ruby to
D (my case) gives me power & performance. I still have OOP
techniques but I still have functional things like closures and
all that good stuff. Only trade off in the Ruby case is
metaprogramming. All in all I think there is a significant
value promise for those of us doing backend services for folks
like me.
Regardless, I figured it might be interesting to hear about
some experience coming to the language from a different
perspective. Cheers!
This is awesome :)
A few notes on the blog:
"peaked my interest" should be "piqued my interest"
You can have as many unittest blocks as you want in a file/module.
@property isn't really about parentheses-less calls (parentheses
are optional for all function calls), it's more for this sort of
thing:
struct S
{
private int a_;
enum flagMask = 1u << 31;
@property void val(int v)
{
a_ = (a_ & flagMask) & (v & ~flagMask);
}
@property int val()
{
return a_ & ~flagMask;
}
@property void flag(bool b)
{
a_ = ((cast(uint)b) << 31) & (a_ & ~mask);
}
@property bool flag()
{
return a_ & flagMask;
}
}
unittest
{
S s;
s.flag = true;
s.val = 75;
assert(s.flag);
assert(s.val == 75);
}
Note that the assignments are calling the property functions.