구식화

구식화(舊式化, deprecation, 데프리케이션)는 전문 용어, 고유 명사, 기능, 디자인, 작동 방식, 코드 조각 또는 관행과 같이 사람이 만든 무언가의 사용을 권장하지 않는 것을 의미한다. 일반적으로 이전에 사용되던 것이 구식화되는 이유는 현재 사용 가능한 다른 옵션에 비해 열등하다고 여겨지거나 그렇게 간주되기 때문이다. 따라서 구식화는 미래의 개선을 위한 메커니즘이다. 구식화는 해당 용어, 명칭, 장치, 디자인 또는 기능의 미래 사용이 현명하지 않다고 공동체(일반적으로 혹은 전문가 공동체, 또는 특정 경제부문이나 산업을 관할하는 전문가 단체)가 결정했음을 암시한다. 그러나 이는 반드시 교체나 제거가 요구되거나 긴급하다는 의미는 아니다.
과거 혹은 현재의 응용 분야에서 여전히 유용하거나 기능할 수 있는 경우에도 무언가가 구식화될 수 있다. 여기서의 목표는 구식화된 대상을 완전히 대체하는 것이 아니라, 시간이 지남에 따라 해당 대상의 전체적인 광범위한 지표(예: 안전성)를 개선하는 것이다. 예를 들어, 언어/전문 용어의 일관성과 가독성을 얻기 위해 아키익(archaic) 용어를 구식화하거나, 주택 공급 내의 안전성과 호환성을 개선하기 위해 진부화된 전기 부품을 구식화하거나, 오픈 소스 소프트웨어 프로젝트를 개선하기 위해 특정 공유 소스 코드를 구식화하는 것이 이에 해당한다.[1]
구식화는 일반적으로 향후 어느 시점에 단계적 폐지, 가용성에서의 철회나 제거, 혹은 사용이나 기술 지원의 중단을 암시하거나 예고한다.
어원
[편집]일반적인 영어 용례에서 동사 "deprecate"는 "(무언가에 대해) 반대 의사를 표하다"를 의미한다. 이는 "기도를 통해 (재난을) 막다"를 의미하는 라틴어 탈형동사 deprecari에서 유래했다.
해당 의미로 "deprecate"가 사용된 초기 기록은 1984년 유즈넷 게시물에서 4.2BSD의 구식 기능과 C (프로그래밍 언어)를 언급할 때 찾아볼 수 있다.[2] "deprecate"의 확장된 정의는 1991년 개정된 자곤 파일에서 인용되었으며,[3] 비슷한 정의들이 2014년[1] 및 2023년의 상용 소프트웨어 문서에서 발견된다.[4]
소프트웨어
[편집]구식화는 소프트웨어 개발에서 흔히 사용되는 개선 메커니즘으로, 특히 프로젝트가 대규모 사용자나 프로그래머 공동체를 포함하거나, 길고 복잡한 소프트웨어 개발 역사를 가지고 있거나, 빠르게 반복(따라서 더 많은 대체가 발생함)되는 경우에 사용된다.
구식화된 소프트웨어 기능이 소프트웨어 내에 남아 있더라도, 이를 사용할 경우 대체 수단이나 대체 관행을 권장하는 경고 메시지가 표시될 수 있다. 구식화된 상태는 해당 기능이 향후에 제거될 것임을 나타낼 수도 있다. 기능이 즉시 제거되지 않고 구식화되는 이유는 하위 호환성을 제공하고 프로그래머에게 영향을 받는 코드를 새로운 표준에 맞출 시간을 주기 위함이다.
구식화의 주요 이유는 다음과 같다:
| 이유 | 예시 |
|---|---|
| 기능이 더 강력한 대체 기능으로 교체됨. | 리눅스 커널에는 마이크로소프트 윈도우 네트워크와 통신하기 위한 smbfs와 cifs라는 두 가지 모듈이 있다. 후자는 더 나은 보안을 제공하고 더 많은 프로토콜 기능을 지원하며 커널의 나머지 부분과 더 잘 통합된다. cifs가 포함된 이후로 smbfs는 구식화되었다.[5] |
| 기능에 설계 결함, 흔히 보안 결함이 있어 피해야 하지만, 기존 코드가 이에 의존하고 있는 경우. |
|
| 기능이 부차적인 것으로 간주되어 향후 계획된 버전에서 제거될 예정임. | 초기 월드 와이드 웹 마크업 언어인 HTML은 페이지 디자이너가 텍스트가 표시될 글꼴을 지정할 수 있도록 FONT 요소를 포함했다. CSS와 HTML 4.0이 출시되면서 FONT 요소는 부차적인 것이 되었으며, HTML의 구조적 마크업과 CSS의 그래픽 서식을 구분하는 이점을 저해했다. 따라서 FONT 요소는 Transitional HTML 4.0 표준에서 구식화되었고, Strict 변형에서는 제거되었다.[8] |
| 소프트웨어의 향후 계획된 버전에서 주요 구조적 변경이 이루어져 이전 기능을 지원하는 것이 불가능하거나 비실용적인 경우. | 애플이 맥 OS 9에서 맥 OS X로의 전환을 계획했을 때, 사소한 변경만으로 대부분의 프로그램을 지원할 수 있는 이전 시스템의 API 부분집합을 만들었는데, 이것이 카본 라이브러리(이후 자체적으로 구식화됨)였으며 맥 OS 9와 맥 OS X 모두에서 사용할 수 있었다. 당시 주로 맥 OS 9를 사용하던 프로그래머들은 카본에서 지원하는 API 함수만 사용하여 자신의 프로그램이 맥 OS X에서 기본적으로 실행되도록 보장할 수 있었다. 다른 맥 OS 9 함수들은 구식화되었으며, 맥 OS X에서 기본적으로 지원된 적이 없다.[9] |
| 명칭 일관성. | API는 서로 다른 개발자들이 서로 다른 철자를 사용하여 "color"와 "colour"와 같은 철자가 일관성 없이 섞여 있을 수 있다. 일관성을 강제하기 위해 한 가지 철자를 사용하는 모든 식별자는 다른 철자를 위해 복제되고, 선호되지 않는 철자를 사용하는 식별자는 구식화된다. |
| 독립적으로 사용 가능했던 기능이 공동 기능과 결합된 경우. | VLC 미디어 플레이어에서 VLC는 예전에 "VideoLan Client"의 약자였으며, 별도의 "VideoLan Server"가 공동 기능으로 제공되었다. 클라이언트와 서버 모두 동일한 패키지로 제공되게 되면서, 하나를 독립적으로 구하는 것은 비실용적이 되었다.[10] |
장치, 장비, 표준 및 규정
[편집]건축법규의 예로는 콘센트 중 접지가 되지 않은("2구") 전기 콘센트의 사용이 있다. 시간이 지남에 따라 이러한 구형 장치는 더 안전한 접지형("3구") 콘센트를 위해 널리 구식화되었다. 접지되지 않은 구형 콘센트는 많은 지역에서 할아버지 조항에 따라 기존 배선에서는 허용되었으나, 새로운 설치에 대해서는 금지되었다. 따라서 접지되지 않은 콘센트의 판매와 사용은 감소했으며, 특정 지역에서 여전히 합법적으로 구매할 수 있더라도 이는 진부한 것으로 간주되어 일반적으로 기존의 오래된 전기 설비 수리용으로만 의도될 것이다.
기술 표준에서 특정 조항의 사용은 권장되지 않거나 새로운 조항으로 대체될 수 있다. 일례로, 이더넷 표준 전기전자공학자협회 802.3-2012에서 조항 5(계층 관리)의 일부는 조항 30(관리)에 의해 구식화되거나 대체되었다.
명칭 및 전문 용어: 과학, 의학, 화학
[편집]글쓰기와 편집에서 단어의 사용은 모호하거나 혼란스럽거나, 청중 또는 그 구성원 일부에게 불쾌감을 줄 수 있기 때문에 구식화될 수 있다. 예를 들어, sanction과 인화성 같은 단어는 자동 반의어적 의미를 지니고 있어 오해의 소지가 있을 수 있으며, 작문 스타일 가이드에서는 명확하고 이해하기 쉬운 다른 단어로 대체할 것을 권장하는 경우가 많다. 시간이 흐르면서 다른 의미를 갖게 된 단어(예: 게이 (단어), 유색인종)는 모호성, 진부화 혹은 불쾌감으로 인한 문제(또는 주의 분산)를 피하기 위해 구식화될 수 있다.
구식화는 또한 기술적 또는 과학적 용어가 변화, 대체, 추가적인 과학적 발견 혹은 새로운 과학적 합의의 발전을 통해 부정확해지거나 진부화될 때 발생할 수 있다. 고생물학의 예로는 과거 브론토사우루스라는 용어를 구식화하고 아파토사우루스 속을 대신 사용한 사례가 있다(한동안 브론토사우루스는 아파토사우루스의 일부라고 생각되었다).[11][12]
의학 분야에서 구식화된 용어로는 소비(결핵), 그립(인플루엔자), 뇌졸중(apoplexy)이 있다. 질병이나 상태에 대한 대체되었거나 오해를 부르는 명칭은 혼란, 낙인 혹은 위험에 대한 오해를 피하기 위해 자주 구식화된다(예: HIV-AIDS의 초기 용어였던 "게이 관련 면역 결핍 증후군"은 오류이자 차별적이었기에 빠르게 구식화되었다).
화합물 명명법에서 국제 표준화 기구인 국제순수응용화학연합(IUPAC)은 "methyl ethyl ketone"이라는 용어를 구식화하였으며, 현재는 "에틸 메틸 케톤"이라는 용어를 사용할 것을 권장한다.[13]
같이 보기
[편집]각주
[편집]- 1 2 “JEP 277: Enhanced Deprecation”. 《openjdk.java.net》. 2018년 9월 19일에 원본 문서에서 보존된 문서. 2018년 2월 9일에 확인함.
- ↑ Shea, Ammon. “A New Meaning of 'Deprecate'”. 《Words We're Watching》. 메리엄-웹스터. 2023년 3월 1일에 확인함.
- ↑ Raymond, Eric S.; Steele, Guy L. 편집 (July 1992). 《The Jargon File, Version 2.9.10》. 2023년 3월 1일에 확인함 – 프로젝트 구텐베르크 경유.
- ↑ Stewart, Meghan (2023년 2월 27일). “Windows client features lifecycle”. 《What's new in Windows》. 마이크로소프트. 2023년 3월 1일에 확인함.
- ↑ “On the future of smbfs”. 《LWN.net》. 2006년 5월 15일. 2023년 3월 1일에 확인함.
- ↑ GNU. 〈Line Input〉. 《The GNU C Library》. GNU. 2021년 1월 26일에 원본 문서에서 보존된 문서. 2008년 8월 2일에 확인함.
Deprecated function: char * gets (char *s). ... The
getsfunction is very dangerous because it provides no protection against overflowing the strings. The GNU library includes it for compatibility only. You should always usefgetsorgetlineinstead. - ↑ “Java Thread Primitive Deprecation”. Oracle. 2011년 10월 15일에 원본 문서에서 보존된 문서. 2011년 5월 13일에 확인함.
- ↑ Musciano, Chuck; Kennedy, Bill (2007). 〈HTML’s Obsolete Expanded Font Handling〉 6판. 《HTML & XHTML : the definitive guide》. Beijing: O'Reilly. ISBN 978-0-596-52732-7. OCLC 77574682.
- ↑ Simenel, Éric (2000). “Carbonization 101”. 《MacTech》 16 (12). 2023년 3월 1일에 확인함.
- ↑ “The cross-platform streaming solution”. 《VideoLAN》. 2023년 3월 1일에 확인함.
- ↑ “Brontosaurus Finally Validated as a Distinct Dinosaur”. 《ABC 뉴스》. 2020년 4월 9일에 원본 문서에서 보존된 문서. 2020년 6월 27일에 확인함.
- ↑ Upchurch, Paul; Barrett, Paul M.; Dodson, Peter (2004). 〈Sauropoda〉 2판. Weishampel, David B.; Dodson, Peter; Osmólska, Halszka (편집). 《The Dinosauria》. Berkeley: University of California Press. 259–322쪽. ISBN 0-520-24209-2.
- ↑ 《Nomenclature of Organic Chemistry : IUPAC Recommendations and Preferred Names 2013 (Blue Book)》. Cambridge: 왕립화학회. 2014. 725쪽. doi:10.1039/9781849733069-FP001. ISBN 978-0-85404-182-4.
외부 링크
[편집]- How and When To Deprecate APIs from the JDK 5.0 Documentation
- Detect deprecated functions A tool that discovers deprecated functions in any Windows native application or library.