Konsol tabanlı programdan GUI tabanlı programlamaya geçerken önemli farklar nelerdir?


18

Diğerleri gibi konsol tabanlı (PlayStation değil terminalde olduğu gibi) programlamaya başladım. Ancak er ya da geç, ister istemeseniz de GUI tabanlı programlamaya değinmek gerekir. Bu geçiş, ön uç (ve muhtemelen arka uç) hakkında nasıl düşünmeniz gerektiği konusunda birçok değişiklik içeriyor.

Peki, konsol tabanlı programlamadan GUI tabanlı programlamaya geçilirken önemli farklar nelerdir?


1
Terminal'deki gibi Konsol mu demek istediniz? Playstation'daki gibi Konsol değil ..
JBRWilkinson

@JBRWilkinson: Evet. Soruyu açıklığa kavuşturacağım.
gablin

Yanıtlar:


18

En büyük fark, kullanıcı arayüzünün tasarımıdır. İyi bir GUI bir uygulama yapabilir veya bozabilir. Mac hayranları, ortalama Mac OS X uygulamasının güzel tasarlanmış GUI'lerine dikkat çekiyorlardı ve bir noktaları var, ancak bu bir teknoloji sorunu değil - bir tasarım / ethos / kullanılabilirlik sorunu.

Teknik konulara gelince, belirli bir sırayla:

  1. Kullanıcı, giriş istediğiniz veya çıkışa söylediğiniz konsol programından farklı olarak, istediği herhangi bir şeyi istediği zaman istediği zaman yapabilir. İş akışı Sihirbazı stilini uygulamadığınız sürece, umduğunuz sırayı izleyeceklerini varsayamazsınız.

  2. Daha önce de belirtildiği gibi, etkinlikler bunun büyük bir rol oynamaktadır ve sonuncusuna hizmet ederken birden fazla olayın gerçekleşmesini sağlayabilirsiniz, böylece 'mevcut olaya' dayalı olarak eyaletinizi gerçekten inşa edemezsiniz. Farklı olaylarda bağlamı korumak için kapaklar veya benzer bir mekanizma kullanın. Bir konsol uygulamasında, FSM'niz genellikle 'girdi alma, işlem girdisi, güncelleme çıktısı' döngüsünde bağımsızdır. GUI programlamasında aynı tür bir yapı yoktur - 'ana', yeniden giriş yapan olay odaklı bir şeydir, genellikle çok büyük bir switch () ifadesidir.

  3. Farklı ekran boyutları / çözünürlükleri göz önünde bulundurmanız ve GUI'nin 800x600'den kullanıcıların ekranına kadar yeniden boyutlandırmasına izin vermeniz gerekir.

  4. Fare, klavye, dokunma, vb. Gibi farklı giriş stratejilerini göz önünde bulundurmanız gerekir. Bazı teknolojiler ücretsizdir (Fare tekerleği kaydırma), diğerleri ise bazı entegrasyon çalışmaları gerektirir (Mürekkep).

  5. Erişilebilirlik - Bir GUI, görme, işitme, motor becerileri veya bilişsel becerileri kısıtlı olan daha az yetenekli kullanıcılar için çok daha uygundur. Bir 'ding' gürültüsü, konsoldaki şifreli bir hata mesajıyla karşılaştırıldığında güzel ve açıktır.

  6. Uluslararasılaştırma - Konsol uygulamanızın yalnızca ABD / ANSI olduğunu varsayıyorum, ancak GUI'ye girdiğinizde, kodlamayı değiştirmeden diğer dilleri ve bölgeleri hedefleyebilecek dil / kaynak paketlerine sahip olabilirsiniz. Başlat. Örneğin, kodda sabit kodlanmış dil dizeleri yoktur - her şey kaynak aramalarıdır.

  7. Uygulama teknolojisi için çok daha fazla seçeneğiniz var - web tabanlı, çeşitli GUI kitleri, Flash / WPF, vb.

  8. Renk ve animasyon kullanımı. Konsol programları genellikle tek renklidir ve fazla canlandırılmaz. Birçok modern GUI çerçevesi, temalı widget'lar sağlar ve animasyon efektlerini genellikle ücretsiz olarak taşır / boyutlandır / göster / gizle.

  9. Grafik. Konsol uygulamaları bazen diyagramlar için ASCII sanatını kullanır, ancak bir GUI uygulaması size tam grafik yeteneği sağlar. Güzel sanat da büyük bir fark yaratabilir.


1
Genel olarak ne demek istediğimi görürsem, burada yanlış bir ikilikle aynı fikirde değilim. Yani, konsol uygulamaları için kullanıcı arayüzüne de dikkat etmeniz gerekiyor, etkinlik tabanlı konsol uygulamalarınız olabilir, sadece doğrusal metin değil, aslında GUI görüntüleyen ve yeniden boyutlara dikkat etmesi gereken bir terminal uygulamalarınız olabilir (ve fare ile çalışabilir), erişilebilir cli uygulamaları yapabilirsiniz, cli uygulamaları gui'lerle aynı şekilde uluslararasılaştırırsınız, renkleri kullanabilir ve şeyleri canlandırabilirsiniz. Size 7 ve 9'un daha sınırlı olduğunu söyleyeceğim.
haylem

17

Benim için olay odaklı programlamaya alışmak olurdu. Konsol tabanlı yazılımlar için hala geçerli olabilir, ancak çoğunlukla GUI ile kullanıldığını görüyorum. Bir kez kavradığınızda, çok güçlü bir araçtır.


Katılıyorum. Öğrenmeniz gereken şey, kodunuzun kullanıcının bir sonraki adımda ne yapabileceğini tamamen kontrol etmemesidir.

Diyalogların kabulü ile.
Morgan Herlocker

6

Ben çok iş parçacığı ve söyleyebilirim UI ile (bu engelleme UI yapmak istiyorsanız) ima


+1, iş parçacığı ile başa çıkmak gerçekten sıkıcı bir teknik sorundur.
Clement Herreman

2

Kullanıcı arabirimi üzerindeki kontrol akışı ve kullanıcı girişinin doğrulanması üzerinde durulması çok önemlidir.


2

Bir GUI programı vidalanırken, bir konsol programı zamanla geliştirilir.


1

Genellikle konsol tabanlı programı Model olarak düşünüyorum, GUI tabanlı program ise Modeli gömen Görünüm / Denetleyici.


1

Benim için iyi bir GUI tasarlamak, onu uygulamanın teknik detaylarından her zaman çok daha zorlayıcı olmuştur.

"Mac gibi basit ve anlaşılır yap" demek kolaydır. Bunu yapmak inanılmaz derecede zor; her zaman orada olması gereken çok fazla ayrıntı vardır, ancak aynı zamanda gözden kaçmalıdırlar.

basitlik http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Google Wave veya iMovie'ye bir bakın ve bu görüntülerin yanıltıcı olduğunu biliyorsunuz.
Ivo Flipse

0

Bazı (çok?) Dillerde benim için en büyük fark, şimdi bir kütüphane seçmeniz gerektiğidir. Uygulamanızın omurgasını (ve daha fazlasını, biraz şansla) programlayarak “konsol” yapmak dilinizin standart kaynaklarını kullanır. Bir GUI ekleyerek (umarım) hala standart deyimlerde “modelinizi” kullanabilirsiniz, ancak şimdi büyük bir kısmı, “görünüm” bazı dış kütüphanelere bağlı olacaktır (ve umulmadık bir şekilde “sonsuza kadar devam edeceksiniz). Bu kütüphanenin seçimi, (benim) durumunuz gibi yeni başlayanlar için büyük bir sorumluluktur (ek öğrenme adım eğrisinden bahsetmiyorum).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.