FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

D Learning Resources

 
Post new topic   Reply to topic     Forum Index -> Tutorials
View previous topic :: View next topic  
Author Message
mmcdermo



Joined: 09 Nov 2006
Posts: 18

PostPosted: Wed Nov 29, 2006 3:09 pm    Post subject: D Learning Resources Reply with quote

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.
Back to top
View user's profile Send private message Send e-mail
JoeCoder



Joined: 29 Oct 2005
Posts: 294

PostPosted: Wed Nov 29, 2006 11:16 pm    Post subject: Reply with quote

This might be a good starting point, or perhaps more than that, but i haven't checked out most of the links from that page.
Back to top
View user's profile Send private message
brad
Site Admin


Joined: 22 Feb 2004
Posts: 490
Location: Atlanta, GA USA

PostPosted: Thu Nov 30, 2006 12:01 am    Post subject: Reply with quote

Does it make sense to reorganize the Tutorials project here at dsource.org? Justin has put some serious time into maintaining it, and there are nuggets of goodness in there. However, I do agree that something similar to your outline would help get other people started.

I hold Python's tutorial up as a great example of what I think you're asking for, and Ary mentioned it in the NG. digitalmars.com/d is a bit terse, but it's a language spec.

I'm assuming that you are volunteering some time, even if it is "as you're learning D" - because I think that you bring a perfect perspective compared to existing D developers.

So how do you feel about a re-org of the existing project that wanted to achieve this? We'd have to check with Justin to see what his thoughts are, as well.

BA
Back to top
View user's profile Send private message
mmcdermo



Joined: 09 Nov 2006
Posts: 18

PostPosted: Thu Nov 30, 2006 11:24 am    Post subject: Reply with quote

Thanks for the link, Joe.

As far as using using the existing Tutorial project, I'm completely for it. It has an already setup environment in addition to a good bit of material to start with that will save time and allow us to put more time into structure and quality. Of course, if the current manager(s) of the Tutorial project would prefer, I'd be perfectly happy starting a separate project. And in answer of your question about my time, yes - I do plan to contribute whatever reasonable amount of time is necessary towards this project's development.

Thanks for the timely reply ^_^
Back to top
View user's profile Send private message Send e-mail
jcc7



Joined: 22 Feb 2004
Posts: 657
Location: Muskogee, OK, USA

PostPosted: Thu Nov 30, 2006 4:51 pm    Post subject: Reply with quote

mmcdermo wrote:
Thanks for the link, Joe.

As far as using using the existing Tutorial project, I'm completely for it. It has an already setup environment in addition to a good bit of material to start with that will save time and allow us to put more time into structure and quality. Of course, if the current manager(s) of the Tutorial project would prefer, I'd be perfectly happy starting a separate project. And in answer of your question about my time, yes - I do plan to contribute whatever reasonable amount of time is necessary towards this project's development.

Thanks for the timely reply ^_^
As the guy who is "in charge" of the Tutorials project, I think it'd be great if you want to help by reorganizing the Tutorials wiki. You could start by creating a page with your idea of an outline. Or since you seem to have a specific interest in people who come to D without a C/C++ background, you could also start reworking the "fundamentals" tutorial (or just starting a new page if it's too different that what you imagined). Feel free to improve the current pages and add pages to fill in the gaps.

If you could recruit others to assist in the process that'd be even greater. I haven't really put any effort into recruiting. This project was intended to be collaborative - especially when it became wiki-based. I don't have a lot of time available for reworking the existing content into a comprehensive tutorial. Recently, I've just been testing (and adjusting) existing examples to see that they work with the latest DMD compilers.

Also, I still have fun posting cool code that I find in the newsgroups. It's probably the kind of thing that's more useful for power users (one of which I hope to consider myself one day) than for beginners. If you want to spend some time making big improvements, that'd be fantastic!
Back to top
View user's profile Send private message AIM Address
mmcdermo



Joined: 09 Nov 2006
Posts: 18

PostPosted: Thu Nov 30, 2006 9:44 pm    Post subject: Reply with quote

Thanks for the endorsement, JCC! It's great that you're still interested in contributing to the D community's tutorials; we need people who are excited about posting their favorite type of tutorial, and the ''advanced level'' is no exception.

The first thing on my agenda is coming up with a design for the structure. The abstract model for this project's "flow" should enable speedy and comprehensive learning, as well as easy and intuitive access to what I will call the "reference". I have divided this design into these two parts based on how I learn and use informative material pertaining to programming languages, so it will be necessary to modify this model to allow for people who learn differently to still learn easily.

As I learn a language, I will read books and tutorials to get a feel for the language's syntax (much akin to how one would learn the grammar of a foreign language). Once I have taken in enough information and written enough code, this all becomes second nature and I rarely refer back to these "beginner resources". After this point, I read tutorials on more advanced features, my code gets cleaner, and I get really comfortable with the language. From here, I read the occasional Advanced tutorial when I stumble across one, but I am still researching things on the web; primarily, I lookup information about functions and API's. What I research after I'm comfortable with the language is what I call "reference information", or something like the vocabulary of a foreign language. Advanced tutorials past this point generally cover things, using our metaphor again, like prose or internal mechanisms.

To present this visually (with a few examples for clarity), we have:
----Basic Learning-------Intermediate Learning-------Reference--------------Advanced----
-----Structures---------------Error Handling----------------Phobos/Ares fcns------Tips&Tricks-----
-----Program flow-----------Compiling----------------------SomeProj API-----------Security-----


But again, this is simply a model of a perfect resource for myself and we need to consider the different ways people learn and use information right now, while we're designing the structure and flow. On this note, I would like feedback and structural suggestions from anyone who has an opinion on this topic, no matter how mild or obscure.

Things to think about:
    -Would you like D's primary information resource to be structured as above?
    -If not, then how?

    -Would the above structure allow for the most speedy and comprehensive learning for the most people?

    -What if the ONLY D Resource you could find was structured like this? Would it be good or bad?
    -If there existed ONLY one resource, how would you structure it?
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Tutorials All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group