วันศุกร์ที่ 19 มิถุนายน พ.ศ. 2563

เรื่องที่น่ากังวลในการพัฒนาโปรแกรม

ศรัณย์วันศุกร์วันนี้ขอพูดถึงเรื่องในวงการของตัวเองสักวันแล้วกันนะครับ ต้องขอโทษด้วยถ้าผู้อ่านที่อาจติดตามบล็อกอยู่แต่ไม่ได้อยู่ในฟิลด์นี้อาจอ่านไม่เข้าใจ วันนี้จะเป็นเรื่องเกี่ยวกับการพัฒนาโปรแกรมครับ คือผมได้มีโอกาสอ่านบล็อกบล็อกหนึ่งคือ Old Code Gets Younger Every Year ซึ่งพูดถึงเรื่องของการพัฒนาโปรแกรม และผมค่อนข้างเห็นด้วย ก็เลยเอามาเขียนสรุปให้ฟังในบล็อกนี้ครับ

จากบล็อกที่ผมเข้าไปอ่าน ผมเข้าใจว่าผู้เขียนน่าจะเป็นคนที่ทำงานอยู่กับภาษาเขียนโปรแกรมที่จัดว่าเก่ามาก ๆ ภาษาหนึ่งคือ COBOL ครับ ซึ่งภาษานี้ยังมีการใช้งานอยู่นะครับ เพราะระบบงานที่ใช้กันมานานแล้ว งานพวกที่ต้องประมวลผลข้อมูล จัดรูปแบบข้อมูล โปรแกรมทางธุรกิจที่ทำงานอยู่บนเครื่องเมนเฟรม ก็เขียนกันมาด้วยภาษานี้ แต่ด้วยความโบราณของมัน ทำให้มันไม่รองรับแนวคิดของการเขียนโปรแกรมสมัยใหม่ และก็แทบจะไม่มีการเรียนการสอนในมหาวิทยาลัยกันอีกแล้ว และก็มีการคาดกันว่ามันน่าจะล้มตายไป แต่ก็ไม่นะครับ เพราะอย่างที่บอกมันยังใช้อยู่ในงานที่ผมกล่าวมาแล้ว และผู้เขียนบล็อกก็คงจะโดนแซะโดนแซวว่าทำงานกับภาษาโบราณเป็นคนแก่อะไรประมาณนี้ 

แต่สิ่งที่ผู้เขียนพูดถึงก็คือภาษา COBOL จนถึงป่านนี้ก็ยังไม่ตาย ทั้ง ๆ  ที่มีการสำรวจในปี 2006 ว่าอายุเฉลี่ยของนักเขียนโปรแกรมภาษา COBOL อยู่ที่ 55 ปี และก็มีความกังวลว่าเมื่อคนเหล่านี้เกษียณจะเกิดอะไรขึ้น แต่มันก็ไม่เกิดอะไรขึ้น และจากการสำรวจในปี 2019 อายุเฉลี่ยกลับมาอยู่ที่ 50 ปี และจริง ๆ อายุเฉลี่ยของนักเขียนโปรแกรมภาษา COBOL ค่อนข้างคงที่แบบนี้มาเป็นสิบ ๆ ปีแล้ว เหตุผลก็คือ ในตอนแรกคนรุ่นใหม่อาจไม่ได้เรียนหรือใช้ภาษา COBOL แต่พอเป็นนักเขียนโปรแกรมนาน ๆ เข้า ก็มีประสบการณ์มากพอที่จะย้ายเข้ามาทำงานกับภาษา COBOL ในภายหลังได้ไม่ยาก สิ่งที่ผู้เขียนพูดอีกอย่างเกี่ยวกับ COBOL ก็คือปัญหาต่าง ๆ ที่เกิดขึ้นกับงานคอมพิวเตอร์ในปัจจุบัน มักจะไม่ได้มีอะไรเกี่ยวข้องกับภาษา COBOL 

ผู้เขียนบอกว่าแทนที่จะมาแซะกันเรื่อง COBOL เราควรจะมาสนใจเรื่องพวกนี้กันดีไหม (ซึ่งผมค่อนข้างเห็นด้วยนะครับ) ปัญหาคือการขึ้นต่อกัน  (dependency)  ผู้เขียนได้ยกตัวอย่างของภาษาเขียนโปรแกรมซึ่งมีการปรับปรุงเวอร์ชันไปขนานใหญ่แล้ว แต่นักพัฒนายังติดอยู่กับเวอร์ชันเก่าของภาษา ตัวอย่างก็คือภาษา Java ซึ่งตอนนี้ไปที่เวอร์ชัน 14 แล้ว แต่ 64% ของนักพัฒนายังใช้ Java 8 อยู่ ภาษา Java มีการปรับปรุงครั้งใหญ่ตั้งแต่เวอร์ชัน 9 นั่นคือถ้าจะเอาจริง ๆ โปรแกรมเดิมที่เขียนด้วยเวอร์ชัน 8 จะต้องถูกเขียนใหม่เกือบทั้งหมด และนี่คือเหตุผลที่ว่าทำไมยังใช้เวอร์ชัน 8 กัน 

อีกหนึ่งตัวอย่างคือภาษา Python ซึ่งตอนนี้อยู่ในเวอร์ชัน 3 ซึ่งก็เป็นการเปลี่ยนแปลงครั้งใหญ่เช่นกัน และนักเขียนโปรแกรมหลายคนก็ยังอยู่ในเวอร์ชัน 2 แม้แต่ Mac OS เอง ก็ยังติดตั้ง Python 2.7 มาเป็นดีฟอลต์ให้ เพราะเครื่องมือที่ใช้ภายในของตัว OS ยังใช้ Python 2.7 นอกจากนี้ก็ยังมีโปรแกรมดัง ๆ อีกหลายตัวที่เป็นแบบนี้ 

ปัญหาของทั้ง Java และ Python ที่มีร่วมกันก็คือการขึ้นต่อกันเพราะภาษาพวกนี้ มักจะมีการใช้คลังโปรแกรม (library) พอตัวภาษาถูกปรับปรุง แต่ตัวคลังโปรแกรมไม่ได้ปรับปรุงตาม ก็ทำให้นักเขียนโปรแกรมที่ใช้คลังโปรแกรมเหล่านั้น ถ้าจะปรับก็ต้องเขียนคลังโปรแกรมขึ้นมาเอง ซึ่งก็ไม่มีใครอยากทำ

นอกจากนี้พอมาถึงยุคของเฟรมเวอร์กก็ทำให้การขึ้นต่อกันหนักขึ้นไปอีก ผู้เขียนยกตัวอย่างของ node.js ซึ่งเกิดขึ้นมาเพื่อทำให้เราสามารถเขียนโปรแกรมภาษา JavaScript ซึ่งทำงานบนฝั่งเซิร์ฟเวอร์ได้ และด้วยความที่ภาษา JavaScript อาจถูกออกแบบมาไม่ดีนัก (ผมนี่ไม่ชอบเลยภาษานี้) ปัญหาคือมันแทบจะไม่มีคลังโปรแกรมมาตรฐานที่ควรมากับภาษาโปรแกรมเหมือนที่ภาษาอื่นมี ดังนั้นมีแนวคิดของ NPM เกิดขึ้น เพื่อให้นักเขียนโปรแกรมไปแชร์ไลบรารีที่ตัวเองเขียนขึ้นได้โดยง่าย นักพัฒนาซึ่งไม่อยากเขียนคลังโปรแกรมเอง ก็ใช้ NPM เพื่อติดตั้งคลังโปรแกรมเหล่านั้น ลงบนเครื่องของนักพัฒนา ดังนั้นเครื่องของนักพัฒนาแต่ละคนก็อาจติดตั้งคลังโปรแกรมที่ทำงานแบบเดียวกันแต่เป็นคนละตัวกัน คลังโปรแกรมบางตัวก็ไม่ได้ปรับปรุงมาเป็นปีแล้ว ก็ยังถูกดาวน์โหลดไปติดตั้งกัน จะเห็นว่ามีการขึ้นแก่กันอย่างมาก ลองจินตนาการว่าถ้า JavaScript มีการปรับปรุงครั้งใหญ่ เหมือน Java และ Python มันก็คงจะให้ผลคล้าย ๆ กัน คือคงมีคนไม่ปรับปรุงโปรแกรมเป็นจำนวนมาก 

ผู้เขียนสรุปว่าสิ่งที่เราควรจะกังวลกันคงไม่ใช่อายุของคนเขียนโปรแกรม ที่ไปเขียนโปรแกรมด้วยภาษาโปรแกรมโบราณ ภาษาอย่าง COBOL ทำงานของ COBOL ได้ดีอยู่แล้ว แต่สิ่งที่เราควรกังวลกันคือเรากำลังสร้างสภาพแวดล้อมที่ทำให้เรายึดติดอยู่กับโค้ดของภาษาโปรแกรมที่หมดอายุไปแล้วต่างหาก 

ภาษาเขียนโปรแกรมภาษาแรกที่รองรับคอมพิวเตอร์ควอนตัมอย่างลงตัว

ทีมนักวิทยาศาสตร์คอมพิวเตอร์จาก ETH Zurich ใน Switzerland ได้พัฒนาภาษาเขียนโปรแกรมภาษาแรกที่รองรับคอมพิวเตอร์ควอนตัมอย่างลงตัว โดยผู้พัฒนาบอกว่ากลไกการเขียนโปรแกรมจะไม่ซับซ้อน เชื่อถือถือได้ และปลอดภัยเหมือนกับภาษาเขียนโปรแกรมสำหรับคอมพิวเตอร์แบบที่เราใช้กันอยู่ ภาษาเขียนโปรแกรมดังกล่าวมีชื่อว่า Sliq โดยผู้พัฒนาบอกว่าภาษาโปรแกรมนี้จะทำให้นักเขียนโปรแกรมใช้คำสั่งที่ภาษาเตรียมไว้ให้ โดยไม่ต้องใช้คำสั่งพิเศษเกี่ยวกับควอนตัม ผู้พัฒนาบอกว่า Slick เป็นความก้าวหน้าครั้งใหญ่ในแง่การเขียนโปรแกรมบนคอมพิวเตอร์ควอนตัม แต่มันยังไม่ใช่ระยะสุดท้ายของการพัฒนา

อ่านข่าวเต็มได้ที่: ETH Zurich

เพิ่มเติมเสริมข่าว: 

ถ้าใครสนใจจะดูหน้าตาของภาษาดูได้จากลิงก์นี้ครับ 

วันพฤหัสบดีที่ 18 มิถุนายน พ.ศ. 2563

จมูกอิเลกทรอนิกส์ดมกลิ่นลูกพีชสุก

นักวิจัยจาก Brazil’s Federal University of Technology-Parana และ State University of Ponta Grossa  ได้พัฒนาจมูกอิเลกทรอนิกส์เพื่อใช้ดมลูกพีชเพื่อหาลูกที่สุกที่สุดและฉ่ำที่สุด นักวิจัยใช้เซ็นเซอร์วัดแก๊สที่ส่งออกมาจากลูกพีช เพื่อวิเคราะห์องค์ประกอบที่อยู่ในแก๊ส ซึ่งจากการศึกษาล่าสุดพบว่าจมูกอิเลกทรอนิกส์นี้มีความแม่นยำกว่า 98%

อ่านข่าวเต็มได้ที่: IEEE Spectrum

วันพุธที่ 17 มิถุนายน พ.ศ. 2563

ระบบไวไฟ (Wi-Fi)  ใต้น้ำ

นักวิจัยจากKing Abdullah University of Science and Technology ในซาอุดิอาราเบีย สร้างระบบส่งสัญญาณไวไฟ (Wi-Fi) ใต้น้ำที่เขาเรียกว่า Aqua-Fi ซึ่งระบบนี้จะทำให้นักดำน้ำสามารถส่งภาพถ่ายจากใต้น้ำขึ้นมาได้โดยใช้ลำแสง นักวิจัยได้ทดลองรับส่งข้อมูลสื่อผสมระหว่างคอมพิวเตอร์ที่ตั้งอยู่ห่างกันไม่กี่เมตรผ่านทางน้ำที่นิ่ง พบว่าอัตราเร็วสูงสุดที่รับส่งกันได้คือ 2.11 เมกะไบต์ต่อวินาที แต่ในการทำงานจริง หลักการทำงานคือโทรศัพท์ของนักดำน้ำจะเชื่อมต่อกับอุปกรณ์ที่ติดอยู่กับถังอากาศโดยใช้คลื่นวิทยุ อุปกร์ดังกล่าวจะทำหน้าที่เป็น gateway เพื่อส่งข้อมูลขึ้นมาโดยใช้แสง ซึ่งจากรูปในข่าวถ้าระยะลึกประมาณไม่มากกว่า 10 เมตร จะใช้ LED แต่ถ้าลึกในระดับ 20 เมตรจะใช้ Laser โดยข้อมูลจะถูกส่งเข้าดาวเทียม แล้วถูกส่งเข้าคอมพิวเตอร์ที่เชื่อมต่ออินเทอร์เน็ตผ่านดาวเทียม เหตุผลที่ไม่ใช้คลื่นวิทยุในการส่งข้อมูลขึ้นมาเลยก็เนื่องจากแสงสามารถส่งข้อมูลได้ไกลกว่าและส่งข้อมูลไปพร้อม ๆ กันได้มากกว่า

อ่านข่าวเต็มได้ที่: KAUST Discovery

วันอังคารที่ 16 มิถุนายน พ.ศ. 2563

มีการเสียตำแหน่งงานด้านไอทีไปประมาณ 117,000 ตำแหน่งในสหรัฐ ในช่วงวิกฤต COVID

สำนักงานด้านสถิติแรงงานของสหรัฐประมาณว่ามีคนด้านไอทีที่ต้องเสียงานไปประมาณ 117,000 คน ตั้งแต่เดือนมีนาคมที่ผ่านมา จากผลการศึกษาข้อมูลของบริษัท Janco พบว่างานด้านโทรคมนาคม การประมวลผลข้อมูล ผู้ให้บริการด้านเว็บโฮสต์ติง และการออกแบบระบบซอฟต์แวร์และบริการอื่น  ๆ ที่เกี่ยวข้อง มีจำนวนผู้ที่มีงานทำในด้านเหล่านี้ลดจาก 3.655 ล้านคน มาอยู่ที่ 3.588 ล้านคน จากช่วงเดือนมีนาคมถึงพฤษภาคม อย่างไรก็ตามทาง Janco คาดว่าจะมีการสร้างตำแหน่งานด้านไอทีใหม่ ๆ กว่า 35,000 ตำแหน่งภายในปีนี้ และเชื่อว่าภาวะถดถอยของงานด้านไอทีได้สิ้สุดลงแล้ว และงานด้านไอทีก็จะมีข้อได้เปรียบที่สามารถทำจากระยะไกลได้ โดยกว่า 85% ของบริษัทที่ Janco ไปสำรวจมา ยอมให้คนที่ทำงานด้านไอทีทำงานจากบ้านได้

อ่านข่าวเต็มได้ที่: ZDNet