สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ (Software Development Environment)

28 03 2009

ปัจจุบันนี้การพัฒนาซอฟต์แวร์นั้นมีการเปลี่ยนแปลงอย่างต่อเนื่อง แต่สิ่งที่ดูจะยังเป็นเช่นเดิมคือการเรียนการสอนในมหาวิทยาลัย ไม่ทราบว่าที่อื่นเป็นอย่างไร แต่สิ่งที่ได้เรียนตั้งแต่เข้ามา คือ

ความพยายามที่จะสอนให้เขียนโปรแกรมได้ (ซึ่งคนละอย่างกับการเขียนให้เป็น)

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

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

เมื่อวิธีคิดได้ ใช้ภาษาอะไรก็ได้ คงไม่อาจเป็นจริง…

สิ่งที่เห็นอยู่ทุกวันนี้คือหลายๆ คนใช้เครื่องมือโดยที่ไม่รู้ว่ามันเหมาะกับงานหรือไม่

กลายเป็นต้องวิ่งอ้อมโดยไม่จำเป็น

เมื่อเวลาโปรเจ็กปิดเทอมมาถึง งานที่อาจารย์สั่งใหญ่เกินกว่าความสามารถเครื่องมือที่เรียนจะรองรับได้ พอจำเป็นต้องเปลี่ยนเครื่องมือเลยเกิดปัญหาขึ้นมา หรือ กรณีกลับกันงานที่อาจารย์สั่งมีขอบเขตนิดเดียวแต่เครื่องมือที่ใช้นั้นทรงพลังมากอย่างนี้ก็เหนื่อยแบบไม่จำเป็นอีกเช่นกัน

ดังนั้น…

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

คิดว่าคงจะดีอยู่ไม่น้อย?





Help me, I can’t update my Ubuntu

7 02 2008

นั่งงงกับเครื่องโน๊ตบุคตัวเองมาตั้งนานว่าทำไมถึงอัพเดตไม่ได้ (แต่เครื่องอื่นใช้ได้ตามปกติ – -”) พออัพเดตก็จะมี Error Message ขึ้นมาว่า

E: Could not get lock /var/lib/apt/lists/lock – open (11 Resource temporarily unavailable)
E: Unable to lock the list directory

ก็เพิ่งจะมารู้นี่แหละว่าสาเหตุมันเป็นเพราะว่า apt-get มันค้างนั่นเอง เราสามารถเช็คการทำงานของโปรเซส apt ได้ง่ายๆ โดยใส่คำสั่งนี้ใน terminal

ps -e | grep apt

จากนั้นเราก็จะเห็น ID ของโปรเซส (ตัวเลขด้านซ้ายสุด) ก็ให้เราปิดการทำงานของโปรเซสซะ ด้วยคำสั่ง

sudo kill “ID ของโปรเซสที่ต้องการปิด”

แล้วก็ลองเรียก Synaptic มาทำงานใหม่น่าจะสามารถใช้งานได้ตามปกติ

.
.
.
.

ปล. สำหรับมือใหม่ๆ อาจจะงงกับรูปแบบคำสั่งอยู่บ้าง ก็จะขออธิบายไว้ตรงนี้เลยแล้วกันครับ

คำสั่ง ps ย่อมาจากคำว่า process ใช้แสดงรายการของโปรเซสที่ทำงานอยู่

ส่วน -e เป็นออพชั่น ซึ่งมีความหมายว่า “ทั้งหมด” (ถ้าอยากดูเพิ่มเติมว่ามีออพชั่นอะไรให้ใช้บ้างก็พิมพ์คำสั่ง man ps ใน terminal ดู จะมีวิธีใช้อย่างละเอียดให้อ่าน)

ส่วนคำสั่ง grep จะไว้ใช้ร่วมกับคำสั่งอื่นๆ ในการเสิร์ชหาชื่อของไฟล์ต่างๆ ในระบบ ยกตัวอย่างเช่น

ผมต้องการดูรายชื่อไฟล์ที่มีคำว่า tmp ในโฟลเดอร์หนึ่งด้วยคำสั่ง ls ทีนี้ผลลัพธ์ที่เห็นก็คือรายการที่แสดงออกมายาวเป็นหางว่าว ผมก็ต้องนั่งไล่ดูไปตามตัวอักษรทำให้เสียเวลามาก ดังนั้นผมจะใช้คำสั่ง grep มาช่วยในการค้นหาร่วมกับคำสั่ง ls โดย

ls | grep tmp

ผลลัพธ์คือรายการที่แสดงจะเหลือแค่ไฟล์ที่มีคำว่า tmp เป็นส่วนประกอบของชื่อไฟล์ ทำให้เราสามารถค้นหาไฟล์ต่างๆ ใน terminal ได้รวดเร็วขึ้น