Tags:
Node Thumbnail

การแข่งขันเขียนโปรแกรมแก้โจทย์ปัญหาระดับอุดมศึกษา ACM-ICPC รองรับการส่งคำตอบด้วยภาษาโปรแกรม Python และ Kotlin สำหรับรอบการแข่งขันรอบชิงแชมป์โลก 2018 แล้ว

การรองรับภาษา Python นั้นเริ่มตั้งแต่ปีที่ผ่านมา โดยผู้เข้าแข่งขันสามารถเลือกได้ว่าจะใช้ Python 3.5 พร้อม interpreter จากผู้พัฒนาภาษาเพื่อความสามารถใหม่ๆ หรือจะถอยไปใช้ Python 2.7 ที่รันบน PyPy อีกที เพื่อเร่งความเร็วในการคำนวณก็ย่อมได้

ส่วนภาษา Kotlin 1.1 ที่เพิ่งเพิ่มเข้ามาในปีนี้ ก็ทำให้การแข่งขันดังกล่าวรองรับการส่งคำตอบมากถึง 5 ภาษา ซึ่งภาษาอื่นๆ ได้แก่ C, C++ และ Java ที่อยู่คู่การแข่งขันมาอย่างยาวนานนั่นเอง

No Description

การรองรับภาษาเหล่านี้ เป็นเพียงข้อกำหนดสำหรับรอบชิงแชมป์โลกเท่านั้น การแข่งขันในรอบภูมิภาคอาจใช้กฏการแข่งขันที่แตกต่างออกไป

อนึ่ง การเลือกใช้ภาษาที่ประมวลผลได้ช้ากว่า จะไม่ได้รับการผ่อนปรนด้านข้อจำกัดทางเวลาแต่อย่างใด และกรรมการจะตรวจทานโจทย์ด้วยการเขียนเฉลยใน 2 ภาษา คือ C/C++ และ Java เท่านั้น

การรองรับหรือยกเลิกภาษาโปรแกรมในการแข่งขันดังกล่าวไม่ได้เกิดขึ้นเป็นครั้งแรก เพราะในปี 1988 ก็มีการยกเลิกภาษา FORTRAN เนื่องจากไม่สามารถเขียน recursion ได้ และปี 2007 ก็ยกเลิกภาษา Pascal ปิดตำนานหนึ่งในสองภาษาดั้งเดิมที่การแข่งขันนี้รองรับ

การแข่งขันรอบชิงแชมป์โลก 2018 จะจัดขึ้นในวันที่ 15-20 เมษายน 2018 ณ มหาวิทยาลัยปักกิ่ง โดยปีนี้บริษัท JetBrains เป็นสปอนเซอร์ด้านเครื่องมือเขียนโปรแกรมครับ

อ้างอิง: คู่มือสภาพแวดล้อมเครื่องสำหรับการแข่งขัน ACM-ICPC ปี 2017 และปี 2018, บล็อกคุณ redviper บน Codeforces, กระทู้คุณ shahriar_manzoor บน UVa Online Judge

Get latest news from Blognone

Comments

By: maxmin on 10 December 2017 - 11:27 #1023018

Python 2 มันเร็วกว่า Python 3 หรอครับ

By: neizod
ContributorTraineeIn Love
on 10 December 2017 - 14:43 #1023046 Reply to:1023018
neizod's picture

tl;dr ถ้าเป็นการแข่งครั้งนี้ แล้ว Python 2 เร็วกว่า Python 3 ครับ

อันที่จริงถ้าจะพูดให้รัดกุมเนี่ย เราไม่สามารถเปรียบเทียบความเร็วของ "ภาษา" ใดๆ ได้เลยครับ เพราะว่าภาษาเหล่านี้เป็นแค่ abstract spec เท่านั้นว่า เมื่อเจอ syntax แบบนี้โปรแกรมจะทำงานอย่างไร

เครื่องมือที่ทำให้ภาษาเหล่านี้ทำงานได้จริงๆ (และเอามาวัดความเร็วเทียบกันได้) ก็คือตัว "แปลภาษา" ครับ ซึ่งบางโปรแกรมก็ใช้ชื่อว่า compiler บางอันก็ใช้ชื่อว่า interpreter ซึ่งในภาษาเดียวเนี่ยอาจจะมีตัวแปลภาษามากกว่าหนึ่งตัวก็ได้ อย่างเช่นภาษา Python ที่มีตัวแปลภาษาทั้ง CPython, IronPython, Jython, PyPy ฯลฯ

แต่ทีนี้เวลาเราพูดถึงภาษาโปรแกรมโดยทั่วไปเนี่ย เราก็มักจะ refer ถึงตัวแปลภาษาที่ได้รับความนิยมมากที่สุด (ซึ่งไม่จำเป็นต้องเร็วที่สุด) อย่าง Python ก็คือ CPython ซึ่งเป็นตัวแปลภาษาตัวแรกที่ผู้สร้างภาษา Python เขียนขึ้นมานั่นเอง (ส่วนภาษาอื่นๆ อย่าง C++ ก็มักนึกถึง GCC, Java นึกถึง Oracle JDK เป็นต้น)

ในโลกการทำงานจริง CPython ถูกนำไปใช้งานได้อย่างไม่มีปัญหาอะไร แม้ว่ามันจะใช้เวลาประมวลผลมากกว่าภาษาอื่นๆ อย่าง C++/Java ก็ตาม แต่ก็แลกมากับ code ที่เรียบง่าย เรียนรู้ได้อย่างรวดเร็ว เขียนโปรแกรมได้สั้นกระชับกว่าภาษาอื่นๆ

ปัญหาของ CPython มันจะเกิด เมื่อต้องนำไปใช้งานที่เน้นความเร็วในการประมวลผลเป็นสำคัญ (บางที่ก็แก้ด้วยการเปลี่ยนไปเขียนภาษาอื่นเลย) หนึ่งในทางแก้คือเปลี่ยนไปใช้ตัวแปลภาษาตัวอื่นที่ทำงานได้เร็วกว่านั่นเอง

PyPy ก็เป็นตัวแปลภาษา Python ที่เร่งการประมวลให้เร็วกว่าการใช้ CPython ได้ แต่ว่า PyPy ยังรองรับแค่ Python 2.7 เท่านั้น การรองรับ Python 3 ยังอยู่ในสถานะ beta ทำให้การแข่งครั้งนี้ code ที่เป็น Python 2 สามารถใช้ประโยชน์จากการเร่งความเร็วด้วย PyPy ได้ แต่ Python 3 ยังต้องใช้ CPython ที่ช้ากว่าไปก่อนนั่นเองครับ

By: sukjai
iPhoneAndroidRed HatUbuntu
on 10 December 2017 - 14:15 #1023040

c/c++ และ java เป็นอะไรที่เป็นตัวหลักๆ จริงๆ

By: delta on 10 December 2017 - 15:17 #1023047
delta's picture

ตระกูลC..ทรงพลังประสิทธิภาพ

By: illuminator
ContributorAndroidUbuntuWindows
on 12 December 2017 - 14:22 #1023328
illuminator's picture

ปีนี้บริษัท JetBrains เป็นสปอนเซอร์ด้านเครื่องมือเขียนโปรแกรม

มิน่า Kotlin ถึงมา ?