Модель программирования — это модель выполнения, связанная с API или определенным шаблоном кода. В этом стиле фактически задействованы две модели выполнения: модель выполнения базового языка программирования и модель выполнения модели программирования. Примером является Spark , где Java является базовым языком, а Spark — моделью программирования. Выполнение может быть основано на том, что выглядит как вызовы библиотеки . Другие примеры включают библиотеку POSIX Threads и Hadoop's MapReduce . [1] В обоих случаях модель выполнения модели программирования отличается от модели выполнения базового языка, на котором написан код. Например, язык программирования C не имеет поведения в своей модели выполнения для ввода/вывода или поведения потока. Но такое поведение можно вызвать из синтаксиса C, сделав то, что выглядит как вызов обычной библиотеки C.
Что отличает модель программирования от обычной библиотеки, так это то, что поведение вызова не может быть понято в терминах языка, на котором написана программа. Например, поведение вызовов библиотеки потоков POSIX не может быть понято в терминах языка C. Причина в том, что вызов вызывает модель выполнения, которая отличается от модели выполнения языка. Этот вызов внешней модели выполнения является определяющей характеристикой модели программирования , в отличие от языка программирования .
В параллельных вычислениях модель выполнения часто должна раскрывать особенности оборудования для достижения высокой производительности. Большое количество вариаций в параллельном оборудовании вызывает параллельную потребность в таком же большом количестве моделей параллельного выполнения. Непрактично создавать новый язык для каждой модели выполнения, поэтому обычной практикой является вызов поведения модели параллельного выполнения через API. Таким образом, большая часть усилий по программированию выполняется с помощью моделей параллельного программирования, а не параллельных языков. Терминология вокруг таких моделей программирования имеет тенденцию фокусироваться на деталях оборудования, которое вдохновило модель выполнения, и в этом замкнутом мире формируется ошибочное убеждение, что модель программирования предназначена только для случая, когда модель выполнения тесно связана с особенностями оборудования. [2]