la codifica è importante? [chiuso]

9

La codifica è importante per essere bravi in informatica? Si dovrebbe implementare l'algoritmo per conoscerlo bene?

Ricordo l'idioma di un professore di cs che " I never code"

    
posta hilal 22.12.2010 - 22:03
fonte

15 risposte

27

Non conoscerai l'algoritmo bene finché non lo codifichi.

    
risposta data 22.12.2010 - 22:23
fonte
19

La codifica non è importante per il tuo professore, ma devi tenere a mente che non è pagato per fare cose. È pagato per dire cose (e scrivere cose).

Sono un ex professore di matematica, quindi comprendo bene questa dinamica.

Se vuoi seguire il suo percorso e diventare un teorico informatico, allora sì, la codifica ha un'importanza minore. Ma se lo fai, ricorda di mantenere l'umiltà, sapendo che il tuo stipendio è pagato dalle risorse guadagnate da coloro che hanno scelto di fare cose.

    
risposta data 22.12.2010 - 22:28
fonte
16

Computer Science is no more about computers than astronomy is about telescopes

- Edsger Dijkstra

Tendo ad essere d'accordo.

    
risposta data 22.12.2010 - 23:05
fonte
11

Se stai parlando di essere un puro accademico informatico specializzato in concetti di Computer Science astratti e fondamentali, allora non necessariamente.

Per piegare un'analogia: è un po 'come chiedere se ogni scienziato missilistico della NASA dovrebbe volare nello spazio per essere un "bravo scienziato missilistico". Ovviamente no. Essere un astronauta fa parte del settore del volo spaziale, e una parte molto pratica, ma non significa che gli scienziati di terra non siano altrettanto importanti a modo loro.

Detto questo, è probabilmente una buona idea applicare l'algoritmo che ha creato, se non addirittura scriverlo in un linguaggio di programmazione reale. In questo senso, puoi pensare al design dell'algoritmo come una branca della matematica.

    
risposta data 22.12.2010 - 22:13
fonte
9

La codifica non è molto importante per essere un vero scienziato informatico. E pensare nel codice può limitare il pensiero mentre cercano di sviluppare concetti astratti utili. I codificatori più eccellenti non hanno i brividi intellettuali per analizzare algoritmi complessi o sviluppare concetti come linguaggi di programmazione, algoritmi avanzati di ricerca e ordinamento, teoria degli automi finiti, teoria del calcolo distribuito, R-Trees, protocolli di tolleranza agli errori, protocolli di comunicazione affidabili, digitale algoritmi di elaborazione del segnale, teoria crittografica, analisi e ottimizzazione delle prestazioni, caching efficiente, riduzione della mappa, protocolli di sicurezza affidabili ecc. I codificatori e gli ingegneri informatici di solito possono usare queste teorie nei sistemi che stanno cercando di costruire e farlo in modo abbastanza efficace, ma questo è davvero il regno dell'ingegnere dei sistemi informatici o programmatore di computer.

La codifica è di fondamentale importanza per essere un programmatore di computer. È anche utile comprendere come codificare i concetti astratti utili prodotti dagli scienziati informatici in codice funzionante.

Un grande problema nell'informatica è che spesso devono trovare soluzioni ai problemi di matematica che hanno poca utilità nel risolvere i problemi di programmazione odierni. Anche se avessero programmato una soluzione, nessuno sarebbe davvero in grado di usarlo. Pensa alla teoria dell'elaborazione del segnale digitale. È stato inventato da gente come Fourier, Hilbert e Shannon, ma l'applicazione ai problemi DSP computerizzati non è stata ampiamente possibile fino a circa 20 anni fa.

Il grande problema dell'educazione al computer è che la maggior parte delle persone insegnate da scienziati informatici non diventeranno informatici. Ma troppi scienziati informatici non capiscono questo. La codifica potrebbe non essere importante per loro, ma se sei nella loro classe, sarà quasi certamente importante per te.

Un altro grosso problema nell'educazione al computer è che molti veri scienziati informatici mancano dell'esperienza industriale per essere utili nell'insegnare lo sviluppo del software. Stanno essenzialmente cercando di insegnare qualcosa che in realtà non sanno. Ciò li fa perdere credibilità. Le cose che sono importanti in un ambiente industriale spesso non si registrano spesso con alcuni di questi scienziati informatici.

Il lungo e il corto, la codifica è importante per la maggior parte delle persone che diventano "informatici" perché la maggior parte di queste persone diventerà programmatore di computer e ingegnere informatico.

    
risposta data 23.12.2010 - 05:08
fonte
3

Dipende dal sottocampo in cui si trova il professore.

Qualcuno competente nell'analisi numerica è probabilmente un mago di Fortran. Qualsiasi professore di IA codificherà in Lisp o Prolog o qualcosa del genere.

In alcune delle aree più matematiche, non c'è davvero bisogno di codificare. Sarei ancora un sospetto, me stesso.

    
risposta data 22.12.2010 - 22:42
fonte
2

Sembra più un discreto tipo di matematica di un ragazzo ... solo in matematica e teoria dietro l'informatica. Prendi ciò che questi tipi di professori hanno da dire con un pizzico di sale.

    
risposta data 22.12.2010 - 22:11
fonte
2

Devo dire "La logica è importante"

    
risposta data 22.12.2010 - 22:48
fonte
2

Puoi capire solo la teoria, ma ho sempre trovato che ho capito meglio gli algoritmi e 1000x dopo averli codificati (Bubble sort e Quicksort, ad esempio, è bello conoscere il Big-O ma vederlo in pratica con grandi set di dati ti dà un certo apprezzamento del mondo reale per misurare la complessità computazionale).

Una cosa interessante che ho trovato è che più studi gli aspetti teorici dell'informatica più facile diventa la codifica. Ad un certo punto smetti di pensare alle cose in un particolare linguaggio, ma piuttosto le vedi come i più ampi concetti di computer sience.

    
risposta data 22.12.2010 - 22:35
fonte
2

È come chiedere se tutti i professori di inglese dovrebbero essere in grado di scrivere film, serie TV, romanzi, opere teatrali e poesie. Allo stesso modo, immagina un professore di matematica che non usa mai numeri per un'idea altrettanto bizzarra. Ciò significa che vi sono alcuni elementi di base che danno importanza alla codifica per poter insegnare le scienze informatiche di base. Quindi il professore dovrebbe conoscere la sintassi di base della lingua e come scrivere programmi sofisticati come i corsi che il docente insegna. Se il professore sta insegnando il design del compilatore e non ha mai scritto un compilatore prima, questo sarebbe un grosso problema. Immagina uno chef che cucina una torta che non ha mai cucinato o mangiato una torta in precedenza. Aye carumba.

Mentre vedo alcuni vantaggi nell'implementare un algoritmo per conoscerlo, dubito che sia un requisito. Dopotutto, ci si potrebbe chiedere fino a che punto ci si avvicina alla comprensione dell'implementazione di un algoritmo? Ad esempio qualcuno deve prendere qualsiasi algoritmo e implementarlo sotto vari paradigmi come la programmazione procedurale, orientata agli oggetti e funzionale per saperlo davvero? Devono sapere come i compilatori traducono tutto il codice e spostano i bit a livello di elettrone per elettrone per essere piuttosto pedanti al riguardo.

"Non scrivo mai", ha tuttavia l'implicazione di contenere il passato e il tempo presente in un modo. Può anche esserci un'assunzione implicita di "codifica" come una cosa umile che è al di sotto del professore per un altro modo di vedere l'affermazione che può avere un tono piuttosto negativo che potrebbe non andare bene in alcune cerchie.

    
risposta data 22.12.2010 - 22:30
fonte
2

Il tuo professore potrebbe avere ragione, in quanto per essere un professore non hai bisogno di codice, ma ne sai molto sulla teoria. Ma questo non funzionerà al di fuori dei perimetri universitari.

    
risposta data 23.12.2010 - 06:25
fonte
1

Pur essendo uno sviluppatore di software professionale, ho conseguito una laurea in ingegneria meccanica.

Puoi essere un buon progettista meccanico con poca esperienza nella costruzione e nella lavorazione di parti, lasciando il lavoro ai macchinisti. Ma sapere come costruire e lavorare pezzi ti renderà un ingegnere decisamente migliore, perché puoi prevedere le difficoltà legate alla fabbricazione e all'assemblaggio di qualsiasi cosa tu stia progettando.

Lo stesso vale per il software. Un "programmatore" è un macchinista o un tecnico, mentre un ingegnere del software è, beh, l'ingegnere. Per molti posti, una persona fa entrambi i lavori. Non è impossibile, e per alcuni problemi molto astratti, una posizione di "solo ingegneria" potrebbe funzionare.

Ma per la stragrande maggioranza, non vi è assolutamente alcun vantaggio dal rifiuto del codice.

    
risposta data 22.12.2010 - 22:30
fonte
1

A meno che tu non stia contemplando e finisca il problema, c'è sempre un uso per la codifica in ogni aspetto dell'informatica.

L'unica classe CS che ho preso con assolutamente nessuna programmazione era teoria. Immagino che ci siano molti fisici là fuori che dicono "Non esperisco mai" ma probabilmente sono anche quelli che dicono "Non ho mai scoperto nulla". E sarei sorpreso se gliene importa.

    
risposta data 22.12.2010 - 23:14
fonte
0

Come studente di informatica credo che inizialmente sia meglio comprendere concetti che riguardano lo sviluppo del software. Una volta che hai appreso l'idea del software e come interagisce con un computer, è il momento di iniziare a programmare e affrontare problemi specifici di implementazione.

Questo è proprio come "Eccezioni software", inizialmente ti occupi solo di loro perché hai fatto qualcosa che non era autorizzato a fare. Poi quando li impari, inizia a fare lo stesso con il tuo codice in modo da renderlo più dettagliato.

Beh, penso che le persone a cui non interessa concetti come quei programmatori che usano Eccezioni come un normale flusso di lavoro nelle loro applicazioni. Loro sanno COME ma non ottengono veramente PERCHÉ.

    
risposta data 23.12.2010 - 03:48
fonte
-6

Ho un altro idioma per il tuo professore:

Quelli che possono, fanno, quelli che non possono, insegnano.

imo, parlare è economico. Chiunque può interloquire incessantemente sulla "teoria" e chiamarla "informatica". Ma fino a quando non viene messo in pratica, la teoria non è molto utile perché non c'è modo di convalidarla. Prenderò un'opinione del prof su qualcosa di molto più serio se sapessi che in realtà ha risolto un particolare problema nel codice che se stia semplicemente rigurgitando la "teoria" che può o non può avere qualsiasi prova di supporto per back up il suo punto di vista.

    
risposta data 22.12.2010 - 22:53
fonte

Leggi altre domande sui tag