PowerShell은 어떤 언어입니까?
저는 최근에 PowerShell을 꽤 많이 사용하고 있습니다(대부분 시스템 관리자입니다). 어떤 종류의 언어인지 궁금했습니다.저는 그것이 통역된 언어라고 생각하지만, 저는 일반적으로 언어를 설명하는 다른 이름들을 많이 들었습니다.강한 타입과 약한 타입, 동적인 타입, 정적.PowerShell은 무엇에 속합니까?
몇 가지 설명을 먼저 하겠습니다.
두 가지 범주:컴파일 및 해석은 소스 코드(또는 스크립트)를 작업으로 변환하는 방법을 나타냅니다.
인터프리터 언어에서는 명령이 인터프리터에 의해 동작으로 직접 해석됩니다.
컴파일된 언어에서 소스 코드는 먼저 기계 언어(또는 자바의 바이트 코드 또는 와 같은 중간 언어)로 번역(또는 컴파일)됩니다.실행 시 동작으로 전환되는 NET의 어셈블리).컴파일된 프로그램의 경우 컴파일된 코드를 인터프리터 언어의 소스 코드로 보고 CPU를 인터프리터(또는 Java의 경우 JVM)로 생각할 수 있습니다.의 NET 런타임.NET).
정적 및 동적 유형 언어의 개념은 해당 언어의 변수를 나타냅니다.
정적으로 입력된 언어(예: C 패밀리 또는 Java)는 소스에 있는 변수의 유형을 정의하고 해당 변수의 사용은 해당 유형에서 파생됩니다(일반적으로 코더에 의해).
동적으로 입력된 언어(예: 구성표 또는 VBScript)는 변수 유형을 사용에 따라 정의합니다.경우에 따라 코더는 단순히 변수의 유형을 정의할 수 없으며(예: Scheme 또는 Bash 스크립트), 다른 경우에는 이 유형을 선택적으로 정의할 수 있습니다(예: VBScript).
세 번째 개념 쌍은 강력한 언어 대 약한 유형 언어입니다.이러한 개념은 언어의 변수 유형(가장 일반적으로 캐스트와 관련됨) 간의 관계에 적용되는 규칙을 나타냅니다.타이핑 시스템 "강도"에 대한 질문은 다른 질문만큼 불리언적이지 않기 때문에 대부분의 언어는 강세 시스템과 주형 시스템 사이에 있습니다.
느슨하게(약한) 유형의 언어에서 컴파일러와 런타임은 한 유형의 변수를 다른 유형의 변수인 것처럼 처리할 수 있게 하며, 이러한 상황의 동작은 일반적으로 언어별(경우에 따라 구현별도 있음)입니다.예를 들어, 숫자를 문자열과 함께 추가할 수 있으며 이는 유효한 코드로 간주됩니다.
강력한 유형의 시스템을 가진 언어에서 컴파일러와 런타임은 사용자에게 다른 유형의 변수 간에 작업을 수행하기 위해 특정 작업을 수행할 것을 요구합니다.가장 일반적인 예는 주조(플로트에 잉트를 주조하는 것과 같은)입니다.
맨 아래쪽
PowerShell을 정의하면 해석된 언어이지만 에 대해서는 회색 영역입니다.NET. PowerShell에서 변수를 정의하는 것은 유형을 정의하는 것을 포함하지 않으므로 동적으로 입력되는 언어임이 분명하며 변수를 결합할 수 있습니다(@halr9000 참고). 이는 입력 시스템이 느슨하다는 것을 나타냅니다.
문장에서, 저는 그것이 약한 유형의 체계를 가진 해석된 동적 유형의 언어라고 말할 수 있습니다.
PowerShell은 컴파일된 언어가 아닙니다.IL을 직접 생산하지도 않습니다.버전 1과 버전 2는 완전히 해석되었습니다. PS V3의 새로운 버전은 속도와 최적화를 위해 실제로 백그라운드에서 IL로 표현식을 생성하고 캐시하지만 컴파일된 DLL이나 일반 CLR 유형처럼 다른 언어가 호출할 수 있는 것은 노출하지 않습니다(다른 언어는 PowerShell 엔진을 호스팅할 수 있지만,스크립트를 실행합니다.)
DOTNET을 DOTNET 객체와 인스턴스화하고 상호 작용하여 "DOTNET 언어"처럼 보이게 하는 DOTNET 에코시스템에 우연히 존재하는 해석 언어처럼 생각해 보십시오.PowerShell에는 자체 ETS(Extended Type System)가 있어 더욱 역동적입니다.원하는 속성으로 즉시 객체를 만들거나 기존의 닷넷 객체를 가져와 객체에 추가할 수 있습니다.
PowerShell은 동적 언어입니다.동적 범위 지정 기능을 사용합니다.파이프라인 중심 언어로, 풍부한 개체를 파이프라인을 통해 전달합니다(UNIX의 이진/텍스트 파이프라인과는 대조적).
PowerShell은 철학과 구현에서 명령어(동사와 명사) 중심의 언어이며, RICH Object 언어이지만 객체 지향적이라고는 말할 수 없습니다. 객체와 상호 작용하고 생성할 수 있지만 목표는 작업 기반 명령어를 생성하는 것입니다.
PowerShell은 다양한 환경에서 사용됩니다.이는 한 줄 한 줄 REP 명령줄 인터프리터이지만 다른 응용 프로그램에 포함될 수 있는 전체 스크립트 엔진이기도 합니다.
PowerShell은 변수의 어휘적 범위 지정이 아닌 동적 범위 지정 기능을 제공합니다.
PowerShell은 Scriptblock이 강력한 Lamdas인 "기능적" 기능을 많이 갖추고 있으며, V2 이후로는 완전히 폐쇄되었습니다.람다는 종종 어려운 개념으로 여겨지지만 말입니다.파워셸에서 잘 흐릅니다. 프로그래밍에 어려움을 겪는 많은 사람들이 사용합니다.사실 PowerShell에서 모든 스크립트, 기능 또는 고급 기능은 실제로 람다입니다.PowerSHELL의 람다는 동적 범위 지정과 파이프라인에서 실행되기 때문에 다른 람다와 다릅니다.다음은 기본 제공 cmdlet을 사용하는 간단한 예입니다.
get-process | where { $_.MainWindowTitle -like '*stack*' } | select processname
여기서 람다를 cmdlet에 전달하고, 여기서 파이프라인을 통해 들어오는 각 항목에 대해 평가되고, 그 결과는 파이프라인으로 되돌아가 select 명령으로 처리됩니다.
PowerShell(V2 이후)은 완전한 원격 스택을 갖춘 분산 언어로, 한 컴퓨터에서 여러 컴퓨터로 동시에 연결하고, 롤링으로 명령을 실행하며, 각 컴퓨터에서 발생하는 많은 스트림(결과, 오류, 경고 등)에 대한 결과를 처리할 수 있습니다.
그렇다면 PowerShell은 어떤 언어일까요?
주로 시스템 관리 및 자동화를 대상으로 하는 명령 중심 언어이지만, 닷넷 생태계에 살고 있는 풍부한 객체 파이프라인 기반 언어이기도 합니다.동적으로 범위가 지정된 동적인 언어이며, 기능적인 언어 특징과 기능의 조합으로, 저는 그것을 꽤 새로운 혁신적인 언어로 만든다고 믿습니다.
안타깝게도 PowerShell에는 많은 Gotchas와 문제가 있으며, 초보자에서 초등학생으로 학습 곡선이 가파르지는 않지만 중간 단계로 진입하는 것은 매우 가파릅니다.
PowerShell은 동적으로 입력되는 스크립트 언어를 사용합니다.복잡한 작업을 구현할 수 있으며 변수, 함수, 루프, 분기, 구조화된 오류/예외 처리를 지원하며 와 통합됩니다.NET. 동적으로 입력된 언어는 컴파일 시간이 아닌 런타임에 형식 검사가 수행되고 변수가 형식이 없지만 모든 형식의 값을 참조할 수 있는 경우입니다.동적으로 입력되는 언어의 예로는 PHP, JavaScript, MATLAB, Ruby, Python 등이 있습니다.
PowerShell을 정의하는 데 스크립트 언어라는 용어가 사용되더라도 유추/추측 언어가 있을 수 있습니다(출처: http://msdn.microsoft.com/en-us/library/dd901838%28v=vs.85%29.aspx) :C#. 이유: MSDN에서 제공하는 cmdlet의 PowerShell 예제에는 탭 C# 표기가 선행됩니다.적합:C#는 다음과 같은 해석 언어입니다.NET 런타임은 처음 실행될 때 CIL(Common Intermediate Language)을 컴파일합니다.또한 C#은 OOP(객체 지향 프로그래밍) 언어이며 PowerShell은 Active Directory 내의 개체와 상호 작용합니다.http 링크 blogs.technet.com/b/stefan_gossner/archive/2010/05/07/using-csharp-c-code-in-powershell-scripts.aspx 도 참조하십시오.그렇다고 PowerShell 내에서 C#으로만 제한되는 것은 아닙니다. http://msdn.microsoft.com/en-us/library/system.management.automation.powershell%28v=vs.85%29.aspx 을 참조하십시오.
언급URL : https://stackoverflow.com/questions/11880447/what-type-of-language-is-powershell
'it-source' 카테고리의 다른 글
다른 모든 항목이 로드될 때까지 jquery 스크립트 지연 (0) | 2023.08.29 |
---|---|
볼 데이터를 보내는 동안 JsonMappingException을 가져오는 중 (0) | 2023.08.29 |
전용 생성자가 있는 Java Springbean (0) | 2023.08.29 |
단추를 클릭하여 표 행의 내용 가져오기 (0) | 2023.08.29 |
도커 컨테이너로 호스트 포트 전달 (0) | 2023.08.29 |