매크로

From Hidden Wiki
Jump to navigation Jump to search

[include(틀:다른 뜻1/문단, other1=나무위키의 매크로, rd1=나무위키:문법 도움말, paragraph=15)] [include(틀:회원수정)] [목차]

{{{+3 Macro}}}

접두어

「거대한」이라는 의미를 나타내는 접두어로 「아주 작은」이란 뜻의 접두어 마이크로(Micro)와는 비교된다. 예를 들어 Macrophysics(거시물리학)이 그것. 경제학에서는 Microeconomics, 즉 미시경제학과 반대되는 Macroeconomics, 즉 거시경제학의 용례가 있다. 최근에는 매크로가 「전체」, 마이크로가 「개별」이라는 의미가 되어 '매크로'는 GNP, '마이크로'는 기업의 대명사처럼 쓰이는 경우도 있다.

컴퓨터 용어

흔히 쓰이는 의미로는 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 말한다. 복잡하거나 반복되는 작업을 단순화하거나 자동화하기 위한 목적으로 주로 이용한다. 어셈블리 언어에서도 많이 사용되며, 마이크로소프트 엑셀 등의 스프레드시트도 매크로를 지원하는 등 다양한 플랫폼에서 활용된다. 반복 작업을 간단하게 수행하기 위한 목적뿐만 아니라 문서 안의 같은 문자열을 한꺼번에 변경 할 때도 사용된다.

프로그래밍에서의 매크로

본래 매크로라는 개념 자체는 프로그래밍 언어의 기능에서 처음 등장한다. C/C++ 등, 매크로를 지원하는 언어에서 약식 문법을 정의하면, 컴파일러컴파일을 하기 전에 약식 문법으로 정의된 코드를 원래 코드로 변환을 한 후 컴파일한다. 이 기능이 처음 도입된 Lisp에서는 이 원래 코드로 변환하는 키워드를 원래 코드를 크게 확장한다는 의미에서 macroexpand라고 불렀고, 이 확장 규칙을 macro라고 부르는데, 이후의 언어들에서도 이 용어로 굳어지게 되었다.

C/C++에서의 매크로는 어떤 키워드를 코드로 치환하는 것이 기본으로, 인수를 받는다던가 코드를 문자열로 바꾼다던가 이름을 바꾸는 정도의 기능을 제공한다. 사실 C/C++의 매크로는 매크로 기능을 탑재하고 있는 다른 언어들에 비해 기능이 빈약한 편이다. 현존 언어들 중 탑급 매크로를 탑재하고 있는 Lisp의 경우 아예 언어를 재창조하는 수준의 매크로도 작성이 가능하다.[* 단 LISP의 매크로는 지나치게 강력해서 오히려 문제가 되는 경우가 있다.] Rust도 강력한 매크로 시스템을 가지고 있어서 C/C++에 비해 더 복잡한 매크로도 작성 가능하다.

매크로의 주된 용도로는 상수 정의, 인라이닝, 문법 정의/변형 등이 있다. 상수 정의나 인라이닝의 경우 컴파일러가 잘 최적화하지 못 하는 경우에도 강제로 치환해버릴 수 있다. 문법 변형의 경우 언어에 따라 다르긴 하지만, Lisp 같은 경우 아예 도메인 특화 언어(DSL)를 언어 위에서 새로 작성해버리는 짓이 가능하다. 매크로 자체는 실행 시간에 크게 영향을 주지 않기에, 큰 성능 저하 없이 생산성을 굉장히 높일 수 있다.

다만 최근에는 매크로를 지양하는 분위기가 짙다. 상수의 정의는 언어차원에서 제공되는 경우가 많으며, 인라이닝도 컴파일러가 거의 모든 경우에 적절히 해주기 때문. 문법 변형의 경우 장점도 있고 다른 방식으로 대체하기도 힘들지만, 애초에 문법을 변형하는 순간 다른 사람이 코드를 이해하고 수정하기 힘들기 때문에, 처음부터 변형할 필요도 없을 정도로 간결하고 적절한 문법을 제공하려고 하는 추세다.

게으른 평가 를 채택하고 메타 프로그래밍 언어 중 극히 일부는 함수 호출시 인수 대신에 인수 코드와 환경을 전달하는 것을 이용해서 실행시간에 코드를 확장 및 평가하기도 하는데, 이 경우 매크로를 이러한 방식으로 대체하기도 한다.

온라인 게임에서의 매크로

[include(틀:상세 내용, 문서명=자동사냥)]

흔히 오토라고 부르며 전략 시뮬레이션 게임에서는 한국식으로 운영이라고 하는 것을 영어권에서 매크로라고 표현한다. 반대로 컨트롤은 마이크로라고 한다. 슈팅게임류나 FPS에서 매크로라고 하면 주로 반동을 보정하는 매크로를 일컫으며 물론 불공정이용으로 밴먹으니 쓰지 말자.

인터넷에서의 매크로

이라고 부르는데, 어차피 봇이 하는 일이 매크로가 하는 일과 똑같다.

온라인 광고 대량으로 작성하는 데 사용되기도 한다.

카메라 렌즈의 한 종류

준망원, 망원 렌즈 중에서 최소 초점 거리가 매우 짧아 작은 물체의 확대 촬영에 적합한 렌즈를 일컫는다. 주로 꽃, 벌레, 소품 촬영에 많이 사용된다. 흔들림에 취약하기 때문에 삼각대 및 손떨림 방지 기능이 필수로 여겨지며, 근거리 촬영시 노출 확보를 위해 링플래시를 후드 등에 장착하여 사용하기도 한다.

파생어

스포츠, 특히 축구계에서 매크로라는 단어는 패턴이 정해진 플레이인데 막을 수가 없다! 식의 스킬을 의미한다. 이른바 "알고도 못 막는 선수". 이러한 매크로의 대표적인 예는 아르옌 로벤. 안쪽으로 꺾고 왼발로 감아차는 슈팅은 뻔하지만 득점률이 굉장하다. 그 외에도 메시호나우두도 로벤같이 극단적인 경우는 아니지만 특유의 드리블 습관이 있다.

분류:컴퓨터분류:카메라