Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 28 additions & 24 deletions 1-js/01-getting-started/3-code-editors/article.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,49 @@
# Code editors
# เครื่องมือแก้ไขโค้ด (Code editor)

Code editor เป็นสิ่งที่นักพัฒนามักใช้เวลาร่วมมากที่สุด
เครื่องมือแก้ไขโค้ด (Code editor) เป็นที่ที่นักพัฒนาโปรแกรมใช้เวลามากที่สุดในการทำงาน

โดยจะมี 2 ประเภทหลักๆ นักพัฒนาจะใช้หนึ่งในสองอย่างนี้ คือ IDE และ lightweight editor
โดยทั่วไปแล้วมีสองประเภทหลักของเครื่องมือแก้ไขโค้ดที่นิยมใช้ คือ IDE และ lightweight editor โดยส่วนใหญ่ผู้ใช้งานจะใช้เครื่องมือจากทั้งสองประเภทเพื่อใช้งานในส่วนต่าง ๆ

## IDE

คำว่า [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) (Integrated Development Environment) หมายถึงเครื่องมือที่ประกอบด้วยฟีเจอร์มากมายที่ใช้จัดการงานระดับโปรเจ็คต์ IDE จึงไม่ใช่แค่ text editor ธรรมดา แต่เป็น "development environment" เต็มรูปแบบ
คำว่า [IDE](https://th.wikipedia.org/wiki/สิ่งแวดล้อมสำหรับการพัฒนาแบบเบ็ดเสร็จ) (Integrated Development Environment) หมายถึงเครื่องมือแก้ไขโปรแกรมที่มีความสามารถและฟีเจอร์มากมาย โดยส่วนใหญ่จะใช้งานบนโปรเจกต์ใหญ่ๆ ไม่ใช่เพียงแค่เครื่องมือแก้ไขโปรแกรมเท่านั้น แต่ยังเป็นสภาพแวดล้อมการพัฒนาโปรแกรมอย่างครบวงจร โดยมีฟีเจอร์ต่างๆ อย่างเช่น การแก้ไขโค้ด การทดสอบโปรแกรม การสร้างเอกสาร การแก้ไขรูปภาพ และอื่นๆ อีกมากมาย

IDE โหลดโปรเจค (ที่ประกอบด้วยไฟล์จำนวนมาก) ที่มีฟีเจอร์หลักๆคือ navigation ระหว่างไฟล์, autocompletion, บางตัวจะมี version management system อย่างกิต (git) ให้ด้วย, testing environment และฟีเจอร์ที่จัดการกับโปรเจ็คต์โดยเฉพาะ
IDE จะโหลดโปรเจกต์ (ซึ่งอาจประกอบไปด้วยไฟล์หลายไฟล์) และช่วยให้ผู้ใช้สามารถเลือกไฟล์ต่าง ๆ ได้ง่ายขึ้น รวมไปถึงให้คำแนะนำด้วยระบบ autocompletion โดยพิจารณาจากโปรเจกต์ทั้งหมดไม่ใช่เพียงไฟล์ที่เปิดอยู่เท่านั้น นอกจากนี้ยังรวมถึงระบบการจัดการเวอร์ชัน (เช่น [git](https://git-scm.com/)) รวมถึงการทดสอบโปรแกรมและฟังก์ชันอื่น ๆ ของโปรเจกต์

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

- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, ฟรี).
- [WebStorm](http://www.jetbrains.com/webstorm/) (cross-platform, เสียตัง).
- [Visual Studio Code](https://code.visualstudio.com/) (สามารถใช้งานได้ทั้งบนแพลตฟอร์มหลายระบบ และฟรี)
- [WebStorm](http://www.jetbrains.com/webstorm/) (สามารถใช้งานได้ทั้งบนแพลตฟอร์มหลายระบบ แต่ต้องจ่ายค่าใช้จ่าย)

สำหรับผู้ใช้ Windows หลายๆคนอาจมีความสับสนกับชื่อระหว่าง Visual Studio Code กับ Visual Studio ตัวหลังเป็น IDE แบบเสียตัง และดีที่สุดของ IDE สำหรับ Windows โดยเฉพาะฝั่งของ .NET และ JavaScript ก็พอใช้ได้ ยังมีเวอร์ชั่นฟรีให้ใช้ด้วย [Visual Studio Community](https://www.visualstudio.com/vs/community/).
สำหรับ Windows ยังมี "Visual Studio" ซึ่งชวนให้สับสนกับ "Visual Studio Code" ตัว "Visual Studio" นี้ เป็นเครื่องมือแก้ไขโค้ดที่เหมาะสำหรับ .NET platform แต่เราสามารถใช้มันสำหรับการเขียนโค้ดภาษา JavaScript ได้ นอกจากนี้ยังมีเวอร์ชันฟรีอย่าง [Visual Studio Community](https://www.visualstudio.com/vs/community/) อีกด้วย

IDE ส่วนมากจะเสียตัง แต่จะมีระยะเวลาทดลองใช้ แต่ค่าใช้จ่ายส่วนนี้มักจะเล็กน้อยเมื่อเทียบกับรายได้ของนักพัฒนาต่างประเทศ เก่งๆ หรือทำงานมาหลายปี ดังนั้นเลือกที่ตัวเองชอบมากที่สุด
ในทางปฏิบัติ หลาย ๆ IDE จะจ่ายเงินแต่มีระยะเวลาทดลองใช้ ค่าใช้จ่ายที่ต้องจ่ายต่อเดือนก็น้อยมากเมื่อเปรียบเทียบกับเงินเดือนนักพัฒนาที่มีความรู้ความสามารถ ดังนั้นเพียงแค่เลือก IDE ที่เหมาะสมกับที่คุณ

## Lightweight editors
## Lightweight editor (เครื่องมือแก้ไขโค้ดที่มีขนาดเล็กและไม่ซับซ้อน)

"Lightweight editors" ไม่ได้มีฟีเจอร์เทียบเท่า IDE แต่เร็ว สวย และใช้งานง่าย
โดยทั่วไปแล้ว "Lightweight editor" ไม่มีความสามารถเทียบเท่ากับ "IDE" แต่มีความเร็ว สวยงาม และใช้งานง่ายมากกว่า IDE

ส่วนใหญ่มักจะใช้เพื่อเปิดไฟล์แก้ไขได้ทันที
โดยปกติแล้ว "Lightweight editor" จะใช้เพื่อเปิดและแก้ไขไฟล์ทันที

ความแตกต่างระหว่าง IDE กับ Lightweight editors คือ IDE มักจะทำงานในระดับโปรเจค ที่ต้องอาศัยการประมวล โหลดข้อมูลจำนวนมาก หรือวิเคราะห์โครงสร้างในโปรเจ็คต์ และอื่นๆ ส่วนแบบ lightweight จะตอบโจทย์ด้านความเร็ว หากเราต้องการแก้ไขไฟล์แค่ไฟล์เดียว
โดยไม่ต้องโหลดข้อมูลโปรเจกต์ใหญ่ ๆ เหมือน "IDE" ที่ต้องโหลดข้อมูลโปรเจกต์และวิเคราะห์โครงสร้างโปรเจกต์ก่อนที่จะเริ่มทำงาน ดังนั้น "Lightweight editor" จึงมีความเร็วกว่าเมื่อเราต้องการแก้ไขเพียงไฟล์เดียว แต่ถ้าเราต้องการแก้ไขไฟล์หลายไฟล์ในโปรเจกต์ จะต้องเปิดโปรเจกต์ใน "IDE" แทน

ในทางปฎิบัติ lightweight editors บางตัวอาจมีปลั๊กอินไว้ติดตั้งเพิ่มเติมด้วย เช่น ตัววิเคราะห์ directory-level syntax และ autocompleters ดังนั้นจึงไม่มีเส้นแบ่งระหว่างตัวที่เป็น IDE กับ lightweight ชัดเจนมากนัก
ในการปฏิบัติงาน "Lightweight editor" อาจมีปลั๊กอินหลายตัวที่สามารถวิเคราะห์ไฟล์และให้คำแนะนำตามไดเรกทอรีได้ ดังนั้นไม่มีขอบเขตที่ชัดเจนระหว่าง "Lightweight editor" และ "IDE" แต่ในทางปฎิบัติ "Lightweight editor" จะมีความเร็วมากกว่า "IDE" แต่ไม่มีความสามารถเทียบเท่ากับ "IDE"

ก็จะมีตัวเลือกดังต่อไปนี้
มีตัวเลือกหลากหลายอย่างเช่น

- [Atom](https://atom.io/) (cross-platform, ใช้งานได้ฟรี)
- [Sublime Text](http://www.sublimetext.com) (cross-platform, ให้ทดลองใช้).
- [Notepad++](https://notepad-plus-plus.org/) (Windows, ใช้งานได้ฟรี).
- [Vim](http://www.vim.org/) และ [Emacs](https://www.gnu.org/software/emacs/) ถ้าใช้เป็นจะเท่มากในหมู่โค้ดเดอร์
- [Sublime Text](http://www.sublimetext.com) (สามารถใช้งานได้บนแพลตฟอร์มหลายระบบ และเป็นแชร์แวร์)
- [Notepad++](https://notepad-plus-plus.org/) (สำหรับ Windows เป็นฟรีแวร์)
- [Vim](http://www.vim.org/) และ [Emacs](https://www.gnu.org/software/emacs/) ก็เป็นตัวเลือกที่เยี่ยมยอดมาก หากคุณรู้จักใช้งานและมีความสนใจ

## อย่าเถียงกันเลย
## เรามาเลิกทะเลาะกันเถอะ

รายการ editor ข้างที่แนะนำข้างต้น เป็น editor ที่คนรอบข้างที่เป็นนักพัฒนาและตัวผมเองใช้ (แค่ตัวเดียวนะ) เป็นเวลานาน และมีความสุขที่ได้ใช้
เครื่องมือแก้ไขโค้ดที่แนะนำไปข้างต้น คือตัวเลือกที่ผมและเพื่อน ๆ นักพัฒนาที่เก่ง ๆ ใช้งานมานานและพึงพอใจกับการใช้งาน

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

ตัว editor เอง ก็เป็นเหมือนเครื่องมืออื่นๆ ดังนั้นเหตุผลจึงขึ้นอยู่กับโปรเจคที่ทำ ความเคยชิน และความชอบของเรามากกว่า
การเลือกเครื่องมือแก้ไขโค้ดเช่นเดียวกับเครื่องมืออื่น ๆ ขึ้นอยู่กับแต่ละคน ขึ้นอยู่กับโปรเจกต์ ตวามเคยชิน และความชื่นชอบส่วนบุคคล

ความเห็นส่วนบุคคลของผู้เขียน:

- หากฉันพัฒนาโปรแกรมฝั่งเว็บโดยส่วนใหญ่ ฉันจะใช้ [Visual Studio Code](https://code.visualstudio.com/)
- แต่หากโปรแกรมภาษา/แพลตฟอร์มอื่นๆ มีส่วนผสมของโปรแกรมฝั่งเว็บ ฉันจะพิจารณาเลือกโปรแกรมแก้ไขโค้ดอื่นๆ เช่น XCode (สำหรับ Mac), Visual Studio (สำหรับ Windows) หรือ Jetbrains family (Webstorm, PHPStorm, RubyMine เป็นต้น) โดยขึ้นอยู่กับภาษาที่ใช้งาน