printf 없이 Hello World를 출력하려면 어떻게 할까요?

발행: (2026년 2월 16일 오후 06:18 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

The Problem

printf가 없다고 가정하면 화면에 “hello world”를 어떻게 출력하겠습니까?
stdout에 직접 쓰면 됩니다. 그 전에 시스템 콜을 호출하고, 그 전에 메모리‑맵된 디스플레이 버퍼에 바이트를 넣고, 그 전에 프런트 패널의 스위치를 눌러 불빛이 깜박이는 것을 보게 됩니다.

각 레이어마다 누군가가 무언가를 만들어서 다음 사람이 그걸 직접 할 필요가 없게 했습니다. 이것이 바로 전체 분야의 본질입니다—우리가 설계하지 않은 언어, 우리가 짜지 않은 컴파일러, 우리가 발명하지 않은 프로토콜. 우리는 언제나 다른 사람들의 작업 위에 쌓아 올려서 그 결과물을 우리 것이라고 부릅니다. 아무도 그에 대해 문제를 제기하지 않았습니다.

printf가 항상 있던 것은 아닙니다. 누군가가 그것을 만들었고, 우리는 별다른 고지나 죄책감, 혹은 “우리가 직접 구현할 수도 있었다”는 설명 없이 사용했습니다. 프레임워크, 패키지 매니저, 그리고 그 이후에 나온 모든 것에도 동일하게 적용됩니다.

Progression of Abstractions

front panel switches → machine code → assembly → C → printf

    syscalls → write() → stdio → high‑level languages → frameworks

각 단계마다 누군가는 “이 부분은 더 이상 할 필요가 없다”고 말했습니다. 그리고 각 단계마다 또 다른 누군가는 “그럼 실제로 무슨 일이 일어나고 있는지 어떻게 이해하겠느냐”고 물었습니다.

이전 레이어마다 여전히 문제 자체의 언어로 사고해야 했습니다:

  • C는 메모리를 생각하게 만들었습니다.
  • 동시성은 상태를 생각하게 만들었습니다.
  • HTTP는 실패 모드를 생각하게 만들었습니다.

추상화는 작업을 압축하지만 이해를 건너뛰지는 않습니다. 답을 얻기 위해 무엇을 요청하고 있는지 알아야 하며, 그 답을 제공하는 시스템을 직접 만들 필요는 없을 뿐입니다.

Implications

새로운 레이어는 더 높은 수준이기 때문이 아니라, 처음으로 생각 과정을 거치지 않고도 출력을 얻을 수 있게 되었기 때문에 다릅니다. 할 수는 있지만, 그렇다고 해야 할 필요는 없습니다. 많은 사람들은 여전히 먼저 생각합니다. 저수준 추론을 건너뛰는 옵션 자체가 새로운 것이며, 그 부분이 진정으로 새롭습니다.

따라서 질문은 도구가 중요한가가 아니라—그것은 언제나 중요했을 것입니다.
더 나은 질문은 다음과 같습니다: 출력이 올바르게 보이지만 실제로는 그렇지 않을 때, 당신은 그 차이를 알 수 있겠는가? 찾을 수 있겠는가? 고칠 수 있겠는가?

그것은 함정이 아니라, 변하지 않은 부분일 뿐입니다.

0 조회
Back to Blog

관련 글

더 보기 »

Arenas를 사용한 더 쉬운 객체 관리

소개 Cdecl을 업데이트하기 시작했을 때(https://dev.to/pauljlucas/the-all-new-cdecl-30), 내가 처음 한 일 중 하나는, 당시 내가 설명했듯이, `abs`를 사용하는 것이었다.

Keen Electronics 키 팝

제품 작은 키체인 포브이며 두 개의 버튼과 녹색 LED가 있습니다. 회사명 Keen Electronics Ltd.가 표시되어 있습니다. https://find-and-update.company-infor...