อะไรคือความแตกต่างที่สำคัญเมื่อย้ายจากคอนโซลไปเป็นโปรแกรมอิง GUI


18

ฉันเริ่มเหมือนคนอื่น ๆ ด้วยการเขียนโปรแกรมแบบคอนโซล (เช่นเดียวกับใน terminal ไม่ใช่ Playstation) แต่ไม่ช้าก็เร็วจำเป็นต้องสัมผัสกับการเขียนโปรแกรมบน GUI ไม่ว่าคุณต้องการหรือไม่ การเปลี่ยนแปลงนี้มีการเปลี่ยนแปลงมากมายในวิธีที่คุณต้องคิดเกี่ยวกับส่วนหน้า (และอาจเป็นแบ็กเอนด์)

ดังนั้นความแตกต่างที่สำคัญเมื่อย้ายจากการเขียนโปรแกรมบนคอนโซลไปยังการเขียนโปรแกรมบน GUI คืออะไร


1
คุณหมายถึง Console ใน Terminal ใช่ไหม ไม่ใช่ Console เหมือนใน Playstation ..
JBRWilkinson

@JBRWilkinson: ใช่ ฉันจะอธิบายคำถาม
gablin

คำตอบ:


18

ความแตกต่างที่ใหญ่ที่สุดคือการออกแบบของ UI GUI ที่ดีสามารถสร้างหรือทำลายแอปพลิเคชัน แฟน ๆ Mac จะดึงดูดความสนใจไปที่ GUI ที่ออกแบบมาอย่างสวยงามของแอพ Mac OS X โดยเฉลี่ยและพวกเขามีประเด็น แต่นี่ไม่ใช่ปัญหาด้านเทคโนโลยี แต่เป็นปัญหาด้านการออกแบบ / การใช้งาน / ความสามารถในการใช้งาน

สำหรับปัญหาทางเทคนิคในลำดับที่ไม่มี:

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

  2. ดังกล่าวแล้วกิจกรรมมีบทบาทสำคัญในเรื่องนี้และคุณสามารถรับหลายเหตุการณ์เกิดขึ้นในขณะที่คุณให้บริการเหตุการณ์ล่าสุดดังนั้นคุณจึงไม่สามารถสร้างรัฐของคุณตาม 'เหตุการณ์ปัจจุบัน' ใช้การปิดหรือกลไกที่คล้ายกันเพื่อรักษาบริบทของเหตุการณ์ ในแอปคอนโซล FSM ของคุณมักจะอยู่ในตัวเองรอบวง 'รับอินพุต, ประมวลผลอินพุต, อัพเดตเอาต์พุต' มีโครงสร้างไม่เหมือนกันในการเขียนโปรแกรม GUI - 'หลัก' เป็นสิ่งที่ขับเคลื่อนเหตุการณ์อีกครั้งซึ่งมักจะเป็นคำสั่ง ginormous switch ()

  3. คุณต้องพิจารณาขนาด / ความละเอียดหน้าจอที่แตกต่างกันและอนุญาตให้ปรับขนาด GUI จาก 800x600 ถึงสูงสุดของผู้ใช้จอภาพ

  4. คุณจำเป็นต้องพิจารณากลยุทธ์การป้อนข้อมูลที่แตกต่างกัน - เมาส์แป้นพิมพ์การสัมผัส ฯลฯ เทคโนโลยีบางอย่างมีให้ฟรี

  5. ความสามารถในการเข้าถึง - GUI เหมาะสำหรับผู้ใช้ที่มีความสามารถน้อยกว่าที่ จำกัด การมองเห็นการได้ยินทักษะยนต์หรือทักษะการเรียนรู้ เสียง 'ding' นั้นดีและชัดเจนเมื่อเปรียบเทียบกับข้อความแสดงข้อผิดพลาดที่เป็นความลับบนคอนโซล

  6. การทำให้เป็นสากล - ฉันสมมติว่าแอปคอนโซลของคุณคือ US / ANSI เท่านั้น แต่เมื่อคุณเข้าสู่ GUI คุณสามารถมีแพ็คเกจภาษา / ทรัพยากรที่สามารถกำหนดเป้าหมายภาษาและภูมิภาคอื่น ๆ โดยไม่มีการเปลี่ยนแปลงการเข้ารหัสหากคุณเตรียมจาก เริ่มต้น ตัวอย่างเช่นไม่มีสตริงภาษาที่กำหนดโค้ดยาก - ทุกอย่างเป็นการค้นหาทรัพยากร

  7. คุณมีตัวเลือกเพิ่มเติมมากมายสำหรับเทคโนโลยีการปรับใช้เช่น web-based, ชุดคิท GUI ต่างๆ, แฟลช / WPF, ฯลฯ

  8. การใช้สีและภาพเคลื่อนไหว โปรแกรมคอนโซลโดยทั่วไปจะเป็นแบบโมโนโครมและไม่เคลื่อนไหวมากนัก เฟรมเวิร์ก GUI ที่ทันสมัยจำนวนมากมีวิดเจ็ตที่มีธีมและมีเอฟเฟกต์ย้าย / ขนาด / แสดง / ซ่อนภาพเคลื่อนไหวซึ่งมักจะฟรี

  9. กราฟิก แอพคอนโซลใช้บางครั้งใช้งาน ASCII สำหรับไดอะแกรม แต่แอป GUI ให้ความสามารถด้านกราฟิกเต็มรูปแบบ ศิลปะที่น่ารักสามารถสร้างความแตกต่างที่ยิ่งใหญ่ได้เช่นกัน


1
ในขณะที่ฉันเห็นจุดของคุณโดยทั่วไปฉันก็ไม่เห็นด้วยกับขั้วที่ผิดพลาดที่นี่ ฉันหมายความว่าคุณต้องให้ความสนใจกับ UI สำหรับแอพคอนโซลด้วยเช่นกันคุณสามารถมีแอพคอนโซลตามเหตุการณ์คุณสามารถมีแอปเทอร์มินัลที่แสดง GUI จริงและไม่ใช่แค่ข้อความเชิงเส้นและต้องใส่ใจเพื่อปรับขนาด (และ อาจใช้งานได้กับเมาส์) คุณสามารถทำแอพ cli ที่สามารถเข้าถึงได้คุณใช้แอพ cli ให้เป็นสากลเช่นเดียวกับ gui คุณสามารถใช้สีและภาพเคลื่อนไหวได้ ฉันจะให้คุณว่า 7 และ 9 นั้น จำกัด มากขึ้น
haylem

17

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


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

ด้วยการเริ่มต้นของการสนทนา
Morgan Herlocker

6

ฉันจะบอกว่าหลายเธรดและมันก็มีความหมายกับ UI (ถ้าคุณต้องการที่จะไม่ปิดกั้น UIs)


+1 เนื่องจากเธรดเป็นปัญหาทางเทคนิคที่น่าเบื่อหน่าย
ผ่อนผัน Herreman

2

การพิจารณาโฟลว์ของการควบคุมบน UI และการตรวจสอบอินพุตของผู้ใช้มีความสำคัญมาก


2

โปรแกรมคอนโซลมีแนวโน้มที่จะได้รับการปรับปรุงเมื่อเวลาผ่านไปในขณะที่โปรแกรม GUI มีแนวโน้มที่จะเมา


1

ปกติฉันคิดว่าโปรแกรมที่ใช้คอนโซลเป็นรุ่นในขณะที่โปรแกรมที่ใช้ GUI เป็น View / Controller ที่ฝัง Model ไว้


1

สำหรับฉันแล้วการออกแบบ GUI ที่ดีนั้นเป็นเรื่องที่ท้าทายมากขึ้นกว่ารายละเอียดทางเทคนิคของการนำไปใช้งาน

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

ความเรียบง่าย http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
ลองดูที่ Google Wave หรือ iMovie แล้วคุณรู้ว่าภาพเหล่านี้ทำให้เข้าใจผิด
Ivo Flipse

0

ในบางภาษา (หลายภาษา) ความแตกต่างที่สำคัญสำหรับฉันคือตอนนี้คุณต้องเลือกห้องสมุด การทำ“ คอนโซล” การเขียนโปรแกรมกระดูกสันหลัง (และอื่น ๆ อีกมากมายด้วยโชคทั้งหมด) ของแอปพลิเคชันของคุณใช้ทรัพยากรมาตรฐานของภาษาของคุณ การเพิ่ม GUI ที่คุณสามารถ (หวังว่า) จะยังคงมี "แบบจำลอง" ของคุณในสำนวนมาตรฐาน แต่ตอนนี้ส่วนใหญ่ "มุมมอง" จะขึ้นอยู่กับห้องสมุดภายนอกบางส่วน (และไม่หวังดี ตัวเลือกของห้องสมุดนี้เป็นความรับผิดชอบที่ยิ่งใหญ่สำหรับผู้เริ่มต้นเช่นเดียวกับกรณีของคุณ (ของฉัน) (ไม่ต้องพูดถึงกราฟขั้นตอนการเรียนรู้เพิ่มเติม)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.