"스크립트"와 "응용 프로그램"의 차이점은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/98268

  •  01-07-2019
  •  | 
  •  

문제

나는 다음과 같은 구별을 언급하고 있습니다. 이 답변:

...bash는 애플리케이션 작성용이 아니라 스크립팅용입니다.물론, 귀하의 애플리케이션에 일부 관리 스크립트가 있을 수 있지만 직접 작성하지는 마세요. critical-business-logic.sh 왜냐하면 그런 것에는 다른 언어가 더 나을 것이기 때문입니다.

여러 언어로 작업한 프로그래머로서 이것은 C, Java 및 기타 컴파일 언어 속물인 것 같습니다.나는 내 의견을 강화하거나 손을 흔드는 답변을 찾고 있지 않습니다.오히려 어떤 기술적 차이점이 언급되고 있는지 진심으로 알고 싶습니다.

(그리고 저는 일상 업무에서 C를 사용하기 때문에 단순히 방어적인 태도를 취하는 것이 아닙니다.)

도움이 되었습니까?

해결책

전통적으로 프로그램은 컴파일되고 스크립트가 해석되지만 이는 더 이상 중요하지 않습니다.정말로 원한다면 대부분의 스크립트의 컴파일된 버전을 생성할 수 있으며, Java와 같은 다른 '컴파일된' 언어는 실제로 (바이트 코드 수준에서) 해석됩니다.

보다 현대적인 정의는 프로그램은 고객(아마도 내부 프로그램)이 사용하기 위한 것이므로 문서와 지원을 포함해야 하는 반면, 스크립트는 주로 작성자의 사용을 위한 것입니다.

웹은 흥미로운 반대 사례입니다.우리 모두는 Google 검색 엔진으로 무언가를 찾는 것을 즐깁니다.참조하는 '데이터베이스'를 생성하는 데 사용되는 코드의 대부분은 작성자와 유지관리자만 사용합니다.그걸로 스크립트가 되나요?

다른 팁

응용 프로그램은 스크립트가 해당 과정을 실행하는 대화형으로 사용되는 경향이 있으며 일괄 작업에 적합합니다.구체적인 구분은 아닌 것 같아요.

일반적으로 "스크립트" 대 "프로그램"입니다.

나는 이러한 구별이 대부분 "컴파일된 언어 속물근성"이거나 래리 월(Larry Wall)의 말을 인용하고 반대편에서 "대본은 배우가 가지고 있는 것이고 프로그램은 청중에게 제공되는 것"이라는 점에 동의합니다.

이것은 흥미로운 주제이며, "스크립트"와 "애플리케이션"을 구별하는 데 있어 그다지 좋은 지침은 없다고 생각합니다.

차이점을 알아보기 위해 일부 Wikipedia 기사를 살펴보겠습니다.

스크립트 (위키피디아 -> 스크립팅 언어):

스크립팅 언어, 스크립트 언어 또는 확장 언어는 소프트웨어 응용 프로그램을 제어하는 ​​프로그래밍 언어입니다."스크립트"는 다른 응용 프로그램과 독립적으로 실행되는 "프로그램"과 별개로 취급되는 경우가 많습니다.동시에 이는 일반적으로 다른 언어로 작성되는 애플리케이션의 핵심 코드와 구별되며 최종 사용자가 액세스할 수 있으므로 애플리케이션의 동작을 사용자의 요구에 맞게 조정할 수 있습니다.

애플리케이션 (위키피디아 -> 응용 소프트웨어 -> 용어)

컴퓨터 과학에서 애플리케이션은 사람들이 특정 유형의 작업을 수행하는 데 도움을 주기 위해 설계된 컴퓨터 프로그램입니다.따라서 응용프로그램은 운영 체제(컴퓨터를 실행), 유틸리티(유지 관리 또는 일반 용도의 작업을 수행) 및 프로그래밍 언어(컴퓨터 프로그램을 만드는 데 사용)와 다릅니다.응용 프로그램은 설계된 작업에 따라 텍스트, 숫자, 그래픽 또는 이러한 요소의 조합을 조작할 수 있습니다.

위 항목을 읽으면 스크립트는 다른 소프트웨어에 의해 "호스팅"되지만 응용 프로그램은 그렇지 않다는 차이점이 있는 것 같습니다.쉘의 동작을 제어하는 ​​쉘 스크립트, 원하는 작업을 수행하기 위해 인터프리터의 동작을 제어하는 ​​펄 스크립트 등이 논쟁의 여지가 있다고 생각합니다.(이건 좀 무리일 수도 있다고 생각해서 전적으로 동의하지는 않을 수도 있습니다.)

제 생각에는 구어체의 구별이 다음과 같은 측면에서 이루어질 수 있다고 생각합니다. 규모 프로그램의.스크립트는 일반적으로 응용 프로그램에 비해 규모가 더 작습니다.

또한 목적상 스크립트는 일반적으로 작업을 수행 예를 들어 특정 소프트웨어에 대한 여러 릴리스 버전을 생성하는 스크립트를 작성하는 등의 작업이 필요합니다.반면에 응용프로그램은 다음을 대상으로 합니다. 기능 제공 이는 더욱 세련되고 최종 사용자를 대상으로 합니다.예를 들어 메모장이나 Firefox가 있습니다.

John Ousterhout(TCL 창시자)는 다음 사이트에 좋은 기사를 게재했습니다. http://www.tcl.tk/doc/scripting.html 여기서 그는 시스템 프로그래밍 언어(빌딩 블록 구현, 정확성 강조, 유형 안전성 강조)와 스크립팅 언어(빌딩 블록 결합, 변화하는 환경 및 요구 사항에 대한 응답 강조, 텍스트 표현 안팎으로의 쉬운 변환) 간의 구별을 제안합니다.해당 분류 시스템을 사용하면 프로그래머의 99%가 시스템 프로그래밍 언어보다 스크립팅 언어에 더 적합한 작업을 수행하고 있습니다.

스크립트는 시작, 실행 및 종료하는 일련의 명령인 경향이 있습니다.인간의 상호 작용이 전혀 또는 거의 필요하지 않은 경우가 많습니다.응용 프로그램은 "프로그램"입니다...종종 인간의 상호 작용이 필요하며 규모가 더 커지는 경향이 있습니다.

나에게 스크립트는 코드를 한 줄씩 해석하는 것을 의미합니다.스크립트를 열고 프로그래머가 읽을 수 있는 내용을 볼 수 있습니다.애플리케이션은 독립 실행형 컴파일 실행 파일을 의미합니다.

이는 단순히 의미론적 주장이거나 특정 프로그래밍 언어를 폄하하는 방법인 경우가 많습니다.내가 아는 한 "스크립트"는 일종의 프로그램이며 정확한 정의는 다소 모호하고 상황에 따라 다릅니다.

헐리우드의 "스크립트"가 배우가 실행해야 하는 선형 명령 순서인 것처럼, 많은 순차적 논리나 서브루틴을 사용하기보다는 기본적으로 선형적으로 실행되는 프로그램을 의미하기 위해 "스크립트"라는 용어를 사용할 수 있습니다.해당 프로그램을 구동할 목적으로 더 큰 프로그램 내에 내장된 언어로 작성된 프로그램을 의미하는 데 사용할 수 있습니다.예를 들어 AppleScript를 사용하여 이전 Mac OS에서 작업을 자동화하거나 내장된 TCL 인터페이스를 사용하여 어떤 방식으로든 자신을 노출하는 프로그램을 구동합니다.

그러나 이 모든 경우에 스크립트는 일종의 프로그램입니다.

"스크립팅 언어"라는 용어는 동적으로 해석된(때때로 컴파일된) 언어에 사용되었습니다. 일반적으로 이러한 언어에는 매우 높은 수준의 명령, 내장된 해시 및 임의 길이 목록 및 기타 높은 수준의 데이터 구조 등과 같은 많은 공통 기능이 있습니다.그러나 이러한 언어는 매우 크고 복잡하며 모듈식이며 잘 설계된 프로그램을 만들 수 있으므로 "스크립트"를 프로그램이 아닌 다른 것으로 생각하면 해당 용어가 혼란스러울 수 있습니다.

또한보십시오 Perl 프로그램입니까, 아니면 Perl 스크립트입니까? perlfaq1에서.

A script generally runs as part of a larger application inside a scripting engine eg. JavaScript -> Browser This is in contrast to both traditional static typed compiled languages and to dynamic languages, where the code is intended to form the main part of the application.

애플리케이션은 일반적인 문제 집합에 맞춰 구성된 스크립트 모음입니다.

스크립트는 매우 특정한 작업을 수행하기 위한 약간의 코드입니다.

IMO, 차이점은 사용되는 언어와 전혀 관련이 없습니다.Bash로 복잡한 애플리케이션을 작성하는 것이 가능하고, C++로 간단한 스크립트를 작성하는 것이 가능합니다.

우선, 분명히 말씀드리고 싶은 것은 스크립트는 프로그램이다.즉, 스크립트는 일련의 지침입니다.

프로그램:

컴파일될 명령어 세트를 프로그램이라고 합니다.

스크립트:

해석될 일련의 명령을 스크립트라고 합니다.

Perl을 예로 들면 Perl 스크립트나 Perl 애플리케이션을 작성할 수 있습니다.

스크립트는 단일 파일이나 단일 네임스페이스를 의미합니다.(예:업데이트파일.pl).

애플리케이션은 파일 모음이나 네임스페이스/클래스(예:많은 .pm 모듈 파일을 포함하는 OO가 디자인한 Perl 애플리케이션).

개인적으로는 분리가 실제 구현에서 한발 물러나는 것이라고 생각합니다.

내 추정으로는, 애플리케이션 계획되어 있습니다.여러 목표가 있고 여러 결과물이 있습니다.애플리케이션이 충족해야 하는 코딩에 앞서 디자인 타임에 따로 설정한 작업이 있습니다.

그러나 대본은 슈트처럼 함께 던져질 뿐이며 계획이 거의 포함되지 않습니다.

그러나 적절한 계획이 부족하다고 해서 스크립트로 다운그레이드되는 것은 아닙니다.아마도 이는 귀하의 애플리케이션을 잘못 계획된 스크립트의 잘못 구성된 모음으로 만들 수 있습니다.

또한 응용 프로그램에는 전체를 구성하는 집계된 스크립트가 포함될 수 있습니다.그러나 스크립트는 애플리케이션만 참조할 수 있습니다.

애플리케이션은 규모가 크고 사람들이 계속해서 사용하며 고객에게 판매될 수도 있습니다.

스크립트는 작게 시작하고 운이 좋으면 작게 유지되며 고객에게 거의 판매되지 않으며 자동으로 실행되거나 사용되지 않을 수 있습니다.

는 어때:

스크립트:

스크립트 개별 명령문이 작성될 수 있도록 하는 언어로 작성된 프로그래밍 명령문의 텍스트 파일(또는 텍스트 파일 모음)입니다. 기계 실행 파일로 해석됨 암호 바로 전에 각각 실행됨 그리고 이런 일이 일어날 의도로.

애플리케이션:

애플리케이션 인간 행위자에게 서비스를 제공하는 것이 주요 기능인 컴퓨터 프로그램입니다.

따라서 스크립트 언어로 작성된 스크립트 기반 프로그램은 이론적으로 스크립트가 실행되는 동안 텍스트 문이 변경될 수 있습니다(물론 큰 위험이 있음).컴파일된 프로그램의 유사한 상황은 메모리의 비트를 뒤집는 것입니다.

받는 사람이 있나요?:)

@Jeff의 답변이 좋습니다.내가 가장 좋아하는 설명은

많은 (대부분의?) 스크립팅 언어가 해석되며, 컴파일 된 언어는 스크립팅 언어로 간주되지만 컴파일 된 Vs의 문제는 거의 없습니다.해석 된 것은 "스크립팅"Vs의 문제와 느슨하게 연결되어 있습니다."심각한" 언어.

여기서 많은 문제는 "스크립팅"이 매우 모호한 지정이라는 것입니다. 이는 "본격적인 프로그램"(또는 응용 프로그램)을 작성하는 것과는 달리 스크립트를 작성하기에 편리한 언어를 의미합니다.그러나 복잡한 스크립트를 간단한 응용 프로그램과 어떻게 구별합니까?본질적으로 대답할 수 없는 질문입니다.일반적으로 스크립트는 사용자 정의 순서로 일부 데이터 세트에 적용되는 일련의 명령입니다 ...그러나 Photoshop에 적용하기 위해 그 설명을 확장 할 수 있습니다. 이는 분명히 주요 응용 프로그램입니다.스크립트는 일반적으로 응용 프로그램보다 작고, 잘 정의 된 작업을 수행하며 사용하기에 "간단한"일이며 일반적으로 분명한 일련의 하위 운영으로 분해 될 수 있지만 이러한 모든 것들은 주관적입니다.

에서 참조 여기.

코드가 컴파일되든 해석되든 전혀 상관없다고 생각합니다.

진정한 차이점은 코드의 핵심 논리에 있습니다.

  • 코드가 시스템의 다른 프로그램에서 구현되지 않은 새로운 기능을 만드는 경우 이는 프로그램입니다.스크립트로 조작할 수도 있습니다.

  • 코드가 주로 다른 프로그램의 작업에 의해 조작되고 전체 결과가 주로 조작된 프로그램의 작업 결과인 경우 이는 스크립트입니다.말 그대로 일부 프로그램에 대한 작업 스크립트입니다.

실제로 스크립트(또는 스크립팅 언어)와 응용 프로그램의 차이점은 스크립트를 기계어로 컴파일할 필요가 없다는 것입니다.인터프리터를 사용하여 스크립트 소스를 실행합니다.애플리케이션은 독립 실행형 애플리케이션으로 실행할 수 있도록 소스를 기계어 코드로 컴파일합니다.

나는 스크립트가 일반적으로 일반 텍스트로 작성된 명령 또는 지침 세트 그것은 호스팅 애플리케이션에 의해 실행됨 (브라우저, 명령 해석기 또는 셸,...).

실제로 실행될 때 어떤 방식으로든 강력하지 않거나 컴파일되지 않았다는 의미는 아닙니다.그러나 스크립트는 그 자체로는 아무것도 할 수 없으며 단지 일반 텍스트일 뿐입니다.
본질적으로 프로그램이나 응용 프로그램을 구축하기 위해 결합해야 하는 조각일 수 있지만, 확장되고 완전히 개발된 스크립트 또는 스크립트 세트는 호스트에서 실행될 때 소스 파일 묶음처럼 프로그램이나 응용 프로그램으로 간주될 수 있습니다. 일단 컴파일되면 애플리케이션이 될 수 있습니다.

스크립팅 언어에는 표준 라이브러리나 플랫폼이 없습니다.작고 가벼우며 더 큰 애플리케이션에 내장되도록 설계되었습니다.Bash와 Javascript는 기능을 위해 절대적으로 다른 프로그램에 의존하기 때문에 스크립팅 언어의 훌륭한 예입니다.

이 정의를 사용하면 스크립트는 더 큰 응용 프로그램(제품군)을 구동하도록 설계된 코드입니다.Javascript는 Firefox에서 창을 열거나 DOM을 조작하기 위해 호출할 수 있습니다.Bash 스크립트는 기존 프로그램이나 기타 스크립트를 실행하고 이를 파이프로 연결합니다.


또한 스크립팅 언어를 사용하지 않는 이유를 묻습니다.

스크립팅 언어에 대한 단위 테스트 도구도 있습니까?이는 완전히 누락된 "실제" 응용 프로그램을 위한 매우 중요한 도구인 것 같습니다.그리고 스크립팅 언어에 대한 실제 라이브러리 바인딩은 거의 없습니다.

대부분의 경우 스크립트는 어쨌든 Python이나 Ruby와 같은 실제적이고 가벼운 언어로 대체될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top