Perché dovremmo usare linguaggi di basso livello se uno di alto livello come python può fare quasi tutto? [chiuso]

5

So che Python non è adatto a cose come microcontrollori, driver ecc., ma oltre a questo, puoi fare tutto usando python, le aziende si bloccano con l'ottimizzazione della velocità per un vero sistema difficile, ma dimenticano altri fattori che puoi semplicemente aggiorna il tuo hardware per la velocità proposta al fine di ottenere il tuo programma python adatto, se pensi che quanto cust possa mantenere un sistema scritto in C, il confronto è così: per esempio: 10 programmatori per mantenere un sistema scritto in c e un solo programmatore per mantenere un sistema scritto in python, con python puoi acquistare hardware migliore per il tuo programma python, penso che i linguaggi di basso livello tendono ad avere un costo maggiore, dal momento che i programmatori non sono così a buon mercato di un aggiornamento hardware, quindi, questo è il mio punto, perché un sistema dovrebbe essere scritto in c al posto di python ?

    
posta killown 19.10.2010 - 01:23
fonte

6 risposte

23

Il motivo principale è perché il software era già scritto in C (o C ++ o qualsiasi altra cosa) prima che Python diventasse una scelta legittima.

Se si tratta di riscrivere il tuo milione di righe di codice C in Python o di continuare con il codice C, allora la scelta è chiara. Se spendi 12 mesi per riscrivere il codice in Python, allora sono 12 mesi in cui non aggiungi nuove funzionalità e in pratica passerai 12 mesi a tornare esattamente dove ti trovavi.

Per non parlare del fatto che probabilmente avrai perso tutti quei bug di casi angolari che erano stati corretti nel corso degli anni nella versione C, ma che non sono stati effettivamente richiamati nel codice così quando il tuo dev di Python arriva alla porta e dice "perché il codice fa questo? Sembra strano ... lo farò solo in questo modo" in realtà sta dimenticando quel cliente di 6 anni fa che ha perso 12 mesi di retribuzioni a causa di questo oscuro bug in il loro controller RAID che ha funzionato con solo quel particolare pezzo di codice .

È fondamentalmente la stessa risposta che si ottiene quando si chiede "Perché Microsoft non riscrive Windows o Office o (inserire-prodotto-qui) in .NET?" Pensavo che .NET fosse il poster-figlio per tutti gli sviluppi di Microsoft in questi giorni ? "

Ora, quando si tratta di sviluppare nuovi prodotti, allora Python (e tutte le altre possibili scelte) diventano un'opzione più praticabile. Ma devi ancora valutare il vantaggio di andare con Python (o qualsiasi altra cosa) su C o C ++, in particolare quando il tuo nuovo prodotto potrebbe interfacciarsi con un sacco di codice esistente che hai già scritto in C o C ++.

    
risposta data 19.10.2010 - 01:35
fonte
9

Perché anche quando non stai scrivendo "applicazioni di basso livello" come i driver di dispositivo, la necessità di code di basso livello tende a presentarsi in tutti i tipi di posizioni, specialmente per le ottimizzazioni delle prestazioni nelle parti ad alta intensità di calcolo della tua app. Questo è abbastanza comune anche nelle app scritte in C e in altri linguaggi statici e completamente compilati, e peggiora solo quando si inizia a lanciare nell'equazione caratteristiche del linguaggio "di alto livello" intrinsecamente come la tipizzazione dinamica e i puntatori gestiti nell'equazione.

Quando hai un linguaggio che astrae tutti i dettagli di basso livello, come Python, non sei in grado di raggiungere il livello richiesto per risolvere problemi come questo. Ecco perché tendi a vedere lo schema di scrivere il codice principale in un linguaggio compilato e quindi implementare una logica aziendale leggera in un linguaggio di scripting che viene eseguito in cima al codice principale, aumentando di popolarità un po 'di recente.

    
risposta data 19.10.2010 - 01:49
fonte
7

Bene, ho capito la tua domanda come "Perché continuare a scrivere cose in C / C ++ quando sono presenti alternative migliori". Non riscriviamo tutto solo perché abbiamo un martello migliore. E sono d'accordo con te in teoria. Perché scrivere nuove cose in C o ASM perché risulta che ci sono molti più problemi che funzionano meglio per linguaggi "di alto livello" che non.

Penso a una storia che James Gosling ha ricordato del team di Java. Stavano osservando enormi sezioni di codice nella VM originariamente scritte in C perché pensavano che fosse più veloce. Col passare del tempo, hanno dovuto migliorarlo, mantenerlo e aggiungere nuove funzionalità. Il team ha iniziato a chiedersi perché non spostarlo su Java. Hanno fatto e si è rivelato altrettanto performante, più semplice e più facile da modificare. Penso che il nuovo sviluppo non dovrebbe essere fatto in C / C ++, tranne che per quelle eccezioni rilevate, ma ciò che fa crescere il nostro settore è il cambio di piattaforma. Non abbiamo mai risposto a nessuna nuova domanda sull'informatica dagli anni '70, ma continuiamo a crescere in direzioni sorprendenti. Questo è in gran parte dovuto al fatto che ogni 10 anni circa creiamo nuove piattaforme in cui dobbiamo ri-implementare ogni cosa là fuori, aprendo opportunità di transizione dalle lingue precedenti a quelle nuove. Questo è il segreto del successo delle nostre industrie.

Ecco un semplice riassunto dal 1980-2010: Unix C- > Windows C ++ - > Web Java / Javascript / Python / Ruby- > mobile Objective C / Java).

    
risposta data 19.10.2010 - 06:10
fonte
7

Perché se il "sistema" è una biblioteca scientifica o un programma di gioco, potrebbe richiedere prestazioni migliori, ecco perché. Se acquisti hardware 10 volte più veloce, l'implementazione di basso livello continuerà a funzionare meglio.

E poi c'è una ragione abbastanza filosofica, secondo me: dobbiamo restare in contatto con il livello più basso delle nostre macchine. Perdere la conoscenza degli strumenti di base come il linguaggio C sarebbe come coprire ogni centimetro della terra con cemento e costruire su di esso un "sistema" perfettamente funzionante, dimenticando ciò che era laggiù una volta che ci ha dato la nascita e condannando la razza umana all'eterno l'ignoranza.

Kernighan e Ritchie ne sarebbero molto turbati.

    
risposta data 23.10.2010 - 12:30
fonte
4

Alcune osservazioni:

  • L'enorme tendenza nell'informatica è mobile, che da diversi aspetti non è lontano dal microcontrollore e dallo sviluppo di sistemi embedded. Python non è ancora il linguaggio dedicato per iOS, Android o Windows Phone 7.

  • Nel desktop computing, ottenere hardware sempre più veloce è sempre più difficile: la velocità della CPU è bloccata attorno a 3GHz e ottenere tutta la potenza di più core è tutt'altro che facile. I linguaggi di basso livello hanno un vantaggio rispetto a Python qui.

  • Riguardo alla manutenibilità, il rapporto 10: 1 può essere vero con le persone appena laureate che non sono mai state esposte a C ma conoscono Python e Ruby e tutti gli altri nuovi linguaggi. Per la maggior parte degli sviluppatori senior, il rapporto non favorisce Python.

  • Alcuni anni fa, tutto poteva essere realizzato in Java ed essere portatile allo stesso tempo. Alcuni anni prima, era Perl. Chiaramente i vincitori attuali in questi giorni sono C, C ++, C # e Objective-C.

risposta data 23.10.2010 - 13:58
fonte
-1

Ci sono alcuni sistemi che collegano in C direttamente. Certo, puoi eseguire il proxy delle chiamate di funzione e incorporare un interprete, ma posso farlo con quasi tutte le lingue.

    
risposta data 19.10.2010 - 05:00
fonte

Leggi altre domande sui tag