발단
docker에 대해 공부하다가, Yaml 파일 형식에 대해 처음 접하게 되었다.
그런데 문득 왜 yaml파일이라는 것이 생긴거지?라는 생각이 들었다.
전개
인터넷에 검색해봤는데, yaml파일을 만들게 된 이유에 대해서는 설명이 없었다.
그래서 yaml 공식문서에 있는 사람에게 메일을 보내 물어보기로 했다.
https://yaml.org/spec/1.0/#id2488873
결론
오렌은 친절하게 답변을 해줬는데, 답변내용은 아래와 같다.
2004년 당시 어떠한 프로그래밍 언어에서도 사용 가능한 data structure를 de/seriallizing 가능한 포맷을 찾고 있었다.
그런데 그때 당시 XML은 이것이 불가능햇고, 우리가 새로 만들게 되었다.
+ 궁금했던 것.
1. Yaml의 장단점은 무엇인가?
장점: 주석 사용가능, 한글을 그대로 사용해도됨
단점: 개행, 공백으로 블록 인식. 이에 따라 한줄로 작성 불가함.
(사실 이는 단점이라기보다는 특징에 가까운 것 같다.)
https://yaml.org/spec/1.2-old/spec.html#id2759572
공식문서에 따르면, JSON의 최우선 디자인 목표는 간단함과 보편성이고 이에 따라 가독성을 조금 포기하는 대신에 생성과 파싱이 용이하게끔 한것이다.
반면에 YAML의 최우선 설계 목표는 가독성과 데이터구조 serialization이다. 따라서 가독성이 매우좋지만, 생성하고파싱하는데 약간 더 시간이 걸린다.
2. Yaml을 restful api에서 데이터 전송형식으로 쓸 순 없을까?
일단 앞서 언급했듯이, json이 좀더 생성과 파싱에 용이하다.
그리고 yaml은 공백으로 구분하는데, 이것은 json파일보다 크게 만들고, json보다 복자하다.
그리고 브라우저들은 json을 natively 제공한다
하지만 위와 같은 복잡한 구조 떄문에 configuration file로는 yaml이 적합하다.
https://www.quora.com/Will-YAML-replace-JSON
https://stackoverflow.com/questions/1726802/what-is-the-difference-between-yaml-and-json
'computer 지식 > Why?' 카테고리의 다른 글
왜 스택/큐를 나누었을까? 나누어서 사용할까? (0) | 2021.11.23 |
---|---|
왜 프로세스와 스레드는 탄생했을까? (0) | 2021.09.27 |
왜 serializer를 사용하는가? (0) | 2021.09.08 |
왜 TCP는 탄생했을까? (0) | 2021.09.06 |
#0 프롤로그 Why시리즈를 하는 이유 (0) | 2021.08.30 |