프로그래밍과 시: 창의적 반란의 공통점
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
바이브코딩
대상자
- 대상자: 프로그래머, 시인, 창의적 개발자
- 난이도: 중급 이상 (코드 예시와 시적 구조 이해 필요)
핵심 요약
- 구조와 규칙의 공유: 시와 프로그래밍 모두 규칙을 이해하고 그를 흔들거나 위반하는 창의적 과정을 공유함.
- 예시 강조:
- Python의 haiku_generator
함수는 시의 5-7-5 구조를 의도적으로 위반하여 "시적" 코드를 생성.
- Haskell로 작성된 소네트는 함수형 프로그래밍과 시적 형식의 결합을 보여줌.
- 창의적 접근: "의도적 실수"는 시와 코드 모두에서 예술적 효과를 창출.
섹션별 세부 요약
1. 시와 프로그래밍의 공통점
- 규칙과 창의성: 두 분야 모두 규칙을 철저히 이해한 후 그를 유연하게 적용하거나 위반하는 과정이 핵심.
- 예시:
- 시에서 "split infinitive"와 프로그래밍에서 "C++ 연산자 오버로딩"은 각각 규칙의 흔들림을 보여줌.
- 줄 바꿈과 세미콜론은 시와 코드에서 구조적 영향을 미침.
2. 코드 예시: 시적 구조를 반영한 함수
- Python의
haiku_generator
:
- line2
는 5-7-5 규칙을 의도적으로 위반하여 "시적" 효과를 강조.
- 코드:
```python
def haiku_generator(subject):
line1 = f"{subject} whispers dreams"
line2 = "8-bit shadows flicker" # 7자 위반
line3 = "Compile at sunrise"
return "\n".join([line1, line2, line3])
```
- Haskell 소네트:
- 함수형 프로그래밍을 활용해 시의 형식을 재현.
- 코드:
```haskell
sonnet :: String
sonnet =
"O purest monad, in thy type I trust\n" ++
"Through lazy eval, my functions flow like dust\n" ++
-- ...
```
3. 디버깅과 시 수정의 유사성
- 문제 탐색:
- 시: 이미지가 지루하다 ("time is a river" 반복).
- 코드: 무한 루프 (while(true)
).
- 반복적 개선:
- 시: "river" → "carousel", while(true)
→ for
로 범위 제한.
- 코드: 스탠자 읽기 → 스크립트 실행으로 검증.
4. HTML/CSS 예시: 시적 요소 도입
- HTML:
- code
→ 줄 바꿈을 통해 시적 구조 생성.
is your
poem
- CSS:
- .ghost-bug
클래스명으로 "잊힌 세미콜론"을 풍자.
- 주석:
```css
/ Too many devs forget the semicolons, so I made this comment instead /
.ghost-bug {
opacity: 0.42;
color: #ff00ff;
}
```
5. 정규표현식과 시의 결합
- Regex Poetry:
- (?<=love)(able)?\b
→ "unloveable"와 "love"의 시적 해석.
- 예시:
```
“unloveable” passes,
“love” alone beckons to absences—
lookahead to pain.
```
결론
- 핵심 팁:
- 코드와 시의 규칙을 완벽하게 이해한 후 의도적으로 흔들거나 위반하여 창의적 결과를 도출.
- 예: "Hello, World!"를 시적 구조로 출력하는 프로그램 작성.
- "Hybrid Thinking"을 실천해 논리 게이트와 메타포를 모두 이해하는 능력 향상.