Perché solo i linguaggi di scripting per automatizzare le attività? [chiuso]

2

Per automatizzare le attività, ho solo sentito parlare di persone che usano linguaggi di scripting.

Perché le persone non usano linguaggi compilati per automatizzare le attività?

Che cosa possono fare i linguaggi di scripting per automatizzare le attività che le lingue compilate non possono?

EDIT:

Lasciami essere chiaro con queste frasi:

Con un "linguaggio di scripting", intendo un linguaggio di programmazione tale che un programma (o uno script) che è scritto in quella lingua possa essere eseguito da un interprete. Lo script non deve essere compilato.

Con un "linguaggio compilato", intendo un linguaggio di programmazione tale che un programma scritto in quella lingua debba essere compilato prima che il programma possa essere eseguito.

    
posta Niko Gambt 09.12.2018 - 23:39
fonte

3 risposte

7

Automazione di script è . I linguaggi di scripting sono stati sviluppati appositamente per le attività di automazione. Spesso dispongono di funzionalità che semplificano lo scripting, ad es. semplici meccanismi per invocare altri programmi o un linguaggio meno severo (di solito, nessun sistema di tipo, o nessun requisito per dichiarare variabili, collezioni built-in, ...). Per esempio. Perl è stato progettato per "rendere le cose facili e le cose più difficili possibili".

Il runtime linguistico di un linguaggio di scripting viene spesso preinstallato sui sistemi di destinazione, rendendo banale lo sviluppo e la distribuzione di questi script di automazione: basta plopare un file in questa cartella e il gioco è fatto. Ad esempio: Shell, Perl e Python sono ampiamente disponibili sulla maggior parte dei sistemi operativi Unix e Linux.

Le lingue compilate tendono ad essere diverse: le loro lingue sono spesso orientate verso una programmazione "seria" che coinvolge progetti più grandi. Per esempio. Java richiede un sostanziale boilerplate anche per il programma più semplice. Dovrai anche installare prima la toolchain e compilare il codice prima di eseguirlo. Niente di tutto ciò è insormontabile, ma è una serie di ostacoli extra.

Naturalmente, le barriere tra linguaggi di scripting e lingue reali sono completamente scomparse ormai:

  • JavaScript, un linguaggio di scripting del browser, è ora utilizzato per lo sviluppo serio sul lato server. Usarlo tende a coinvolgere così tanti strumenti e strumenti di sviluppo extra, mette in imbarazzo qualsiasi altro linguaggio.
  • Java non è l'unico linguaggio che gira su JVM. Per le attività di scripting potresti usare Groovy.
  • Python e PHP sono utilizzati per progetti enormi e ora dispongono di sistemi di tipi e supporto OOP che superano quello di Java.
  • Perché la compilazione dovrebbe essere un ostacolo? Molti linguaggi tradizionalmente compilati tra cui C, Go e Haskell hanno a disposizione degli interpreti o script wrapper che compilano semplicemente il programma al volo (cint, runhaskell, gorun).

In alcune cerchie, è un serio suggerimento che dovresti usare Vai invece di Bash per le tue attività di scripting! Questo è un po 'folle: le due lingue non mirano nemmeno a compiti remoti simili - ma data la strumentazione disponibile è assolutamente possibile e in alcune circostanze forse anche ragionevole farlo.

    
risposta data 10.12.2018 - 00:23
fonte
2

Non penso che ci sia una regola così severa. Se la piattaforma supporta naturalmente il linguaggio compilato, può essere utilizzato anche. Ad esempio, io uso spesso C # come linguaggio "scripting" per l'automazione di Windows.

Posso evidenziare solo una differenza pratica - dato che i compiti di automazione sono spesso ad-hoc e, quando si tratta di più persone che lavorano insieme, alcuni di loro ne escono, può accadere in modo che tu trovi i tuoi processi importanti a seconda di un binario con origine non chiara, che nessuno sa come modificare. Quando il tuo binario è la fonte, previene tale rischio.

    
risposta data 10.12.2018 - 07:42
fonte
1

Le linee tra "compilato" e "scripting" sono piuttosto sfocate, ma se guardi gli estremi, come C a un'estremità e Bash all'altra estremità, è ovvio che sono ottimizzati per diversi tipi di compiti:

Vantaggi di C:

  • può essere estremamente veloce
  • vicino al metallo

Svantaggi:

  • Complesso per imparare a usare correttamente
  • facile arresto anomalo del tuo computer
  • slow turnaround durante lo sviluppo e il testing.

Vantaggi di Bash:

  • ottimizzato per one-liner o programmi brevi
  • turnaround estremamente rapido con sviluppo interattivo
  • progettato per l'integrazione con tutti i tipi di sistemi.

Svantaggi:

  • piuttosto lento
  • non è realmente progettato per programmi più grandi, potrebbe diventare difficile da mantenere

Si noti che i vantaggi di C non sono importanti quando si automatizzano i sistemi. Se le prestazioni sono un problema, il collo di bottiglia probabilmente non è lo stesso script di automazione. L'utilizzo delle risorse dello script sarà probabilmente insignificante rispetto all'applicazione che è in fase di scripting.

L'automazione degli script in genere non è molto complessa, quindi i problemi di manutenibilità degli script Bash più grandi non entrano in gioco. Questo è quasi vero per definizione: se un programma contiene molta logica complessa a sé stante, non lo chiamiamo script di automazione.

Quindi non è in realtà che i linguaggi compilati non possono svolgere lo stesso compito dei linguaggi di scripting, ma è più semplice e più veloce per risolvere la stessa attività usando un linguaggio di scripting.

    
risposta data 10.12.2018 - 10:53
fonte

Leggi altre domande sui tag