One more question - an untapped audience.

Adam Wilson flyboynw at gmail.com
Mon Feb 10 12:32:03 PST 2014


On Mon, 10 Feb 2014 11:03:19 -0800, Tofu Ninja <emmons0 at purdue.edu> wrote:

> On Monday, 10 February 2014 at 18:11:38 UTC, Steve Teale wrote:
>> What can be done to capture the attention of young people in the  
>> developing world?
>>
>> Probably the most effective thing would be if it were possible to edit,  
>> compile, and run D programs on a cheap Android ARM phone.
>>
>> Is this within the bounds of possibility?
>>
>> There are millions of unemployed, bored, restless, and ambitious young  
>> men out there, who have saved their all to buy a cheap smartphone.
>>
>> Any other ideas?
>>
>> Steve
>
> I am only 20 and am still in university so I feel like I can answer this  
> with at least my own experiences. Personally I think D would capture the  
> attention of more young people if it was simply easier to use. The first  
> "real" language I really got into was C#(about 5-6 years ago) and I  
> think the main reason is that it was so flipin easy to learn and get  
> started. All I had to do to set it up was download Visual Studio and I  
> was done... period ... The documentation was fantastic and everything  
> was named in very intuitive ways. Most of the time when I was learning I  
> would just ctrl+space and start scrolling through the auto-complete  
> reading the documentation of all the functions right there in visual  
> studio. It was soooooo easy. In my opinion the biggest thing holding D  
> back by a long shot is the tooling and documentation... it is simply  
> terrible. But thats just my opinion so I don't want anyone taking  
> offense.
>
> Also something that would help get younger people into D was if the std  
> lib was a little bit more expansive. Look at java and c# in my opinion  
> they are both so popular because their std lib is so large. Younger  
> people don't like to have to deal with non standard libraries as they  
> just make it so much more difficult to do things especially as they are  
> still trying to learn.
>
> The lack of a real GUI library is also a hindrance. Young people like to  
> see results on the screen other than just text. That is why web and  
> mobile development is so popular with young people.
>
> tldr; Tools suck, documentation sucks, std lib is small and no std GUI  
> lib...

I wholeheartedly agree with this sentiment, although I am a little older  
and got my start in a combination of VB6 and C++98. But C# is what made me  
want to get up everyday and write code. It is fantastically easy to learn,  
you can write code that does useful things very quickly. Download the IDE,  
install, write 50 lines and you've got a tool that does useful work, even  
if trivial.

And the .NET Framework or Java Frameworks. I know that the linux-heads  
scoff at the idea of shipping a large standard library, "Download the  
library that works best for you" they cry! Well, that answer is  
unacceptable for newbies, mostly because they don't actually know which  
library will work for them, or with D, or on the operating system they are  
using. Big standard libraries provide a new user with all the tools that  
they need to write many programs. This isn't to say that the standard  
library needs to include everything one might need to build any app every.  
I still use third-party libraries. I just don't use them to fill in common  
functionality. For example, I have a library that provides special types  
of inputboxes, but WPF (a big part of the .NET Framework) provides a  
generic inputbox. Then we use EntityFramework, .NET provides the generic  
interface that is used by EntityFramework, LINQ, but EF itself extends the  
framework in specialized ways. The framework should absolutely include as  
many general tools as possible.

Not having an IDE is more tangential, but no less important. Here we have  
two integrations with popular IDE's, Visual Studio and Mono. However,  
these integrations suffer from the lack of tooling for D. DMD can't be  
used as libary, so these integrations have had to produce their own  
parsing engines and they are always behind DMD itself so they never parse  
the current DMD language quite correctly. This means that you can't turn  
on the really cool features that we in the C#/Java community have become  
used to. D's integration with IDE's is similar to the situation with IDE  
integration for C++. Yes D is easier to parse than C++, but since we can't  
use the canonical parser, we don't have any parsers that match D in it's  
current form so the AST's are almost always broken or plain incorrect.

Building a new IDE won't solve this problem. Here we need to focus on  
building better tools for D, turning DMD itself into a library or  
Compiler-as-a-Service in the current lingo, since libraries are now  
"services". D needs to make great strides in tooling to be relevant, we  
need first-class debugging, and they need to support more than the  
terminal. We need D as library, we need better IDE integrations. We need a  
broader standard library. We need more bindings for existing libraries. We  
need more new libraries (like the Aurora library I am working on).

But most importantly we need to stop whining about the problems and start  
doing something about them. There are plenty of projects in these areas  
that are being run by a single person that could use any help. For  
example, I know that Rainer Schutze of VisualD fame is quite open to pull  
requests. If you use a library from a language other than D and have a D  
binding for it, get it in Deimos.

Let's all do something that moves the state of D forward.

-- 
Adam Wilson
GitHub/IRC: LightBender
Aurora Project Coordinator


More information about the Digitalmars-d mailing list