AutoIT AutoIt ...

Stato
Discussione chiusa ad ulteriori risposte.

srsly

Bannato
10 Marzo 2015
334
16
85
140
Dato che e' stata chiusa questa discussione: http://www.inforge.net/xi/threads/newteam-creazione-bot-quack.437985/ e non posso più rispondere, vorrei esprimere le mie opinioni su AutoIt
@SpeedJack
Introduzione ...
AutoIt è un linguaggio scripting progettato per automatizzare windows, e questo è corretto ...
Aggiungiamo che, utilizza una combinazione di tasti simulati, movimento mouse finestre, manipolazione per offrire l'automatizzazione di operazioni in un modo non possibile con altri linguaggi...
Possiamo simulare sequenze di tasti, movimenti del mouse, manipolare finestre e processi, creare interfaccie grafiche, si ha un supporto COM ecc.
Che è piccolo, autonomo, facile da imparare la sintassi basica eccetera hai ragione.

SpeedJack: AutoIT non è neanche un linguaggio di programmazione completo.
Io credo che i linguaggi meta-scripting sono linguaggi di programmazione abbastanza validi, incluso AutoIt ...
Anche se possono essere usati come "standalone", linguaggi come python, ruby eccetera sono chiamati proprio così perchè hanno qualcosa in comune con gli altri ..
Ecco cosa sono i linguaggi scripting secondo me, ovvero non compilati ma interpretati in tempo reale.
 
Quell'utente voleva creare un software decisamente grosso. Farlo con AutoIT (e, imho, anche un linguaggio di programmazione vero e proprio con sintassi BASIC-like) sarebbe un suicidio.
Per quanto riguarda la questione "linguaggio di programmazione o meno", formalmente un linguaggio di programmazione si definisce tale solo se è Turing completo: in pratica se è in grado di compilare se stesso. Aut2Exe (il compilatore AutoIT) è scritto in C++. Non tanto perché AutoIT non è in grado di compilarsi (che, con un serio sforzo, AutoIT può compilare se stesso - se non erro), ma perché non è adatto a questo: con un altro linguaggio è molto più facile.
Il sito ufficiale stesso di AutoIT lo definisce come un "BASIC-like scripting language designed for automating the Windows GUI and general scripting" e Wikipedia lo classifica come Automation Scripting Language.
Per cui, se lo stesso produttore non lo definisce linguaggio di programmazione, non vedo perché dovrei chiamarlo io così.
 
Quell'utente voleva creare un software decisamente grosso. Farlo con AutoIT (e, imho, anche un linguaggio di programmazione vero e proprio con sintassi BASIC-like) sarebbe un suicidio.
Per quanto riguarda la questione "linguaggio di programmazione o meno", formalmente un linguaggio di programmazione si definisce tale solo se è Turing completo: in pratica se è in grado di compilare se stesso. Aut2Exe (il compilatore AutoIT) è scritto in C++. Non tanto perché AutoIT non è in grado di compilarsi (che, con un serio sforzo, AutoIT può compilare se stesso - se non erro), ma perché non è adatto a questo: con un altro linguaggio è molto più facile.
Il sito ufficiale stesso di AutoIT lo definisce come un "BASIC-like scripting language designed for automating the Windows GUI and general scripting" e Wikipedia lo classifica come Automation Scripting Language.
Per cui, se lo stesso produttore non lo definisce linguaggio di programmazione, non vedo perché dovrei chiamarlo io così.
Mi dispiace dirtelo, ma AutoIt è un linguaggio di programmazione.
Su Wikipedia hai letto male, ecco la lista dei linguaggi di programmazione ... e AutoIt è in questa lista.
https://it.wikipedia.org/wiki/Lista_dei_linguaggi_di_programmazione
Tutti i linguaggi di scripting sono linguaggi di programmazione, ma non tutti i linguaggi di programmazione sono linguaggi scripting ... Perciò ti devi decidere, o dici che è un linguaggi di programmazione o no. Non c'è un "quasi".
Un linguaggio scripting è un linguaggio che scripta altre cose per fare altre cose.
I linguaggi scripting sono spesso compilati (rapidamente e a runtime). Alcuni linguaggio di programmazione si compilano pure in runtime ( pensa JIT ).
Gli script sono corsi da un interprete, quindi ci deve essere un interprete nel sistema operativo per l'esecuzione dello script.
 
Gli script sono corsi da un interprete, quindi ci deve essere un interprete nel sistema operativo per l'esecuzione dello script.
In AutoIT l'interpete viene incluso nell'eseguibile, ma c'è.
Su Wikipedia hai letto male, ecco la lista dei linguaggi di programmazione ... e AutoIt è in questa lista.
https://it.wikipedia.org/wiki/Lista_dei_linguaggi_di_programmazione
Non ho letto male, semplicemente mi fido di Wikipedia inglese, che è più controllata e meglio mantenuta, piuttosto che quella italiana:
https://en.wikipedia.org/wiki/AutoIt
AutoIT qui, non viene chiamato linguaggio di programmazione.
Ma lo stesso sito di AutoIT (il produttore!) non lo chiama linguaggio di programmazione.
Che un linguaggio di scripting sia necessariamente un linguaggio di programmazione è vero, senza dubbio. E che per questo AutoIT sia tecnicamente un linguaggio di programmazione, ok (come anche per il fatto che è Turing completo). Ma che si possa (e così generalmente si fa tra i programmatori) distinguere più precisamente tra scripting e programmazione in base a certe caratteristiche è altrettanto vero: utilizzare AutoIT per la programmazione di grandi applicativi è senza dubbio una mossa molto stupida. Un linguaggio di programmazione "più serio", che tale si possa chiamare a tutti gli effetti, è adeguato allo sviluppo di grandi software.
 
In AutoIT l'interpete viene incluso nell'eseguibile, ma c'è.
Questo era scontato.
Se vogliamo comparare poi, esegue il codice sorgente direttamente in memoria (solitamente all'interno della propria macchina virtuale)
AutoIT qui, non viene chiamato linguaggio di programmazione.
Ma lo stesso sito di AutoIT (il produttore!) non lo chiama linguaggio di programmazione.
Che un linguaggio di scripting sia necessariamente un linguaggio di programmazione è vero, senza dubbio.
"BASIC-like scripting language designed for automating the Windows GUI and general scripting"
Dice che è un linguaggio scripting o come.
Un linguaggio scripting E' un linguaggio di programmazione ... In pratica ti stai confondendo con dei sinonimi. Non proprio sinonimi, ma siamo sempre lì ... Un linguaggio scripting è un linguaggio di programmazione, mettitelo bene in testa.
Perciò, nessuno dei due siti ha affermato il contrario.
(come anche per il fatto che è Turing completo)
Un linguaggio è turing completo se solo tale linguaggio è in grado di calcolare qualunque problema "computabile".
Memorizzazione di valori, looping eccetera sono circa i requisiti necessari.
Non ho detto che è buono per fare grandi software o che questo linguaggio è IDONEO al 100% per quel ragazzo, bensì sto precisando che è sufficientemente valido per essere definito come linguaggio di programmazione.
Praticamente stai sottovalutando AutoIT inutilmente, dato che è stato creato per un altro ambito completamente diverso.

EDIT: Poi, Wikipedia italiano o inglese non c'entra ... Wikipedia bene o male è la versione tradotta in italiano.
Questa è la versione inglese, e AutoIT è sempre presente in lista: https://en.wikipedia.org/wiki/List_of_programming_languages
 
Un linguaggio scripting E' un linguaggio di programmazione ... In pratica ti stai confondendo con dei sinonimi
Veramente non sto confondendo nulla. Hai scritto una cosa che avevo già scritto nel messaggio prima:
Che un linguaggio di scripting sia necessariamente un linguaggio di programmazione è vero, senza dubbio.
Solo che ho sostenuto questo:
Ma che si possa (e così generalmente si fa tra i programmatori) distinguere più precisamente tra scripting e programmazione in base a certe caratteristiche è altrettanto vero: utilizzare AutoIT per la programmazione di grandi applicativi è senza dubbio una mossa molto stupida. Un linguaggio di programmazione "più serio", che tale si possa chiamare a tutti gli effetti, è adeguato allo sviluppo di grandi software.
Voglio dire, sostanzialmente, che (nonostante la definizione di linguaggio di scripting inizi sempre e comunque con "è un linguaggio di programmazione") si tende a distinguere tra scripting e programmazione. Insomma, BATCH è anch'esso un linguaggio di scripting. Dato che è un linguaggio di scripting è anche un linguaggio di programmazione (è pure presente anche nella lista di Wikipedia). Ma credo che chiunque capisca la differenza tra il BATCH e un linguaggio di programmazione vero e proprio. Non sto parlando di definizione esatta, formale - ma di una distinzione che viene fatta 'per intendersi'. Solitamente, si distingue tra linguaggi di scripting e linguaggi di programmazione veri e propri (anche se i linguaggi di scripting formalmente sono linguaggi di programmazione).
Per il resto, indipendentemente dalla storia sullo scripting, un linguaggio è "di programmazione" se è Turing-completo, ossia se è in grado di compilare sé stesso. Come ho detto nel primo messaggio di questa discussione anche l'AutoIT è Turing-completo e quindi formalmente è un linguaggio di programmazione. Ma io, come la maggior parte dei programmatori, preferisco comunque distinguere tra linguaggi di scripting e linguaggi di programmazione veri e propri: non attraverso una definizione formale ma per alcune caratteristiche che contraddistinguono gli uni dagli altri. BATCH è un linguaggio di scripting e nessuno ha il coraggio di chiamarlo "di programmazione" (anche se tecnicamente lo è); AutoIT similmente è un linguaggio di scripting e, dato che nemmeno il sito ufficiale lo chiama così, preferisco non chiamarlo "di programmazione".
kipedia italiano o inglese non c'entra ... Wikipedia bene o male è la versione tradotta in italiano.
Generalmente molto più povera e meno controllata (quindi maggiormente piena di cagate - e su Wikipedia se ne trovano a volte).
 
  • Mi piace
Reazioni: MadCoder
Veramente non sto confondendo nulla. Hai scritto una cosa che avevo già scritto nel messaggio prima:

Solo che ho sostenuto questo:

Voglio dire, sostanzialmente, che (nonostante la definizione di linguaggio di scripting inizi sempre e comunque con "è un linguaggio di programmazione") si tende a distinguere tra scripting e programmazione. Insomma, BATCH è anch'esso un linguaggio di scripting. Dato che è un linguaggio di scripting è anche un linguaggio di programmazione (è pure presente anche nella lista di Wikipedia). Ma credo che chiunque capisca la differenza tra il BATCH e un linguaggio di programmazione vero e proprio. Non sto parlando di definizione esatta, formale - ma di una distinzione che viene fatta 'per intendersi'. Solitamente, si distingue tra linguaggi di scripting e linguaggi di programmazione veri e propri (anche se i linguaggi di scripting formalmente sono linguaggi di programmazione).
Per il resto, indipendentemente dalla storia sullo scripting, un linguaggio è "di programmazione" se è Turing-completo, ossia se è in grado di compilare sé stesso. Come ho detto nel primo messaggio di questa discussione anche l'AutoIT è Turing-completo e quindi formalmente è un linguaggio di programmazione. Ma io, come la maggior parte dei programmatori, preferisco comunque distinguere tra linguaggi di scripting e linguaggi di programmazione veri e propri: non attraverso una definizione formale ma per alcune caratteristiche che contraddistinguono gli uni dagli altri. BATCH è un linguaggio di scripting e nessuno ha il coraggio di chiamarlo "di programmazione" (anche se tecnicamente lo è); AutoIT similmente è un linguaggio di scripting e, dato che nemmeno il sito ufficiale lo chiama così, preferisco non chiamarlo "di programmazione".

Generalmente molto più povera e meno controllata (quindi maggiormente piena di cagate - e su Wikipedia se ne trovano a volte).
C'è un problema di fondo con la lingua italiana ... Prima hai detto che AutoIT non è del tutto un linguaggio di programmazione, adesso hai appena affermato che un linguaggio scripting è un linguaggio di programmazione.
Adesso lascia stare Batch ...
Batch è comunque SUFFICIENTEMENTE un linguaggio di programmazione, turing completo o no. (Guarda sempre Wikipedia) ... Non c'entra il coraggio o meno.
I tuoi paragoni più che altro sono insensati, perchè la differenza principale tra i linguaggi scripting e non, è nel modo in cui vengono utilizzati.
Gli script sono veloci e "sporchi" tipicamente ... Ma ti rendono comunque la vita più facile.
Questo non vuol dire che non si possano fare tante cose con un linguaggio scripting.
Poi, parlando pure di Python (sempre scripting) è possibile rendere in piena regola applicazioni GUI con esso. La differenza è che alcuni linguaggi di programmazione sono a volte veloci, e forniscono più controllo su cose di basso livello (sempre se vuoi) ...
Gli svantaggi sono comunque pochi.
Se vuoi saperne di più, leggi pure qui:
https://it.wikipedia.org/wiki/Linguaggio_di_scripting
O se non ti fidi (che poi non ho capito perchè non ti dovresti fidare della versione italiana, anche se possono sbagliare anche nella versione inglese) ...:
https://en.wikipedia.org/wiki/Scripting_language
 
Batch è comunque SUFFICIENTEMENTE un linguaggio di programmazione
La stessa cosa l'ho detta io nel messaggio precedente: ho detto che BATCH è un linguaggio di programmazione. Mai negato il contrario.
anche se possono sbagliare anche nella versione inglese
Certo che possono sbagliare anche nella versione inglese. Dico semplicemente che, per una semplice questione di numeri di parlanti di quella lingua, Wikipedia inglese è più controllata e quindi più affidabile.
C'è un problema di fondo con la lingua italiana ... Prima hai detto che AutoIT non è del tutto un linguaggio di programmazione, adesso hai appena affermato che un linguaggio scripting è un linguaggio di programmazione.
Assolutamente no.
Nel messaggio nell'altra discussione ho scritto:
"AutoIT non è neanche un linguaggio di programmazione completo"
Il tutto sta in quella parola "completo" che ho messo proprio per indicare che formalmente è un linguaggio di programmazione, ma imho, parlando, preferisco non chiama così quando lo stesso produttore non lo chiama così. Solo per fare una distinzione non formale.
Allo stesso modo nel primo messaggio di questa discussione ho scritto:
"se lo stesso produttore non lo definisce linguaggio di programmazione, non vedo perché dovrei chiamarlo io così"
Semplicemente ho detto che non lo chiamo linguaggio di programmazione sempre per fare quella distinzione non formale di cui parlavo prima. Poche righe sopra alla parte citata del messaggio, ho proprio detto che AutoIT è formalmente un linguaggio di programmazione in quanto è Turing-completo. Quindi, non è una novità che dico che AutoIT è formalmente un linguaggio di programmazione: l'ho detto subito all'inizio di questa discussione. Non ho mai affermato il contrario.
Ancora, nel secondo messaggio ho scritto:
"AutoIT qui, non viene chiamato linguaggio di programmazione.
Ma lo stesso sito di AutoIT (il produttore!) non lo chiama linguaggio di programmazione"
Parlando di "chiamare" non di "definizione formale". Semplicemente il modo in cui si chiama, parlando.
Infine, nel terzo messaggio, non ho fatto altro che ripetere le stesse cose che ho detto nei messaggi precedenti. Il BATCH era un esempio di "caso limite". E anche per il BATCH, appunto, non ho mai affermato che non sia un linguaggio di programmazione.

In definitiva:
AutoIT è formalmente un linguaggio di programmazione in quanto Turing-completo e in quanto di scripting;
AutoIT generalmente viene chiamato "di scripting" invece che "di programmazione"; Anche il produttore lo chiama così;

Perciò ho scritto che non è un "linguaggio di programmazione completo" (sì, formalmente lo è - mai negato).
 
"se lo stesso produttore non lo definisce linguaggio di programmazione, non vedo perché dovrei chiamarlo io così"

Ma dove? Cosa dici?
Io dal sito ufficiale leggo:
AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting.
La stessa cosa ... Dice lui stesso che è un linguaggio di programmazione come già affermato prima, ti ho appena spiegato cosa E' EFFETTIVAMENTE un linguaggio scripting.
Se non hai capito, per favore non scrivere più, non voglio essere monotono.
 
Ma dove? Cosa dici?
Io dal sito ufficiale leggo:

La stessa cosa ... Dice lui stesso che è un linguaggio di programmazione come già affermato prima, ti ho appena spiegato cosa E' EFFETTIVAMENTE un linguaggio scripting.
Se non hai capito, per favore non scrivere più, non voglio essere monotono.
Cercherò di essere chiaro. Sono perfettamente d'accordo: AutoIT è di programmazione. L'ho scritto anche in tutti i messaggi qui sopra, non lo nego. Faccio solo notare che pure il sito scrive "scripting" e non "programmazione", semplicemente per fare una distinzione più in dettaglio (anche se scripting implica programmazione). Per questo, dico, AutoIT è meglio chiamarlo "di scripting" piuttosto che "di programmazione" (anche se è comunque corretto).

Per fare un esempio talmente stupido che mi vergogno di me stesso che l'ho ideato: mettiamo che c'è un Re di Italia che è anche Imperatore d'Europa. Se parlo di lui di questioni riguardanti esclusivamente l'Italia, probabilmente lo chiamerò Re; Se invece parlo di lui di questioni riguardanti l'Europa o il Mondo probabilmente lo chiamerò Imperatore.
(sì l'esempio è stupido... voglio solo dirti che quando un linguaggio si chiama "di scripting" si mette in risalto la sua natura di linguaggio di scripting e il fatto che va utilizzato per lo scripting; se un linguaggio si chiama "di programmazione" si marca maggiormente il fatto che è proprio di programmazione)


Finisco qui la discussione, perché non ci credo che ancora non ti è chiaro cosa ho detto dall'inizio di tutta questa storia fino ad ora. Secondo me hai capito da un pezzo. Alla fine è dall'inizio della discussione che in fondo siamo d'accordo quindi non vedo perché sta continuando così a lungo.
 
Stato
Discussione chiusa ad ulteriori risposte.