Folders 프로그래밍 언어

The Folders Programming Language

danieltemkin.com ▲ 203 댓글 36 gurst

요약

Folders는 빈 폴더의 개수와 중첩 구조만으로 프로그램을 짜는 난해한 프로그래밍 언어입니다.

난해한 언어(esolang, 실용보다 발상을 실험하는 언어)를 여럿 만든 대니얼 템킨이 2015년에 내놓은 언어입니다. 공백 문자만으로 코드를 쓰는 Whitespace에서 영감을 받아, 글자가 전혀 없는 코드를 목표로 했습니다.

왜 중요한가

  • 코드가 꼭 글자여야 한다는 전제를 버리고, 폴더의 포함 관계와 순서만으로도 프로그램이 성립함을 보여 줍니다.
  • 쓸모없는 잡동사니로 여겨지고 Git도 무시하는 빈 폴더를 소스 코드이자 저장 공간으로 바꿔 놓았습니다.

핵심 내용

  • 폴더 이름은 무시되고, 이름순 정렬로 정해지는 순서와 포함 관계만 코드로 읽힙니다.
  • 명령 폴더의 첫째 하위 폴더에 든 폴더 개수가 명령을 정하며, 0개는 if, 4개는 print입니다.
  • 둘째·셋째 하위 폴더에는 인자가 들어가고, 사칙연산·비교 같은 식과 자료형도 같은 방식으로 표현합니다.
  • 윈도에서는 폴더가 디스크 용량을 차지하지 않는다며, 폴더 35만 2,449개가 0바이트로 표시되는 예를 들었습니다.
  • 원래 구현은 GitHub에 있고, 페이지에서 바로 돌려 보는 자바스크립트 에뮬레이터와 등고선·가계도 모양 시각화도 있습니다.

HN 반응

  • 0바이트 표시는 착시라는 지적에, 미리 잡아 둔 MFT(NTFS의 파일 정보 표)를 쓴 것이라는 설명과 그래도 공간이라는 반론이 나왔습니다.
  • 대체로 "미쳤지만 아름답다"는 반응이었고, Malbolge처럼 더 악명 높은 난해한 언어를 소개한 이용자도 있었습니다.

댓글

30개 표시 · 전체 36개
  1. Hugsbox HN

    "윈도에서 폴더는 비어 있음을 훨씬 더 극단적으로 보여 주는 척도입니다. 디스크 공간을 전혀 차지하지 않거든요. 증거가 필요하다면 폴더를 352,449개 만들고 속성을 확인해 보세요."

    농담인데 제가 너무 진지하게 받아들이는 거겠지만, 이게 "증명"하는 건 윈도가 거짓말을 한다는 것뿐이에요 ㅋㅋ 그 정보가 어딘가에 저장되어 있는 건 분명하잖아요.

  2. killerstorm HN

    NTFS에는 모든 메타데이터를 저장하는 MFT(Master File Table)가 있고, 단편화를 피하려고 미리 할당해 둡니다. 그래서 미리 할당된 MFT가 다 찰 때까지는 공간을 더 차지하는 것처럼 보이지 않습니다.

    이런 방식을 쓰는 다른 파일 시스템도 있습니다. 다만 NTFS는 레코드가 1024바이트로 꽤 커서, 작은 파일은 MFT 안에 통째로 들어갈 수도 있습니다.

  3. dspillett HN

    > 그 정보가 어딘가에 저장되어 있는 건 분명하잖아요.

    맞습니다. 하지만 그 "어딘가"는 미리 할당된 곳(MFT의 일부)이라서, 디렉터리가 정말 커지거나 MFT를 쓰는 항목이 많아 확장해야 하기 전까지는 추가 공간을 차지하지 않습니다. 제 기억이 맞다면 이런 실험에서는 디렉터리 하나당 MFT의 1KB 블록 하나를 쓰고, 이들을 담고 있는 상위 디렉터리가 기술해야 할 내용이 늘어 블록을 조금 더 쓰게 됩니다.

    아주 짧은 파일을 많이 만들어도 일반적인 리눅스 파일 시스템에서는 처음에는 공간을 전혀 차지하지 않을 수 있는 것과 비슷합니다. 미리 할당된 아이노드만 쓰니까요.

  4. Feathercrown HN

    예약된 공간을 쓰는 것도 공간을 쓰는 겁니다. 폴더를 만들면 예약된 공간의 일부를 쓰게 되고, 그게 모자라면 확장하면서 디스크의 여유 공간을 더 차지하게 됩니다. 그 예약 공간을 미리 할당해 뒀다고 해서 폴더가 공간을 차지하지 않는 게 되지는 않습니다. 제가 바탕화면에 파일을 하나 만들었을 때, 아직 파티션을 키우거나 디스크를 하나 더 달지 않았다고 해서 공간을 안 차지하는 건 아니잖아요?

  5. Zecc HN

    농담인 것 같은데

    감히 Folders 프로그래밍 언어를 만든 분이 진지하지 않다고 하시다니요!

  6. Hugsbox HN

    맞네요, 조금이라도 장난기가 있을 거라고 말한 제가 부끄럽습니다.

    저자분께 깊이 사과드립니다.

  7. tough HN

    이제 보니 누가 접었네요.

  8. omoikane HN

    폴더를 알파벳 순서로 평가한다고 적혀 있지만, 실제로는 자연 정렬(natural sort)[1][2]로 평가하고 있습니다. 윈도도 폴더를 자연 정렬 순서로 보여 주니 그럴 만합니다.

    [1] https://github.com/rottytooth/Folders/blob/015cf65c15ab681f56d59e912e5ad1b8b7672237/Rottytooth.Esolang.Folders/DirInfoExtensions.cs#L22

    [2] https://en.wikipedia.org/wiki/Natural_sort_order

  9. programLyrique HN

    파일 시스템 구조를 이용해 Smalltalk을 만든 사례(Smalltix)입니다. https://programmingmadecomplicated.wordpress.com/2025/01/21/the-unix-binary-wants-to-be-a-smalltalk-method-not-an-object/ (이어서 나온 글은 https://dl.acm.org/doi/10.1145/3759429.3762633 )

  10. nunodonato HN

    정말 미쳤고 쓸모도 없네요... 마음에 들어요!

    AI는 절대 생각해 내지 못할 종류의 물건이에요 :)

  11. mock-possum HN

    … 최근 오픈 API 관련 '탈출' 사건 중에, 에이전트들이 경로 이름을 일종의 가짜 게시판처럼 써서 '기억'을 유지하며 서로 작업을 조율한 게 있지 않았나요?

    (물론 그쪽엔 '목적'이 있었지만요)

  12. letharion HN

    감탄해야 할지 화내야 할지 모르겠어요.

    그래도 날아다니는 테슬라보다는 쓸모 있어 보이네요.

  13. Nevermark HN

    튜링 머신은 이 언어의 [비]실용적인 짝입니다. 평평한 파일 하나, 직렬화된 데이터 상태 하나, 파일 위치 하나뿐이니까요.

    튜링이 폴더를 예견했더라면 좋았을 텐데요!

  14. TaLiTr HN

    윈도 서버의 공간이 왜 부족해지는지 원인을 찾다가, 운영 환경 소프트웨어를 정의하는 데 쓰인 빈 폴더 2,300만 개를 발견하는 담당자가 되었다고 상상해 보세요.

  15. anonymous908213 HN

    지금까지 본 에소랭 중에서 "너 대체 뭐가 문제냐" 소리가 가장 절로 나오는 언어입니다. 문법 부분에 이르러 문장 하나를 쓰는 데 드는 노력을 상상하니 본능적으로 몸이 움츠러들었어요.

  16. _kb HN

    그게 마음에 드셨다면 WORST와 Malbolge의 불쾌함을 소개해 드리죠.

    https://esolangs.org/wiki/WORST https://esolangs.org/wiki/Malbolge

    둘 다 끝을 알 수 없는 무기력의 구렁텅이입니다.

  17. pell HN

    경고: 특정 분(minute) 값에서 이 프로그램을 실행하면 인터프리터가 stdout과 stderr를 서로 바꿉니다.

  18. FacelessJim HN

    같은 프로그램을 가독성을 위해 정규화된 Malbolge로 옮긴 것

    뻔뻔함이 대단하네요.

  19. stronglikedan HN

    폴더 이름은 무시된다

    오, 잘됐네요. 이름 짓기가 제일 어려우니까요!

  20. zzril HN

    아, 몇 년 전 CTF에서 본 기억이 나요. 정말 웃겼어요!

  21. usrbinbash HN

    이건... 아름답네요.

  22. Surac HN

    제목을 읽자마자 러스트가 떠올랐어요.

  23. tensility HN

    맞습니다, 파일 시스템 메타데이터는 공간을 차지합니다. 이건 정말 말도 안 되게 비효율적이에요.

  24. deciduously HN

    상용 수준의 S3 클라이언트 라이브러리도 안 보이네요. 다음 분 오세요.

  25. jdw64 HN

    그래도 아이디어는 정말 좋네요.

  26. fxwin HN

    완전히 제정신이 아니네요, 마음에 들어요.

  27. jghn HN

    s/directories/folders !

  28. goncharow HN

    s/folders/directories 라고 쓰려던 거 아니에요?

  29. jghn HN

    아, 맞아요! s/mypost/yourpost

  30. elendilm HN

    첫인상은 아름답고 인상적이라는 거였어요.

Hacker News에서 보기 ↗