digitalmars.D - D Learning Resources
-
Morgan McDermott
(75/75)
Nov 29 2006
Repost from DSource
- Ary Manzana (8/100) Nov 29 2006 Great idea!
- Wolven (15/15) Nov 29 2006 Great suggestion Morgan!
- Mike Parker (32/42) Nov 30 2006 D has been in 'development mode' for a few years now. Of course D
- Tyler Knott (5/5) Nov 29 2006 The tutorial section at DSource.org (which currently seems to be down)
- Lutger (4/12) Nov 30 2006 Hi, have you found the wikibook 'a beginner's guide to D'? Here is the
- Morgan McDermott (8/23) Nov 30 2006 I just stumbled upon this gem a few nights ago. My goal is to offer a
- Jesse Phillips (11/37) Nov 30 2006 I think the book might be better then categorizing it in basic,
- Morgan McDermott (30/30) Nov 30 2006 I'm always startled by the overwhelming response from the NewsGroup :)...
- Pierre Rouleau (18/24) Nov 30 2006 Might I suggest the following:
- Daniel Keep (9/9) Nov 30 2006 One thing I just thought of that you should think about looking at:
- Morgan McDermott (11/11) Dec 01 2006 Jesse:
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.
Nov 29 2006
Morgan McDermott escribió: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.Great idea! In almost every programming language page there is a tutorial with a fantastic table of contents. Take for example Python. I know nothing about Pyhton, but I guess I'll be able to learn it reading this: http://docs.python.org/tut/tut.html Maybe we can make that kind of tutorial using a (maybe private) Wiki, until everything is done, and then lock the contents.
Nov 29 2006
Great suggestion Morgan! As a "non-C" programmer I would LOVE to have some tutorials starting with the BASICS (including the basic concepts) of D. Then being able to progress to the intermediate and advanced stages with explanations of the concepts and concrete REAL WORLD example code would be nice. ("Hello World" as a programming example is unbelievably lame. In fact, it's worse than lame, it's completely meaningless.) As Morgan said, much of the information available seems to assume that the reader is already familiar with C++ concepts AND IS a long time C\C++ programmer that can readily recognize the shorthand C like syntax... which I don't. Obviously that assumption perfectly fits many of the people posting on here, but it doesn't do much for winning converts from other programming backgrounds. Then again, maybe the D developers aren't interested in attracting newbie or non C programmers. But I suspect it's more a matter of time and priorities. That, and the simple fact that most programmers are the worlds WORST teachers. They simply don't know how to communicate with\translate for mere mortals... :)
Nov 29 2006
Wolven wrote:As Morgan said, much of the information available seems to assume that the reader is already familiar with C++ concepts AND IS a long time C\C++ programmer that can readily recognize the shorthand C like syntax... which I don't. Obviously that assumption perfectly fits many of the people posting on here, but it doesn't do much for winning converts from other programming backgrounds. Then again, maybe the D developers aren't interested in attracting newbie or non C programmers. But I suspect it's more a matter of time and priorities. That, and the simple fact that most programmers are the worlds WORST teachers. They simply don't know how to communicate with\translate for mere mortals... :)D has been in 'development mode' for a few years now. Of course D developers are interested in *one day* attracting newbies and non-C programmers, but I think there hasn't been a focus on that yet because D hasn't really been newbie-friendly. By that I mean that the spec has been in fluctuation, plus it requires use of command line tools and debugging techniques that might not be immediately obvious to newbies. I don't think it's reasonable to expect someone with little or no experience to be able to come in and learn a developing language like D, nor do I think it's reasonable to expect early adopters to invest the time and effort to create the amount of documentation that would be required to teach such users. Early adopters of any tech are nearly always those who have related experience, otherwise the learning curve is too steep. That said, there have been people with little experience who were able to pick up D quite readily through perseverence and sheer force of will. And if you look at the documentation for the projects at DSource, you will find that some of it was written with the newbie in mind. Still, the focus of most of the existing D tutorials and documentation has assumed readers have some experience because their target audience is early adopters. The goal has been to help other early adopters get up to speed quickly and focus on building the tools and libraries the community needs to move forward. The DMD 1.0 release will shift that focus from the early adopters to the world-at-large. So you can't really fault the community for not being newbie-friendly yet or for making certain assumptions about current D users. Now that 1.0 has a definite release date, there will certainly be more effort to target less experienced users, even non-programmers. I have plans toward that end myself on my DBlog. I'm involved in two other library projects that take priority, though, with little enough time to work on those as it is. I'm sure most of the active D community is in a similar boat.
Nov 30 2006
The tutorial section at DSource.org (which currently seems to be down) already works somewhat like this. It's a Wiki so anyone can edit and add new tutorials (for easy collaboration) and they are double-categorized (by difficulty and language feature) so it's easy for to find relevant tutorials.
Nov 29 2006
Morgan McDermott wrote: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 ^_~).Hi, have you found the wikibook 'a beginner's guide to D'? Here is the link: http://en.wikibooks.org/wiki/A_Beginner%27s_Guide_to_D Perhaps this is the kind of project that you have in mind.
Nov 30 2006
Lutger wrote:Morgan McDermott wrote:I just stumbled upon this gem a few nights ago. My goal is to offer a linear learning path similar to what a book would offer, combined with the flexibility of a free-form learning resource. That is - guide people along the path of D-Basics or Intermediate-Programming in a straight-forward manner, but also offer how-to and syntax resources that function in the traditional free-form "web navigation" style. Thanks for the link =).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 ^_~).Hi, have you found the wikibook 'a beginner's guide to D'? Here is the link: http://en.wikibooks.org/wiki/A_Beginner%27s_Guide_to_D Perhaps this is the kind of project that you have in mind.
Nov 30 2006
I think the book might be better then categorizing it in basic, intermediate, advanced. The reason I state this is given a new programmer. They will want to start from the beginning (basics), until they reach the level they feel they can stop. Now take a program from another language, they have some skill level, may know a lot about their native language (where they're coming from) or not a whole lot. When they look at the book they'll be looking for the headings that indicate D specific ideas, and avoid sections with the concepts they already know. Your proposal sounds like it would be a great change for the dsource tutorial section. Morgan McDermott wrote:Lutger wrote:Morgan McDermott wrote:I just stumbled upon this gem a few nights ago. My goal is to offer a linear learning path similar to what a book would offer, combined with the flexibility of a free-form learning resource. That is - guide people along the path of D-Basics or Intermediate-Programming in a straight-forward manner, but also offer how-to and syntax resources that function in the traditional free-form "web navigation" style. Thanks for the link =).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 ^_~).Hi, have you found the wikibook 'a beginner's guide to D'? Here is the link: http://en.wikibooks.org/wiki/A_Beginner%27s_Guide_to_D Perhaps this is the kind of project that you have in mind.
Nov 30 2006
I'm always startled by the overwhelming response from the NewsGroup :). Ary: I've now received multiple comments stating how the Python Docs are fantastic, so I'm going to have to spend some time figuring out why and how they're so wonderful. I'm not so big a fan of locking the contents after everything is complete, however; versioning might be nice, but hopefully this tutorial project will keep on growing at a steady rate, covering the new, popular API's, and not just the core-features of D. Maybe I'm missing something - are you suggesting that we lock it for security purposes, or consistency, or... something else? Thanks for the link and idea. Wolven: I have a few C books targeting new programmers, and it seems that a lot of what is taught there would need to be taught in order to understand D programming as well. I assume that a lot of thought and effort went into the sequencing and overall structure of these books, so they might provide a good starting point for the Basics arena (rewritten and condensed, of course). Tyler: Thank you for the information about the DSource.org Tutorials project. Brad has suggested that this project be a reorganization of the existing Tutorials project, and, if the current managers are interested, I'd be excited to have such a nice starting point. Mike: Thank you very much for your insight into why D hasn't been presented in a "Newbie-Friendly" way to the world. It seems like you have a great amount of knowledge about the D Community and an instinctive command of the English language... I would certainly like to like to incorporate any D tutorials that you might make into the project, if you're at all interested =).
Nov 30 2006
Morgan McDermott wrote:I'm always startled by the overwhelming response from the NewsGroup :). Ary: I've now received multiple comments stating how the Python Docs are fantastic, so I'm going to have to spend some time figuring out why and how they're so wonderful.Might I suggest the following: Python documentation: - is updated along with each version of the language: the documentation is part of the release, just as Python is. - is versionned: each version of Python has it's own set of documentation, the old ones are still accessible. - is centralized. Although you can find lots of tutorials and explanations all over the web, you can find precice, concice description of everything in the Python web site. - Each document gets contribution from the entire Python community but each document has an *editor*. Fred L. Drake and AMK have been doing a tremendous jobs (and they *are* programmers). I agree with people that state that Python's documentation is great. In fact the entire Python project is very well managed. I also like the concept of PEP (Python Enhacement Proposals) that are similar to RFCs. I understand that D is still under development and I'm sure things will continue to evolve for the best.
Nov 30 2006
One thing I just thought of that you should think about looking at: Dive into Python: http://diveintopython.org/ If it wasn't for that book, I would still think Python was a silly little language with no practical use. I went through the official Python docs *three times*. It wasn't until I read that book that it finally clicked. I've wanted to write something similar for D a few times, but don't really know where to start or what to write. -- Daniel
Nov 30 2006
Jesse: I completely agree that there has to be some way for already experienced programmers to easily learn D without sifting through all of the programming basics. How they should be able to do this I'm not sure, but it is a need we have to address. Thanks a lot for the reminder =). Daniel: This is the perfect type of suggestion to set us out on the right foot - if we can look at what works and reproduce it, then it will save us time and agony and will result in a better resource. Thanks for the link!
Dec 01 2006