On Mon, 10 Feb 2014 11:03:19 -0800, Tofu Ninja <emmo...@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