PowerShell 코드의 작동 방식

완료됨

코드의 작동 방법을 이해할 수 있도록 프로그램과 프로그래밍 언어란 무엇인지, 이러한 언어가 어떻게 컴퓨터에 명령을 전달하는지를 살펴보겠습니다.

프로그램이란 무엇일까요?

프로그램은 컴퓨팅 작업을 수행하는 일련의 명령입니다. 명령은 컴퓨터가 이해할 수 있는 형식으로 컴파일되어 ‘사용자’에 의해 실행됩니다. ‘사용자’는 사람일 수도, 다른 프로그램일 수도 있습니다. 컴퓨터는 더 이상 실행할 줄이 없을 때까지 또는 프로그램을 중지하라는 명시적인 명령이 나올 때까지 명령을 한 번에 한 줄씩 순서대로 실행합니다.

아무리 기본적인 프로그램이라도 다음과 같은 작업 중 하나 이상을 수행합니다.

  • 원본에서 입력을 허용합니다. 입력에는 다음 정보가 포함됩니다.
    • 키보드에 입력하거나 인터페이스에서 컨트롤을 선택하는 사용자가 제공하는 정보
    • 파일에서 검색된 정보
    • 다른 프로그램이나 네트워크 연결에서 호출된 정보
  • 정보 처리에는 다음이 포함됩니다.
    • 로직 실행
    • 수학적 계산 수행
    • 데이터 입력을 조작하여 새로운 데이터 생성
  • 결과 출력에는 다음과 같은 정보가 포함됩니다.
    • 화면으로 사용자에게 표시되는 정보
    • 파일에 저장된 정보
    • 다른 프로그램으로 전송된 정보

프로그램은 다양한 용도에 맞게 다양한 형식을 가질 수 있습니다. 프로그램에는 다음이 포함될 수 있습니다.

  • 독립 실행형 애플리케이션(예: 게임, 텍스트 편집기, 대금 청구 소프트웨어 등)
  • 스크립트(예: 다른 프로그램 내부에서 실행되어 특정 기능을 자동화하는 고급 매크로)
  • 라이브 코드, 방정식 및 데이터 시각화의 조합.

이 모듈의 예를 포함하여 일부 프로그램에는 몇 줄의 코드만 필요합니다. 반면에 운영 체제처럼 복잡한 프로그램에는 수만 개, 때로는 수백만 개의 코드 줄이 필요합니다.

프로그래밍 언어란 무엇일까요?

프로그래밍 언어는 컴퓨터에 내리는 명령을 사람이 읽고 이해할 수 있는 방식으로 작성할 수 있도록 해 줍니다. 컴퓨터는 사람이 일반적으로 언어를 이해하는 것과 다른 방식으로 언어를 이해합니다. 프로그램 작성자는 프로그래밍 언어를 통해 구체적이고 덜 복잡한 방식으로 컴퓨터와 상호 작용하여 명령을 내릴 수 있습니다. 프로그래밍 언어로 작성하는 명령은 코드라고 합니다.

각각 다른 구문을 갖는 많은 프로그래밍 언어가 있습니다. 그러나 첫 번째 프로그래밍 언어를 학습한 후에는 학습할 각각의 새로운 언어에 그 개념의 상당 부분을 적용할 수 있습니다.

구문이란?

프로그래밍 언어는 음성 언어나 글로 쓰인 언어와 마찬가지로 저마다의 문법적 규칙이 있는데 이를 구문이라고 합니다. 모든 프로그래밍 언어의 구문에는 해당 언어에 특정적일 수 있는 키워드, 연산자 또는 다른 유형의 규칙이 포함됩니다.

키워드는 프로그래밍 언어에서 예약된 특정한 단어들로 특별한 의미가 있고 특별하게 작동합니다. PowerShell의 키워드는 대부분 영어처럼 이해할 수 있습니다. 예를 들어 if, while, return은(는) PowerShell에서 및 다양한 언어로 코드를 작성할 때 사용할 수 있는 키워드입니다.

연산자는 괄호(())나 등호(=) 같은 특수 문자입니다. 이러한 문자들은 컴퓨터에 특정 수학 연산, 관계형 연산 또는 논리 연산을 수행하여 결과를 생성하라고 지시합니다.

앞의 단원에서 Cloud Shell 터미널에 코드를 입력할 때 텍스트와 기호 색의 작은 변화를 확인할 수 있습니다. 이와 같은 색 구분은 구문 강조 표시라고 합니다. 코드를 읽을 때 구문 강조 표시를 통해 모든 실수를 확인할 수 있습니다. 이 기능은 Visual Studio Code 같은 많은 코드 편집기에서 사용할 수 있으며 더 강력합니다.

PowerShell에서 코드 컴파일

컴퓨터는 프로그램을 우리가 작성한 방식으로 읽지 못합니다. 프로그래밍 언어는 컴퓨터가 이해할 수 있는 형식으로 번역되어야 합니다. 프로그래밍 언어는 다양한 방식으로 프로그램을 번역합니다.

상당수의 프로그래밍 언어는 개별적 단계로 코드를 컴파일합니다. 코드를 작성하여 컴파일러라는 특수 프로그램을 통해 실행하면 컴파일러가 실행할 실행 파일 패키지를 생성합니다.

Python과 같은 다른 언어에 있는 인터프리터는 컴퓨터를 위해 코드를 해석하며 이와 동시에 코드를 한 번에 한 줄씩 실행합니다.

PowerShell은 컴파일되고 해석된 접근 방식과 약간 다르거나 비슷한 방법 모두를 통해 작동합니다.

PowerShell은 먼저 메모리에서 AST(추상 구문 트리)로 컴파일된 후에 실행됩니다. 하지만 PowerShell을 사용하기 위해 AST에 대해 자세히 알아 두어야 할 필요는 없습니다. 컴퓨터가 중요한 문제를 확인할 때 먼저 AST에서 코드를 검사한다는 사실만 알아 두면 됩니다. 그런 다음 문제가 없다고 판단되면 컴퓨터가 컴파일된 실행 가능한 프로그램 없이 프로그램을 실행합니다. 이 접근 방식은 올바르게 실행되지 않으면 구문 오류로 인해 변경 및 중지될 수도 있는 코드를 올바르게 실행되도록 한 후 컴퓨터에 실행하기 때문에 유용합니다. 이와 대조적으로 Python처럼 해석된 언어는 구문에서 잘못된 부분이 확인될 때까지 코드를 실행합니다.

PowerShell 살펴보기

PowerShell의 중요한 기능은 PowerShell 명령 관련 정보에 빠르게 액세스할 수 있도록 하는 기본 제공 도움말 시스템입니다. 작성 중에 문제가 발생하면 Get-Help 명령을 사용하여 명령 또는 PowerShell 개념에 대한 도움말을 조회할 수 있습니다. 예를 들어 Write-Output 명령에 대한 자세한 정보를 모두 살펴보려면 다음 명령을 입력하고 실행하면 됩니다.

Get-Help -Name 'Write-Output' -Full

Get-Help는 실행할 명령이고 Write-Output은 도움말을 찾아볼 명령의 이름입니다. -Full 스위치는 명령에 대한 설명, 매개 변수 정보, 예제 등을 포함하여 지정된 명령에 대한 모든 정보를 가져오라고 PowerShell에 지시합니다. 이 도움말 정보는 Azure Cloud Shell 터미널을 포함한 모든 PowerShell 터미널에서 액세스할 수 있습니다.

PowerShell에서 제공하는 모든 명령은 Get-Command *를 사용하여 전체 목록을 볼 수 있습니다. 별표(*)는 PowerShell의 와일드카드 문자입니다. 이 문자를 사용하면 패턴을 매칭하여 정보를 더 동적으로 찾을 수 있습니다. 이 경우에는 사용 가능한 모든 명령을 *로 필터링합니다. 예를 들어 User이(가) 포함된 모든 명령을 가져오려면 Get-Command *User*을(를) 실행합니다.

PowerShell의 또 다른 장점은 통합된 셸이 제공된다는 것입니다. 셸을 사용하면 무언가를 테스트하고 싶을 때마다 매번 코드를 실행하지 않고도 코드를 테스트하고 출력과 상호 작용할 수 있습니다. 코드가 예상대로 작동할 수 있도록 터미널에 바로 입력할 수 있습니다.