D Learning Resources

Morgan McDermott morganmcdermott at gmail.com
Wed Nov 29 14:17:38 PST 2006


Repost from DSource <http://www.dsource.org/forums/viewtopic.php?p=12007>

As a newbie to this great language, one of my biggest challenges in 
learning D is finding learning resources. I've gotten to the point now 
where I generally use digitalmars.com/d/ as a starting point for any 
questions, and the NewsGroup has been a great help, but starting out 
with D seems much harder than it is with other languages due to the 
scarcity of tutorials (alongside the absence of books ^_~).

Without a C-like programming background, I'm sure that learning D would 
have been even harder, as most of the ''basics'' are described in terms 
of how they are implemented in D, obviously targeting a more experienced 
crowd. Besides the absence of learning-materials themselves, the other 
challenge that comes up is having a good starting point for finding 
other resources. Things are too spread out - it would be very hard for 
someone new to programming to quickly develop a good understanding of D 
from just one D-website. Here at DSource there is a large (in comparison 
with other sites) number of tutorials, but few feel very complete, and 
the target audience seems to change from tutorial to tutorial.

I would like to suggest that a project be undertaken by D-programmers to 
create a centralized tutorial and example resource. A good way to 
segment this out might be:

#####-----------------------------------------------#######

Basics: (covers basic types, operators, flow control, functions, arrays etc)
-Basic D for the programming novice
-From (your programming language here) to D.

Intermediate: (Mix of intermediate general-programming and D-specific 
topics)
-Intermediate Programming from a D perspective
-What's different in D and why (modules, scope etc)
-Good-Coding practices

Intermediate How-To for common tasks
-Database Interaction
-Compile a D Project
-Filesystem interaction

Advanced: (Smaller section, geared towards harnessing the "true" power of D)
-Advanced D Features
-Tips & Tricks
-Security

Links: (Other D-Programming References)
-NewsGroup
-Digitalmars

#####-----------------------------------------------#######

What's best about this project is that not only writers could contribute 
- that is, there are enough D-tutorials out there written by authors who 
would probably let you Borg-assimilate their tutorials into this 
reference that we already have a pretty good starting point.

I think that the best tutorials would function as a series up to a point 
- that is, readers are led through learning D in a coherent series of 
steps. Learning Intermediate Programming tutorials should expect 
knowledge covered in Basics, and the How-To section of tutorials should 
expect only the knowledge covered in the Learning Intermediate 
Programming tutorials.

With this in mind, I don't suggest working from the "Basics" upwards 
towards "Advanced" linearly; there are many people who would only like 
to write about certain aspects of D. However, letting people run around 
and write tutorials with no knowledge of the tutorials that lead up to 
theirs would result in a resource that lacks good cohesion, flow, and 
certainly would suffer from the absence of a tangible learning-path.

A solution to this would be to simply create an outline of what you want 
readers to know at which point. For instance, you might decide that once 
a reader reaches the "Intermediate Tutorials", you want them to know x, 
y, and z. Once a tutorial-writer figures out where his tutorial fits 
into the grand scheme, he would then be able to know exactly what the 
reader should already know, and target that audience specifically.

As a plan of action, I propose two distinct steps:
1) Have the D community produce an outline (like my ad-hoc one above), 
sectioned into distinct 'steps' of learning. Broad how-to areas might 
want to be separated into the knowledge required to use that how-to 
properly.
2) Get tutorials and articles flowing! Gather up willing writers from 
the D-community and start making the tutorials needed. Assimilate the 
spread out D-tutorials on the web (only for those authors who permit it, 
of course). This step is an ongoing process - as people write tutorials, 
they can add them into the structure where they fit, and eventually a 
fully fleshed-out, coherent, and easy to use D learning resource will 
result.



More information about the Digitalmars-d mailing list