Modelo de programação - Programming model

Um modelo de programação é um estilo de programação, selecionado acima e além da escolha particular da linguagem de programação . A execução pode ser baseada no que parecem ser chamadas de biblioteca . Os exemplos incluem a biblioteca POSIX Threads e o MapReduce do Hadoop . Em ambos os casos, o modelo de execução é diferente daquele da linguagem base em que o código é escrito. Por exemplo, a linguagem de programação C não tem modelo de execução para entrada / saída ou comportamento de thread. Mas tal comportamento pode ser invocado a partir da sintaxe C, fazendo o que parece ser uma chamada para uma biblioteca C normal.

O que distingue um modelo de programação de uma biblioteca normal é que o comportamento da chamada não pode ser entendido em termos da linguagem em que o programa é escrito. Por exemplo, o comportamento das chamadas para a biblioteca de threads POSIX não pode ser entendido em termos de C língua. O motivo é que a chamada invoca um modelo de execução diferente do modelo de execução da linguagem. Essa invocação de um modelo de execução externo é a característica definidora de um modelo de programação , em contraste com uma linguagem de programação .

Na computação paralela , o modelo de execução frequentemente deve expor recursos do hardware para obter alto desempenho. A grande quantidade de variação no hardware paralelo causa uma necessidade simultânea de um número igualmente grande de modelos de execução paralela. É impraticável fazer uma nova linguagem para cada modelo de execução, portanto, é uma prática comum invocar os comportamentos do modelo de execução paralela por meio de uma API. Portanto, a maior parte do esforço de programação é feito por meio de modelos de programação paralela, em vez de linguagens paralelas. Infelizmente, a terminologia em torno de tais modelos de programação tende a se concentrar nos detalhes do hardware que inspirou o modelo de execução e, nesse mundo insular, a crença equivocada é formada de que um modelo de programação é apenas para o caso em que um modelo de execução é intimamente associado a recursos de hardware.

Referências