Qual è il modo migliore per iniettare la scienza nella programmazione quotidiana? [chiuso]

5

Lavoro meglio quando ho alcune basi solide. Questo mi aiuta a risolvere meglio i problemi quotidiani, perché posso generalizzarli. La cosa che trovo nella programmazione è che tante cose sono scatole nere. La logica è scientifica, ma i comandi no. Un comando in una lingua è solo "qualcosa che fa qualcosa". È molto difficile capire quale sia la sua logica, senza capire l'hardware sottostante. Ho imparato un po 'da brainfuck e mi è piaciuto molto, ma ha ancora dei comandi. Questi comandi sono pacchetti di funzionalità che non possono essere realmente compresi senza la comprensione di tutti i livelli inferiori della logica, sfortunatamente. Quello che vorrei sapere è se ci sono dei principi matematici o logici che aiutano a essere in grado di generalizzare i problemi di programmazione?

    
posta Eric Vi4ing 20.08.2012 - 10:11
fonte

3 risposte

7

The thing I find in programming is so many things are black boxes.

Ecco alcune risorse che apriranno quelle scatole nere:

Secondo una recensione di Amazon:

...The real value of Code is in its explanation of technologies that have been obscured for years behind fancy user interfaces and programming environments, which, in the name of rapid application development, insulate the programmer from the machine...

Questo corso di Coursera esamina i principali livelli di astrazione computazionale sotto i moderni linguaggi di alto livello. In base alla descrizione del corso:

...We will develop students’ sense of “what really happens” when software runs — and that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level, the C programming level and the Java programming level...

E infine il mio preferito:

@LieRyan ha fornito un'eccellente spiegazione dall'atomo fino al linguaggio assembly.

MODIFICA 1:

What's the best way to inject science into everyday programming?

Ci sono così tanti argomenti sul fatto che uno scienziato informatico è davvero uno scienziato e se un ingegnere del software è davvero un ingegnere.

Ad ogni modo, le seguenti risorse ti aiuteranno a iniettare la scienza nella programmazione quotidiana:

I libri di Knuth sono considerati la Bibbia per gli algoritmi. Lo studio delle strutture dati e degli algoritmi è il più vicino al metodo scientifico nel campo dell'Informatica che potrei pensare.

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations.

risposta data 20.08.2012 - 13:07
fonte
8

C'è una base matematica per la programmazione. Si chiama Lambda Calculus ed è molto interessante. Sfortunatamente, eccetto se stai facendo qualche ricerca in CS o stai progettando un nuovo linguaggio funky, non ti aiuterà nella tua vita di tutti i giorni.

Aiuterà a imparare e capire davvero le lingue. Ti aiuterà anche a divertirti con le persone di haskell a cui piace lavorare con cose come l'omeoma degli omofobismi. Quindi consiglierei ancora qualche cultura nel calcolo lambda a chiunque sia interessato alla programmazione.

Se non le hai incontrate, ti consiglierei di conoscere i schemi di progettazione . Non li chiamerei "scienza", ma fornisce una buona base per parlare con una certa precisione di un codice senza ridefinire tutto tutto il tempo.

    
risposta data 20.08.2012 - 11:11
fonte
1

Vorrei anche controllare le cosiddette macchine di Turing, vedi link

Sono completamente formali e stanno da soli (il che significa che non è necessaria alcuna comprensione di livello inferiore). È una teoria abbastanza complessa ma serve come base di livello più basso dei linguaggi di programmazione e ha uno sfondo matematico / formale.

    
risposta data 20.08.2012 - 15:08
fonte

Leggi altre domande sui tag