PDA

View Full Version : Linguaggio CSS simile per applicazioni desktop


zabnicola
05-01-2021, 15:39
Quale è il linguaggio per applicazioni desktop WinForms che assomiglia al CSS delle pagine web?
Mi spiego. In internet Il css è usato per applicare lo stile che piu si addice ad una pagina strutturata html.
nel desktop, windows in questo caso, troviamo che l aspetto di layout e grafico è fatto di componenti che sono intrecciati tra di loro ciascuno con le proprietà settabili: margini colore sfondo bordo.

zabnicola
05-01-2021, 15:47
Mi spiego. In internet Il css è usato per applicare lo stile che piu si addice ad una pagina strutturata html.
nel desktop, windows in questo caso, troviamo che l aspetto di layout e grafico è fatto di componenti che sono intrecciati tra di loro ciascuno con le proprietà settabili: margini colore sfondo bordo.

Se le web application sono per certi versi uguali alle application desktop perche non sviluppare anche allo stesso modo: in ambiente desktop separare con tre linguaggi diversi la struttura dalla grafica e dalle funzioni logiche. Significa ricalcare il modello JS/HTML/CSS. Il c# potrebbe essere il nostro JavaScript Xaml potrebbe essere HTML ma non trovo una corrispondenza con CSS.

pabloski
05-01-2021, 19:15
Quale è il linguaggio per applicazioni desktop WinForms che assomiglia al CSS delle pagine web?


XAML. Ed è più che altro un mix tra html e css.


perche non sviluppare anche allo stesso modo: in ambiente desktop separare con tre linguaggi diversi la struttura dalla grafica e dalle funzioni logiche.

Chi ha detto che non si fa? Electron fa proprio questo. Poi c'è Sciter. Lo stesso Xaml. Qml. Gtk+ supporta un subset di css per la decorazione degli elementi dell'UI.

E ce ne sono altri.


Xaml potrebbe essere HTML ma non trovo una corrispondenza con CSS.

Perchè non c'è necessità di separare la struttura dall'estetica. Xaml supporta il tag Style per modificare tutte le proprietà degli elementi strutturali, cioè svolge la stessa funzione di CSS.

La creazione degli stili, separata dagli elementi strutturali, è realizzata tramite ControlTemplate https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.controltemplate?view=net-5.0

Cioè è possibile definire uno stile, che una volta importato, sarà automaticamente utilizzato per renderizzare gli elementi come bottoni, menu, caselle di testo, ecc...

Praticamente CSS non serve.

zabnicola
05-01-2021, 20:36
La creazione degli stili, separata dagli elementi strutturali, è realizzata tramite ControlTemplate https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.controltemplate?view=net-5.0

Cioè è possibile definire uno stile, che una volta importato, sarà automaticamente utilizzato per renderizzare gli elementi come bottoni, menu, caselle di testo, ecc...

Praticamente CSS non serve.
grazie della risposta!. anche per la spiegazione ControlTemplate. non lo sapevo.
Il mio intento era capire se per lo sviluppo di pagine internet, web è possibile avere un unico linguaggio che copra JS/HTML/CSS (tralasciamo lato server).

Quindi virtualizzare i tre linguaggi per crearne uno ad programmazione oggetti.
Ma non ho mai sentito parlare di HTML6 a oggetti, mentre di JS ad oggetti e CSS a oggetti si.

Al contrario, allora perchè non provare a separare C# con la stessa logica dei tre linguaggi.

Non ho competenze al momento per creare un proprio linguaggio di programmazione
(però c'è anche un libro "Compilatori, principi, tecniche e strumenti" che spiega la teoria.).

Ci sarebbe un vantaggio? provando a portare ad un livello piu alto HTML5 o allo stesso piano dello sviluppo di applicazioni winforms
realmente potrebbe non servire un sistema operativo perchè con i servizi internet forniti dalla rete riesci a soddisfare tutti i propri bisogni.

Ma tornando ad HTML5 ti basta come in parte fa già chrome os avere un applicazione
che si avvia con moduli del kernel che di base è un browser grafico/non grafico che accedi al sas cloud come un word processor.

Ultima sciochezza a chi di voi non è mai capitato di vedere un sito internet dentro un'altro sito internet? non dico solo il link.
E' davvero necessario tutto questo multi process o tasking aprendo le tab di edge per vedere e usare word piuttosto che portale dell'università o navigare in amazon per comprarsi un libro? Il mutitasking non a tutti è apprezzato specialmente da me. Farei le cose con pipe | tra programma e l'altro se potessi.
Come nei telefoni cellulari pratici - smart che fatta la fotografia istantanea dell'applicazione la mettono a riposo nello schedulatore a lungo termine in area di swap per caricarla alla prossimo tocco del dito. :)

antonio338
06-01-2021, 00:23
Come ti è stato detto devi usare xaml.
In poche parole devi passare da progetti winforms a wpf, visto che parli di c# presumo tu stia usando visual studio come ide.
Visto che un wpf ha una ripida curva di apprendimento, soprattutto per chi arriva da winforms, dalle tue affermazioni ti consiglio prima di cimentarti in una simile impresa di fare un ripasso generale sui tipi di linguaggi.
Ad esempio è errato definire html e css linguaggi di programmazione, sono linguaggi per definire formattazione e stile, mentre javascript e php (per rimanere in tema web) sono linguaggi di programmazione (che infatti nel corso delle varie versioni si sono spostati verso un modello sempre più ad oggetti)
Ecco da qui la risposta alla tua domanda se esiste un unico linguaggio per frontend e logica: non che io sappia, e se ci fosse sarebbe controproducente o più ostico che usare linguaggi diversi.

zabnicola
06-01-2021, 08:44
Ecco da qui la risposta alla tua domanda se esiste un unico linguaggio per frontend e logica: non che io sappia, e se ci fosse sarebbe controproducente o più ostico che usare linguaggi diversi.

Grazie per la risposta. No come dici sono linguaggi di markup. E' immaginandolo. Comunque difficilmente si potrà vedere una programmazione ad oggetti in HTML perchè il linguaggio seppur interpretato non da spazio a qualcosa di diverso dalla formattazione del documento. Sono linguaggi di markup potenti HTML e CSS. Si puo chiudere la discussione.

pabloski
06-01-2021, 10:44
Il mio intento era capire se per lo sviluppo di pagine internet, web è possibile avere un unico linguaggio che copra JS/HTML/CSS (tralasciamo lato server).


Lo sviluppo di siti web e web application, è ad oggi la cosa più incasinata che esista e vanta centinaia di soluzioni tra le più diverse.

Esistono framework dove si programma letteralmente e il codice HTML sottostante viene generato dal framework. Tu programmatore non dovrai scrivere una singola riga di HTML, mentre programmerai in un linguaggio ad alto livello.


Quindi virtualizzare i tre linguaggi per crearne uno ad programmazione oggetti.
Ma non ho mai sentito parlare di HTML6 a oggetti, mentre di JS ad oggetti e CSS a oggetti si.

Intanto la programmazione OOP ha fallito e sta sparendo anche nei linguaggi di programmazione propriamente detti. Ormai va per la maggiore il modello basato su composizione e prototipazione. Quindi portare su HTML un modello in via d'estinzione, non mi pare una gran trovata.

Poi c'è il fatto che HTML è un linguaggio di markup che serve a definire elementi strutturali di un'interfaccia utente. E si può dire che sia OOP, dato che i tag corrispondono ad istanze di classi. Non ha la sintassi del C++ o di Java, ma è decisamente orientato agli oggetti.


Al contrario, allora perchè non provare a separare C# con la stessa logica dei tre linguaggi.

Perchè C# è un linguaggio. E' come dire che bisogna separare Javascript e tirarci fuori un concorrente di HTML per definire la struttura delle pagine web. C# si accoppia con XAML. C# è il Javascript e XAML è il HTML.




Ci sarebbe un vantaggio? provando a portare ad un livello piu alto HTML5 o allo stesso piano dello sviluppo di applicazioni winforms

No, perchè HTML non è Turing completo e non è un linguaggio di programmazione. E' stato definito con specifiche peculiarità e limiti ed eccelle nel suo compito. Ma non può fare altro.

Comunque esistono soluzioni di ogni tipo, anche linguaggi dove le GUI sono "embeddate" nel codice del programma, magari usando un DSL. Vedi il linguaggio Red.


realmente potrebbe non servire un sistema operativo perchè con i servizi internet forniti dalla rete riesci a soddisfare tutti i propri bisogni.

E la comunicazione con l'hardware, la gestione dei processi utente, ecc... chi li gestirebbe? Il sistema operativo mica è l'interfaccia grafica. Quella è la parte meno significativa, anche se la più visibile.


Ma tornando ad HTML5 ti basta come in parte fa già chrome os avere un applicazione
che si avvia con moduli del kernel che di base è un browser grafico/non grafico che accedi al sas cloud come un word processor.

No, ChromeOS è Linux con il browser Chrome sopra. Ma senza Linux, ChromeOS non potrebbe nemmeno visualizzare un pulsante sullo schermo.


Ultima sciochezza a chi di voi non è mai capitato di vedere un sito internet dentro un'altro sito internet? non dico solo il link.

Che vuol dire?


E' davvero necessario tutto questo multi process o tasking aprendo le tab di edge per vedere e usare word piuttosto che portale dell'università o navigare in amazon per comprarsi un libro? Il mutitasking non a tutti è apprezzato specialmente da me. Farei le cose con pipe | tra programma e l'altro se potessi.

I sistemi operativi monotask sono esistiti e ancora esistono. Il DOS ( e l'odierno FreeDOS ) sono monotask. E sai cosa? E' impossibile avere il browser aperto e in background il client di posta elettronica che controlla periodicamente l'arrivo di nuova posta.


Come nei telefoni cellulari pratici - smart che fatta la fotografia istantanea dell'applicazione la mettono a riposo nello schedulatore a lungo termine in area di swap per caricarla alla prossimo tocco del dito. :)

Ma gli smartphone hanno sistemi operativi multitask!! E lo swap è usato da tutti i sistemi operativi come area di parcheggio nelle situazioni di sovraccarico di memoria. Perchè salvare lo stato di un processo sul disco, quando puoi tenerlo in ram?

zabnicola
06-01-2021, 12:00
Esistono framework dove si programma letteralmente e il codice HTML sottostante viene generato dal framework. Tu programmatore non dovrai scrivere una singola riga di HTML, mentre programmerai in un linguaggio ad alto livello.
Forse da programmatore html/js/css/php sto cercando proprio questo.


Ma gli smartphone hanno sistemi operativi multitask!! E lo swap è usato da tutti i sistemi operativi come area di parcheggio nelle situazioni di sovraccarico di memoria. Perchè salvare lo stato di un processo sul disco, quando puoi tenerlo in ram?
A mio avviso non è un multitasking completo quello di android però pensandoci con i widget e le notifiche lo diviene anche se per i processi occorre prima uscire per aprirne un'altro. Nel multitasking i processi dovrebbero essere attivi in stato di pronto all'esecuzione caricati nella memoria centrale, sopratutto piu di uno. Comunque si a parte questa cosa sono multitasking.

Infatti mi scuso se si sono dette delle cavolate da me in questa discussione. Ma la discussione aiuta ad intuire una strategia tecnologica ed ad aver un pensiero piu laterale invece che da problem solving. :)

pabloski
06-01-2021, 14:15
Forse da programmatore html/js/css/php sto cercando proprio questo.

Esistono cose come Vaadin https://vaadin.com/

o Blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor che però usa un pò di HTML

Ed è possibile far girare applicazioni .Net, Java, GTK+, Qt e di altri tipi, all'interno dei browser grazie all'uso di Webassembly. Ciò è reso possibile dall'uso della Canvas, che permette di scavalcare completamente il DOM e quindi HTML.

Esempi in Qt/Qml https://itnext.io/developing-web-apps-using-qml-and-qt-for-webassembly-aa84453f2f61

E c'è l'ultimo arrivato, Flutter Web https://flutter.dev/web


A mio avviso non è un multitasking completo quello di android però pensandoci con i widget e le notifiche lo diviene anche se per i processi occorre prima uscire per aprirne un'altro. Nel multitasking i processi dovrebbero essere attivi in stato di pronto all'esecuzione caricati nella memoria centrale, sopratutto piu di uno. Comunque si a parte questa cosa sono multitasking.

E lo sono. Android è Linux e implementa il multitasking che abbiamo pure sui PC. Quello a cui ti riferisci, è il comportamento dell'interfaccia. Per ovvie ragioni, Android ha uno scheduler impostato in modo da penalizzare i processi in background, ma è per una questione di metodo d'uso dei dispositivi mobili.

Per esempio, quando fu introdotto Android sui tablet, dovettero rivedere due cose: (1) le priorità di schedulazione dei processi in background, (2) la GUI che non poteva più essere pensata per visualizzare una singola finestra alla volta. E il concept del punto (2) è stato spinto alle estreme conseguenze nei fork come PhoenixOS e RemixOS.