O descritor 'Engine' é muito discutido: mecanismo gráfico, mecanismo RegEx, mecanismo AI etc. etc., mas o que realmente torna um software um mecanismo? Design, entrada / saída, finalidade, tamanho?
O descritor 'Engine' é muito discutido: mecanismo gráfico, mecanismo RegEx, mecanismo AI etc. etc., mas o que realmente torna um software um mecanismo? Design, entrada / saída, finalidade, tamanho?
Respostas:
Um motor seria algo "sob o capô", por assim dizer. Não é, ou pelo menos muito raramente, é visível para o usuário final. Um mecanismo gráfico, por exemplo, conduz todos os cálculos de renderização, mas passa essas alterações para o ambiente real a ser modelado. Entrada: matemática. Saída: cores bonitas. Um mecanismo também pode ter variáveis de trabalho muito diferentes do que uma interface de nível mais alto. Por exemplo, no exemplo anterior, ele está usando dados numéricos brutos para manipular gráficos sem se preocupar se algo é uma sombra ou uma textura, tudo isso é abstraído nas equações e operações de matriz a serem executadas por esse mecanismo. Pense no mecanismo como o "kernel" de um determinado sistema, enquanto o resto seria mais parecido com o "shell".
Para usar um mundo real, analogia CS101, um motor é como um motor de carro. São necessárias duas entradas, ar e gás. Depois os passa para uma câmara, com a qual a eletricidade é usada para gerar o menor uso mundial de soldagem a arco. O material então explode. Isso produz duas saídas, escape e uma onda de pressão que aciona um pistão. O restante é transferido para o movimento da roda pelos vários eixos de transmissão e outros. Então o motor é o motor e o carro em si é a concha. Você pode usar um motor de carro para um propósito diferente, por exemplo, dirigir um gerador de eletricidade ou um moinho para moer grãos. Você pode usar entradas diferentes se o mecanismo tiver os revestimentos e lidar com coisas como etanol ou biodiesel.
Para resumir, um mecanismo é um software que geralmente não é encontrado isoladamente. Ele atua como força motriz para esse software, mas normalmente interage muito pouco, se é que o faz com o mundo exterior. Vários motores podem trabalhar juntos para produzir saídas complementares ou podem ser canalizados juntos, conforme necessário. Um mecanismo não faz diretamente as coisas relacionadas à experiência do usuário em um sentido estético, mas conduz essas experiências, motivando o fluxo de dados e respondendo o suficiente para permitir um bom desempenho do aplicativo.
noun / ˈenjən /
engines, plural
Uma máquina com partes móveis que converte energia em movimento
Uma coisa que é o agente ou instrumento de um processo específico
O número 1 é o equivalente semântico engine
no sentido de software que faz com que algo aconteça. O mecanismo de gráficos 3D aceita entradas e as converte em movimento na tela. Um mecanismo regex recebe entradas e as converte em uma saída diferente.
O número 2 é como usar a frase como mecanismo de mudança . Essa semântica também pode ser aplicada ao software.
Software engines
são mais do que estruturas e bibliotecas que fazem coisas passivamente. Os mecanismos de software agem por conta própria com base em entradas, não são passivos e geralmente têm o seu próprio run loop
processamento por vontade própria.
A resposta mais próxima até agora, na minha opinião, foi a que disse que é uma coisa de marketing.
Vamos tentar pensar de onde veio o uso da palavra neste contexto.
Certamente, os motores de automóveis ou a jato não são chamados assim, porque recebem informações e produzem alguma saída. Se fosse assim, não apenas as funções, mas muitas coisas na vida seriam motores.
Não é por coincidência, na minha opinião, que uma vaca definitivamente não é um motor, nem tecnicamente falando, nem de maneira sadia.
Os motores usam vários tipos de energia e a transformam em movimento (ou seja, um tipo especializado de energia).
Por que o usamos em software? Eu diria que o palpite mais realista é porque simplesmente parece legal. Por que chamamos alguns programadores de 'arquitetos'? Mesmo motivo, se você me perguntar.
Outra razão pode ser que os programadores geralmente gostam de usar metáforas para descrever partes de seu software, para que possam ser mais fáceis de entender (porque naturalmente não costumam ser).
Meu palpite é que é uma prática recomendada abusar de metáforas de forma que o domínio do aplicativo esteja cheio delas. Eu acho que poderia ser útil ao conversar com clientes ou pessoas que não sabem ou se preocupam com programação. Fora isso, fluxogramas e diagramas simples fazem o trabalho por mim.
Mecanismo é qualquer coisa que recebe alguma entrada, processa essa entrada e entrega algo como saída . Por essa definição, um mecanismo CMS é a parte que gera a resposta HTTP em tempo real com base na entrada. Um mecanismo de banco de dados é o que pega a consulta, desenha um plano de execução e o executa e retorna o resultado.
Tecnicamente falando, mesmo uma vaca é um tipo de motor. Ele pega a grama, processa e entrega leite.
Não esqueça que o termo mecanismo é mais usado em engenharia mecânica e faz exatamente o mesmo.
Outro aspecto de um mecanismo é ser o núcleo de um sistema. Por exemplo, o mecanismo de banco de dados é o núcleo de qualquer RDMS. No entanto, IDEs para conectar-se a esse mecanismo, enquanto obtém entrada e retorna resultado, não é considerado um mecanismo.
IMHO, um mecanismo é apenas outra palavra para subsistema, módulo ou biblioteca. IE - um ou mais componentes projetados de forma coesa para uma finalidade específica.
No meu trabalho, o termo parece significar "Um único arquivo de código no formato XEngine.cs
com várias classes dentro desse arquivo de código, todos contendo apenas métodos estáticos". Vomito um pouco por dentro toda vez que olho; pode muito bem ser um módulo VB6.
Eu pessoalmente não usaria o termo, é ambíguo e sem sentido (a menos que, suponho, você esteja escrevendo um software que simule um automóvel ou talvez um jogo de corrida) na maioria dos casos; é como as antigas classes "Manager" de outrora - o nome não diz nada além de "Isso faz muita coisa" e, geralmente, isso significa que é uma violação grave SOLID
.