Esistono alcuni tipi di software che non possono essere sviluppati da tutti i principali linguaggi di programmazione?

8

Mi piacerebbe sapere se alcuni dei principali linguaggi di programmazione non possono assolutamente essere utilizzati per creare alcuni tipi di software molto specifici.

Per linguaggio di programmazione principale intendo espressioni come C ++, C #, Java, Ruby, Python. Con "non può essere sviluppato" intendo non può essere sviluppato o non è realistico farlo a causa di prestazioni, difficoltà di implementazione, ecc.

Ho sempre pensato che qualsiasi linguaggio di programmazione potesse essere usato per risolvere qualsiasi problema, ma ultimamente ho pensato che alcune lingue non siano adatte per alcuni progetti.

Se puoi fornire esempi di tali applicazioni, sarebbe apprezzato. Grazie.

    
posta mbillard 11.05.2011 - 17:45
fonte

7 risposte

13

I linguaggi di livello superiore, specialmente quelli che non forniscono qualsiasi mezzi per manipolare direttamente la memoria (dal tuo elenco: Java, Ruby, Python) non sono adatti alla programmazione di sistemi. Per dare esempi concreti, non implementerei (parte di - ad esempio driver) un sistema operativo o una macchina virtuale / interprete in Python.

L'inverso non è quasi il più vicino a "impossibile", ma scrivendo per es. script di utilità o un prototipo per software complessi e complicati come un compilatore, ad es. C ++ (doppiamente in C) può essere così ingombrante diventa un killer di motivazione, considerando che si ottengono molti piccoli oneri in cima al problema reale.

    
risposta data 11.05.2011 - 18:07
fonte
7

Assolutamente, tutto dipende dall'hardware sottostante

Ad esempio, se dovessi programmare lo telaio Jaquard , non sarei in grado di usare C ++ per fare perché non esiste alcun compilatore per quell'hardware. Direi che nessun compilatore sarebbe possibile perché l'hardware non supporta molti dei requisiti richiesti dal C ++ per funzionare come linguaggio.

Un'estensione di questo è nel mondo dei computer analogici che funzionano in modo completamente diverso dal digitale quelli che sono prevalenti oggi.

Tuttavia, potresti considerare che, dato il tempo necessario, potresti creare un compilatore / assemblatore per qualsiasi macchina di von Neumann (input-> processore / Storage- > uscita). Ma alcune macchine di von Neumann, come la MU0 , sono semplicemente troppo semplici per permettergli di eseguire. Maggiori informazioni su MU0 per il lettore interessato .

    
risposta data 11.05.2011 - 18:13
fonte
6

Sì, ci sono alcune cose che non possono essere fatte con varie lingue. Ecco alcuni dei principali criteri che influiscono su questo:

  • Basso livello : i driver di dispositivo e i moduli di controllo hardware possono richiedere l'accesso a posizioni di memoria specifiche e istruzioni di assemblaggio. Se la lingua non fornisce alcun modo per farlo, non è possibile utilizzarlo (pochissimi offrono posizioni e assemblaggi personalizzati del puntatore)
  • Prestazioni : in alcuni casi non è solo questione di tempo, se hai un feed di dati continuo o in tempo reale, non hai scelta, ma essere abbastanza veloce per elaborarlo in tempo reale -time.
  • Binario : per la produzione commerciale i tuoi requisiti potrebbero essere la distribuzione di soli binari, molte lingue di tipo script non hanno moduli binari.
  • Memoria : per i dispositivi embedded e small footprint hai una quantità di memoria molto limitata (o altre risorse). Le lingue che necessitano di VM o di grandi librerie standard non possono essere indirizzate a tale macchina.
  • In tempo reale : oltre a essere abbastanza veloce, alcuni dispositivi devono rispondere agli eventi entro un intervallo di tempo garantito in base a un determinato evento. Un linguaggio dovrebbe supportare l'evento e garantire il tempo di elaborazione (qualcosa come un garbage collector potrebbe impedirlo).
  • Matematica : molti calcoli richiedono una libreria completa di funzioni matematiche e tipi di dati appropriati. Spesso ciò richiede specifici dettagli di implementazione. Alcuni linguaggi di scripting potrebbero non specificarlo abbastanza bene o non riuscire a fornire funzioni chiave.
  • Compatibilità : alcuni hardware non dispongono di compilatori / interpreti per alcune lingue.

Queste sono alcune delle cose che potrei pensare. Sono sicuro che ce ne sono di più. Ma il punto importante è che si ci sono dei requisiti chiave che limitano l'uso di una lingua.

    
risposta data 11.05.2011 - 18:28
fonte
4

I've always thought that any programming language could be used to solve any problem but lately I've been thinking that some languages are unsuitable for some projects.

Sì, è corretto e lo è sempre stato. "Inabilità" e "Non idonei" sono molto diversi.

Potresti sbattere un chiodo in una tavola con l'estremità di un cacciavite. Potresti infilare una vite con il bordo di un artiglio. Ma il martello è molto più adatto a ed è uno strumento migliore per sbattere le unghie, e un cacciavite è uno strumento migliore per i dispositivi di fissaggio filettati.

I linguaggi di programmazione sono strumenti. Alcuni strumenti sono migliori in determinati compiti.

    
risposta data 11.05.2011 - 18:06
fonte
1

L'unica cosa che ritengo irrealistica è lo sviluppo di driver di dispositivo di basso livello in un linguaggio altamente virtualizzato come Java o C # - se si sta tentando di manipolare l'hardware, la VM più impressionante (che rende così tante cose così bello e semplice) sta per intralciarti. Sono sicuro che potrebbe essere fatto, se davvero volessi, ma comporterebbe un sacco di adattamenti VM per farlo funzionare.

Qualsiasi altra cosa può essere fatta in qualsiasi lingua che ti piace.

    
risposta data 11.05.2011 - 18:07
fonte
1

Mi viene in mente un sistema embedded. Ad esempio, non è realistico programmare un router o qualche tipo di robotica utilizzando un linguaggio come C #. Anche se ci sono progetti come netduin che sfruttano il micro framework così ho potuto smentire il mio punto.

    
risposta data 11.05.2011 - 18:08
fonte
0

I cosiddetti linguaggi 4GL sono vincolati dall'ambiente di programmazione a cui sono vincolati. Ad esempio, non è possibile programmare una GUI con ABAP. Tutto ciò che si può fare è un po 'come una GUI nell'ambiente limitato di un client SAP (e questo può essere eseguito solo connesso a un'istanza SAP).

    
risposta data 11.05.2011 - 20:12
fonte

Leggi altre domande sui tag