Esiste ancora un dispositivo in vendita che richiede una programmazione efficiente? Che cos'è? [chiuso]

1

Modifica: come molti di voi hanno sottolineato, l'efficienza può significare un sacco di cose. Immagino che quando dico che il dispositivo 'richiede una programmazione efficiente', intendo che il dispositivo non ha molta memoria o una frequenza di clock della CPU molto alta, e quindi deve essere programmato pensando a queste limitazioni.

Domanda originale: a volte, per allenarsi, gli atleti lavoreranno in luoghi di altitudine più alti per allenarsi. Questo perché c'è meno aria, il che significa che allenarsi è molto più difficile. Una volta che gli atleti si sono abituati all'esercizio in queste condizioni, trovano molto più facile svolgere il lavoro fisico nei luoghi di altitudine normali.

Voglio fare la stessa cosa, tranne con lo sviluppo del software e, più nello specifico, lo sviluppo del gioco. Voglio trovare un sistema con una bassa quantità di RAM (nei kilobyte), bassa velocità di clock della CPU e pochi registri. Immagino che imparare a programmare i giochi su questo tipo di sistema sarebbe molto utile per insegnarmi a scrivere codice efficiente. Inoltre, sarebbe molto divertente:)

I sistemi che ho pensato di programmare sono quelli vecchi di Nintendo; GBA, NES, SNES. Ma ho imparato nel modo più duro che ottenerli, quindi ottenere le schede flash per loro sono molto difficili e al limite dell'essere illegali.

Quindi, la mia domanda è che c'è un dispositivo scadente che mi insegnerà a scrivere codice efficiente che è ancora là fuori e viene venduto? Mi piacerebbe che fosse un dispositivo fisico , guardare i miei programmi eseguiti su macchine fisiche sarebbe molto più soddisfacente, quindi guardarlo su un emulatore, e inoltre, gli emulatori possono essere bacati.

    
posta Aaron 04.03.2013 - 18:01
fonte

2 risposte

7

Stai praticamente cercando qualcosa con un microcontroller . Puoi lanciare il tuo, ma probabilmente vorrai iniziare con una scheda pre-costruita come Arduino, PICAXE, Timbro base, BeagleBone o persino una piattaforma di robotica come un quadricottero o roomba.

Detto questo, ci sono molti aspetti diversi dell '"efficienza" e lo sviluppo integrato non li copre necessariamente tutti. Ad esempio, alcune applicazioni potrebbero essere in grado di aumentare significativamente la velocità di esecuzione utilizzando "gigabyte di RAM" in modo inefficiente. "

    
risposta data 04.03.2013 - 18:18
fonte
2

Si noti che il lavoro di uno sviluppatore è molto più complicato di "scrivere codice efficiente" e, a proposito, scrivere codice in generale, quindi il confronto con gli atleti è strano.

Ora, se per qualche motivo dovresti migliorare in particolare l'efficienza del tuo codice, senza dover fare altro, allora non c'è motivo di cercare dispositivi hardware di bassa qualità. Prendi il dispositivo che hai usato negli ultimi anni ed esegui il codice che scrivi in un profiler o eseguilo centinaia di migliaia di volte. Le probabilità sono che pochi millisecondi appena percettibili persi a causa di un codice inefficiente avranno un impatto visibile sui benchmark quando moltiplicati, ad esempio, a 500.000.

Allo stesso modo, puoi limitarti a un ingombro di memoria insufficiente (RAM), anche se hai accesso a molta più memoria sul tuo dispositivo. Se scrivi codice in C, puoi probabilmente provare a correggere anche alcuni limiti di dimensione per l'eseguibile finale.

I vantaggi?

  • Usi ancora hardware di alta qualità e software moderno per scrivere, compilare ed eseguire il debug del codice.

  • Puoi allenarti in qualsiasi linguaggio di programmazione , apprendendo diverse tecniche di ottimizzazione. Sono abbastanza sicuro che l'ottimizzazione di Haskell non sarebbe la stessa dell'ottimizzazione Java.

  • Puoi utilizzare profiler professionisti che raccolgono dati precisi per te, con la possibilità di analizzarli statisticamente in un secondo momento, vedere come diminuiscono le prestazioni del tuo codice o aumentano nel tempo, ecc. , sai esattamente dove si trova il collo di bottiglia, invece di indovinarlo erroneamente o fare ottimizzazione prematura .

  • Puoi compilare in un solo passaggio . Meno tempo sprechi a trasmettere l'applicazione dal tuo dispositivo sviluppatore al dispositivo su cui esegui il test del codice, più tempo dedicato a fare qualcosa di utile o divertente, come scrivere e testare il codice.

  • Puoi regolare i parametri al volo . 500.000 iterazioni del tuo codice sono troppo lente? Puoi cambiarlo in 250.000 iterazioni.

  • Gioca con una limitazione che ne influenza un'altra. Ad esempio potresti voler avere l'algoritmo di ordinamento più veloce ma che richiede più memoria o l'algoritmo più lento con un ingombro di memoria inferiore.

risposta data 04.03.2013 - 18:32
fonte

Leggi altre domande sui tag