moonlightkzในโลกของเทคโนโลยีคอมพิวเตอร์ยุคปัจจุบัน ผู้คนส่วนใหญ่คุ้นเคยกับการปฏิสัมพันธ์ผ่าน ส่วนติดต่อผู้ใช้งานแบบกราฟิก (GUI) ไม่ว่าจะเป็นการคลิกไอคอน, แตะหน้าจอสมาร์ทโฟน หรือการเปิดแอปพลิเคชันต่าง ๆ อย่างไรก็ตาม เบื้องหลัง ระบบปฏิบัติการ (OS), เซิร์ฟเวอร์ (Server) และการพัฒนาซอฟต์แวร์ ยังมีอีกหนึ่งช่องทางที่เป็นรากฐานสำคัญ และมีประสิทธิภาพสูง นั่นคือ เทอร์มินัล (Terminal)
Terminal ไม่ได้เป็นเพียงแค่หน้าต่างสีดำที่มีตัวอักษรกะพริบ แต่เป็นเครื่องมือที่มีประวัติศาสตร์ยาวนานกว่า 60 ปี และยังคงเป็นองค์ประกอบหลักที่โปรแกรมเมอร์ วิศวกรซอฟต์แวร์ และผู้ดูแลระบบทั่วโลกใช้งานในชีวิตประจำวัน มาดูเนื้อหากันในแต่ละหัวข้อเลย ...
เทอร์มินัล (Terminal) หมายถึงอุปกรณ์ฮาร์ดแวร์ หรือโปรแกรมซอฟต์แวร์ที่ทำหน้าที่เป็น "ตัวกลางเชื่อมต่อสำหรับรับและแสดงผลข้อมูล" (Input/Output Endpoint) ระหว่างมนุษย์กับระบบประมวลผลของ คอมพิวเตอร์
คำว่า "Terminal" จึงมีที่มาจากศัพท์ภาษาอังกฤษที่แปลว่า "ปลายทาง" หรือ "สถานีปลายทาง" เพราะมันตั้งอยู่ที่ปลายสุดของสายสัญญาณการสื่อสารนั่นเอง
ความเข้าใจผิดที่มักเกิดขึ้นบ่อยครั้งในยุคปัจจุบันคือ การเหมารวมว่า Terminal, Shell และ Console คือสิ่งเดียวกัน ทั้งที่ในความเป็นจริง Terminal มีบทบาทเฉพาะตัวอย่างชัดเจน
แนวคิดพื้นฐานสำคัญทางสถาปัตยกรรมของ Terminal ตั้งแต่อดีตจนถึงปัจจุบันคือ แนวคิดเรื่องการแยกส่วนประมวลผลออกจากส่วนปฏิสัมพันธ์
ในยุคเริ่มต้นของระบบคอมพิวเตอร์ที่ยังเป็นเครื่องขนาดใหญ่ หรือที่เราเรียกว่าเครื่อง Mainframe อุปกรณ์ที่เป็น Terminal จะไม่มี หน่วยประมวลผลกลาง (CPU) หรือระบบปฏิบัติการเป็นของตัวเองเพื่อประมวลผลโปรแกรม มีหน้าที่เพียงแค่

ภาพจาก : https://csirc.ugr.es/informacion/presentacion/historia
ไม่ว่าจะเป็นฮาร์ดแวร์ในยุค ค.ศ. 1970 (พ.ศ. 2513) หรือโปรแกรมประเภท Terminal Emulator บน ระบบปฏิบัติการ (OS) แมคโอเอส (macOS), วินโดวส์ (Windows) และ ลีนุกซ์ (Linux) ในปัจจุบัน ตัว Terminal จะประกอบด้วย 4 องค์ประกอบสำคัญดังนี้
รับหน้าที่ตรวจจับการกดปุ่มบนคีย์บอร์ด แปลงรหัสคีย์สแกน (Key Scancodes) ให้กลายเป็นรหัสตัวอักษรมาตรฐาน เช่น ASCII หรือ UTF-8 รวมถึงแปลงปุ่มพิเศษ เช่น ปุ่มลูกศร, ปุ่ม Ctrl, ปุ่ม Alt ให้อยู่ในรูปของสัญญาณ Escape Sequence เพื่อส่งต่อไปยังโปรแกรมควบคุม
ทำหน้าที่นำข้อมูลตัวอักษรที่ได้รับกลับมาจากระบบปฏิบัติการมาวาดลงบนพื้นที่แสดงผล ในอดีตคือ จอ CRT แต่ในปัจจุบันคือ ซอฟต์แวร์เรนเดอร์กราฟิก เช่น GPU Acceleration ที่คอยวาด ฟอนต์ (Font), ถอดรหัสสี RGB และจัดการเคอร์เซอร์ที่กะพริบบนหน้าจอ
Terminal ไม่ได้แสดงเพียงแค่ข้อความธรรมดา แต่ยังต้องตีความ Control Characters และ ANSI Escape Codes อีกด้วย ตัวอย่างเช่น
เป็นตัวเชื่อมระหว่าง Terminal กับ Shell ในยุคก่อนจะใช้สายต่อแบบ RS-232 แต่ในยุคปัจจุบันจะถูกจำลองด้วยระบบของคอมพิวเตอร์ที่เรียกว่า PTY (Pseudo-Terminal) ซึ่งทำหน้าที่เป็นท่อลำเลียงข้อมูลไป-กลับระหว่าง โปรแกรม Terminal กับระบบปฏิบัติการ
ในยุคปัจจุบัน Terminal ที่เป็นฮาร์ดแวร์ มีเครื่องพร้อมจอ CRT ได้สูญพันธุ์ไปเกือบหมดแล้ว คำว่า "Terminal" ที่เราใชักันในวันนี้จึงหมายถึง "Terminal Emulator" หรือ "ซอฟต์แวร์จำลองเทอร์มินัล"
แนวคิดของ Terminal Emulator คือ ซอฟต์แวร์ที่หลอกระบบปฏิบัติการว่ามีอุปกรณ์ฮาร์ดแวร์ Terminal เสียบต่ออยู่จริง โปรแกรมเหล่านี้ เช่น Command Prompt และ PowerShell ใน Windows, Terminal, iTerm2, Alacritty, KiTTY ใน macOS โดยรักษารูปแบบการทำงาน, สายสัญญาณจำลอง และชุดรหัสควบคุม ANSI แบบเดียวกับเทอร์มินัลยุคปี ค.ศ. 1970 (พ.ศ. 2513) เอาไว้ทุกประการ
เหตุผลที่เทคโนโลยีรุ่นเก่ายังคงถูกนำมาจำลองไว้ในปัจจุบัน เพราะสถาปัตยกรรมแบบ Text-based Streaming นี้มีความเสถียร, มีน้ำหนักเบา, เรียบง่าย และทรงพลังเกินกว่าที่จะถูกแทนที่ด้วย ส่วนติดต่อผู้ใช้งานแบบกราฟิก (GUI) แบบอื่นนั่นเอง

ภาพจาก : https://wezterm.org/
ตลอดระยะเวลาหลายทศวรรษที่ผ่านมา Terminal ได้ถูกแบ่งออกเป็นหลายประเภทตามลักษณะของฮาร์ดแวร์, รูปแบบการสื่อสาร และพลังการประมวลผล ตัวอย่างเช่น
เทอร์มินัลยุคแรกสุดที่ใช้อุปกรณ์กลไกไฟฟ้า และพิมพ์ข้อความลงบนกระดาษโดยตรง ไม่มีหน้าจอภาพ ตัวอย่างเช่น Teletype Model 33, IBM 2741 และ DECwriter

ภาพจาก : https://kbd.news/Teletype-Model-33-1274.html
อุปกรณ์แสดงผล (CRT) และคีย์บอร์ดที่ไม่มี หน่วยประมวลผลกลาง (CPU) เป็นของตนเอง ต้องพึ่งพาการประมวลผลจากเมนเฟรมทั้งหมด ตัวอย่างเช่น ADM-3A, Teletype Model 33

ภาพจาก : https://www.retrotechnology.com/restore/adm3a_tenth.html
เทอร์มินัลที่มีวงจรประมวลผลในตัว ทำให้สามารถจัดการการกะพริบของเคอร์เซอร์, ควบคุมสี, ไฮไลต์ หรือประมวลผลข้อมูลขั้นพื้นฐานได้ ตัวอย่างเช่น DEC VT100, Hazeltine 2000

ภาพจาก : https://www.columbia.edu/cu/computinghistory/h2000.html
โปรแกรมบนระบบปฏิบัติการยุคปัจจุบันที่จำลองการทำงานของฮาร์ดแวร์เทอร์มินัลเดิม โดยในปัจจุบันก็มีอยู่หลายตัวให้เลือกใช้งาน เช่น GNOME Terminal, Windows Terminal, iTerm2, PuTTY

ภาพจาก : https://itsfoss.com/gnome-console/
การทำงานของ Terminal สมัยใหม่ดูเหมือนง่ายเพียงแค่พิมพ์คำสั่ง ส่วนติดต่อผู้ใช้แบบบรรทัดคำสั่ง (CLI) และกด "ปุ่ม Enter" แต่เบื้องหลังมีกลไกที่ซับซ้อน และมีการสืบทอดสถาปัตยกรรมมาจากยุคเก่ามาด้วยหลายอย่าง
ในยุค ค.ศ. 1960 (พ.ศ. 2503) คีย์บอร์ด และจอภาพเชื่อมต่อกับคอมพิวเตอร์ผ่านสายเคเบิลที่เรียกว่า TTY (Teletypewriter) แต่ในปัจจุบัน ซอฟต์แวร์ Terminal Emulator จะสร้าง PTY (Pseudo-Terminal Pair) ขึ้นมาในระบบปฏิบัติการ ซึ่งประกอบด้วยช่องทางสองฝั่ง
เมื่อเปิดโปรแกรม Terminal ขึ้นมา ตัวมันจะร้องขอให้ระบบปฏิบัติการสร้างกระบวนการย่อย (Child Process) นั่นคือ Shell เช่น Bash, Zsh, Fish ซึ่งทำหน้าที่เป็นโปรแกรมแปลคำสั่ง (Command Interpreter)
เมื่อผู้ใช้กด "ปุ่ม Enter" ตัว Shell จะวิเคราะห์คำสั่ง (Parsing) ตรวจสอบผ่าน Alias, Built-in commands หรือค้นหาไฟล์ Executable ในสืบค้นตามระบบ PATH จากนั้นจะสร้าง Child Process ขึ้นมาทำงาน
ข้อความผลลัพธ์ที่ส่งกลับมาจะถูกใส่รหัสพิเศษที่เรียกว่า ANSI Escape Codes เช่น รหัสกำหนดสี, การย้ายตำแหน่งเคอร์เซอร์ หรือการลบข้อความ) เพื่อให้ Terminal Emulator แปลงรหัสเหล่านี้เป็นการแสดงผลตัวอักษรสีสันสวยงามบนหน้าจอ
วิวัฒนาการของคอมพิวเตอร์เทอร์มินัลแบ่งออกเป็นยุคสำคัญได้ดังนี้
เริ่มต้นจากการนำเครื่องโทรเลขและพิมพ์ดีดไฟฟ้า เช่น Teletype (TTY) และ Friden Flexowriter มาต่อเข้ากับคอมพิวเตอร์ยุคแรก ผลลัพธ์จากการประมวลผลจะถูกพิมพ์ลงบนกระดาษโดยตรง
การเข้ามาของจอภาพรังสีแคโทด (CRT) มาแทนที่กระดาษ เริ่มต้นจากอุปกรณ์อย่าง IBM 2260 และ Datapoint 3300 ผู้ใช้สามารถเห็นตัวอักษรบนหน้าจอแบบเรียลไทม์
ปี ค.ศ. 1978 (พ.ศ. 2521) บริษัท DEC ได้เปิดตัว VT100 ซึ่งกลายเป็นมาตรฐานอุตสาหกรรมด้วยการรองรับ ANSI Escape Codes การเลื่อนหน้าจอ และขนาด 80 คอลัมน์ ทำให้เกิดมาตรฐานเทอร์มินัลที่ถูกนำมาเลียนแบบจนถึงปัจจุบัน
คอมพิวเตอร์ (PC) เช่น Apple II และ IBM PC เริ่มมี หน่วยประมวลผลกลาง (CPU) และการแสดงผลในตัวเอง ส่งผลให้ฮาร์ดแวร์ Terminal แบบดั้งเดิมค่อย ๆ เสื่อมความนิยมลง
Terminal เปลี่ยนบทบาทจาก "อุปกรณ์ฮาร์ดแวร์" มาเป็น "แอปพลิเคชันซอฟต์แวร์" เช่น Bash บน Linux, macOS Terminal, PuTTY หรือ Windows Terminal เพื่อใช้อำนวยความสะดวกแก่นักพัฒนา และผู้ดูแลระบบ
แม้ว่าคอมพิวเตอร์ส่วนใหญ่ในปัจจุบันจะขับเคลื่อนด้วยหน้าจอกราฟิก (GUI) หรือหน้าจอแบบสัมผัส แต่ Terminal ก็ไม่ได้หายไปไหน เพียงแต่เปลี่ยนรูปโฉมจากอุปกรณ์กลไก และจอภาพ CRT ขนาดใหญ่ มาสู่แอปพลิเคชันซอฟต์แวร์บนระบบปฏิบัติการสมัยใหม่
ความมีประสิทธิภาพ ความยืดหยุ่นในการเขียนสคริปต์อัตโนมัติ และความสามารถในการควบคุมระบบระยะไกล ทำให้ Terminal ยังคงเป็นเครื่องมือที่ไม่มีสิ่งใดมาทดแทนได้ในการพัฒนาซอฟต์แวร์ และการบริหารจัดการระบบคอมพิวเตอร์ในยุคปัจจุบัน
คำสำคัญ »
|
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |