คุณ Philip Guo ผู้ก่อตั้งเว็บ Online Python Tutor เขียนตัววิเคราะห์การเลือกภาษาโปรแกรมสำหรับการเรียนเขียนโปรแกรมในมหาวิทยาลัยชั้นนำของสหรัฐ พบว่าภาษา Python มีการใช้งานขึ้นนำแทนภาษา Java แล้ว
เกณฑ์การเลือกมหาวิทยาลัยใช้ข้อมูลจาก US News หมวดมหาวิทยาลัยที่ขึ้นชื่อในคณะวิทยาการคอมพิวเตอร์ โดยเขาเลือกมหาวิทยาลัย 39 ชื่อแรกมาประมวลผล
เนื่องจากแต่ละมหาวิทยาลัยก็ใช้รหัสวิชาแตกต่างกันไป ในการสำรวจนี้ เขาจึงตั้งชื่อวิชาว่า CS0 ไว้เป็นตัวแทนวิชาเขียนโปรแกรมสำหรับนักศึกษานอกเอกวิทยาการคอมพิวเตอร์ และตั้งชื่อวิชาว่า CS1 สำหรับนักศึกษาเอกวิทยาการคอมพิวเตอร์ ซึ่งวิชาทั้งสองนี้จะต้องสามารถลงเรียนได้ทันทีไม่มีวิชาพื้นฐานอื่นก่อนหน้า
ผลลัพธ์จำนวนรายวิชาที่เลือกใช้ภาษาโปรแกรมต่างๆ ในการสำรวจครั้งนี้
ผลลัพธ์ชี้ให้เห็นว่า ภาษา Python ได้รับความนิยมจนแซงภาษา Java ไปเรียบร้อย ด้วยความเรียบง่ายเหมือนดังการเขียนรหัสเทียม ในขณะที่ยังนำไปใช้งานได้กับการเขียนโปรแกรมที่ซับซ้อนในโลกการทำงานจริงได้ ถึงแม้ภาษา Java จะไม่ครองตำแหน่งภาษาแรกสำหรับนักศึกษาแล้ว แต่รายวิชาในขั้นสูงถัดขึ้นไปก็ยังเป็นที่นิยมใช้อยู่ครับ
ภาษาในลำดับถัดมาคือ MATLAB ที่เน้นกลุ่มเป้าหมายไปที่นักศึกษาวิศวกรรมศาสตร์-วิทยาศาสตร์ ที่ต้องพึ่งพาการคำนวณหนักๆ ส่วน C++ และ C นั่นคือภาษาที่ยังเหลือสอนอยู่ ไม่ได้เปลี่ยนไปใช้ Java ในรอบที่แล้วครับ
ส่วนภาษาแปลกๆ อย่าง Scheme ก็ดูเหมือนจะเป็นความต้องการของอาจารย์ที่หลงใหลในการเขียนโปรแกรมเชิงฟังก์ชันไม่กี่กลุ่ม
ปิดท้ายด้วยความประหลาดใจกับภาษา Scratch ภาษาโปรแกรมแบบลาก-วางที่แม้ตอนนี้จะยังไม่มีบทบาทในโลกการทำงานจริงมากนัก แต่ก็แสดงให้เห็นถึงความพยายามในการทำให้การสอนเขียนโปรแกรมง่ายขึ้นครับ
คุณ Guo ทิ้งท้ายไว้ว่า หากย้อนกลับมาทำการสำรวจแบบนี้อีกในห้าปี สิบปี หรือยี่สิบปี ผลลัพธ์จะยังเป็นเช่นนี้อยู่หรือไม่ ภาษาใดจะครองอันดับความนิยมนี้
ที่มา: บล็อกของ Philip Guo ที่ Communications of the ACM
ผมเข้าใจว่ามหาวิทยาลัยในไทยหลายแห่งก็ได้เริ่มทดลองใช้ Python เป็นภาษาแรกกันบ้างแล้ว แต่เท่าที่ได้รับข้อมูลมาผลตอบรับยังไม่ดีเท่าไหร่ ก็ขอให้อดทนค่อยๆ ปรับหลักสูตรและเทคนิคการสอนนะครับ
Comments
การศึกษาคงใช่
แต่พอเข้าสู่ตลาดโลก กลับกลายเป็น Java ไม่ก็ C เพราะ smart phone และ tablet
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://mashable.com/2014/01/21/learn-programming-languages/
http://langpop.com/
http://www.udemy.com/blog/best-programming-language/
ไม่รู้จะหามาตราฐานตรงไหน
แต่รู้ว่าเว็บทั่วโลกอันดับหนึ่งตอนนี้กลับมาเป็น google หลังจากที่เคยเป็น facebook
I think that it's just a good initiation for those students who don't study in directly related computer fields, ex. accounting, other sciences, other engineering. So they can try some basic programming for their own experiments instead of being feared.
For those who are computer science or computer engineering students will eventually have to study high performance language anyway.
ไม่มี COBOL เหรอ
OTL
ภาษาแรก c -> vb -> java -> c#
เหมือนผมเลยเราคงเป็นเพื่อนกันได้ :D
ไม่ค่อยชอบindentationของpython น่ารำคาญ แต่ใช้pythonเพราะ python notebookนี่แหละ ง่ายต่อการบันทึกงานวิจัย
ปัญหาของคนส่วนใหญ่คือ มักจะเลือกสิ่งที่ตัวเองเชื่อ แทนที่จะเลือกสิ่งที่เหมาะกับงานนั้นๆ
แต่ปัญหาจริงๆอาจจะไม่ใช่แบบนั้นก๋ได้ ปัญหาจริงๆอาจจะมาจากคนที่เลือกเคยคลุกคลีอยู่แต่กับสิ่งที่เลือก เลยทำให้ไม่รู้จักสิ่งอื่นๆว่าในบางงานมันอาจจะเหมาะกว่าสิ่งที่เลือก
เห็นด้วยครับ เพราะบางครั้งเคยอยู่กับสิ่งหนึ่งนานๆ เช่น เคยเขียนแต่ VB จนชำนาญแล้ว ขี้เกียจศึกษาตัวอื่นๆ หรือลองแล้วไม่โดนใจเพราะไม่เหมือนสิ่งที่ตัวเองเคยทำ สุดท้ายตัวที่ดีที่สุดสำหรับงานแต่ละงานย่อมแตกต่างกัน สำคัญคือคนที่เป็นโปรแกรมเมอร์ต้องเปิดใจและให้เวลาตัวเองเรียนรู้สิ่งใหม่ๆ จะได้ไม่ย่ำอยู่กับที่ เหมือนสมัยก่อนผมชอบแต่ Delphi เลยไม่ค่อยเปิดใจกับ VB6 เพราะไม่ชอบหลักการที่ต้องติดตั้งตัว Runtime แต่สุดท้ายต้องใช้ VB6 เพราะเงินดี เสร็จแล้วด้วยความขี้สงสัยว่า java มันเป็นไงถึงได้ใช้เขียนโปรแกรมระดับใหญ่ๆ ก็เลยลองศึกษาดู และสุดท้ายผมว่า java นี่แหละตอบโจทย์ผมได้มากที่สุด เพราะตอนนี้ java สร้างงานและรายได้ผมเพิ่มขึ้น เป็นต้น
เห็นด้วยครับ อาจารย์ บางคน อาจจะไม่ได้ออกมาทำงานก่อนก็ได้ เรียนจบ ก็ เป็นครูเลย (แค่บางคนน่ะครับ)
ผมว่ามันง่ายดีนะ แต่ผมมันก็ทำให้ผมสับสนตอนใช้ ชอบสลับกับC# ไม่ก็จาวาจริงๆ โดยเฉพาะคลาสเนี่ย
ตอนนี้ สสวท. ของไทยเรา
ก็มีหลักสูตร Scratch แล้วนะครับ ผมสอน ม.1 - ม.2
ฺฺBASIC กับ Pascal ครับ
ดักแก่
แก่มากกกกกกกกกกกกกก
..: เรื่อยไป
หลักสูตรอาชีวะศึกษาในไทยยังมีพวกนี้อยู่ครับ ก็..... นะ
Pascal
begin
Writeln ('I am Pascal.');
end.
บล็อก: wannaphong.com และ Python 3
มหาลัย => มหาวิทยาลัย
มหาวิทยลัย => มหาวิทยาลัย
ผลลัพท์ => ผลลัพธ์
หลงไหล => หลงใหล
ขอบคุณครับ
C++ กับ Java ครับ
รหัสเทียม = pseudo code
เอ คำนี้คิดว่าถอดศัพท์มาก็น่าจะเข้าใจตรงกันหมดนะครับ
C, JAVA, Python, Postscript ครับ
ได้เรียน Scheme ตอนปี 1 >.<
เริ่มศึกษาจาก Pascal ต่อด้วย C JAVA ASP.net ตามลำดับ
ภาษาที่เริ่มต้นศึกษาคือ ควรจะเข้าใจง่าย จะได้เป็นการเปิด สมองเข้าสู่โลก Logic ให้ความคิดมีถูกผิด ซ้ายขวา วนลูปได้ ต่อไป พอจับภาษาใหม่ๆ มันก็จะได้เริ่มศึกษาได้ง่ายขึ้น
นักศึกษาจะเรียนอะไรเป็นภาษาแรกมันก็ได้ทั้งนั้นแหละ
แต่สุดท้ายแล้วเมื่อเรียนครบ 4 ปีจบแล้ว ควรจะมีความรู้ programming paradigm ทุกแขนงไม่มากก็น้อย ไม่ว่าจะเป็น imperative programming(C,C++,Java), functional programming(Haskell,Erlang), logic programming(Prolog), object-oriented programming(Java,C++), generic programming(C++) ฯลฯ
แล้วแต่ว่าคนนั้นๆจะถนัดหรือชอบทางไหน ถนัดอย่างไหนชอบอย่างไหนก็เลือกเอาเพื่อไปประกอบสัมมาชีพ
functional programming นี่พูดยากครับ มีความรู้ติดตัวไว้บ้างก็ดี แต่ไม่มีก็ไม่เป็นไร ยังไงเสียทุกวันนี้เราก็วุ่นวายกับ oop กันมากกว่าอยู่แล้วครับ (เอาจริงๆ คือ functional จ๋าไม่ค่อยมีคนใช้ทำงานทั่วไปด้วย เขียน loop ก็งง เปลี่ยนค่าตัวแปรก็วุ่นวาย)
ส่วน logic programming นี่เรียนจบแล้วหลุดโลกเลย ...
ผมเห็นด้วยนะว่าถ้าไม่ได้เรียนเพื่อไปเป็นอาจารย์หรือนักวิจัย functional programming มันใช้ประโยชน์ไม่ค่อยไ้ด้ในอุตสาหกรรม แต่ก็ควรเรียนไว้เปิดโลกทัศน์
สมัยผมเรียนป.ตรี ที่วิทยาลัยเค้าก็สอน haskell นี่แหละเป็นภาษาแรก
แข็งแกร่งยิ่งนัก ป.ตรีเรียน Haskell เป็นภาษาแรก กราบสามจบ
เอาเข้าจริงผมว่าจำเป็นมากนะ คนไม่มีพื้นฐานส่วนนี้เลย จะมีปัญหาเวลาเจอ closure, await (promise), coroutine, continuation หรือพวก functional data structure อื่นๆ (ที่สร้างจาก data structure พื้นฐาน)
แนวคิดของ logic programming ก็มีแอบๆ ไว้ใน decision tree
ซึ่งเกือบทั้งหมดเคยเจอในโปรเจคขนาดกลางโปรเจคเดียว ที่เขียนด้วยภาษา imperative
ซึ่งถ้าไม่มีพื้นฐานก็แทบจะไปต่อไม่ได้เลยครับ
closure นี่ผมมองว่ามันเป็นความมหัศจรรย์ที่เกิดขึ้นเมื่อเราผลักดันค้นคว้าขีดความสามารถด้าน lexical scope ไปจนสุดทางนะครับ คือโอเคว่ามันเจ๋ง มันดูเข้าใจยาก แต่มันก็เวิร์ก (เช่นเดียวกะพวก Y combinator) แต่ถ้าถามว่าแล้วเขียนง่ายๆ ธรรมดาๆ ให้โปรแกรมเมอร์ทั่วไปอ่านเข้าใจโดยไม่ต้องปวดหัวไม่ได้เหรอ ผมว่าแค่ class ง่ายๆ ก็ตอบโจทย์ได้หมดนะ ยอมเสีย namespace นิดนึง
ส่วน await, coroutine, continuation นี่ผมว่ามันออกแนว parallel/concurrent เยอะนะฮะ ถึงจะรู้ functional มาก่อนบ้าง แต่พอเจอเข้าไปก็อาจต้องเริ่มนับใหม่จาก 0 อยู่ดี
ด้าน data structure จากฝั่ง functional มีตัวเดียวที่ผมว่าควรเข้าใจมันอย่างถ่องแท้คือ tuple ครับ :p
ที่ ม ผมสอน LC-3 (Assembly บน Emulater แบบนึง) >> C >> Java และก็ภาษาเว็บต่างๆ (HTML, Javascript, PHP, ASP.NET, JSP) และตอนทำโปรจบก็ใช้ python กับ webGL
SWU Wooo
ผมเรียน C++ (แต่เป็น procedural ล้วน ๆ ไม่มี OO, Meta) แล้วไป Java ครับ
สิบกว่าปีละนะ อาจจะเปลี่ยนแล้ว
ผมเขียน Lua อิอิ
ผมไม่ค่อยชอบ Python เท่าไหร่ ถ้าเปลี่ยนไปสอน javascript อาจจะดีกว่าหรือเปล่า
ไม่ดีครับ แค่ใช้ == เปรียบเทียบของก็ยากแล้ว แถมยังให้ประกาศตัวแปรแบบไม่ต้องมีคำว่า var ได้ เด็กใหม่ที่เพิ่งเริ่มเขียนโปรแกรมสร้าง bug กระจุยกระจายชัวร์ แล้วไหนยังจะเรื่อง ; จบประโยคที่ไม่ต้องมีก็ได้อีก ทำงานกันหลายคนมีหวังแก้โค้ดกันจนเกิด if/loop ที่ไม่มี body แน่ๆ