Skip to content

Commit 44484b9

Browse files
committed
Deploy post/2025-10-24-01 669520d
1 parent 970877a commit 44484b9

9 files changed

Lines changed: 452 additions & 59 deletions

post/chaos-to-cosmos.html

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6+
7+
<meta name="giscus:backlink" content="https://chebread.github.io/post/chaos-to-cosmos">
8+
9+
<title>Chaos To Cosmos | 차한음 블로그</title>
10+
<meta name="description" content="해커와 화가 (폴 그레이엄)">
11+
<meta name="author" content="차한음">
12+
<link rel="canonical" href="https://chebread.github.io/">
13+
14+
<meta property="og:title" content="Chaos To Cosmos | 차한음 블로그">
15+
<meta property="og:description" content="해커와 화가 (폴 그레이엄)">
16+
<meta property="og:type" content="article">
17+
<meta property="og:url" content="https://chebread.github.io/post/chaos-to-cosmos">
18+
<meta property="og:site_name" content="차한음 블로그">
19+
20+
<meta name="twitter:card" content="summary_large_image">
21+
<meta name="twitter:title" content="Chaos To Cosmos | 차한음 블로그">
22+
<meta name="twitter:description" content="해커와 화가 (폴 그레이엄)">
23+
24+
<script type="application/ld+json">
25+
{
26+
"@context": "https://schema.org",
27+
"@type": "BlogPosting",
28+
"headline": "Chaos To Cosmos | 차한음 블로그",
29+
"author": {
30+
"@type": "Person",
31+
"name": "차한음"
32+
},
33+
"publisher": {
34+
"@type": "Organization",
35+
"name": "차한음",
36+
},
37+
"datePublished": "2025-09-13",
38+
"description": "해커와 화가 (폴 그레이엄)"
39+
}
40+
</script>
41+
42+
<link rel="stylesheet" href="/styles/reset.css" />
43+
<link rel="stylesheet" href="/styles/layout.css" />
44+
<link rel="stylesheet" href="/styles/color-palette.css">
45+
<link rel="stylesheet" href="/styles/chroma.css">
46+
47+
<link rel="stylesheet" href="/styles/github-markdown.css">
48+
<link rel="stylesheet" href="/styles/post.css">
49+
50+
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
51+
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
52+
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon.png">
53+
</head>
54+
<body>
55+
<div class="root">
56+
<div class="post">
57+
<nav class="post-nav">
58+
<a href="/" class="">
59+
<span></span>
60+
</a>
61+
<a href="/about" class="">
62+
<span>어바웃</span>
63+
</a>
64+
<a href="/posts" class="active">
65+
<span>포스트</span>
66+
</a>
67+
</nav>
68+
69+
<main class="post-content">
70+
<header class="post-header">
71+
<h1 class="post-title">Chaos To Cosmos</h1>
72+
<p class="post-date"><time datetime="2025-09-13">2025년 09월 13일</time></p>
73+
<p class="post-category"><a href="/posts/%eb%8f%85%ec%84%9c">[독서]</a></p>
74+
</header>
75+
<div class="post-body">
76+
<article class="markdown-body"><blockquote>
77+
<p>또 전체적인 프로그램을 미리 신중하게 적어서 생각하는 방향이 옳은지 여부를 확인하기 전에 조각난 코드부터 대책 없이 늘어놓은 다음 그것의 모양을 조금씩 잡아 나가는 방법으로 프로그래밍을 했다.<br>
78+
소설과, 화가, 그리고 건축가의 직업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다.<br>
79+
프로그래밍 언어는 당신이 이미 머릿속으로 생각한 프로그램을 표현하는 도구가 아니라, 아직 존재하지 않는 프로그램을 생각해 내기 위한 도구다.<br>
80+
해커에게 필요한 언어는 마음껏 내갈기고, 더럽히고, 사방에 떡칠할 수 있는 언어다.<br>
81+
— 해커와 화가</p>
82+
</blockquote>
83+
<p>그렇다. 코드는 더러워야 한다. 정결한 코드는 아무 의미가 없다. 코드는 더러움 속에서, 혼란 속에서 존재되어야만 한다. 코드에 아이디어를 떡칠해야 한다. 왜 코드 외적인 것에서 아이디어를 피력하고, 생산하는가? 항상 코드 자체에 아이디어를 적어 놓아야 한다. 프로그래머란, 오로지 코드에 어떤 것을 피력해야 한다. 코드 외적인 것에서 놀지 마라. 코드에서 놀아라. 코드는 깔끔해야 한다는 강박을 버려라. 코드는 더러워야 한다.</p>
84+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="c1">// https://en.wikipedia.org/wiki/Fast_inverse_square_root
85+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kt">float</span> <span class="nf">Q_rsqrt</span><span class="p">(</span> <span class="kt">float</span> <span class="n">number</span> <span class="p">)</span>
86+
</span></span><span class="line"><span class="cl"><span class="p">{</span>
87+
</span></span><span class="line"><span class="cl"> <span class="kt">long</span> <span class="n">i</span><span class="p">;</span>
88+
</span></span><span class="line"><span class="cl"> <span class="kt">float</span> <span class="n">x2</span><span class="p">,</span> <span class="n">y</span><span class="p">;</span>
89+
</span></span><span class="line"><span class="cl"> <span class="k">const</span> <span class="kt">float</span> <span class="n">threehalfs</span> <span class="o">=</span> <span class="mf">1.5F</span><span class="p">;</span>
90+
</span></span><span class="line"><span class="cl">
91+
</span></span><span class="line"><span class="cl"> <span class="n">x2</span> <span class="o">=</span> <span class="n">number</span> <span class="o">*</span> <span class="mf">0.5F</span><span class="p">;</span>
92+
</span></span><span class="line"><span class="cl"> <span class="n">y</span> <span class="o">=</span> <span class="n">number</span><span class="p">;</span>
93+
</span></span><span class="line"><span class="cl"> <span class="n">i</span> <span class="o">=</span> <span class="o">*</span> <span class="p">(</span> <span class="kt">long</span> <span class="o">*</span> <span class="p">)</span> <span class="o">&amp;</span><span class="n">y</span><span class="p">;</span> <span class="c1">// evil floating point bit level hacking
94+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">i</span> <span class="o">=</span> <span class="mh">0x5f3759df</span> <span class="o">-</span> <span class="p">(</span> <span class="n">i</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span> <span class="p">);</span> <span class="c1">// what the fuck?
95+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">y</span> <span class="o">=</span> <span class="o">*</span> <span class="p">(</span> <span class="kt">float</span> <span class="o">*</span> <span class="p">)</span> <span class="o">&amp;</span><span class="n">i</span><span class="p">;</span>
96+
</span></span><span class="line"><span class="cl"> <span class="n">y</span> <span class="o">=</span> <span class="n">y</span> <span class="o">*</span> <span class="p">(</span> <span class="n">threehalfs</span> <span class="o">-</span> <span class="p">(</span> <span class="n">x2</span> <span class="o">*</span> <span class="n">y</span> <span class="o">*</span> <span class="n">y</span> <span class="p">)</span> <span class="p">);</span> <span class="c1">// 1st iteration
97+
</span></span></span><span class="line"><span class="cl"><span class="c1">// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
98+
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
99+
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">y</span><span class="p">;</span>
100+
</span></span><span class="line"><span class="cl"><span class="p">}</span>
101+
</span></span></code></pre><p>오픈소스로 배포한다고 해도 그냥 더러운 코드를 공개하라. 왜 당신의 아이디어가 담긴 더러운 코드는 공개하기 싫은가?
102+
프로그래밍의 거장도 더럽게 코드를 짜고, 더러운 코드를 공개하는데 당신은 왜 깨끗하려 하는가?</p>
103+
<blockquote>
104+
<p>Chaos to Cosmos.</p>
105+
</blockquote>
106+
</article>
107+
</div>
108+
<section class="post-comments">
109+
<script src="https://giscus.app/client.js"
110+
data-repo="chebread/chebread.github.io"
111+
data-repo-id="R_kgDOP0JptQ"
112+
data-category="Announcements"
113+
data-category-id="DIC_kwDOP0Jptc4CwG8I"
114+
data-mapping="title"
115+
data-strict="0"
116+
data-reactions-enabled="1"
117+
data-emit-metadata="0"
118+
data-input-position="top"
119+
data-theme="light"
120+
data-lang="ko"
121+
crossorigin="anonymous"
122+
async>
123+
</script>
124+
</section>
125+
</main>
126+
127+
<footer class="post-footer">
128+
<section>
129+
<p>&copy; 2025 Cha Haneum</p>
130+
</section>
131+
<section>
132+
<a href="https://github.com/chebread">
133+
<span>깃허브</span>
134+
</a>
135+
<a href="mailto:chahaneum@chebread.com">
136+
<span>이메일</span>
137+
</a>
138+
</section>
139+
</footer>
140+
</div>
141+
</div>
142+
143+
<script src="/js/main.js"></script>
144+
</body>
145+
</html>
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6+
7+
<meta name="giscus:backlink" content="https://chebread.github.io/post/단일-책임-원칙이-무너지고-있다">
8+
9+
<title>단일 책임 원칙이 무너지고 있다 | 차한음 블로그</title>
10+
<meta name="description" content="실용주의 프로그래머 (데이비드 토머스 , 앤드류 헌트)">
11+
<meta name="author" content="차한음">
12+
<link rel="canonical" href="https://chebread.github.io/">
13+
14+
<meta property="og:title" content="단일 책임 원칙이 무너지고 있다 | 차한음 블로그">
15+
<meta property="og:description" content="실용주의 프로그래머 (데이비드 토머스 , 앤드류 헌트)">
16+
<meta property="og:type" content="article">
17+
<meta property="og:url" content="https://chebread.github.io/post/단일-책임-원칙이-무너지고-있다">
18+
<meta property="og:site_name" content="차한음 블로그">
19+
20+
<meta name="twitter:card" content="summary_large_image">
21+
<meta name="twitter:title" content="단일 책임 원칙이 무너지고 있다 | 차한음 블로그">
22+
<meta name="twitter:description" content="실용주의 프로그래머 (데이비드 토머스 , 앤드류 헌트)">
23+
24+
<script type="application/ld+json">
25+
{
26+
"@context": "https://schema.org",
27+
"@type": "BlogPosting",
28+
"headline": "단일 책임 원칙이 무너지고 있다 | 차한음 블로그",
29+
"author": {
30+
"@type": "Person",
31+
"name": "차한음"
32+
},
33+
"publisher": {
34+
"@type": "Organization",
35+
"name": "차한음",
36+
},
37+
"datePublished": "2025-09-13",
38+
"description": "실용주의 프로그래머 (데이비드 토머스 , 앤드류 헌트)"
39+
}
40+
</script>
41+
42+
<link rel="stylesheet" href="/styles/reset.css" />
43+
<link rel="stylesheet" href="/styles/layout.css" />
44+
<link rel="stylesheet" href="/styles/color-palette.css">
45+
<link rel="stylesheet" href="/styles/chroma.css">
46+
47+
<link rel="stylesheet" href="/styles/github-markdown.css">
48+
<link rel="stylesheet" href="/styles/post.css">
49+
50+
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
51+
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
52+
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon.png">
53+
</head>
54+
<body>
55+
<div class="root">
56+
<div class="post">
57+
<nav class="post-nav">
58+
<a href="/" class="">
59+
<span></span>
60+
</a>
61+
<a href="/about" class="">
62+
<span>어바웃</span>
63+
</a>
64+
<a href="/posts" class="active">
65+
<span>포스트</span>
66+
</a>
67+
</nav>
68+
69+
<main class="post-content">
70+
<header class="post-header">
71+
<h1 class="post-title">단일 책임 원칙이 무너지고 있다</h1>
72+
<p class="post-date"><time datetime="2025-09-13">2025년 09월 13일</time></p>
73+
<p class="post-category"><a href="/posts/%eb%8f%85%ec%84%9c">[독서]</a></p>
74+
</header>
75+
<div class="post-body">
76+
<article class="markdown-body"><blockquote>
77+
<p>단일 책임 원칙: 하나의 것은 하나의 일만 해야 한다.</p>
78+
</blockquote>
79+
<p>실용주의 프로그래머를 읽으며, 단일 책임 원칙을 알게 되었다.</p>
80+
<p>근래 단일 책임 원칙이 부서지고 있는 듯하다. AI가 각광받음에 따라, 개발자들이 모든 제품에 AI를 다 갖다 붙이는 중이다.</p>
81+
<p>Apple도 Xcode 26에 AI를 붙여놓았고, T월드에도 AI 추천이 있으며, 카카오 뱅크에도 AI 챗봇이 있고, 한컴에도 AI가 있고, JetBrains IDE에도 AI가 범벅되어 있다.</p>
82+
<p>나는 이렇게 생각한다. 모든 것은 '단일 책임 원칙'을 지켜야 한다. 도대체 왜 IDE에 AI 어시스트가 들어가야 하는가? 코드 작성에만 완전히 집중되어야 하는 것 아닌가? 개발 환경에만 완전히 집중되어야 하는 것 아닌가? 왜 굳이 쓸데없는, 이미 다른 환경을 통해 충분히 사용 가능한 AI를 거기에 굳이 붙여놓는 건가?</p>
83+
<p>나는 이해가 되지 않는다. 프로그램은 계속해서 가벼워지고, 빨라지고, 버그가 fix 되어야 하며, 기능은 더욱더 간단해져야 한다. 근데 왜 요즘의 프로그램들은 기능은 점점 불어나며, 이로 인해 버그는 계속해서 증가하고, 앱은 느려지며, 프로그램은 기하급수적으로 큰 용량을 차지하게 되는가? 이는 결국 기능 블로트로 이어진다.</p>
84+
<p>그리고 웃긴 것은, AI 랍시고 갖다 붙여 놓았으나, 막상 사용해 보면 LLM 모델에 대한 API 호출이다. 그냥 호출하고 필요에 맞게 조작해놓은 것을 AI랍시고 갖다 붙여놓은 거다. 자체 모델을 구축하려는 시도조차 하지 않는 데, 이게 뭔 AI 기능인가?</p>
85+
<p>시대가 아무리 봐도 역행하는 듯하다. 단일 책임 원칙은 아마 10년 전이 더 잘 지켜진 듯하다. 하나의 것은 하나의 일만 해야 한다. 하나의 것들이 모여 새로운 일을 해야 한다.</p>
86+
</article>
87+
</div>
88+
<section class="post-comments">
89+
<script src="https://giscus.app/client.js"
90+
data-repo="chebread/chebread.github.io"
91+
data-repo-id="R_kgDOP0JptQ"
92+
data-category="Announcements"
93+
data-category-id="DIC_kwDOP0Jptc4CwG8I"
94+
data-mapping="title"
95+
data-strict="0"
96+
data-reactions-enabled="1"
97+
data-emit-metadata="0"
98+
data-input-position="top"
99+
data-theme="light"
100+
data-lang="ko"
101+
crossorigin="anonymous"
102+
async>
103+
</script>
104+
</section>
105+
</main>
106+
107+
<footer class="post-footer">
108+
<section>
109+
<p>&copy; 2025 Cha Haneum</p>
110+
</section>
111+
<section>
112+
<a href="https://github.com/chebread">
113+
<span>깃허브</span>
114+
</a>
115+
<a href="mailto:chahaneum@chebread.com">
116+
<span>이메일</span>
117+
</a>
118+
</section>
119+
</footer>
120+
</div>
121+
</div>
122+
123+
<script src="/js/main.js"></script>
124+
</body>
125+
</html>

0 commit comments

Comments
 (0)