Hala masaüstü gui geliştirme öğrenmeye değer mi? [kapalı]


18

Son birkaç yıldır üzerinde çalıştığım ciddi projelerin tümü ya web tabanlı ya da grafik olmayan bir kullanıcı arayüzüne (hizmetler, komut satırı komut dosyaları vb.) Sahipti. Bir WinForms uygulamasını bir araya getirebilir veya gerektiğinde basit bir WPF yapabilirim, ancak MFC veya QT gibi daha düşük seviye API'lerin bazılarına gerçekten girmedim.

Bunun duruma bağlı olduğunu anlıyorum, ancak genel olarak hala masaüstü geliştirmeyi öğrenmek için zaman ayırmaya değer mi yoksa uygulamalar bu bilgiyi daha az alakalı hale getiren bir hızda web ve mobil cihazlara taşınıyor mu? Ayrıca, birlikte çalıştığınız geliştiricilerin masaüstü GUI uzmanlığına sahip olmasını mı bekliyorsunuz?


5
Masaüstü uygulama geliştirmeye sahip olmak harika, ancak Knuth aşkı için MFC ile uğraşmayın. Windows masaüstü uygulama işlerinin% 95'i için ihtiyacınız olan tek şey WinForms veya WPF / XAML'dir. Yapmak istemediğiniz işlerin diğer% 5'i.
Adam Crossland

1
@Adam: "Sahip olmak istemediğiniz işlerin diğer% 5'i" için +1. - Çok doğru. :)
Bobby Tables

Yanıtlar:


38

Evet diyebilirim, öyle. Program geliştirmede bir çeşit sarkaç etkisi vardır. İlk önce her şey doğrudan bilgisayarda koştu. Daha sonra bilgisayar birden fazla programı çalıştıracak kadar güçlü hale geldiğinde, aptal terminalli ana bilgisayarlar aldılar. Ancak aptal terminaller kullanılabilirlik açısından gerçekten berbat, bu yüzden bilgisayarlar terminal boyutlu bir sistemin içine makul miktarda donanım koyabilecek kadar güçlü hale gelir gelmez, kişisel bilgisayarlar aldık ve her şey doğrudan bilgisayarda koştu.

Sonra World Wide Web'i icat ettiler ve bir ana bilgisayara (sunucu) ve aptal bir terminale (tarayıcıya) geri döndük. Ancak aptal terminaller hala kullanılabilirlik açısından gerçekten berbat ve insanlar 30 yıl önce dersleri yeniden öğrenmeye başlıyor ve yine ondan uzaklaşıyoruz. Bu günlerde gerçekten sıcak bir gelişme, yerel olarak çalışan, ancak işlevlerini geliştirmek için belirli amaçlarla İnternet'e bağlanabilen masaüstü (veya mobil) uygulamalar içindir.


5
Bu eğilimlerin döngüler halinde işlendiğine dikkat çeken +1. Ancak, bir terminal uygulamasının bir masaüstü uygulaması olarak yeniden yazıldığı ve kullanıcıların terminal uygulamasıyla daha verimli çalışabildiği bir durum gördüm.
Larry Coleman

2
Tarayıcılar arasındaki fark, aslında yerel sistemde kod çalıştırabilmeleridir ve bu özellik her tarayıcı neslinde büyür. Bunun sonucu, masaüstü ve web uygulamaları arasındaki kullanılabilirlik farkı o kadar büyük değil. Birçok kişi için (ben dahil) Gmail, görünümden daha kullanışlı. Sarkaç her seferinde daha az sallanır ve temel teknoloji ne olursa olsun uygulamalar yerel ve bulut parçalarının bir karışımı olan yarıya kadar durur.
Joeri Sebrechts

13
+1, insanlar masaüstünün öldüğünü iddia etmeye başladığında nefret ediyorum, saçma.
dr Hannibal Lecter

1
@Joeri: Çoğu terminal her zaman yerel olarak en az birkaç parça ve parça yapabilir. Gördüğüm çok fazla miktarda JavaScript, IBM 3270'in (bir örnek olarak) yerel olarak da yapabileceği şeyler yapıyor.
Jerry Coffin

1
@Joeri Sebrichts - Gmail, bir e-postayı bir görev veya takvim öğesine sürükleyip bırakmama izin verdiğinde, sizinle aynı fikirde olabilirim, ancak o zamana kadar çok daha az özellik.
JeffO

11

Asla desktop dev yapmak istemeseniz bile, bir web istemcisi üzerinden bir masaüstü çözümü kullanmanın daha iyi olduğu konusunda bilinçli bir görüş sahibi olmanız için yeterli deneyimi edinmenizi öneririm.


+1: 'Masaüstünün öldüğü' ve pigenholing uygulamalarının, "asla bir web uygulaması kadar iyi olamayacak" diyen saf masaüstü geliştiricilerinin tersi olduğunu varsayarsak. Çalışmak istediğiniz şeyi seçin, ancak gerçek faydalarını / tuzaklarını bilmeye yetecek kadar diğerini bilin.
Steven Evers

8

Evet, ama düşündüğünüz gibi değil.

GUI Programlama artık daha zor değildir ve gui programlama arayüzüne aşina olmak dışında uzmanlık becerileri gerektirmez. Düğmeleri, pencereleri ve kontrolleri bağlamak çok zor değildir ve modern programlama ortamlarında MFC gibi şeylerle ilk günlere kıyasla oldukça kolaydır. GUI programlama, talep edildiğinde öğrenmesi oldukça kolay olan şeylerdir.

Bununla birlikte, düğmeleri ve metin kutularını bağlamak oldukça kolaydır, düğmelerin ne zaman ve nerede yerleştirileceğini bilmek ve insanlar tarafından kullanılacak bir gui tasarlamak çok zordur. Bu sahip olmak çok değerli ve önemli bir beceridir. Bununla birlikte, web'e karşı yerel arayüzler için geçerli olan tasarım ilkeleri çok benzerdir.

Bu nedenle, etkili olan ve kullanıcıları karıştırmayan iyi kullanıcı arayüzlerini nasıl tasarlayacağınızı öğrenin ve bunlar için ücretsiz olarak programlamaya aşina olacaksınız.


2
Özellikle bu günlerde Kullanıcı Deneyimi yazılım tasarımından sorumludur. Mimarlık artık sorumlu değil.
rwong

5

Gerçekten sizin durumunuza bağlı olacak. Kısa süre önce, web uygulamalarını masaüstü uygulamalarına (SmartClient / Click-Once) dönüştürmek için çeşitli projeleri olan bir Fortune 500 şirketinde çalıştım. Özel koşullarında çok mantıklıydı ve mevcut uygulamalarının yaşadığı çeşitli kullanılabilirlik sorunlarını ortadan kaldırdı.

Tam zamanlı bir çalışansanız ve şirketiniz genellikle masaüstü uygulamaları tasarlamıyorsa, muhtemelen Winforms veya WPF'de tam olarak hızlanmak için bir anlam ifade etmez. Bununla birlikte, bir danışmansanız ve müşterilerinize başka bir hizmet sunabilmek istiyorsanız, o zaman zarar veremezsiniz.


4

Hmm, GMail, Stack-Exchange ve bankamın ev bankacılığı dışında tüm gün web dışı yazılım kullanıyorum. Artık akıllı telefonların ve tabletlerin ortaya çıkmasıyla web uygulaması benim için daha az çekici (akıllı telefonum Facebook istemcisini kullanıyorum). Bu kullanıcı tarafı.

Geliştirici tarafı: Son 10 yılımda neredeyse sadece web dışı yazılımlarda çalıştım (ve kariyerim yazılım danışmanı olarak çalışırken çok farklı alanlara yayılmıştı) ve işimde gelecekteki herhangi bir web trendi görmüyorum.

Yani evet, masaüstü GUI ortamlarını öğrenmek hala şart .


2
Wow, İnternet Arama Motoru kullanmıyor musunuz?
JBRWilkinson

1
@JBRWilkinson: hayır, Gopher'a güveniyorum. Cidden, Google'ı tüm gün kullandığımdan eminim, ancak bu aslında herhangi bir masaüstü aracının veya uygulamanın yerini almaz.
Wizard79

2

Tabii ki "bağlıdır" - ama bence deneyiminiz tipik. Yazdığım uygulamalar için nadiren kalın bir istemci oluşturmak zorunda kaldım. İstemcinin masaüstünde çalışması için belirli bir neden olmadığı sürece (bağlantı sorunları veya 3D oyun, vb.) - Geliştirici ve yöneticilerin uygulamanın bir "örneğini" korumasının daha kolay olduğuna inanıyorum. Eğer bir web uygulaması tasarlama becerisine sahiplerse, genellikle masaüstü uygulama alanına hareket etmelidirler.

Aslında, kalın bir istemci geliştiricinin web uygulaması programlamasını öğrenmesinin daha önemli olduğunu düşünüyorum - HTTP'nin kalıtımsallığı, kafanızı sarmak için daha zor bir uygulama geliştirme paradigması yapar (veya en azından sadece tokatlamaktan daha fazla düşünmeniz gerekir) panel üzerindeki denetimler).

Unutmayın - Silverlight ve Adobe Flex / AIR gibi masaüstü / web uygulaması arasındaki çizgiyi aşan teknolojilere sahipsiniz.


+1 web geliştirme için daha zor. Bir masaüstü geliştiricisi olarak başladım ve işte web geliştirmeye geçmek zorunda kaldım. Kesinlikle daha karmaşıktır (açıkçası bu kolay olmayan görevleri karşılaştırır).
Bobby Tables

@Guzica - evet Masaüstü uygulama geliştirmeye kilitlenmiş olan, birlikte çalıştığım iyi geliştiricilerin benzer bir tutumuyla karşılaştım. Anahtarı değiştirmeye çalıştıklarında, ilk düşündükleri kadar kolay değiller. Bunun web uygulaması programlamasında doğal bir karmaşıklık olup olmadığını, programlamanın sadece farklı bir yolu olup olmadığını ve sistemin yapabileceklerinin altta yatan varsayımlarının çoğunun değişmesi gerektiğini bilmiyorum (yeni çerçeveler öğrenmenin yanı sıra).
Watson

Daha sınırlı olan ve "daha karmaşık" yapmayan araçlarla işleri yapmak her zaman daha zordur. Daha fazla güçlük çekiyor.
Sam

0

IE9 ekibine göre:

Yerel ve web uygulamaları arasında bir boşluk olmamalıdır. HW hızlandırma, hızlı JS ve site sabitleme özelliği başlar

Bence bu teknolojiler birbirine daha da yaklaşacak güvenli bir bahis. Bir java geliştiricisiyseniz, masaüstü uygulamaları ve web uygulamaları (GWT kullanarak) geliştirme arasında çok az fark vardır. Giderek daha fazla "masaüstü" geliştirme platformunun tarayıcı motorunu hedefleyebilmesini beklemek mantıksız değildir. Daha fazla masaüstü uygulamasının web benzeri bir dağıtım modeline sahip olmasını beklemek de mantıklı değil (arka planda otomatik güncelleme, krom gibi korumalı alan yürütme).


3
Bu toplam BS. Piyasa veri dağıtımının gecikmelerini "gerçek zamanlı" olarak ölçmek ve görüntülemek için yerel olarak bulunması gereken bir gecikme ölçümü uygulaması üzerinde çalışıyorum. Bu tür şeyler ASLA buluta taşınmaz.
Tim

Toplam BS, çünkü bir uygulamanın yerel olması için gülünç derecede belirsiz bir ihtiyaç buldunuz mu?
Mike M.

@Tim: bazı uygulamaların her zaman yerel olacağı konusunda haklısınız. Diğer uygulamaların hiçbir zaman yerel olamayacağı da doğrudur (örneğin, google translate). Ancak, yerel olarak çalışmak buluttan gelmediği anlamına gelmez. Chrome yerel olarak çalışır, ancak bulut tabanlı bir uygulamadır (hangi "sürüm" üzerinde çok az kontrole sahip olursunuz). Yerel kod yürütmeyi tarayıcı platformlarına (Google NaCl) bağlama girişimleri ve web dillerini yerel uygulamalara (Adobe Air) bağlama girişimleri vardır.
Joeri Sebrechts

1
@Mike M - bu gülünç derecede belirsiz değil. Önceki işimde Donanma gemi yazılımı üzerinde çalıştım. Bunların da bulutta olmaması muhtemeldir. Çalıştığım etki alanları muhtemelen taşınmayacak - gecikme ve donanım arabirimi nedenleriyle yerel olmaları gerekir. Web güzel, ama bazılarımız hala bir sebepten dolayı yerel uygulama alanında çalışıyoruz.
Tim

@Tim Demek istediğim, dayanmadığı bir senaryo buldun. Yazar MOST derken bunu fark eder. Bir kontrpuan buldunuz ve bu harika. Her şeyin bir temeli olmadığını hiçbir şekilde kanıtladınız. Tabii ki birçok nedenden ötürü yerel olması gereken zamanlar olacak. Ama büyük çoğunluğu için, bir miktar fiber optik kablo atın ve 1200 miliniz 10 milisaniyede geçebilir mi? Bir kullanıcı olarak, masaüstü uygulamalarımın her birinin bir formu yüklemesi 10 milisaniye daha uzun sürüyor.
Mike
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.