Esiste una tendenza per i toolkit GUI multipiattaforma? [chiuso]


12

Qual è la tendenza per l'utilizzo dei framework GUI multipiattaforma in questo momento? Sempre più persone stanno iniziando a usare framework multipiattaforma (come GTK +, Qt e wxWidgets) o ci sono altri che usano più framework legati alla piattaforma (ad esempio Cocoa o WPF)? È più o meno stagnante? È come una montagna russa? Come pensi che sarà la tendenza, diciamo, tra 5 anni?

Il panorama del sistema operativo sta cambiando con meno persone che usano Windows (osservazione personale). Ciò dovrebbe aumentare la domanda di toolkit multipiattaforma, non è vero?

Modifica: Inoltre, quali toolkit (multipiattaforma) stanno crescendo di più, in caso affermativo?

Risposte:


11

Sembra quasi che ci sia una tendenza contro i kit multipiattaforma. Se le persone vogliono scrivere una volta, correre ovunque, tendono ad usare HTML - creare un sito web. Le persone utilizzano i toolkit della piattaforma solo quando un aspetto nativo è molto richiesto, ad esempio su iPhone. Quindi, se l'intero motivo che ti dà fastidio con l'app non web è ottenere l'aspetto nativo, non ha molto senso usare un kit multipiattaforma.

I toolkit multipiattaforma non hanno mai funzionato così bene; le piattaforme desktop non sono così simili ed è difficile sottrarle veramente. L'aggiunta di telefoni e tablet al mix rende ancora più difficile. Si finisce con un'astrazione molto permeabile (consultare http://www.joelonsoftware.com/articles/LeakyAbstractions.html ). Spesso è più semplice separare il proprio "motore" dalla propria interfaccia utente e scrivere l'interfaccia utente separatamente per piattaforma.

La tendenza del Mac ad essere più popolare potrebbe rendere i kit multipiattaforma meno popolari piuttosto che più. Penso che spesso le persone usino un kit multipiattaforma più per teoricamente selezionare la casella di controllo multipiattaforma che per ottenere risultati veramente buoni su tutte le piattaforme. Una volta che ti preoccupi di più piattaforme ... inizi a vedere come i kit multipiattaforma hanno degli svantaggi.

Ecco un post sul blog di Alex Payne su questi aspetti negativi: http://al3x.net/2011/01/15/user-hostile-platforms.html

Penso che stia dicendo che molte delle più grandi e popolari app multipiattaforma inventano il proprio approccio multipiattaforma (Firefox, Chrome, Eclipse, OpenOffice.org sono esempi che vengono in mente). Possedendo il framework, possono perforare l'astrazione quando richiesto. Inoltre, tutte queste app hanno avuto la tendenza ad apparire uguali (e non particolarmente native) su tutte le piattaforme.

Detto questo, non ho statistiche reali o altro. Ma ho lavorato molto su GTK + e ho familiarità con le basi di codice tra cui Firefox, Chrome ed Eclipse. Quindi ho visto di persona le sfide tecniche qui.


2
Lo avrei definito semplicemente come "La tendenza dei toolkit multipiattaforma è verso il fallimento".
ohmantics,

14

È un dato di fatto che negli ultimi anni vi è stata una tendenza verso un toolkit dell'interfaccia utente multipiattaforma. Quel toolkit è HTML / CSS / JavaScript.

È semplicissimo svilupparlo una volta e vederlo funzionare quasi identicamente ovunque.

E sì, gli sviluppi si stanno allontanando enormemente dal desktop al web. Lo vedi tu stesso.


+1 Per il web come una tendenza crescente dell'interfaccia utente, ma non credo che questo affronti la domanda del PO.

Totalmente d'accordo. Sviluppiamo la nostra applicazione IPTV sulla scatola Settop utilizzando interamente HTML5 / CSS3 / JavaScript. Questo è il futuro, non ancora un altro enorme e completo framework C / C ++
Ernelli

1
Buona menzione, ma in realtà sono interessato ai toolkit desktop multipiattaforma . Ancora votato.
Anto,

@Anto: potresti voler aggiungere questo alla tua domanda. Dalla lettura non ho capito nulla sul "desktop". Certo, sono un programmatore web e non ho riconosciuto la maggior parte dei framework che hai citato :)
Marcie

@Anto, potresti voler menzionare il desktop nella tua domanda.
JBR Wilkinson,

7

Tendo a usare toolkit multipiattaforma perché hanno un design migliore, non perché sto cercando di essere multipiattaforma. Ad esempio, lavoro su progetti scritti in C ++ destinati esclusivamente alla piattaforma Windows. Uso Win32 o MFC, praticamente le SOLO opzioni disponibili per il toolkit nativo?

Santo cielo no! Sono praticamente i peggiori mucchi di immondizia di spaghetti che abbia mai visto! L'accoppiamento diretto del sistema di eventi al sistema di "messaggi" del sistema operativo sottostante è incredibilmente non intuitivo e privo di espressività necessaria per creare rapidamente programmi di interfaccia utente. Astrazioni di livello superiore, attualmente fornite solo da toolkit multipiattaforma, sono assolutamente essenziali per l'attività.

Questo è solo un esempio. Potrei scuotermi e nell'elenco delle cose che sono meglio fatte dai toolkit multipiattaforma. Il fatto è che le interfacce grafiche sono più simili tra loro che distinte. Ad esempio, c'è un po 'di differenza tra un programma per finestre su Windows e uno su Linux. I tipi di cose che fai quando fai programmi UI sono quasi sempre esattamente gli stessi, indipendentemente dal sistema operativo che stai prendendo di mira ... e solo piccole differenze tra architetture come telefono / palmare rispetto al desktop. Il campo si è semplicemente concentrato su metodologie multipiattaforma perché a) è necessario per molte persone eb) è lo stesso sh! T.


0

Un argomento contro la produzione di un framework multipiattaforma è che sarà sempre indirizzato al minimo comune denominatore: i client del framework vogliono scrivere il codice una sola volta ed eseguire "ovunque" supportato. Quindi una fantastica piattaforma hardware sarebbe simile a qualsiasi altra piattaforma che esegue quel framework in quanto non è possibile sfruttare le funzionalità specifiche della piattaforma.

Nel tempo, questo sfortunatamente si traduce in framework inclinati verso la loro piattaforma più popolare e hackerando insieme il supporto per le altre piattaforme, o semplicemente eliminandoli quando il budget / popolarità si esaurisce.

Un modo per trarre vantaggio dalle capacità specifiche della piattaforma è avere qualcosa come un #if PLATFORM_FEATURE_Xcostrutto attorno a tutto il codice specifico o controlli di runtime equivalenti che si traducono in un gonfiamento del codice. Questo diventa noioso abbastanza rapidamente, poiché le varianti della stessa piattaforma richiedono una gestione specifica. Ad esempio, alcuni XBox v1 non avevano un disco rigido, quindi i giochi che utilizzano strumenti multipiattaforma non potevano usarlo per la memorizzazione nella cache, rispetto a una versione per PC in cui è possibile garantire un disco rigido.

Per le applicazioni Desktop / Produttività, l'aspetto della piattaforma sembra essere importante, ma molte applicazioni hanno il loro stile, quindi non è un problema avere lo stesso aspetto su tutte le piattaforme, ad esempio le app costruite con AIR.

I fornitori di hardware come Apple, Sony, Nintendo e Toshiba vorranno assicurarsi che i loro prodotti facciano qualcosa per differenziarsi dalla concorrenza, ad esempio Touch, Accelerometri / Gryoscopes, Blu-Ray, display 3D. È improbabile che ci sarà mai una piattaforma con tutte le caratteristiche di tutti i concorrenti riuniti in uno (a causa di costi e complessità), quindi uno vincerà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.