HTDP
Preface ¶앞에서
It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?
-- Alan Perlis, Epigrams in Programming
지금처럼 아이들에게 프로그램을 가르치는 교육방식은 맘에 들지 않는다. 계획을 세우고, 생각을 정리하는 원칙을 배우고, 작은 일에 주의를 기울여야하고, 자기비판적인 학습에 무슨 재미가 있을까?
-- 앨런 퍼리스, 프로그래밍에 대한 경구
Many professions require some form of computer programming. Accountants program spreadsheets and word processors; photographers program photo editors; musicians program synthesizers; and professional programmers instruct plain computers. Programming has become a required skill.
전문직 종사자의 대부분은 특정한 형태의 컴퓨터 프로그램이 필요하다. 회계사는 스프레드시트와 워드프로세서가 필요하고, 사진작가는 사진 편집기가 필요하며, 음악가는 신디사이저가 필요하고, 전문 프로그래머는 쉽게 컴퓨터와 대화할 수 있는 프로그램이 필요하다. 프로그램을 짜는 기술은 점점 중요해지고 있다.
Yet programming is more than just a vocational skill. Indeed, good programming is a fun activity, a creative outlet, and a way to express abstract ideas in a tangible form. And designing programs teaches a variety of skills that are important in all kinds of professions: critical reading, analytical thinking, creative synthesis, and attention to detail.
그래도 아직까지는 프로그래밍은 업무를 위한 기술이다. 사실 좋은 프로그래밍은 상당히 재밌고, 창의성을 표현하는 수단이며, 실질적인 모양으로 머리속에 있는 생각을 표현하는 방법이다. 또한, 모든 전문직에서 중요하게 여기는 다양한 기술을, 프로그램을 만들면서 배울 수 있다. 요점을 파악하고, 분석적으로 생각하고, 창의적으로 이를 통합하고, 상세한 것에 주의를 기울이면서 말이다.
We therefore believe that the study of program design deserves the same central role in general education as mathematics and English. Or, put more succinctly,
우리들은 프로그램 짜는 방법을 다 가르치지는 않는다고 해도, 수학과 국어를 가르치는 것처럼 교육에서 중요한 과목이어야 한다고 생각한다.
everyone should learn how to design programs. ¶모든 이가 프로그램 짜는 방법을 배워야한다.
On one hand, program design teaches the same analytical skills as mathematics. But, unlike mathematics, working with programs is an active approach to learning. Interacting with software provides immediate feedback and thus leads to exploration, experimentation, and self-evaluation. Furthermore, designing programs produces useful and fun things, which vastly increases the sense of accomplishment when compared to drill exercises in mathematics. On the other hand, program design teaches the same analytical reading and writing skills as English. Even the smallest programming tasks are formulated as word problems. Without critical reading skills, a student cannot design programs that match the specification. Conversely, good program design methods force a student to articulate thoughts about programs in proper English.
한편으로, 프로그램을 짜면 수학처럼 분석적인 기술 배울 수 있다. 하지만, 수학과는 다르게, 프로그램은 동작하기 때문에 직접적으로 배우기가 쉽다. 소프트웨어와 대화하는 것은 즉각적인 반응을 볼 수 있으므로, 탐험과 실험, 자기학습을 이끈다. 또한, 프로그램을 짜면서 유용하고 재밌는 것을 만들기때문에 수학 문제를 풀어보는 것과 비교하면 성취감은 더 크다.
또다른 한편으로, 프로그램을 짜면서 국어에서처럼 분석적인 읽기와 쓰기 기술을 배울 수 있다. 가장 간단한 프로그램을 짜려고 해도 Word Problem처럼 정확해야한다. 요점을 파악하지 못하는 학생은 명세에 맞는 프로그램을 만들 수 없다. 반대로 말하자면, 프로그램짜는 방법이 잘 만들어지면, 표준어를 하듯이 프로그램에 대한 생각을 알맞게 표현하도록 할 수 있다.
|