Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

suggestion: illustrating queuing and tasking policies #488

Open
evanescente-ondine opened this issue Jan 21, 2025 · 2 comments
Open

suggestion: illustrating queuing and tasking policies #488

evanescente-ondine opened this issue Jan 21, 2025 · 2 comments

Comments

@evanescente-ondine
Copy link

This part of the RM and language in general, regardless of the material, book or otherwise, is very, very terse and technical, and very challenging for non-native english speakers, let alone those with those with a poor imagination like me. Not that it's ill-defined, but concurrency naturally is complex.
What I found lacking were diagrams (we need less blocks of text and more graphics !) and simple use cases illustrating, among other things, the different queuing and tasking policies and other pragma and facilities related to concurrency and priorities, including the latest Ada 2012 and Ada 2022 typically not included in older manuals. Yes the Barnes covers it as it covers everything, but we are not meant to learn Ada from it.

This would make this part of Ada more or much more approachable, I think.

@leogermond
Copy link
Contributor

Thanks for reaching out. In my mind the quickest wins would be:

  • Adding sequence diagrams for task communication patterns
  • Including real-world analogies for each concept
  • Creating a visual task lifecycle diagram
  • Adding intermediate examples between the basic and advanced concepts (simple producer/consumer patterns, basic resource management, common synchronization patterns)

Does that look like what you have in mind?

@evanescente-ondine
Copy link
Author

evanescente-ondine commented Jan 22, 2025

Yes, absolutely.

For instance the first exercise in my book goes

Implement a solution to the problem of the Readers and Writers using protected objects. In this problem, exclusive write-access to a resource is required although multiple tasks can have read-only access. This is trivial to implement using a protected object (a function is used for reading and a procedure for writing) as long as there are no requirements for preventing starvation. State the requirement that your solution fulfils.

Yypically, I do know what Renders and Writers is about, I read the damn chapter well enough times, but this sounds like having to come up with both a non-obvious problem (a specific case with requirements) and the solution and I don't have enough imagination.
One reason might be, we are meant to eat up a whole other, very theoretical book on concurrency. STEEP. Material like yours would come in handy to kick start learners, self-taught ones in particular, then making learning from primary sources (RM and Barnes') much easier.
Knowing how Ada is barely taught at all anymore nowaday in Unis, this is vital.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants