Skip to content

Reorganize Learning Path for new learners #377

@HuskyNator

Description

@HuskyNator

In order to introduce new people to the language & hold their interest, I feel the page order of the language tour should be changed, quite a bit.

When comparing the order of pages, the tour tries to jump into more complex topics before describing the basics. Additionally, some sections seem misplaced (see bottom notes regarding "Ranges" and "Documentation")
This should make the tour more understandable to people less experienced in languages like C & provide a more organized approach.

Current "Basics" order:

  1. Imports/Modules
  2. Basic types
  3. Memory
  4. Mutability
  5. Control flow
  6. Functions
  7. Structs
  8. Arrays
  9. Slices
  10. Alias & Strings
  11. Loops
  12. Foreach
  13. Ranges
  14. Associative Arrays
  15. Classes
  16. Interfaces
  17. Templates
  18. Delegates
  19. Exceptions
  20. Further Reading

My Suggestion:

  1. Hello World (explicitly as one section, at the start, see note below)
  2. Basic types
  3. Functions
  4. Comments (/"Documentation", see note below)
  5. Control Flow (merge "Loops" into this Merge Loops into Control Flow #373 & Merges Loops & Control Flow #374 )
  6. Structs
  7. Enums (explicit addition)
  8. Arrays
  9. Foreach
  10. Memory
  11. Mutability
  12. Alias & Strings
  13. Associative Arrays
  14. Slices
  15. Classes
  16. Interfaces
  17. Templates
  18. Delegates
  19. Exceptions
  20. Imports and Modules
  21. Further Reading

Important notes about this change: (may need to be split into separate issues)

  • Adds explicit "Hello World" section (Move out of Import example & move rest of this section to the end of the basics track. Can still refer to this section for the examples import std.stdio: writeln; statement)
  • Adds explicit "Enums" section.
  • Moves "Ranges" from "Basics" to "D's Gems" (immediately before "Range Algorithms")
  • Moves "Documentation" from "D's Gems" to "Basics" and complete section with more on comments in general.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions