2010. 2. 1. 01:52

파이썬으로 공부하는 과학자처럼 생각하기 2판 - 추천사




원문 주소: http://openbookproject.net/thinkCSpy/foreword.html

Foreword
By David Beazley
추천사 - 데이비드 비즐리

As an educator, researcher, and book author, I am delighted to see the completion of this book. Python is a fun and extremely easy-to-use programming language that has steadily gained in popularity over the last few years. Developed over ten years ago by Guido van Rossum, Python’s simple syntax and overall feel is largely derived from ABC, a teaching language that was developed in the 1980’s. However, Python was also created to solve real problems and it borrows a wide variety of features from programming languages such as C++, Java, Modula-3, and Scheme. Because of this, one of Python’s most remarkable features is its broad appeal to professional software developers, scientists, researchers, artists, and educators.

교육자, 연구자, 그리고 책의 작가로서 전 이책의 완성이 되었다는 것을 알았을 때 매우 기뻤습니다. 파이썬은 지난 수년동안 즐겁고, 아주 쉽게-쓸수 있는 프로그램 언어로 인기를 얻고 있습니다. 10년전 가이도 반 로즘에 의해 개발된 파이썬은 전반적으로 볼 때, 1980년대에 개발되어 온 교육언어인 ABC로부터 나왔다고 느껴질만큼 간단한 문법을 가지고 있습니다. 하지만, 파이썬은 또한 실제 문제들을 해결하기 위해서 만들어졌으며, C++ 나 자바, 모듈라-3 와 스킴과 같은 다양한 프로그래밍 언어들이 가지고 있는 특징들을 가져와 쓰고 있습니다.

Despite Python’s appeal to many different communities, you may still wonder why Python? or why teach programming with Python? Answering these questions is no simple task—especially when popular opinion is on the side of more masochistic alternatives such as C++ and Java. However, I think the most direct answer is that programming in Python is simply a lot of fun and more productive.

파이썬은 다양한 연구 공동체들에게 다가가고 있지만, 왜 파이썬이라고 생각할 수 있을까요? 아니면 왜 파이썬을 이용해서 프로그래밍을 가르쳐야 한다고 생각하시나요? 그 대답은 간단하지는 않습니다 - 특히 C++ 나 자바와 같은 마초히즘(기존 솔루션을 잘쓰는 분들)의 대안들의 편에 있다면, 더 그러하겠죠. 하지만, 제가 생각하는 정답은 파이썬으로 프로그래밍하는 것이 간단히 말해 아주 재미있고 생산적이라고 두고 싶습니다.

When I teach computer science courses, I want to cover important concepts in addition to making the material interesting and engaging to students. Unfortunately, there is a tendency for introductory programming courses to focus far too much attention on mathematical abstraction and for students to become frustrated with annoying problems related to low-level details of syntax, compilation, and the enforcement of seemingly arcane rules. Although such abstraction and formalism is important to professional software engineers and students who plan to continue their study of computer science, taking such an approach in an introductory course mostly succeeds in making computer science boring. When I teach a course, I don’t want to have a room of uninspired students. I would much rather see them trying to solve interesting problems by exploring different ideas, taking unconventional approaches, breaking the rules, and learning from their mistakes. In doing so, I don’t want to waste half of the semester trying to sort out obscure syntax problems, unintelligible compiler error messages, or the several hundred ways that a program might generate a general protection fault.

제가 컴퓨터 사이언스 수업을 가리칠 때, 전 학생들이 교재에 재미를 느끼고 더 몰입하게 하는 것을 포함하여, 중요한 개념들을 다루고 싶어 합니다. 불행히도, 프로그래밍 수업의 소개부분에서 지루한 부분들이 나오는데, 너무 많은 부분에서 수학적 추상화에 중점을 두는 탓에 많은 학생들이 실증과 좌절을 느낍니다. 그리고 저-수준 문법, 컴파일과정, 불가사의한 규칙처럼 보이는 규정들과 관련되어 나오는 짜증나는 문제들이 존재합니다. 그런 추상화와 방법론적인 부분이 전문적인 소프트웨어 엔지니어들과 컴퓨터 사이언스를 지속적으로 공부하고자 하는 학생분들에게는 중요한 부분이 되겠지만, 그러한 접근을 수업의 도입부분에서 배운다는 것은 컴퓨터 사이언스를 지속적으로 지루하다는 것으로 보이게 만듭니다. 제가 수업을 가르칠 때는, 전 기운빠진 학생들을 받고 싶지가 않더군요. 그래서 전 다른 생각들과 기존의 접근방법과 다른 방식들, 규칙을 깨고, 그들의 실수들을 배움으로 문제를 재미있게 해결하는 학생들의 모습을 볼려고 합니다. 그렇게해서, 애매한 문법 문제들을 정리하거나, 이해할 수 없는 컴파일 오류 메시지들 또는 프로그램이 쏟아내는 수백가지의 일반 보호 오류에 대한 원인과 같은 것들이 학기의 반을 보내지 않을려고 합니다.

One of the reasons why I like Python is that it provides a really nice balance between the practical and the conceptual. Since Python is interpreted, beginners can pick up the language and start doing neat things almost immediately without getting lost in the problems of compilation and linking. Furthermore, Python comes with a large library of modules that can be used to do all sorts of tasks ranging from web-programming to graphics. Having such a practical focus is a great way to engage students and it allows them to complete significant projects. However, Python can also serve as an excellent foundation for introducing important computer science concepts. Since Python fully supports procedures and classes, students can be gradually introduced to topics such as procedural abstraction, data structures, and object-oriented programming — all of which are applicable to later courses on Java or C++. Python even borrows a number of features from functional programming languages and can be used to introduce concepts that would be covered in more detail in courses on Scheme and Lisp.

제가 파이썬을 좋아하는 이유들중에 하나는 개념과 실제 사이의 균형을 정말 잘 잡았다는 것입니다. 파이썬은 인터프리터이기에 초보자 분들은 이 언어를 선택하여, 컴파일이나 링크과정에서 발생하는 문제들로 인해 길을 잃어 버리지 않고 깔끔하게 일을 처리할 수 있습니다. 더군다나 파이썬은 웹-프로그래밍에서 그래픽스에 이르는 다양한 범위에서 존재하는 업무들을 처리하는 방대한 라이브러리들과 함께 제공됩니다. 하지만, 파이썬은 또한 컴퓨터 사이언스의 중요한 개념을 소개하기 위해 휼륭한 기반으로 제공될 수 있습니다. 파이썬은 구조체와 클래스들을 완벽히 지원하기 때문에, 학생들을 절차적 추상화와 데이터 구조, 객체-지향 프로그래밍과 같은 주제들을 점차적으로 배울 수 있습니다 - 이러한 부분들을 향후 배울 자바나 C++ 에 적용될 수 있습니다. 심지어 파이썬은 스킴이나 리스프 언어에서 다루는 개념들을 배우는데 사용될 수 있는 함수 언어에서 존재하는 다수 기능들을 가져왔습니다.

In reading Jeffrey’s preface, I am struck by his comments that Python allowed him to see a higher level of success and a lower level of frustration and that he was able to move faster with better results. Although these comments refer to his introductory course, I sometimes use Python for these exact same reasons in advanced graduate level computer science courses at the University of Chicago. In these courses, I am constantly faced with the daunting task of covering a lot of difficult course material in a blistering nine week quarter. Although it is certainly possible for me to inflict a lot of pain and suffering by using a language like C++, I have often found this approach to be counterproductive—especially when the course is about a topic unrelated to just programming. I find that using Python allows me to better focus on the actual topic at hand while allowing students to complete substantial class projects.

제프레이의 서문을 읽을때, 저는 파이썬이 그 자신에게 고성공과 저좌절감 그리고 더 좋은 결과를 빠르게 얻을 수 있었다는 언급들에 충격을 받았습니다. 그 이유는 이러한 언급들이 도입단계에서 이야기되어 지긴 하나, 전 같은 이유들로 파이썬을 써야한다는 것을 시카고 대학에서 고급 컴퓨터 언어을 가리킬때 이야기하기 때문입니다. 전 9주의 수업기간을 보낼때, 수업 교제들을 다루면서 위압감을 느낄정도로 어려움을 지속적으로 겪고 있습니다. C++ 와 같은 언어들을 사용할 때 많은 고생을 겪으면서 해결을 하지만, 특히 프로그래밍과 관련없는 주제에 대한 부분에서 보통 이런 접근들이 비효율적이라는 것을 발견하게 되었습니다. 전 파이썬을 사용함으로써 학생들이 실질적인 수업 프로젝트의 성공을 이루는 동안 실제의 주제에 더 가까이 집중할 수 있게 되었습니다.

Although Python is still a young and evolving language, I believe that it has a bright future in education. This book is an important step in that direction. David Beazley University of Chicago Author of the Python Essential Reference

파이썬이 아직 젋고, 진화되어가고 있는 도구이지만, 전 이것이 교육분야에서 밝은 미래를 가지고 있다고 믿고 있습니다. 이 책이 이러한 방향에 중요한 한 단계가 됩니다. 시카고 대학에 있는 데이비드 비즐리는 파이썬 핵심 참조의 저자입니다.

 

탐색
 
Copyright Notice
Copyright (C) Jeffrey Elkner, Allen B. Downey and Chris Meyers. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with Invariant Sections being Forward, Preface, and Contributor List, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
저작권 알림
저작권자 (C) 제프리 엘크너, 앨런 B. 다운웨이와 크리스 메이여스. GNU 자유 소프트웨어 제단이 발표한 GNU 자유 문서 라이선스 버전 1.3 또는 그 이후의 조건 하에 이 문서의 분배 또는/그리고 복사가 가능합니다; 변경불가 부분 : 추천사, 서문, 앞-표지문 없음, 뒷-표지문 없음. 이 라이선스의 사본은 "GNU 자유 문서 라이선스" 라는 항목으로 포함되어 있습니다.