O que torna um software um mecanismo? [fechadas]


39

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?


62
O departamento de marketing.
Oded

2
@Oded: o termo 'engine' é comumente usado pelos próprios programadores. Tente encontrar alternativas e você verá o porquê.
MaR 16/09

2
um motor é o que faz as rodas Eu não quero ser reinventando sua vez
Flexo

@Flexo, então - uma biblioteca?
Vorac 9/09/13

Respostas:


33

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.


9
Então, um motorista é a ferramenta que controla o motor e trava o shell?
MikeJ-UK

Eu realmente gostei e me beneficiei da sua resposta, mas acho que a pergunta era mais sobre como agora esse código / software deve ser chamado de biblioteca, API ou mecanismo? se você pode adicionar explicação para isso também será resposta perfeita
Ali

Bibliotecas e APIs operam em um nível diferente do que um mecanismo. É melhor mantê-lo focado no termo em questão do que divergir em um mar potencialmente interminável de variações e nomes.
World Engineer

6

A definição de mecanismo é

noun / ˈenjən / 
engines, plural

  1. Uma máquina com partes móveis que converte energia em movimento

  2. Uma coisa que é o agente ou instrumento de um processo específico

O número 1 é o equivalente semântico engineno 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 enginessã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 loopprocessamento por vontade própria.


3

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.


1

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.


5
+1 no "motor do leite", eu estava comendo iogurte e quase engasguei quando li isso. ;)
FrustratedWithFormsDesigner

5
Sua definição tornaria todas as funções um mecanismo.
back2dos

Nem toda função é função de suas entradas.
Michael Burge

Eu tenho que concordar. Sua explicação parece um pouco embaçada e arbitrária.
Yam Marcovic

1
Um programador também é um mecanismo. Leva café na entrada e produz código na saída.
SF.

1

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.


2
downvoters: por favor, elabore. Que um mecanismo (por exemplo, o Quake Engine) seja um subsistema, um módulo ou uma biblioteca não é obviamente falso.
keppla

3
Enquanto o mecanismo é implementado normalmente como um subsistema, o termo é comumente usado apenas para os subsistemas "ocultos". Eles não são usados ​​como sinônimos.
MaR

A premissa dessa pergunta é que um mecanismo não é apenas um subsistema, é um tipo específico de subsistema.
Will Sheppard

0

Um mecanismo é basicamente um software que pode ser estendido para criar algo.

Por exemplo, nos jogos, você ouvirá muito sobre o mecanismo de jogos 'algo'. Isso significa que um software específico foi modificado e estendido para criar um jogo totalmente exclusivo.


0

No meu trabalho, o termo parece significar "Um único arquivo de código no formato XEngine.cscom 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.