| English | 의미 |
|---|---|
| paradigm/ˈpærədaɪm/ | 패러다임 |
| low-level/ləʊ ˈlevl/ | 저수준 |
| imperative/ɪmˈperətɪv/ | 명령형 |
| declarative/dɪˈklærətɪv/ | 선언형 |
| functional/ˈfʌŋkʃənl/ | 함수형 |
| pure functions/pjʊə ˈfʌŋkʃnz/ | 순수 함수 |
| logic/ˈlɒdʒɪk/ | 논리형 |
같은 프로그램을 네 가지 방식으로 작성함
- 영국에 거주하는 모든 고객을 요청하면 C 프로그래머는 배열을 순회하는 루프를 작성합니다. Haskell 프로그래머는 필터를 작성합니다. Prolog 프로그래머는 규칙을 정의하고 질문을 던집니다. SQL 사용자는
SELECT * FROM Customer WHERE Country = 'UK'를 작성합니다. - 첫 번째만 어떻게 하는지를 말합니다. 나머지는 원하는 결과를 말하고 '어떻게'를 기계에 맡겨, 작업을 재배열하거나 인덱스를 사용하거나 여덟 개의 코어로 실행할 수 있게 합니다.
- 일반적으로 어느 쪽이 더 나쁘거나 나은 것은 아닙니다. 다른 점은 언어가 당신에게서 어떤 결정을 빼앗느냐이며, 이것이 바로 패러다임의 의미입니다.
- 이 수업에서 다루는 패러다임은 커리큘럼에서 언급하는 저수준, 명령형 및 선언형입니다.
저수준 프로그래밍
- 저수준 프로그래밍은 하드웨어 근처에서 작동하며, 기계어 또는 어셈블리 언어로 레지스터, 메모리 주소 및 개별 명령어에 직접 접근합니다.
- 장점: 최대 제어권과 속도, 그리고 가능한 한 작은 코드 크기를 제공하여, 메모리가 키로바이트 수준일 때 중요합니다.
- 단점: 아키텍처 의존적이라 다른 프로세서를 위해 다시 작성해야 하며, 작성 속도가 느리고 유지보수가 어렵습니다.
- 하드웨어를 정확히 제어해야 하는 곳에서 사용됩니다: 장치 드라이버, 펌웨어, 임베디드 컨트롤러, 실시간 시스템의 가장 안쪽 루프 등.
- 汇编 언어 수업에서 즉각, 직접, 간접, 인덱스, 상대 주소를 연습하십시오. 풀이된 추적(trace)은 동일한 연산수가 왜 다른 결과를 내는지 보여줍니다.
저수준 프로그래밍에 대해 참인 것을 모두 선택하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
제어를 얻기 위한 대가로 노력이 필요합니다: 어셈블리는 작기가 느리고 유지보수가 어려우므로 드라이버 및 펌웨어에만 국한됩니다.
명령형 프로그래밍
- 명령형 프로그래밍(절차형 Programming으로也称)은 프로그램 상태를 변경하는 명령어의 서열: 대입문, 조건문, 루프 및 프로시저 호출 등입니다.
- 프로그래머가 어떻게 결과를 계산할지를 단계별로 명시합니다. 상태를 저장하는 변수들이 핵심입니다.
- Python, C, Java 및 가짜코드의 스타일이며, 거의 모든 사람이 처음 배우는 방식입니다.

명령이 하나씩 이어지며, 각각 저장된 값이 바뀌기 때문입니다
명령형(절차적) 프로그래밍은 다음에 기반합니다:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
명령형 코드는 상태를 변경하는 단계별 명령(대입, 루프, 호출)을 제공합니다.
선언형 프로그래밍
- 선언형 프로그래밍은 무엇을 계산할지를 말하지, 어떻게 할지를 말하지 않습니다. 런타임이 단계를 파악합니다.
- 함수형 프로그래밍은 순수 함수를 조합합니다. 순수 함수에는 부수 효과가 없으며, 동일한 입력은 항상 동일한 출력을 생성하고 함수 외부의anything가 변하지 않습니다. Haskell과 Lisp가 그 예입니다.
- 논리 프로그래밍은 사실과 규칙을 명시하고, 엔진이 추론을 통해 질문에 답합니다. Prolog가 그 예입니다.
- SQL은 거의 모두가 접한 선언형 언어입니다. 쿼리는 원하는 행을 지정하고 데이터베이스가 어떻게 찾을지 결정합니다.
프로그래밍 개념 실습
각 예시가 나타내는 프로그래밍 개념에 연결하십시오.
선언형 프로그래밍에서 당신은 다음을 지정합니다:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
선언형 코드(함수형, 논리형, SQL)는 목표를 명시하고, 실행 환경이 단계를 결정합니다.
순수 함수(함수형 프로그래밍):
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
순수성은 부작용이 없고 결정론적인 결과를 의미하므로, 함수형 코드를 이해하기 쉽습니다.
선언형 패러다임(함수형, 논리형, SQL)은 무엇을 계산할지 명시하고 실행 환경에게 어떻게 할지를 맡기는 반면, 명령형 코드는 모든 단계를 구체적으로 서술합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
SQL 쿼리는 테이블을 스캔하는 방법을 아니라 원하는 행을 specified합니다 — 이는 단계별 명령형 코드의 반대입니다.
순수 함수는 동일한 입력에 항상 동일한 출력을 제공하며, ____이 없습니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
이는 독립적으로 테스트하고, 안전하게 병렬로 실행하며, 결과를 캐싱할 수 있게 해줍니다.
worked example: 패러다임을 식별하기
FOR i ← 1 TO n : total ← total + A[i] : NEXT i— 명령형:total에 저장된 상태를 변경하는 명령어의 서열입니다.SELECT Name FROM Customer WHERE Country = 'UK'— 선언형: 원하는 행을指明하고 검색하는 방법을 말하지 않습니다.LDD 200 : ADD 201 : STO 202— 저수준: 메모리 위치를 직접 지칭하는 어셈블리 명령어입니다.parent(X, Y) :- father(X, Y).— 선언형, 구체적으로는 논리 프로그래밍: 엔진이 답을 추론하는 규칙입니다.- 패러다임을 이름으로 말하고, 이를 보여주는 코드의 특성을 설명하십시오.
각 조각을 패러다임과 짝지우십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
상태를 변경하는 명령, 원하는 것을 명시한 문장, 메모리에 접근하는 지시문, 그리고 추론에 대한 규칙.
它們之间的比较
| 패러다임 | 말함 | 강점 | 일반적인 용도 |
|---|---|---|---|
| 저수준 | 정확한 명령 | 제어, 속도, 크기 | 드라이버, 펌웨어 |
| 명령형 | 어떻게, 단계별로 | 직접적이고 친숙함 | 일반 프로그래밍 |
| 선언형 | 원하는 것 | 간결함, 런타임 최적화 | 쿼리, 규칙, 데이터 변환 |
- 현대 언어들은 혼합합니다. Python은 명령형이지만 함수형 특징을 가지고 있으며, SQL은 명령형으로 작성된 프로그램 내부에 위치합니다. 패러다임은 스타일이지 벽이 아닙니다.
각 패러다임을 핵심 개념과 짝지우십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
명령형은 어떻게 하는지를 단계별로 말하고; OO는 객체를 모델링하며; 함수형은 순수 함수를 사용하고; 선언형은 목표를 명시합니다.
명령형과 선언형 프로그래밍의 본질적 차이는 무엇입니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
선언형 버전은 how를 고정하지 않으므로, 실행 환경은 작업을 재배치하거나 인덱스를 사용하거나 병렬화할 수 있습니다.
worked example: 부수 효과의 중요성
- 순수 함수는 부수 효과가 없습니다. 하나의 장점을 설명하십시오.
- 동일한 입력은 항상 동일한 출력을 생성하고 외부 anything가 변하지 않으므로, 순수 함수는 격리되어 테스트될 수 있습니다: 초기화 없이 숨겨진 상태를 설정할 필요도 없습니다.
- 두 번의 호출이 서로 간섭할 수 없으므로 병렬로 안전하게 실행할 수 있으며, 결과를 캐시할 수도 있습니다.
- 대비: 전역 변수를 업데이트하는 명령형 routine은 이전에 실행된 내용에 따라 differently하게 동작하므로, 이러한 버그를 찾기 어렵게 만드는 원인이 됩니다.
놓칠 수 있는 점
- 명령형은 어떻게를 말하고, 선언형은 무엇을 말합니다. 이 대비가 여기서의 대부분의 질문에 대한 답입니다.
- 저수준의 단점은 '古'라서가 아니라 아키텍처 의존적이고 유지보수가 어렵기 때문입니다.
- 순수 함수는 부수 효과가 없고 동일한 입력에 동일한 출력을 제공합니다. 양쪽 부분이 모두 필요합니다.
- SQL은 선언형입니다. 시험에서 가장 자주 사용하는 예시이므로 이를 인지하십시오.
이해했습니다
- 패러다임은 코드를 구조화하는 스타일이며, 현대 언어들은 여러 개를 혼합합니다
- 저수준: 기계어 또는 어셈블리, 직접 하드웨어 접근, 최대 제어권과 속도, 하지만 아키텍처 의존적이고 유지보수가 어려움
- 명령형: 상태를 변경하는 명령어의 서열, 어떻게를 명시; Python, C 및 가짜코드의 스타일
- 선언형: 원하는 무엇을 명시하고 '어떻게'를 런타임에 맡김, 함수형 프로그래밍의 순수 함수, 논리 프로그래밍의 사실과 규칙, 그리고 SQL과 같이