Linux ในฐานะ Desktop ของนักพัฒนาโปรแกรม

ก่อนอื่นผมต้องบอกก่อนว่าผมเปลี่ยนมาใช้ Linux เป็นระบบปฎิบัติการณ์หลักบน Laptop ผมมาสักพักใหญ่แล้ว ทั้ง ๆ ที่จริง ๆ ผมมี License ของ Windows อยู่บน PC ทุกเครื่องที่ผมมี (Windows 8 สองเครื่อง Windows 7 หนึ่งเครื่อง)

สาเหตุที่ผมเปลี่ยนเครื่องนี้มาเป็น Linux เป็นเพราะผมต้องการเปลี่ยนบรรยากาศครับ ส่วน PC นั้นผมใช้เล่นเกม + ทำงานเพลงเป็นงานอดิเรก ซึ่งซอฟท์แวร์ที่ใช้ทั้งหมดยังรันบน Windows ส่วนเครื่อง Laptop นั้นผมใช้กับงานทั่ว ๆ ไปกับการเขียนโปรแกรม

สำหรับการใช้งานทั่ว ๆ ไปนั้นผมแทบไม่มีความจำเป็นที่จะต้องใช้ Windows เลย เพราะแอพลิเคชั่นที่ใช้นั้นแทบทั้งหมดคือ Web Browser (หรืออีกนัยหนึ่งก็คือผมใช้งานพวก Web Application เป็นหลักนั่นเอง) แม้กระทั่งเวลาฟังเพลงผมยังเปิด Deezer เลย สำหรับงานด้าน Office นั้นผมไม่ได้ใช้ Microsoft Office ในงานส่วนตัวเลย เพราะพบว่าไม่มีความจำเป็น Google Docs ตอบโจทย์งานที่จำเป็นกับการใช้งานส่วนตัวได้เป็นอย่างดี และถ้าจำเป็นจริง ๆ ผมยังสามารถพึ่งพา LibreOffice ได้ ทั้งนี้ทั้งเครื่อง PC (Windows 8) และ Laptop นั้นไม่มี Microsoft Office ติดตั้งเอาไว้ครับ คือ ไม่ได้ซื้อไว้น่ะครับ

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

ยิ่งถ้าเป็นงานที่ไม่ต้องส่ง เป็นการเขียนใช้เองเนี่ย ผมจะใช้ Xtend เป็นหลัก เยอะกว่าการใช้ภาษา Java ตรง ๆ เสียอีก เพราะว่ามันทำงานบน Java Platform ทำให้มีความสามารถสูง ในขณะเดียวกันการเขียนก็ทำได้เร็วกว่า Java เพราะว่าต้องเขียนโค้ด Boilerplate น้อยกว่า Java มาก การใช้งานกับ Library อื่น ๆ ก็ทำได้อย่างไม่มีปัญหา อาจจะช้ากว่า Java บ้างแต่ผมก็ไม่คิดว่ามันช้าเกินไปหรอกนะครับ

ทั้งนี้ผมใช้ Xtend/Java บนทั้ง Desktop App (Swing), Console App และ Web App (Vaadin) ครับ

ส่วนอีกเกือบครึ่งที่ตอนนี้มันเป็นโปรเจคทดลองของผมนั้นเขียนบน C++ เพราะว่าผมก็ยังคงทำงานเป็นโปรแกรมเมอร์ C++ อยู่ แน่นอนว่าบน Linux นั้นไม่มี Visual Studio ซึ่งก็ทำให้ทำงานลำบากในแง่หนึ่ง แต่ก็จะบอกว่าก็สบายในอีกแง่หนึ่ง (ฮา) สมัยเรียนผมเริ่มเขียนโปรแกรมจากบน Console คือใช้ pico/nano เขียนโค้ดใน Text Editor บน Terminal ที่ต่อเข้ากับ Server ที่เป็น Solaris แล้วใช้คอมไพล์เลอร์บนนั้นสั่งคอมไพล์ครับ (ซึ่งก็เป็น Command Line เหมือน GCC/Clang แหละ) (คลาสอื่นใช้ Turbo C) ดังนั้นผมก็เลยไม่จำเป็นต้องใช้ IDE ในการเขียนโค้ด ถึงจะยังใช้ Debugger บน Console (เช่น GDB) ไม่เป็นก็เถอะ

แต่เอาเข้าจริง ๆ ผมก็ใช้ IDE อย่าง Eclipse (ร่วมกับปลั้กอินที่ชื่อว่า C++ Development Tooling (CDT)) นั่นล่ะครับ ก็พอจะดีบั้กได้ไม่ลำบากเกินไป (แต่คนใช้ Eclipse จะรู้ว่าบางทีก็รู้สึกลำบากชีวิตเช่นกัน) มี IDE หลายตัวที่ทำงานบน Linux อย่างที่เขาว่าเวิร์คตัวหนึ่งก็คือ Qt Creator

สำหรับแง่มุมหนึ่งที่ผมไม่ค่อยชอบเกี่ยวกับ Windows/Visual Studio ก็คือการไม่มีระบบรองรับ Library ที่ใช้งานได้สะดวก ทั้งหมดอาศัยการตั้ง Path รายโปรเจค ซึ่งผมเขียนโปรเจคใหม่ค่อนข้างใหม่ก็ต้องง่วนกับการคอมไพล์ไลบราลี + เซ็ตพาธเพื่อให้ใช้งานได้ และพออัพเกรดทีก็เหนื่อยที บน Linux นั้นจะมีพาธกลางที่เก็บบรรดา Library ทั้งหลาย (/usr/include, /usr/lib และ /usr/local/include, /usr/local/lib) ทำให้ไม่ต้องมานั่งเซ็ตพาธ ใส่ compiler parameter ให้ถูก (ก็แค่ -l<ชื่อlib> ก็ใช้ได้ละ) พอมีไลบราลีเวอร์ชั่นใหม่ก็แค่ติดตั้งใหม่ก็จบ ไม่ต้องมาทำอะไรวุ่นวายทีหลัง

แน่นอนว่าถ้าไม่อยากใช้พาธกลาง อยากเซ็ตไลบราลีเอง ใช้ไลบราลีจากพาธที่ตั้งไว้ก็ทำได้เช่นกันครับ

นอกจากนี้เราสามารถใช้สคริปท์ในการ build อย่าง MAKEFILE ก็ได้ (Visual Studio ก็รองรับ) แต่ส่วนตัวผมจะใช้ CMAKE ช่วยด้วย เป็นสคริปท์ที่ใช้สร้างไฟล์ที่ใช้กับระบบ Build อีกทีครับ (มันสร้าง MAKEFILE, Eclipse Project File หรือแม้กระทั่ง Visual Studio Solution File ได้ จะพูดถึงในโอกาสอื่น ๆ ครับ) ซึ่งการใช้ CMAKE นั้นช่วยให้เราสามารถสร้างโปรแกรมที่ทำงานบนหลาย ๆ แพลตฟอร์มได้โดยไม่ยากจนเกินไป

ทั้งนี้อีกประเด็นหนึ่งสำหรับ Visual Studio ที่ผมไม่ค่อยประทับใจนัก เกี่ยวกับปัญหาของเวอร์ชั่นหลัง ๆ ที่มันติดตั้งฟีเจอร์ที่ผมไม่ได้ใช้มามากเกินไป แถมไปวุ่นวายกับไฟล์ระบบเยอะแยะไปหมด ผมรู้สึกว่าหลังติดตั้ง Visual Studio Express ไปแล้วเครื่องผมมันทำงานแปลก ๆ ไปพอสมควร (ที่แน่ ๆ คือมันบูทช้าลงมาก)

แต่ก็ไม่ได้บอกว่าผมไม่ได้ใช้ Visual Studio เลยนะ ผมใช้ที่ทำงานครับ 555 ใช้กับงานบริษัทครับ งานส่วนตัวไม่เกี่ยว

อ้อ สำหรับงานที่ต้องเขียนให้คนอื่นใช้ (มีบ้าง แต่ไม่เยอะ) ผมก็เขียนโค้ดให้เน้นการทำงานข้าม platform เป็นหลัก แล้วก็จะทดสอบโปรแกรมบน Windows โดยคอมไพล์โปรแกรมบน Cygwin ซึ่งเป็นการจำลองการทำงานของระบบแบบ POSIX ซึ่งก็ใช้งานได้ดีในระดับหนึ่ง หรือไม่ก็คอมไพล์มันบน Visual Studio ก็ได้เช่นกัน (แต่ตอนนี้ผมไม่ได้ติดตั้งไว้ครับ)

ในด้านการเขียนเกมที่เป็นเรื่องที่ผมสนใจ (และเคยทำมาบ้างในอดีต) ผมก็ทำบน Linux เช่นกันนี่แหละ ก็เลี่ยงการใช้ DirectX ที่ไม่มีบน Linux ซึ่งผมเป็นคนที่ไม่ชอบ DirectX เป็นทุนเดิมอยู่แล้วครับ (ผมคิดว่า DirectX เป็น API ที่น่าเกลียดน่ะครับ) ผมใช้ SDL เป็นไลบราลีด้านมัลติมีเดีย คู่กับ OpenGL (ที่ไม่ได้แตะนานแล้วครับ ลืมหมดแล้ว) ถ้าจะเขียนเกม 3D น่ะนะ SDL ทำงานบนหลายแพลตฟอร์มมาก ๆ ถ้าผมจำเป็นจะต้องคอมไพล์ให้คนที่ใช้ Windows ได้ใช้ก็ทำได้ไม่ลำบากนักเช่นกัน แต่ก็มีจุดที่ต้องระวังอยู่บ้าง (ผมพบว่าปัญหาบน Windows มีน้อยกว่านะ)

บ่นแค่นี้ละกัน จริง ๆ คือผมแค่อยากเปลี่ยนบรรยากาศก็เลยเล่าเรื่องสภาพแวดล้อมการทำงานส่วนตัวให้ฟังเล่น ๆ ครับ เดี๋ยวคราวหน้ามาคุยเรื่องทางเทคนิคหนัก ๆ กันต่อ

One thought on “Linux ในฐานะ Desktop ของนักพัฒนาโปรแกรม

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.