소프트웨어를 엔진으로 만드는 것은 무엇입니까? [닫은]


39

디스크립터 'Engine'은 그래픽 엔진, RegEx 엔진, AI 엔진 등과 같이 많이 사용되지만 실제로 소프트웨어 조각을 엔진으로 만드는 것은 무엇입니까? 디자인, 입력 / 출력, 목적, 크기?


62
마케팅 부서
Oded

2
@Oded : '엔진'이라는 용어는 일반적으로 프로그래머 스스로 사용합니다. 대안을 찾아 보면 그 이유를 알 수 있습니다.
MaR

2
엔진은 바퀴를 회전시키고 싶지 않은 바퀴입니다
Flexo

@Flexo, 그래서 도서관?
Vorac

답변:


33

말하자면 엔진은 "후드"아래에있는 것입니다. 최종 사용자에게 보이지 않거나 최소한 매우 드물게 보입니다. 예를 들어 그래픽 엔진은 모든 렌더링 계산을 수행하지만 이러한 변경 사항을 모델링 할 실제 환경으로 전달합니다. 입력 : 수학. 출력 : 예쁜 색상. 엔진은 또한 더 높은 수준의 인터페이스와는 매우 다른 작동 변수를 가질 수 있습니다. 예를 들어, 앞의 예제에서는 원시 숫자 데이터를 사용하여 무언가가 그림자인지 질감인지에 대한 걱정없이 그래픽을 조작하고 있습니다. 모든 것은 해당 엔진에서 수행 할 방정식과 행렬 연산으로 추상화됩니다. 엔진을 주어진 시스템의 "커널"로 생각하고 나머지는 "쉘"과 비슷할 것입니다.

실제 세계인 CS101 유추를 사용하면 엔진은 자동차 엔진과 같습니다. 공기와 가스의 두 가지 입력이 필요합니다. 그런 다음 챔버로 전달하여 전기를 사용하여 세계에서 가장 작은 아크 용접을 생성합니다. 그런 다음 물건이 폭발합니다. 이로 인해 피스톤을 구동하는 2 개의 출력, 배기 및 압력 파가 생성됩니다. 나머지는 다양한 구동축 등에 의해 휠 운동으로 전달됩니다. 엔진은 엔진이고 자동차 자체는 쉘입니다. 자동차 엔진을 다른 목적으로 사용할 수 있습니다. 예를 들어 발전기를 운전하여 곡물을 갈아서 갈 수 있습니다. 엔진에 코팅이 있거나 에탄올이나 바이오 디젤과 같은 것들을 처리하기 위해 다른 입력을 사용할 수 있습니다.

요약하면 엔진은 일반적으로 격리되어 있지 않은 소프트웨어입니다. 그것은 소프트웨어의 원동력으로 작용하지만 일반적으로 외부 세계와는 거의 상호 작용하지 않습니다. 여러 엔진이 함께 작동하여 무료 출력을 생성하거나 필요에 따라 함께 파이프 라인 될 수 있습니다. 엔진은 미적 의미에서 사용자 경험과 관련된 일을 직접 수행하지 않지만, 데이터 흐름을 동기를 부여하고 우수한 응용 프로그램 성능을 제공 할 수있을만큼 충분히 반응하여 이러한 경험을 덜 유도합니다.


9
드라이버는 엔진을 제어하고 쉘을 충돌시키는 도구입니까?
MikeJ-UK

나는 당신의 대답에서 정말로 좋아하고 혜택을 받았지만 질문은이 코드 / 소프트웨어 조각을 라이브러리 또는 API 또는 엔진이라고하는 방법에 관한 것이 더 중요하다고 생각합니다. 이에 대한 설명을 추가 할 수 있다면 완벽한 답변이 될 것입니다
Ali

라이브러리와 API는 엔진과 다른 수준에서 작동합니다. 끝없는 변형과 이름의 바다로 분기하는 것보다 당면한 용어에 집중하는 것이 좋습니다.
세계 엔지니어

6

엔진정의

명사 / ˈenjən / 
엔진, 복수

  1. 동력을 운동으로 변환시키는 움직이는 부품이있는 기계

  2. 특정 프로세스의 에이전트 또는 도구 인 것

# 1은 engine소프트웨어적인 의미에서 의미가 있는 것으로서 무언가 발생하게합니다. 3D Graphics Engine은 입력을 받아 화면에서 동작으로 변환합니다. 정규식 엔진은 입력을 받아서 다른 출력으로 변환합니다.

# 2는 문장 엔진을 사용하는 것과 같습니다 . 이 의미는 소프트웨어에도 적용될 수 있습니다.

소프트웨어 engines는 수동적으로 작업을 수행하는 프레임 워크 및 라이브러리 그 이상입니다. 소프트웨어 엔진은 입력을 기반으로 자체적으로 작동하며 수동적이지 않으며 일반적 run loop으로 자신의 의지에 따라 처리 할 자체가 있습니다.


3

지금까지 가장 가까운 대답은 그것이 마케팅이라고 대답 한 것입니다.

이 문맥에서 단어의 사용이 어디서 왔는지 생각해 봅시다.

확실히 자동차 또는 제트 엔진은 입력을 받고 일부 출력을 생성하기 때문에 그렇게 부르지 않습니다. 그렇다면 기능뿐 아니라 인생의 많은 것들이 엔진이 될 것입니다.

우연히도, 암소는 기술적으로 말하지 않고 제정신이 아닌 엔진이 아니라는 것이 가장 확실합니다.

엔진은 다양한 유형의 에너지를 사용하고이를 운동으로 전환합니다 (예 : 특수 유형의 에너지).

소프트웨어에서 왜 사용합니까? 가장 현실적인 추측은 단순히 시원하게 들리기 때문입니다. 왜 우리는 일부 프로그래머를 '건축가'라고 부릅니까? 당신이 나에게 묻는다면 같은 이유.

또 다른 이유는 프로그래머가 일반적으로 은유를 사용하여 소프트웨어의 일부를 설명하기를 원하기 때문에 (자연스럽게는 그렇지 않기 때문에) 파악하기가 더 쉬울 수 있습니다.

필자의 직감은 응용 프로그램 도메인이 가득 찬 방식으로 은유를 악용하는 것은 나쁜 습관이라는 것입니다. 나는 클라이언트, 또는 프로그래밍을 모르거나 신경 쓰지 않는 사람들과 대화 할 때 유용 할 수 있다고 생각합니다. 그 외에 간단한 흐름도와 다이어그램이 저에게 도움이됩니다.


1

엔진은 입력을 받고 입력을 처리하며 출력으로 무언가를 전달하는 모든 것 입니다. 이 정의에 따르면 CMS 엔진은 입력을 기반으로 즉석에서 HTTP 응답을 생성하는 부분입니다. 데이터베이스 엔진은 쿼리를 가져 와서 실행 계획을 그리고 실행하여 결과를 반환하는 것입니다.

기술적으로 말하면 조차도 일종의 엔진입니다. 잔디를 잡고 가공하며 우유를 공급합니다.

엔진이라는 용어는 기계 공학에서 더 많이 사용되며 정확하게 동일하다는 것을 잊지 마십시오.

엔진의 또 다른 측면은 시스템의 핵심입니다. 예를 들어 데이터베이스 엔진은 모든 RDMS의 핵심입니다. 그러나 입력 및 리턴 결과를 가져 오는 동안 해당 엔진에 연결하는 IDE는 엔진으로 간주되지 않습니다.


5
"우유 엔진"에 대해 +1, 나는 요구르트를 먹고 있었고 그것을 읽을 때 거의 질식했습니다. ;)
FrustratedWithFormsDesigner

5
당신의 정의는 모든 기능을 엔진으로 만들 것입니다.
back2dos

모든 기능이 입력 기능인 것은 아닙니다.
Michael Burge

동의해야합니다. 설명이 약간 흐릿하고 임의적으로 들립니다.
얌 마르코비치

1
프로그래머도 엔진입니다. 입력시 커피를 마시고 출력시 코드를 생성합니다.
SF.

1

IMHO, 엔진은 서브 시스템, 모듈 또는 라이브러리의 또 다른 단어입니다. IE-특정 목적을 위해 응집력있게 설계된 하나 이상의 구성 요소.


2
downvoters : 정교하게 작성하십시오. 엔진 (예 : Quake Engine)이 서브 시스템, 모듈 또는 라이브러리라는 것은 명백한 사실이 아닙니다.
keppla

3
엔진은 일반적으로 하위 시스템으로 구현되지만이 용어는 일반적으로 "후드"하위 시스템에만 사용됩니다. 동의어로 사용되지 않습니다.
MaR September

이 질문의 전제는 엔진이되지 않는 것입니다 단지 는 서브 시스템의 특정 유형의, 서브 시스템.
윌 셰퍼드

0

엔진은 기본적으로 무언가를 만들기 위해 확장 할 수있는 소프트웨어입니다.

예를 들어, 게임에서 '무언가'게임 엔진에 대해 많이들을 수 있습니다. 이것은 특정 소프트웨어가 완전히 독특한 게임을 만들기 위해 수정되고 확장되었음을 의미합니다.


0

내 직업에서이 용어는 " XEngine.cs해당 코드 파일 내에 여러 클래스 가있는 형식의 단일 코드 파일 ( 정적 메서드 만 포함) "을 의미하는 것 같습니다 . 나는 그것을 볼 때마다 조금씩 던져 버립니다. VB6 모듈 일 수도 있습니다.

필자는 개인적으로이 용어를 사용하지 않을 것입니다. 대부분의 경우 모호하고 의미가 없습니다 (자동차 나 레이싱 게임을 시뮬레이션하는 소프트웨어를 작성하지 않는 한). 그것은 예전의 "관리자"클래스와 같습니다. 이름은 "이것은 많은 일을합니다"외에는 아무 것도 말해주지 않으며, 이는 일반적으로의 중대한 위반임을 의미합니다 SOLID.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.