본문으로 이동

즐겁게 배우는 하스켈 튜토리얼/1 하스켈을 즐겁게 배우는 방법

위키책, 위키책

1.1 매혹

[+/-]

당신과 마찬가지로, 우리가 컴퓨터를 처음 접했을 때 그 가능성에 매료되었습니다. 프로그램이 마치 모든 것을 가능하게 만드는 듯한 모습을 보며 즐거워했습니다. 그것들을 만들어낸 프로그래머들의 작품은 정말 놀라웠습니다.

1.2 창조하고자 하는 열망

[+/-]

기쁨은 곧 열망으로 바뀌었습니다. 우리만의 프로그램을 작성하고자 하는 열망으로 말이죠. 하지만 어디서부터 시작해야 할까요? 많은 책을 발견하며 지식을 쌓아갔지만, 안타깝게도 실질적인 기술을 익히는 데 필요한 지침은 거의 찾을 수 없었습니다.

1.3 너무 많은 세부사항?

[+/-]

직접 프로그램을 만들어보려고 시도했을 때, 세부사항들이 우리를 혼란스럽게 만들었습니다. 즐거움을 잃고 결국 멈추곤 했죠. 책에서 배운 지식을 어떻게 활용해야 할지 도무지 알 수 없었습니다. 우리의 프로그램은 엉망이었습니다.

1.4 여정의 시작

[+/-]

우리는 지식에 얽매인 듯한 느낌을 받았고, 시작하기 전의 자유로움으로 돌아가고 싶었습니다. 그래서 우리는 지루한 연습과 실패를 견디며 이론을 자신의 것으로 만들기 위해 노력했습니다. 천천히 이해해 나갔습니다. 여전히 길을 밝혀줄 안내는 없었지만, 힘겨운 여정을 지나 마침내 안개가 걷히고 훌륭한 프로그램을 작성할 수 있게 되었습니다. 그리고 여전히 흥분과 기쁨을 느낄 수 있었습니다.

1.5 그리고 이제 당신은...

[+/-]

그래서 당신도 프로그래머가 되고 싶어하는군요. 다행히도, 당신은 이 안내서를 발견했습니다. 이 안내서는 끝까지 이 길을 걸어온 사람들이 작성한 것으로, 우리가 겪었던 고통과 지루함을 덜어주는 데 도움을 줄 것입니다.

1.6 마법은 없지만, 왜 고통이 필요할까요?

[+/-]

여기에는 마법 같은 해결책은 없지만, 더 어렵거나 덜 어려운 길을 선택할 수는 있습니다. 숙달을 원한다면 깊이 있는 연습이 필수이지만, 그렇다고 해서 반드시 고통과 지루함을 감수해야 할 필요는 없습니다. 작은 단계를 따라가며, 즐거움을 동반자로 삼을 것입니다. 하지만, 어떻게 여행을 시작해야 할까요?

1.7 정확한 언어

[+/-]

프로그래밍을 하려면 우리 일상 언어보다 훨씬 더 정밀한 언어가 필요합니다. 그런 언어로 글을 쓰려면 올바른 단어와 엄격한 배열을 알아야 하며, 우리의 의도를 세밀하게 분석하고 그것을 프로그램으로 잘 표현하는 법도 익혀야 합니다. 하지만 이것이 전부는 아닙니다.

1.8 신중함

[+/-]

적은 지식은 위험한 것이지만, 때때로 약간의 성공을 가져오고 무한한 가능성을 열어 주며 흥분을 불러일으킵니다. 열정적인 초보자는 너무 많은 것을 한꺼번에 시도하려다가 곧 혼란에 빠지게 됩니다. 처음의 기쁨은 점차 씁쓸한 실망으로 바뀌고, 결국 포기하거나 더 나쁜 경우에는 좌절감을 분노로 바꾸어 버립니다. 우리는 당신이 그런 길을 걷지 않기를 바랍니다.

1.9 학습의 두 단계

[+/-]

대신, 당신의 학습은 두 단계에 걸쳐 진행될 것입니다. 각 단계는 약간씩 겹치면서 진행됩니다. 각 강의에서는 여러 프로그램을 소개할 것이며, 이를 읽고 이해한 후 직접 입력하는 과정이 당신의 경험 속에 깊이 자리 잡게 할 것입니다. 이러한 연습을 통해 프로그램의 구성 요소를 인식하고, 그것들이 무엇을 하는지 익히는 것이 필요합니다. 이후에는 코드를 조금씩 조정해 보며 변화가 어떻게 일어나는지 살펴볼 것입니다.

1.10 단계별로 쌓아가는 기술

[+/-]

이 과정은 단계적으로 진행됩니다. 지금까지 배운 언어 구성 요소를 활용하여 실제 문제를 해결하는 간단한 방법을 예제로 보여주면서, 점진적으로 난이도를 높여 갈 것입니다. 그렇게 하여 언어의 핵심을 익히고 더 나아가 그 이상을 탐색할 수 있도록 할 것입니다.

1.11 단순하지만 재미있는 예제들

[+/-]

두 번째 단계는 충분한 학습을 통해 작은 작업을 수행할 수 있을 때 시작됩니다. 이번에도 즐거움을 잃지 않도록 적절한 범위 내에서 진행하며, 문제 해결에서 의도 설정, 그리고 코드 작성으로 이어지는 과정을 거꾸로 구축하는 방법을 배울 것입니다. 이 단계에서 당신의 이해는 더욱 확고해질 것입니다. 그리고 점차 보조 바퀴를 제거하면서, 어느 순간 잘 설계된 프로그램을 만들 수 있게 될 것입니다. 그 프로그램은 가독성이 높고, 이해하기 쉬우며, 변경하는 것도 즐거운 코드가 될 것입니다.

많은 책이 해결책을 구성하는 방법에 대해 다루지 않거나, 단순히 몇 가지 연습 문제만 던져 주고 독자의 직감에 맡깁니다. 대부분은 먼저 프로그래밍 언어의 개념을 깊이 다루고, 그 언어를 실제로 어떻게 활용하는지는 나중에 설명하거나 아예 생략하기도 합니다. 하지만 우리는 무엇보다도 유용한 작업을 수행하는 방법을 배우는 데 집중할 것입니다. 언어 자체보다 실용적인 활용에 초점을 맞추면, 배운 개념이 더 깊이 기억에 남고 직접적인 경험으로 연결될 것입니다.

1.12 점진적 학습

[+/-]

우리의 자료는 언어 전체를 점진적으로 익힐 수 있도록 정교하게 구성되어 있습니다. 각 장마다 흥미로운 예제를 통해 자연스럽게 학습할 수 있도록 했으며, 이는 모든 권에 걸쳐 일관되게 이어집니다. 우리는 이런 방식을 선택했습니다. 왜냐하면 전통적인 방식은 지루해서 사람들을 잠들게 만들고, 이는 학습자에게 부담스러우며 비효율적이기 때문입니다.

1.13 자연스러운 습득

[+/-]

수많은 사람들이 프로그래밍을 배우기 어렵다고 느낀 이유는 지루한 예제, 다듬어지지 않은 글쓰기, 그리고 학습자의 흥미보다 언어의 기능 위주로 구성된 자료 때문입니다.

반면, 다양한 반복, 재미있고 유용한 그림, 실생활과 관련된 흥미로운 예제, 그리고 작은 단계별 학습을 활용한 자료들은 큰 성공을 거두었습니다. 이러한 접근 방식을 바탕으로 우리는 전체 시리즈를 구성했으며, 지금 당신이 손에 들고 있는 한 권도 그러한 철학을 반영한 결과입니다.

1.14 동기부여가 최우선이다

[+/-]

만약 동기부여가 우리를 연습하도록 이끄는 핵심 요소라면, 이 시리즈를 통해 당신에게 동기와 흥분을 불어넣을 수 있기를 진심으로 바랍니다. 그리고 우리가 모두 공유하는 학습과 프로그래밍에 대한 사랑을 절대 잊지 않기를 바랍니다. 그것이 언제나 당신을 올바른 길로 인도해 주기를 바랍니다.