เดือนมกราคม ปีค.ศ. 1999 ตอนนั้น ผมกำลังเตรียมสอนวิชาการเขียนโปรแกรมเบื้องต้น ที่เป็นภาษาจาวา. ผมสอนวิชานี้มาแล้วสามครั้ง จนผมเองเริ่มกลุ้มใจ อัตราการตกสูงมาก และแม้กับนักศึกษาที่ผ่าน ระดับของความสำเร็จโดยรวมก็ยังต่ำมาก.
ปัญหาหนึ่งที่ผมเห็นก็คือ หนังสือ. แต่ละเล่มหนามาก มีรายละเอียดภาษาจาวาที่เกินความจำเป็นเยอะมาก แต่มีการสอนเกี่ยวกับการเขียนโปรแกรมน้อยเกินไป. และหนังสือพวกนี้ ทั้งหมดก็มีปัญหาประตูลับ เหมือนกันหมดเลย คือ มันจะเริ่มจากง่ายๆ และค่อยๆ ดำเนินไปช้าๆ จนประมาณบทที่ 5 อยู่ดีๆ เหมือนพื้นร่วงไปเลย ทุกอย่างเปลี่ยน. เรื่องใหม่ๆ มาเยอะมาก เร็วมาก จนผมต้องใช้เวลาที่เหลือในเทอม มาแก้ มาเก็บซากหักพังต่างๆ.
สองสัปดาห์ก่อนจะเริ่มสอนเทอมใหม่ ผมเลยตัดสินใจว่าจะเขียนหนังสือของตัวเอง. เป้าหมายคือ
ผมต้องการชื่อหนังสือ และก็ลังเลๆ ผมก็เลือกวิธีคิดแบบวิศวกรคอมพิวเตอร์.
เวอร์ชั่นแรกของหนังสือค่อนข้างหยาบ แต่มันก็ได้ผล. นักศึกษาอ่านหนังสือ และก็เข้าใจเนื้อหาพอที่ผมใช้เวลาไปสอนเนื้อหาที่ยากๆ และน่าสนใจได้ และ (สำคัญที่สุด) ผมได้มีเวลาให้นักศึกษาได้ฝึกปฏิบัติ.
ผมออกหนังสือเล่มนี้ภายใต้ ลิขสิทธิ์เอกสารอิสระจีเอนยู (GNU Free Documentation License) ที่อนุญาตให้ผู้ใช้ สำเนา แก้ไข หรือแจกจ่าย หนังสือได้.
เรื่องที่เกิดต่อมา เป็นสิ่งที่เจ๋งมาก. เจฟ เอลค์เนอร์ ครูมัธยมในรัฐเวอร์จิเนีย ใช้หนังสือของผม และแปลมันไปเป็นภาษาไพธอน. เขาส่งสำเนาการแปลของเขาให้ผม ผมก็เลยได้ประสบการณ์ที่ประหลาดของการเรียนไพธอน จากการอ่านหนังสือของผมเอง. ในฐานของสำนักพิมพ์กรีนที ผมก็เผยแพร่หนังสือไพธอนเวอร์ชั่นแรกในปี ค.ศ. 2001.
ปี ค.ศ. 2003 ผมเริ่มสอนที่วิทยาลัยโอลิน และผมก็ได้สอนไพธอนเป็นครั้งแรก. มันต่างกับจาวาชัดมาก. นักศึกษามีปัญหาลดลง เรียนได้มากขึ้น ทำโปรเจคที่น่าสนใจได้มากขึ้น และโดยส่วนใหญ่ ก็สนุกขึ้นมาก.
ตั้งแต่นั้นมา ผมก็พัฒนาหนังสือมาเรื่อยๆ แก้ข้อผิด ปรับปรุงตัวอย่าง เพิ่มเนื้อหา โดยเฉพาะแบบฝึกหัดต่างๆ. ผลลัพธ์ก็คือ หนังสือเล่มนี้ ที่ปัจจุบันชื่ออหังการน้อยลง เป็นคิดไพธอน. การเปลี่ยนแปลงส่วนหนึ่ง ได้แก่
ฉบับพิมพ์ที่สองของคิดไพธอนมีการปรับปรุง ดังนี้
Swampy
ที่เขียนเอง ไปเป็นโมดูลมาตราฐานของไพธอน turtle
ที่ติดตั้งง่ายกว่า แล้วก็มีความสามารถมากกว่า.ผมหวังว่า ผู้อ่าน จะสนุกที่เรียนรู้จากหนังสือเล่มนี้ และว่ามันจะได้ช่วยผู้อ่านเรียนเขียนโปรแกรม และฝึกที่จะคิดแบบวิศวกรคอมพิวเตอร์ (อย่างน้อยก็สักนิดหนึ่ง).
อัลเลน บี ดาวนี่ (Allen B. Downey)
วิทยาลัยโอลิน (Olin College)
ขอบคุณมากๆ กับเจฟเอลค์เนอร์ ผู้ที่แปลหนังสือจาวาของผมมาเป็นไพธอน ที่ทำให้โปรเจคนี้เริ่ม และทำให้ผมได้รู้จักสิ่งที่ได้กลายมาเป็นภาษาโปรดของผม
ขอบคุณเช่นกันกับคริสเมเยอส์ ที่ช่วยหลายๆ หัวข้อของ วิธีคิดแบบวิศวกรคอมพิวเตอร์.
ขอบคุณมูลนิธิซอฟต์แวร์อิสระ ที่ได้ทำลิขสิทธิ์เอกสารอิสระจีเอนยูขึ้น ซึ่งได้ช่วยให้เกิดความร่วมมือกันกับเจฟและคริสได้ รวมถึงครีเอทิฟคอมมอนส์ (Creative Commons) ที่เป็นลิขสิทธิ์ที่ผมใช้อยู่ตอนนี้.
ขอบคุณเหล่าบรรณาธิการที่ลูลู ที่ช่วยทำวิธีคิดแบบวิศวกรคอมพิวเตอร์.
ขอบคุณเหล่าบรรณาธิการที่โอไรลี่มีเดีย ที่ช่วยทำ คิดไพธอน.
ขอบคุณนักเรียนนักศึกษาทุกคน ที่ใช้เวอร์ชั่นแรกๆ ของหนังสือเล่มนี้ และก็ผู้ช่วยเหลือทุกๆ ท่าน (ดังรายนามข้างล่าง) ที่ช่วยส่งการแก้ไขจุดผิด และคำแนะนำต่างๆ.
[รายนามนี้เป็นเสมือนการสื่อสารระหว่างผู้เขียน, อัลเลน ดาวนี่, กับผู้ช่วยเหลือ คณะผู้แปลเห็นควรปล่อยไว้ในรูปของภาษาต้นฉบับ]
More than 100 sharp-eyed and thoughtful readers have sent in suggestions and corrections over the past few years. Their contributions, and enthusiasm for this project, have been a huge help.
If you have a suggestion or correction, please send email to feedback@thinkpython.com
. If I make a change based on your feedback, I will add you to the contributor list (unless you ask to be omitted).
If you include at least part of the sentence the error appears in, that makes it easy for me to search. Page and section numbers are fine, too, but not quite as easy to work with. Thanks!
horsebet.py
, which was used as a case study in an earlier version of the book. Their program can now be found on the website. catTwice
function in Section 3.10.increment
function in Chapter 13.makeTime
, a correction in printTime
, and a nice typo.arc
.spot
ted an error in Chapter 8.arc
.math.pi
too early. And Zim spotted a typo.tuple
as a variable name, contrary to my own advice. And then found a bunch of typos and a “use before def”.is_abecedarian
and sent some additional corrections. And he knows how to spell Jane Austen.uses_only
.polyline
was defined differently in two places.input
shadows a build-in function.cmp
in Python 3.In addition, people who spotted typos or made corrections include Czeslaw Czapla, Richard Fursa, Brian McGhie, Lokesh Kumar Makani, Matthew Shultz, Viet Le, Victor Simeone, Lars O.D. Christensen, Swarup Sahoo, Alix Etienne, Kuang He, Wei Huang, Karen Barber, and Eric Ransom.
เป็นเรื่องที่แปลกมาก ที่คณะผู้แปลเองก็มีประสบการณ์คล้ายๆ กับผู้เขียน. นั่นคือ จากการสอนการเขียนโปรแกรมคอมพิวเตอร์พื้นฐาน ซึ่งเป็นวิชาเขียนโปรแกรมวิชาแรก ของนักศึกษาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น คณะผู้แปลพบว่า การสอนการเขียนโปรแกรมให้กับนักศึกษา เป็นหนึ่งในงานที่ท้าทายที่สุด โดยเฉพาะสำหรับนักศึกษาที่ไม่เคยเขียนโปรแกรมมาก่อน. นอกจากนั้น คณะผู้แปลเองก็มองว่า สิ่งที่สำคัญที่สุดสำหรับวิชาการเขียนโปรแกรมนั้น น่าจะเป็นทักษะการแก้ปัญหา ซึ่งก็ตรงกับความเห็นของผู้เขียนเช่นกัน. ดังนั้น เมื่อคณะผู้แปลได้พบหนังสือเล่มนี้ (ฉบับภาษาอังกฤษ) ก็รู้สึกว่า หนังสือเล่มนี้เขียนขึ้นมา ด้วยปรัชญาที่ตรงกับใจของคณะผู้แปล (กระชับ เรียบง่าย ค่อยๆ ดำเนินเนื้อหาทีละขั้นเล็กๆ และที่สำคัญคือ เน้นที่การเขียนโปรแกรม มากกว่าตัวภาษา และมีกลุ่มเป้าหมายหลักคือ นักศึกษาที่เพิ่งเรียนเขียนโปรแกรมเป็นครั้งแรก) คณะผู้แปลจึงสนใจที่จะแปลมาเป็นภาษาไทย เพื่อให้นักศึกษา รวมถึงผู้สนใจทั่วไป ได้มีตำราที่เหมาะสำหรับผู้เริ่มเรียนเขียนโปรแกรมใหม่ และเข้าถึงได้ง่ายขึ้นจากการที่เป็นภาษาแม่ที่คุ้นเคย. คณะผู้แปล รู้สึกขอบคุณที่ผู้เขียน อัลเลน ดาวนี่ ที่ได้เผยแพร่หนังสือเล่มนี้ภายใต้ลิขสิทธิ์ ที่ช่วยให้ผู้อ่านเข้าถึงได้ง่าย จึงได้ขออนุญาตผู้เขียน เพื่อทำการแปลหนังสือเล่มนี้ออกมาเป็นตำราภาษาไทย.
อย่างไรก็ตาม ในการแปลอาจมีการปรับคำศัพท์บางอย่าง เพื่อให้กระชับ ตรงตามความหมาย และเข้ากับบริบทของไทย รวมถึงสะท้อนจุดประสงค์และกลุ่มเป้าหมายหลักของผู้แปล. การปรับคำศัพท์นี้ คณะผู้แปลได้กระทำอย่างระมัดระวัง เพื่อไม่ให้กระทบกับจุดประสงค์ และเนื้อหาหลักๆ ของตำรา. นอกจากนั้น เนื่องจากตำรานี้เป็นการแปล จากภาษาอังกฤษที่สื่อสารด้วยทำนองที่ค่อนข้างเป็นกันเอง และจุดประสงค์หลักคือ มุ่งเน้นให้ผู้อ่านเข้าถึงได้ง่าย ดังนั้น คณะผู้แปลจึงขออนุญาตแปล โดยใช้ภาษาไทยในรูปแบบที่เป็นทางการน้อยกว่า ตำราวิชาการทั่วไป คณะผู้แปลก็ขออภัยมา ณ ที่นี้ด้วย.
https://greenteapress.com/thinkpython2/html/thinkpython2001.html