컴퓨터 분야에 발을 들여놓을 때 경험하는 황당함은 port가 그 '항구'가 아니고 terminal이 그 '기차역'을 의미하는 것이 아니라는 것을 깨닳기 시작할 때 부터입니다. 네이버 사전에서 '독선적인'으로 풀이하는 opinionated(오피니어네이티드로 발음합니다)란 단어또한 그러합니다. opinion + ated인 이 단어는 컴퓨터 용어로서는 '독선적인 것이 아니라 '편향적'으로 번역되어야 합니다.
뜬금없이 이 단어를 꺼낸 이유를 사례를 들어 설명하고자 합니다.
1. msvc 컴파일러는 윈도우 운영체제에서만 동작합니다. 이는 msvc는 '윈도우 편향적(window-opinionated)'인 컴파일러입니다라고 간단히 표현할 수 있습니다. 반면에 gcc나 clang 컴파일러는 다양한 운영체제에서 동작하므로, 특정 운영체제(이경우 보통 플랫폼이란 용어 사용)에 종속되지 않는 '운영체제 비 편향적'인 컴파일러라고 간단히 표현할 수 있습니다. 참고로 opinionated 의 반대말은 unopinionated지만 unopinionated 보다는 agnostic(친화적인)이란 단어가 더 자주 사용됩니다. 어떤 프로그램이 platform-agnostic하다고 자신을 설명한다면 이는 이 프로그램은 운영체제를 가리지 않고(즉, 리눅스, 맥, 윈도우 모두포함) 동작하는 프로그램이란 의미입니다.
2. 비주얼 스튜디오, 이클립스, pyCharm, phpStorm과 같은 개발 도구들은 각각 c++/c#, java, python, php에 편향적인 도구들입니다. 즉 특정 언어의 기능만 유독 많이 지원하는 opinionated 도구인 셈 입니다. 반면에 비주얼 스튜디오 코드(vscode)는 language-agnostic한 개발 도구 입니다. 거의 지구상의 모든 컴파일러/해석기들을 편애함 없이 모두 동등하게 지원하기 때문입니다.
3. Java 언어는 JVM 덕에 platform-agnostic 해 졌습니다. JVM은 각 운영체제 별로 각기 따로 만들어 지지만, JVM위에서 동작하는 자바 어플리케이션은 JVM 덕에 platform-agnostic한 언어가 되었습니다. 파이썬 역시 PVM(Python Virual Machine)에서 동작하는 언어기 때문에 운영체제를 가리지 않고 아무데서나 잘 동작(즉 platform-agnositc)합니다. 하스켈과 러스트, 스위프트는 llvm 환경에서 동작하므로 자바나 파이썬과 마찬가지로 운영체제를 가리지 않습니다. 알파고의 언어인 lua 또한 자신의 가상머신 위에서 동작합니다. 이 때문에 요즘 프로그래밍 언어를 가상 머신에서 동작하는 언어와 네이티브(native)로 동작하는 언어로 구분하는 것은 사실상 무의미 해 졌습니다.
4. react.js 개발을 하려면 react 와 react-dom 두가지 패키지를 설치해야 합니다. 이는react-native를 고려한 것으로 react 패키지는 웹 브라우저에서의 동작 유무를 따지지 않는 browser-agnostic한 부분을 구현한 패키지, react-dom은 웹 브라우저에서의 동작 부분을 구현한 browser-opinionated한 부분을 구현한 패키지입니다.
5. redux 개발을 하면 redux 와 react-redux 두 가지 패키지를 설치해야 합니다. 이 때 redux는 framework-agnostic한 부분이고, react-redux는 react-opinionated 한 부분입니다. 즉, redux는 react는 물론 Angular, Vue.js, Ember.js 등의 프레임워크에서도 모두 동작하는 부분인 반면, react-redux는 react.js 프레임워크에서만 동작하는 부분입니다.
6. ms의 물러난 스티브 발머는 세상의 모든 컴퓨터를 윈도우 운영체제로 덮어버리겠다는 독선적인 사고를 가진 ceo였습니다. 이 경우 발머는 window-opinionated한 리더입니다. 반면에 현재의 사티아 나델라 ceo는 애저(azure)와 같은 클라우드 플랫폼이 중요하다고 생각하는 platform-agnostic한 리더입니다. 하여 나델라 ceo 시대의 ms는 급격하게 리눅스 친화적으로 회사 정책이 바뀌었습니다. 다음은 나델라씨가 ms ceo였기 때문에 탄생할 수 있었던 대표적인 제품들 입니다.
(1) 비주얼 스튜디오 코드
(2) 윈도우 10의 wsl(window subsystem for linux)
(3) 닷넷 코어(.Net core)
제가 한국에서만 살아서 뉘앙스를 옮기기가 어려운 용어들이 있습니다. 즉 제가 native들의 뉘앙스를 아는데는 한계가 있어 솔직히 적확하지 않으시다는 의미가 잘 머리로 느껴지질 못합니다. 반드시 번역을 해야 한다는 가정에서 어떤 번역이 어울릴지 혹 가능하시면 조언 부탁드립니다.
뉘앙스에 대한 자세한 설명은 여기에..
https://stackoverflow.com/questions/802050/what-is-opinionated-software
그리고 agnostic을 친화적이라고 번역하는 것은 이상하게 들립니다. Agnostic은 모른다는 의미이고, SW에서 아는 것은 dependency를 뜻합니다. 친화적은 보통 friendly의 번역어로 사용되구요.
제가 번역을 별로 해보지 않아서 대안 제시 없이 아닌 것 같다는 말씀만 드려서 미안합니다.
"Opinionated, transactional, MobX powered state container combining the best features of the immutable and mutable world for an optimal DX"
문장에서 '과연 이 문장에서 opinionated의 프로그래밍 용어로서의 느낌을 이해하실 수 있을까?' 라는 의문이 들어서 이를 설명하기 위한 것이었습니다. 참고로 미쉘 웨스트스트레이트씨의 또 다른 라이브러리인 mobx가 있는데 위 인용 문장은 mobx 와 mobx-state-tree의 차이점을 'opinionated' 단어를 사용하여 아주 명확하게 설명하고 있습니다.
https://github.com/mobxjs/mobx-state-tree
조금 제 의견을 말씀드리겠습니다.
1) 제가 한국에서만 살아서 native적인 뉘앙스를 잘 알지는 못합니다. 다만, 저는 많은 프로그래밍 관련 블로그들에서 '형용사 명사' 형태를 1개의 명사로 만들기 위해 '명사-형용사'로 쓰는 것들을 꽤 자주 경험하곤 했습니다.
프로그래밍 용어로서의 단어는 일반적인 단어와는 의미가 다른 경우가 종종 있습니다. 사람들 언어에서는 '친화적'은 말씀하신 대로 'friendly'가 당연하겠지만, 프로그래밍 용어로서의 '친화적'을 friendly로 쓰기에는 지나치게 '구어체'적인 느낌입니다. 전공 논문에 쓰기에는 부담스러운 단어입니다. 반면에 agnostic은 좀 더 '격식을 차린 문어체' 적인 느낌이라 생각됩니다. 프로그래밍 관련 용어는 한국어로 번역하기가 힘든 경우들이 꽤 있는데, 이럴 경우 어쩔 수 없이 의역을 할 수 밖에 없습니다.
'지식 없이도 ~~~이 가능한'을 함축적으로 표현하는 적절한 단어가 '친화적'이라고 저는 생각했습니다. agnostic은 단순히 '모른다'가 아니라, '몰라도 된다'는 의미로 저는 이해하고 있습니다. 또한 '몰라도 된다'를 다양한 운영체제에서 동작하는 상황에 적용할 때는 '운영체제를 몰라도 된다'란 의미보다는 '운영체제 친화적'이란 의미가 좀 더 '운영체제를 가리지 않는다'라는 의미에 접근한다고 생각합니다.
첨부한 이미지는 네이버 영어 사전 내용인 데, 혹 참고가 되실지 모르겠습니다.
2) 프로그래밍 용어에서 dependent는 항상 '종속적'으로 번역되어 왔습니다. 하여 영어적으로는 dependent나 opinionated가 비슷한 느낌일 지 모르지만, 이 둘을 모두 '종속적'으로 번역하면 opinionated의 뉘앙스(단어가 가지는 감정적인 뉘앙스)를 표현하지 못합니다. 하여 저는 '편향적'이라고 번역한 것입니다.
3) 참고로 'list comprehension'을 '리스트 이해', 'expression-based language'를 '표현 기반 언어'로 번역하는 것은 프로그래밍 용어로서의 'comprehension'과 'expression'을 전혀 감안하지 않은 잘못된 번역이라고 생각합니다. '리스트 내포', '표현식 기반 언어'가 프로그래밍 용어로서의 comprehension과 expression을 정확하게 번역한 것입니다. '(1+1)을 표현식이라고 표현합니다'는 의미가 좀 더 구체적으로 전달되지만 '(1+1)을 표현이라고 표현합니다'는 매우 이상합니다. '~를 리스트 내포라고 이해할 수 있습니다'와 '~를 리스트 이해라고 이해할 수 있습니다'의 차이도 느끼실 것입니다.
제 글의 주제는 '프로그래밍 용어'로서의 opinionated 와 agnostic의 의미입니다. 즉 영문학이 아니라 컴퓨터공학 관점에서의 번역입니다. 이를 감안해 읽어주셨으면 합니다. ^^.
"User friendly" "사용자 친화적" 논문에 써도 전혀 이상하지 않은 표현입니다.
Agnostic은 제 국어 감각 내에서는 "친화적"과 연결이 잘 안되네요. "OS-agnostic"이라고 할 때 주어는 사람이 아니라 SW입니다.
Opinionated는 dependent와 다른 뜻입니다. Opinionated는 말 그대로 의견이 들어 있다는 뜻입니다. 그래서 (어떤 의견에) 편향적이라고 번역할 수 있는 거죠.
저도 영문학이 아니라 전산학 관점에서 말씀드리는 것입니다.