# 소프트웨어 추상화가 문명을 파괴하는가? (2021)

> Clean Markdown view of GeekNews topic #19149. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19149](https://news.hada.io/topic?id=19149)
- GeekNews Markdown: [https://news.hada.io/topic/19149.md](https://news.hada.io/topic/19149.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-02-10T10:07:36+09:00
- Updated: 2025-02-10T10:07:36+09:00
- Original source: [datagubbe.se](https://datagubbe.se/endofciv/)
- Points: 2
- Comments: 1

## Topic Body

- **Jonathan Blow의 주장 요약**  
  - 세대 간 정보 전달이 희석됨.  
  - 이론보다 실천이 기술 유지에 더 중요함.  
  - 소프트웨어가 세상을 운영함.  
  - 추상화는 저수준 프로그래밍에 대한 무지를 조장함.  
  - 저수준 지식을 잊으면 중요한 소프트웨어를 유지할 수 없어 문명이 붕괴할 것임.  
  
- **비판 및 반론**  
  - Blow의 주장은 오류와 오해가 많음.  
  - 정보의 진실성이 중요하며, Blow의 정보는 여러 면에서 잘못됨.  
  - "Five nines" (99.999% 가동률) 지표는 여전히 사용되고 있음.  
  - 견고한 소프트웨어는 여전히 존재하며, 기술 발전은 계속되고 있음.  
  - 추상화가 능력 상실로 이어진다는 주장은 과장됨.  
  
- **기술 발전과 추상화**  
  - 많은 프로그래머들이 메모리 관리와 포인터를 다루지 않으려 함.  
  - C와 어셈블리 코드를 작성하는 사람들이 여전히 많음.  
  - Rust와 같은 새로운 언어는 견고성에 중점을 둠.  
  - 추상화는 새로운 기술을 발전시키는 데 기여함.  
  
- **Facebook의 생산성 논란**  
  - Facebook의 진정한 제품은 광고 전달 플랫폼임.  
  - 많은 프로그래머들이 광고 시스템을 개선하는 데 기여함.  
  
- **과거와 현재의 비교**  
  - 과거의 소프트웨어 개발 환경과 현재는 크게 다름.  
  - 현대의 컴퓨터는 과거보다 훨씬 견고함.  
  - 사용자의 기대치가 높아짐에 따라 소프트웨어 복잡성이 증가함.  
  
- **추상화와 지식 상실**  
  - 추상화는 지식 상실을 가속화할 수 있음.  
  - 그러나 추상화는 많은 사람들에게 창의성을 발휘할 기회를 제공함.  
  - 중요한 것은 중요한 시스템을 유지할 수 있는 기술 기반을 유지하는 것임.  
  
- **결론**  
  - Blow의 주장은 일부 타당하지만, 많은 부분에서 과장되고 오해가 있음.  
  - 소프트웨어 복잡성과 추상화는 해결 가능한 문제임.  
  - 디지털 세계의 더 큰 문제는 프라이버시와 자유임.

## Comments



### Comment 34363

- Author: neo
- Created: 2025-02-10T10:07:36+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42986485) 
* 나는 Montana State에서 시스템 수업을 가르치며, 학생들이 수업을 시작할 때 파일 시스템이 무엇인지 이해하지 못하는 경우가 많음
  - Blow의 의견에 일부 동의하지 않지만, 고등학생부터 기술 학생들을 위한 NAND-to-Tetris 스타일의 교육이 필요하다고 생각함
  - Little Man Computer와 간단한 MIPS 에뮬레이터 같은 "구식" 모델을 사용하여 학생들이 기술의 기원을 이해하도록 도움
  - 현대의 64비트 아키텍처 책을 보면 웃음이 나옴
  - 기술을 근본적으로 연결하는 것은 어려운 문제임

* 당신의 의견에 동의함. Blow의 강연을 보았고 비판이 중요하다고 생각함
  - Blow가 "화면에 픽셀을 그릴 수 없다"고 말했을 때는 맞다고 생각함
  - 나는 중간 규모 게임 회사의 게임 엔진 프로그래머이며, 그래픽 코드를 작업할 사람을 고용하는 것이 매우 어려워지고 있음
  - DX12는 이전 세대(DX11)보다 프로그래머에게 많은 것을 요구하며, Microsoft도 DX12를 배우는 것이 이전 그래픽 API 경험 없이는 매우 어렵다고 인정함
  - 이러한 API는 그래픽 카드의 한계를 극복하고 저수준 최적화를 구현하려는 개발자를 위한 것이지만, 이제는 산업 표준이 되어 경험 없는 사람에게는 가르치기 어려움
  - 변화가 없다면 고용 풀은 계속 줄어들 것임

* 오래된 웹 개발자가 추상화에 대해 불평하면 React 개발자를 겨냥함
  - Python 개발자가 추상화에 대해 불평하면 오래된 웹 개발자를 겨냥함
  - C++ 애플리케이션 개발자가 추상화에 대해 불평하면 Python 개발자를 겨냥함
  - 펌웨어 개발자가 추상화에 대해 불평하면 애플리케이션 개발자를 겨냥함
  - 전기 엔지니어가 추상화에 대해 불평하면 펌웨어 개발자를 겨냥함
  - 개인의 지식에 기반하여 "과도한 추상화"의 경계를 설정하고 이후 모든 것을 "문명의 파괴"라고 부르는 것은 독특한 견해임

* 서버에서 JavaScript와 React 같은 것들이 웹을 소프트웨어 개발의 혼란으로 만들었음
  - 많은 아이들이 HTML이 브라우저에서 렌더링된다는 것을 모르고 React가 브라우저에서 렌더링되는 것이라고 생각함
  - Vercel의 CEO가 React를 개발의 Linux 커널이라고 생각하는 것은 어리석음

* Blow는 개발에 대해 훌륭한 점을 자주 지적하지만, 종종 핵심을 놓침
  - 그는 훌륭한 업적을 이루었고 들을 가치가 있는 아이디어를 가지고 있지만, 때때로 말도 안 되는 소리를 함
  - 문명의 붕괴에 대한 이야기는 그런 말도 안 되는 소리 중 하나라고 생각하며, OP가 제공한 반박에 감사함
  - Casey Muratori에 대해서는 언급하지 않겠음, 그는 Blow처럼 하려고 하지만 좋은 부분조차 제대로 하지 못함

* 현대 소프트웨어 환경에는 많은 문제가 있으며, 과도한 추상화가 문제라고 생각함
  - 그러나 반대 극단도 나쁘며, 사람들은 과거를 지나치게 낭만화함
  - 충돌과 재부팅 문제뿐만 아니라, 호환성을 추구한 시스템조차도 불일치 문제를 겪었음
  - 가장 신뢰할 수 없는 현대 시스템(Windows 11)에서도 내 컴퓨터는 2010년 이전의 어떤 컴퓨터보다 더 신뢰할 수 있음
  - Windows 95용으로 작성된 소프트웨어도 실행할 수 있음

* 모든 단순화가 추상화는 아님. 모든 추상화가 단순화는 아님
  - 단순화를 추구하는 것이 보통 추상화를 동기 부여함
  - 추상화가 소프트웨어나 문명을 죽인다고 생각하지 않지만, 잘못된 추상화는 유연성과 접근성을 저해함
  - 거의 모든 언어에서 구문 설탕을 예로 들 수 있음
  - 특정 요소 때문에 실수를 더 많이 하는 것이 아니라 복잡한 문제를 해결하기 위해 도구를 잘 사용하는 것이 어려움

* 잘못된 추상화는 많음. 기술의 "속도의 종교"와 자만심 때문에 첫 시도에서 끝나는 경우가 많음
  - 인기 있는 프로젝트의 일부가 되면 다른 사람들이 모방함
  - 10-20년 동안 반복되면 거대한 혼란이 발생함
  - Jonathan Blow의 강연을 좋아하며 매년 한 번씩 돌아봄
  - 그는 논란의 여지가 없는 말을 하지만, 많은 개발자들이 최선을 다하지 않고 있다는 것을 알고 있음

* 저자는 새로운 세대에 속하며, Blow가 말한 것을 이해하지 못함
  - Figma가 디자인 세계를 파괴하고 있다고 말하면 젊은 디자이너들은 모든 것이 좋다고 생각함
  - 그들은 그 환경에서 자라지 않았기 때문에 문화와 경험의 동등한 것을 배울 가능성이 적음

* "저수준의 것을 잊으면 문명이 무너질 것"이라는 주장에 반대함
  - 저수준 시스템을 사용하여 고수준 프로세스를 모델링하는 데 너무 많은 복잡성이 있음
  - 복잡성은 문제이며, 복잡성을 최소화하고 우발적인 복잡성을 피해야 함
