Арт-клас (багатопотокова програма)
Оскільки без вчителя не може бути класу, то вам потрібен вчитель (основна тема). Коли потрапляєш до класу, ти сідаєш, а вчитель відповідає за всіх і призначає класу малювати картини на день.
Учитель призначає всім учням на день розпочати малювання (ініціалізація нитки та призначення).
Оскільки в школі є лише стільки фарб, всі повинні будуть ділитися кольорами один з одним (фарби представляють пам'ять).
Скажімо, ви малюєте дракона і хочете подарувати йому божевільні червоні очі, але хтось інший використовує червону фарбу. Ви не можете просто перейти і взяти фарбу для себе, оскільки тоді ніхто інший не міг би її використовувати. Натомість те, що ви робите, - ви ввічливо просите поділитися фарбою (блокування ресурсів). Ви трохи використовуєте, а потім передаєте його. Можливо, вам доведеться трохи почекати, щоб повернути його, але це дозволяє кожному, хто потребує цього, отримати без боротьби з фарбою (умови гонки).
В кінці уроку вчитель відхиляє клас (приєднання до теми).
Ігри (багатопроцесорний додаток)
Гра в карткові ігри з друзями (або еквівалентна гра з предметами колекціонування):
Скажімо, ви збираєтеся зі своїми друзями (процесами) після школи. Навколо немає вчителів, нікого немає, щоб сказати, що робити.
Всі збираються разом, щоб грати в ігри (багатопроцесорний або багатошаровий додаток).
Ви дуже замислюєтесь над тим, як можна використовувати свої картки для перемоги над опонентами (внутрішня обробка), і ви намагаєтеся ділитися ідеями з партнером, коли ви придумуєте ідею (передача повідомлення).
Якщо ви дійсно хороші, можете приєднатися до клубу:
Керівник (виконавча програма) Члени (підпрограми)
Якщо клуб стає дійсно хорошим, вони можуть придумати спеціальний спосіб (API) спілкуватися один з одним, щоб допомогти краще стратегізувати стратегію.
Я вирішив не згадувати тут декілька процесорів / ядер, оскільки абстракція стає досить складною (а комутація контексту все ще прозора для більшості програм). Я, мабуть, міг би почати з того, що кожна команда в грі представляє окремий процесор / ядро, і більшість ігор все ще висмоктуються, оскільки вони дозволяють лише кільком командам грати разом у грі. Майбутнє може виглядати щось більше, як MMORPG, де багато людей можуть грати разом у грі на багатьох різних командах.
Спроба розробити у дітей метафору для системи розподільної обробки на багатьох основних комп'ютерах або багатьох хост-мережах буде дуже цікаво грати, але це не те, про що Op просили.
Примітка:
Повідомлення, що передаються вище, - це посилання на безліч форм спілкування, які програми використовують для розмови один з одним. Як і люди, у додатків є багато способів спілкування один з одним. Писання - це так, як Piping серіалізовані дані, розмова - це як мережа, шепіт - це як мережа через зашифроване з'єднання, бази даних - це як карта рахунків (кінцева структура з чітко визначеними даними), а використання MSMQ - це як натискання коду morse шляхом збивання голови тверда поверхня.
Більшість інших форм спілкування поза цим розмиттям занадто багато для мене, щоб вважати їх невідрізними.
Убік:
Якщо ви коли-небудь грали в таку онлайн-гру, як Halo, люди, які приєднуються до груп (або стають професійними гравцями), зазвичай мають скорочену мову, щоб телефонувати на виклики, щоб направляти один одного, де гравці іншої команди та що вони використовують. Це дуже неприємно, якщо ви не знаєте викликів, але це дивно ефективно під час гри.
Цікаво, як, хоча більшість людей, які живуть у межах даної культури, говорять загальною мовою, але всередині цієї культури люди розробляють коротші лаконічні доменні мови, оптимізовані для вирішення конкретних завдань. При обчисленні я порівняв би це з API.