perché non più linguaggi di programmazione hanno interfacce integrate con il gestore delle finestre?

StackOverflow https://stackoverflow.com/questions/1020168

Domanda

La programmazione è fondamentale per automatizzare le attività su un computer.
Presumibilmente tali compiti sarebbero normalmente svolti manualmente da un essere umano.
Gli umani usano il computer attraverso la tastiera, il mouse e l'interazione con la console o il gestore delle finestre.
Ma poche lingue hanno funzioni integrate che forniscono un'interfaccia a questi oggetti informatici di base.

Una notevole eccezione è autohotkey, una lingua open source su Windows, che offre funzioni integrate che consentono le seguenti semplici attività:
    * Ottieni informazioni sui pixel
    * Ottieni la posizione del mouse
    * Macro della tastiera
    * Simula i tasti premuti
    * Simula il clic del mouse
    * Gestione delle finestre
Vedi esempi su rosettacode .

Ci sono stati vari tentativi su Linux, molti dei quali sono stati fermati senza spiegazioni. Uno è la libreria tcl inattiva: android. Cerca il codice google per android, lang: tcl

È stato utile?

Soluzione

Scrivo il codice del server web. Nessun essere umano interagisce con il codice. Sono semplicemente molti plug-in complessi per Apache.

" Gli umani usano il computer attraverso la tastiera, il mouse e l'interazione con la console o il gestore delle finestre. & Quot;

Questo è completamente falso nel mio caso. L'utente "quot" invia richieste tramite HTTP. Nessuna tastiera, nessun mouse, nessuna console, nessun gestore di finestre.

L'utente potrebbe utilizzare una sorta di interfaccia grafica di fantasia, ma non importa per me o per il mio software. Tutto quello che vedo sono richieste HTTP GET e POST. Testo puro.

" Ma pochissimi linguaggi hanno funzioni integrate che forniscono un'interfaccia a questi oggetti informatici di base. "

Una corretta. Non ho alcuna utilità per tastiera, mouse, console o gestore di finestre.

Altri suggerimenti

Tutte le piattaforme di personal computer hanno librerie che lo faranno.

Il problema è che ciò richiederebbe la standardizzazione delle interazioni dell'utente su tutti i sistemi. Java ci ha provato, senza molto successo. Ci sono state altre biblioteche con più o meno successo, Qt probabilmente è la più promettente fino ad oggi.

È certamente possibile scrivere una lingua per una singola piattaforma che includerà tutti i fondamenti dell'interfaccia utente. È anche possibile simularlo con una GUI e una libreria. Tuttavia, ci sono buone ragioni per volere un linguaggio utilizzabile su qualsiasi piattaforma importante, indipendentemente dal fatto che ci sia o meno una GUI.

Dubito che la premessa sia vera. Java può fare tutto ciò, tranne forse "gestione delle finestre" dal momento che non so cosa si intende con questo.

Sarei sorpreso se non puoi farlo con c #.

Se ci sono molte lingue che non riescono a farlo, immagino sia perché è difficile farlo senza legare la lingua al sistema operativo.

Prima di tutto, penso che tu stia chiedendo perché le librerie standard dei linguaggi di programmazione non hanno interfacce integrate con il gestore delle finestre. Il linguaggio stesso e le sue librerie sono piuttosto distinti.

Un grande motivo è la portabilità. Se ci sono troppe funzioni specifiche nelle librerie di un linguaggio di programmazione, sarà più difficile portarlo su altri sistemi. Ad esempio, I / O, funzioni matematiche, stringhe, varie strutture di dati e algoritmi correlati, sono tutti generici e possono essere fatti funzionare praticamente su qualsiasi computer.

Ma cose come il gestore delle finestre, la GUI, ecc., sono molto più specifici per alcune piattaforme, motivo per cui non sono inclusi nelle librerie standard. Questo è ciò che rende C / C ++ così portatile.

Le attività eseguite dai computer senza alcuna interazione con i dispositivi di interfaccia umana superano quelle attivate direttamente da un essere umano per un fattore enorme.

I linguaggi di programmazione cercano (o almeno ci stanno provando) di essere indipendenti con la piattaforma. Esempio in .net, devi fare riferimento ad alcune API Win32 per fare alcune delle cose che hai specificato sopra. Inserendolo nel modello del linguaggio di programmazione principale, .net diventerà troppo accoppiato con il sistema operativo, quindi creare la sua controparte Mono sarà troppo noioso.

Per quanto riguarda le sequenze di tasti, le macro e alcune cose, il modo più semplice che sto facendo in questo momento è vbscript vero o in PowerShell :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top