신발을 좋아해서 크림을 자주 보는데, 요즘 유독 끌리는 신발이 있었다. 이름도 묘하게 깊어보이고 쉐입도 이뻐서인데,
그건 바로 나이키의 "제너럴 퍼포스 슈(General purpose shoe)"이다.
갑분 나이키 - 제너럴 퍼포스 슈
구글식 번역이 자연스럽지 않지만, 나름 느낌있는 설명이다.
https://www.nike.com/kr/launch/t/nikecraft-general-purpose-shoe-brown
럭키드로우의 해석
Nike 공식 사이트와 럭키드로우의 설명에서도 볼 수 있듯, 제너럴 퍼포스 슈는
- 어디서든
- 오래오래
신을 수 있는 신발을 지향하는 철학이 담긴 나이키와 톰삭스의 콜라보 작품이다. 시간과 공간의 제약을 받지 않고 사용자와 함께할 수 있다는 의미가 정말 뜻깊었다.
오늘의 주제: GPL과 DSL
앞선 얘기는 단순 아이스브레이킹 토크라고 생각할 수 있지만, 사실 오늘의 주제와 밀접한 관계가 있다.
General Purpose라는 단어가 가장 눈에 들어왔을 텐데, 해석하자면 "일반적인 목적(용도)"으로 이해할 수 있다.
나이키의 "General Purpose Shoe"가 어디서든 오래오래 신을 수 있는 "일반적인 용도"의 신발이라면,
오늘 우리가 알아볼 GPL은 "어디서든 오래오래 사용할 수 있는 일반적인 용도"의 프로그래밍 언어이다.
DSL은 모두가 짐작하고 있듯, GPL과는 다른 목적을 가지는 프로그래밍 언어인데, 각각의 종류와 특징, 마지막으로는 표를 통한 비교를 하고 포스팅을 마치도록 하겠다.
GPL이란?
GPL은 General Purpose Language의 약자이다.
이는 해석하면 "일반적인 목적(용도)의 언어"라고 이해할 수 있는데, GPL은 이 뜻 그대로이다.
사용자가 소프트웨어를 만드는데 사용하는 수단으로써 굉장히 넓은 범위에서 유연하게 사용할 수 있도록 설계되었다.
GPL의 종류는 우리가 일반적으로 "프로그래밍 언어"라고 지칭하는 언어들을 생각하면 되는데,
JavaScript, Java, Kotlin, C, C++, Python 등이 있다.
DSL이란?
DSL은 Domain Specific Language의 약자이다.
이는 해석하면 "특정 도메인을 위한 언어"라고 이해할 수 있다.
그 목적 또한 이름의 뜻과 동일하게 특정 도메인에 특화된 작업을 수행하기 위해 설계된 언어이다.
DSL의 종류는 우리가 일반적으로 "특정 목적을 위해 사용하는" 언어들을 생각하면 되는데,
DB 쿼리를 위한 SQL, 웹페이지를 위한 HTML/CSS, 빌드 자동화를 위한 Gradle 등이 있다.
GPL과 DSL의 차이
GPL | DSL | |
도메인 범위 | 넓음 | 좁음 |
러닝 커브 | 높음 | 낮음 |
난이도 | 높음 | 낮음 |
가독성(상대적) | 낮음 | 높음 |
GPL은 넓은 범위에서 다양하게 사용이 가능하지만, 그를 위해 들어가는 비용(러닝커브, 난이도)가 크고
DSL은 좁은 범위에서만 사용이 가능하기 때문에 그를 위해 들어가는 비용이 비교적 낮다.
또한 GPL을 사용해서 해결해야하는 문제가 더 복잡하고 어려운 경우가 많기 때문에 코드가 길고 복합적이게 되어 가독성 또한 DSL에 비해 많이 떨어진다.(아무리 클린하게 짜도)
마무리
자바 같이 오래되고 낡은, 그러나 그것에 따른 멋이 돋보이는 클래식함이 굉장히 매력적인 사진.
p.s) 제 블로그는 광고 설정 및 다른 수익 창출 관련 설정이 전혀 되어 있지 않은 비영리 목적으로 운영되는 블로그임을 밝히며, 공적 이용을 위한 복제에 해당하지 않아 저작권의 문제 소지가 있을 경우 복제한 저작물을 내릴 의향이 있습니다.
'CS' 카테고리의 다른 글
[CS] mutableMapOf / linkedMapOf / hashMapOf 차이 (0) | 2023.07.23 |
---|---|
[CS] Java 1.8과 Java 8의 차이 (0) | 2023.07.12 |
[CS] 동시성과 병렬성의 차이 (0) | 2023.04.17 |
Json이 독립적인 데이터 포맷인 이유 (0) | 2023.01.02 |