L'università insegna C ++ in stile DOS, come gestirlo [chiuso]

19

Avevo programmato per molti anni ma volevo un diploma per rendermi più occupabile. Avendo già frequentato l'università una volta, non ho scelto un corso completo di informatica per 5 anni, ma un programma di ingegneria software più breve e più orientato alla pratica.

Mi aspettavo che si potesse concentrare maggiormente sulle abilità concrete che sulla teoria, ma aveva ancora questa idea che università e professori amano le cose per essere corrette, formali, accademiche. È ancora scienza, giusto? Sbagliato - Sono rimasto sorpreso da quanto fossero sciatti molti corsi IT.

In un corso introduttivo sul C ++ siamo stati testati su cliché come "perché i globali sono cattivi" e "perché le costanti sono buone", dopo aver appena scritto 1-2 programmi. Aneddoti casuali senza contesto appropriato. Dispense con system(pause/cls) , getch e intestazioni come conio.h e iodos.h . Uno dei compiti era stampare "caratteri ASCII" da 32 a 255 , con uno screenshot che mostrava una tabella simile stampata usando la tabella codici di Windows-1252, ma senza menzionare affatto la codifica.

Domanda : quando un'università / professore sembra utilizzare strumenti e metodi inferiori e / o obsoleti, e il contenuto che viene insegnato è borderline errato, come gestirlo in modo costruttivo e rispettoso, se del tutto?

Alcune risposte indicano che si dovrebbe guardare oltre la programmazione poiché si tratta solo di uno strumento per l'apprendimento di argomenti come strutture dati e algoritmi. Sono d'accordo con questa idea, ma in questo caso non c'era un piano del genere dietro lo stile povero. La maggior parte dei corsi insegnerebbe semplicemente un altro "strumento" senza molta teoria di base o "grande immagine". Spesso si sentiva come se fossero stati rapidamente messi insieme solo per offrire un corso del genere.

Mi sono bloccato e finalmente mi sono diplomato. La qualità è rimasta piuttosto bassa in tutto (con alcune grandi eccezioni) e molti altri studenti si sono lamentati di questo. Come previsto, ho imparato molto di più da progetti personali e lavori part-time che da scuola, tuttavia il processo di completamento della scuola e l'etichetta "software student" sembrano misteriosamente utili in sé stessi!

    
posta Toerndev 03.11.2011 - 09:47
fonte

14 risposte

33

La matematica e la programmazione sono cose completamente diverse. La matematica è scienza, la programmazione è tecnica. Nel mondo accademico, la programmazione è qualcosa che devi conoscere in modo da poter gestire le cose reali, quella che è effettivamente interessante e importante - gli algoritmi.

A chi importa se il compilatore è antico e si usano le chiamate system ? A chi importa se hai Linux e non Windows? Beh, i professori no, questo è sicuro. E non dovrebbero, davvero. Non aspettarti di diventare un programmatore professionista dai corsi nell'istituzione accademica. Non è quello che vai lì per.

È vero che il compilatore che si aspetta che tu usi è antico, e l'ipotesi sul sistema operativo è anacronistica e problematica. Puoi sollevarlo e forse sarà affrontato. Ma non perché il corso sia incompatibile con l'industria, ma piuttosto perché causa una difficoltà immediata agli studenti. Vai a trovare il vecchio compilatore ora e fallo girare sul tuo MacBook ...

In generale, gli studi accademici non dovrebbero essere sprecati per l'apprendimento di C ++ e Android, dovresti imparare la vera scienza dell'informatica lì. Non avrai un'altra possibilità per quello. Android? Scarica Eclipse con ADT e inizia a lavorarci a casa, come faccio io. Non ho bisogno di scuola per questo.

Penso che non sia giusto aspettarsi lo sviluppo della tecnica dalle università. Soprattutto non le università di ricerca. Si può dire che un posto che offre solo scapoli dovrebbe essere più mirato all'industria, ma le università di ricerca - vogliono ricercatori. I professori sono alla ricerca di futuri laureati e dottorandi, non eccellenti programmatori. Quindi penso che dovresti impostare il tuo livello di aspettative di conseguenza.

    
risposta data 03.11.2011 - 10:11
fonte
19

L'informatica è la programmazione di ciò che la fisica è per la carpenteria.

Se vuoi diventare un falegname, studiare fisica non lo farà accadere. Ti insegnerà molte cose interessanti, che potresti essere in grado di applicare al tuo lavoro, ma non ti insegnerà come essere un bravo falegname. Per questo, dovrai imparare il mestiere di carpenteria.

Allo stesso modo, se vuoi diventare un buon programmatore, dovrai imparare il strumento di programmazione . Sfortunatamente, non esiste un'istituzione per rilasciare certificazioni di alcun tipo. Quindi, in pratica, questo è qualcosa che dovrai fare da solo, con qualsiasi cosa possa aiutare le persone che potresti essere in grado di trovare. Per te questo significa ripetizione e riflessione. Scrivi un sacco di codice e poi torna a guardarlo. Prendi anche del tempo per leggere il codice di altre persone. Prendi in considerazione la partecipazione a progetti open source.

Le università non si preoccupano molto della programmazione e ancora meno per i dettagli che cambieranno nei prossimi anni. Quello che vedi nella tua scuola è che hanno scelto un ambiente di programmazione (uno cattivo, ma non è così importante) e ora te lo mostra, in modo che abbiano una cornice di riferimento in cui possono insegnarti varie tecniche di programmazione. Si può obiettare che la cornice di riferimento è scarsa e che anche la lingua è una scelta strana. Dal loro punto di vista probabilmente non ha importanza, perché è scelto arbitrariamente.

    
risposta data 03.11.2011 - 10:44
fonte
9

Non c'è niente di sbagliato nell'apprendimento di "stile DOS". Sono sicuro che molti dei veterani qui iniziarono su DOS, o anche con sistemi operativi precedenti, scrivendo programmi basati su linee e si sono adattati bene. Il mondo dell'informatica cambia così rapidamente che non mi verrei mai ritrovato su specifiche come ad esempio quale libreria è stata usata per cosa.

In realtà, sospetto il motivo per cui abbiamo un mondo pieno di programmatori che possono dirti quale iniezione di dipendenza è, ma fatica a rispondere FizzBuzz , è perché molte i programmatori non passano molto tempo a quel livello di base.

Sembra che questa sia un'introduzione alla programmazione, quindi in modo essenziale, non ti preoccupare. Impara le basi e andrai bene. Se sei interessato ad altre piattaforme, esplorale da solo. Questo è il bello della programmazione.

    
risposta data 03.11.2011 - 19:30
fonte
5

Come puoi affrontarlo? Scarica gli e-book di programmazione o i video in streaming, prova gli esempi da solo. Non dipendere dai tuoi professori. La programmazione è altamente appreso da solo.

    
risposta data 03.11.2011 - 11:48
fonte
4

Molto molte università hanno professori di programmazione scadenti. Sono andato in una delle migliori scuole del mio paese e ho praticamente imparato lo squat in programmazione. Immagino che la maggior parte degli unis sia così, perché i programmatori davvero bravi optano per lavori più remunerativi (non per l'insegnamento). Dovresti prendere un piccolo progetto e provare a codificarlo da solo. È possibile ottenere suggerimenti da molti forum come questo. Questo potrebbe essere un modo migliore per imparare a lungo termine.

    
risposta data 03.11.2011 - 10:11
fonte
3

Penso che l'Università dovrebbe insegnare concetti astratti di linguaggi di programmazione, algoritmi, ecc. e non dovrebbe essere il luogo in cui si impara la programmazione: la programmazione è un'attività molto pratica e si può solo imparare facendo ciò.

Durante il mio studio ho imparato le basi della programmazione in Pascal, poi ho avuto un progetto in C (abbiamo dovuto imparare la lingua da soli) e poi ho tenuto un corso sulla programmazione di concetti linguistici (procedurale, orientato agli oggetti, funzionale , logica). È stato il folklore che su MSDOS hai conio.h o molti puntatori, che non hai su un sistema UNIX. Questa era la roba che noi studenti discutevamo su una birra, non era qualcosa che discutevi durante le lezioni perché non era così importante. L'insegnamento universitario si concentra sull'astratta conoscenza generale ed evita di entrare nei dettagli: esempi e dettagli vengono presentati solo per illustrare le cose generali.

L'esempio che hai dato su ASCII contro Unicode e la libreria conio.h MSDOS significa che ogni ambiente di programmazione ha il suo modo particolare di fare e organizzare cose. Se si programma in C ++ su Visual Studio, sarà necessario utilizzare altre librerie, alcune delle quali non sono state trovate, ad es. Su Linux. Quindi se il corso fosse in Windows 7 / Visual Studio alcune persone potrebbero lamentarsi che sarebbe meglio farlo su Linux / GCC. Ma, IMO, non è questo il punto.

Quindi, penso che dovresti cercare di non distrarti dai dettagli e concentrarti sui concetti generali trattati dal corso. Ad esempio, nella maggior parte dei linguaggi di programmazione avrete bisogno di una libreria per implementare l'I / O della console e, dato un ambiente di programmazione, dovrete risolvere il vostro problema con gli strumenti che avete a portata di mano. Forse questo suona abbastanza ovvio per te e hai l'impressione che tu non stia davvero imparando qualcosa perché hai già qualche conoscenza precedente (questo può accadere) ma non ho avuto l'impressione che tu stia frequentando una cattiva strada.

    
risposta data 03.11.2011 - 23:54
fonte
2

Le università stanno dando le basi. Una volta che è strong, puoi costruire grattacieli su di esso. Ho imparato BASIC, C e C ++ durante i miei giorni di college. Più tardi, quando ho realizzato un progetto in Visual C ++, ho creduto che fosse un mondo completamente diverso. Più tardi ho capito la differenza tra Framework e Languages.

Scegli un'università giusta dove dare lo sviluppo mirato del tuo campo informatico desiderato. Che può aiutarti in seguito nella tua carriera.

    
risposta data 03.11.2011 - 10:04
fonte
2

Le stampe piene di system(""); sono in realtà una cosa dannatamente buona! Sono scioccato dal fatto che oggigiorno le persone non sappiano nulla di queste funzioni.

system("pause") , e ti sbarazzi di tutti i trucchi delle funzioni getX. system("cls") , e hai appena salvato una pagina di codice. system("mkdir foo") e hai appena salvato 2 pagine di allocazioni del buffer, suddivisioni del percorso, _makepath_ss, 256 limiti di percorso, tonnellate di errori e così via.

Inoltre il codice è così semplice che una scimmia lo capirà.

 if(!system("mkdir foo"))
     //booo and exit'

La scuola delle perversioni polimorfiche è ciò che dovrebbe essere vietato dalla legge.

PS: Inoltre, con tutto il dovuto rispetto, sto facendo fatica ad accettare che alle persone venga insegnato C ++ con eccezioni e tutto virtuale come BUONA COSE, perché ha più trucchi e mine che puoi immaginare, e persino Bjarne Stroustrup Evangelizza le eccezioni come qualcosa di super facile e sicuro, mentre in realtà sono una mina nucleare.

Vedi analisi su Misra-C ++ e JSF-C ++. E link . Sono troppo pigro per trovare tutti gli articoli restanti oggi.

Con tutto ciò che ho detto, sono uno sviluppatore c ++ e mi piacciono un sacco di funzioni e la lingua nel suo complesso.

    
risposta data 03.11.2011 - 20:29
fonte
1

Il mio suggerimento potrebbe sembrare là fuori, ma ascoltami ... Switch major.

Nella mia esperienza nel mondo accademico, il dipartimento di Computer Science è stato uno sguardo di livello molto basso su ciò che rende i computer più interessanti. Hai iniziato con un primer di base in C ++ per assicurarti di sapere cosa fosse un programma e le basi della memoria e del calcolo dietro il programma, e poi hai imparato assemblaggio, concetti del sistema operativo, ingegneria elettrica, progettazione digitale, ecc. questo grado e cercare lavoro con NVidia o AMD, o Lockheed; da qualche parte dove stanno creando un nuovo hardware, che ha bisogno di qualcuno in grado di capire che l'hardware su un livello sufficientemente basso da scrivere i driver e il software di controllo.

Sembra che quello che vuoi sia un corso di studi che, nella mia università, è stato chiamato Management of Information Systems. Questo è il corso che ho seguito; ha insegnato la programmazione in Java, VB.NET, C #, e alcuni PHP e altri script web lungo la strada. Richiedeva anche calcoli (ma non allo stesso livello di CS), contabilità, finanza, statistiche, comunicazione aziendale, O-O A & D, progettazione di database e analisi di sistemi. Ho ottenuto un BBA invece di un BS e avevo gli strumenti di base per iniziare a lavorare come sviluppatore di software Windows o Web.

Ciò che il "Computer Science" ti prepara a fare dipende molto da quale università lo offre. Sembra che tu sia sulla prima strada per ottenere uno sguardo molto anacronistico e di basso livello su computer che non sembrano quelli che ti interessano dalla tua educazione. Ti esorto a dare un'occhiata all'università e a trovare un corso di studi più incentrato sul tipo di lavoro al computer che vorresti intraprendere dopo la scuola.

Indipendentemente da che cosa, il tuo corso di studi inizierà con la scrittura di programmi di base "a livello di console". La lingua non ha importanza; quello che ti stanno insegnando è la programmazione procedurale di base; come pensare in passi abbastanza piccoli che il computer può seguirti passo dopo passo (perché il computer non dà nulla per scontato, e non può seguire la maggior parte dei salti umani nella logica). Da lì, passerai alla programmazione orientata agli oggetti (invece di avere una funzione lunga che fa tutto, è molto più gestibile avere diversi "oggetti" di codice più piccoli, che rappresentano lo stato e la logica degli oggetti del mondo reale), quindi programmazione guidata dagli eventi ("Non chiamateci, vi chiameremo", il vostro programma si avvia fondamentalmente, dice al sistema operativo di configurare l'interfaccia grafica iniziale, quindi si mette in attesa che il sistema operativo passi in input dell'utente tramite un ciclo di messaggi), ecc.

    
risposta data 03.11.2011 - 15:05
fonte
1

I corsi di informatica non ti insegnano a programmare. Questa è una passeggiata nel parco rispetto ad alcune delle programmazioni che ho fatto sul mio corso CS.

Il problema fondamentale con questo, nella mia esperienza, è che non c'è praticamente da nessuna parte che ti ti insegni a programmare a un livello equivalente, quindi non hai altra scelta.

    
risposta data 03.11.2011 - 21:00
fonte
0

Penso che ci possa essere una certa confusione su cosa e perché stai studiando.

Sembra che tu stia studiando un programma introduttivo di informatica. Questo è rivolto a persone con esperienza minima che stanno imparando le basi su come i computer funzionano a un livello basso.

Sembra anche che tu sia un programmatore semi-serio o professionale. Hai programmato per 10 anni e sei a tuo agio in 3 lingue. Sembra che tu sappia cosa stai facendo almeno abbastanza da lavorare come parte di una squadra. Ti senti fuori posto in questo corso? Gli altri studenti hanno un livello simile di esperienza o abilità come te?

Che cosa hai intenzione di uscire da questo corso?

Stai solo dopo quel 'pezzo di carta'? Se questo è il caso, allora non smettere di cercare un lavoro mentre studi. Fai domanda per un lavoro, digli che sei un programmatore competente e stai studiando perché hai bisogno del pezzo di carta per ottenere un lavoro. Se ti assumono, prendi in considerazione l'abbandono - una volta che hai un lavoro professionale, non hai più bisogno di quel pezzo di carta. Accetta uno stipendio inferiore al normale, perché è meglio essere pagato per imparare (sul lavoro) che a pagare per imparare a scuola - e imparerai anche più velocemente . Dopo un anno o due sarai quasi sempre al massimo della velocità, quindi potrai chiedere un aumento di stipendio decente o puoi trovarti un altro lavoro perché avrai esperienza.

O stai cercando di imparare qualcosa? Poi smetti di giudicare il tuo professore. Come un insegnante di liceo memorabile soleva dire "SED DOWN, AND SHUT UP". È quasi garantito che il professore abbia immensamente più esperienza e conoscenza di te e potresti imparare molto da lui. Se sta andando troppo lento per te, prova a ottenere credito per questi corsi introduttivi basati sulla tua precedente esperienza ed esperienza.

Ma sei nella giusta direzione? Potresti anche imparare molto dal professore di letteratura o da un professore di storia ... non particolarmente rilevante. Forse non vuoi "informatica" ma vuoi invece più competenze pratiche, "mondo reale". Prova "ingegneria del software". Guarda le altre istituzioni per un corso più mirato.

Proprio come quando inizi un nuovo lavoro, una classe o un corso di studio possono essere molto difficili da recensire dall'esterno. Sembra che tu stia seguendo un corso che non ti sta dando quello che ti aspetti. Riconsidera le tue opzioni.

    
risposta data 07.11.2011 - 00:38
fonte
0

Ho pensato che molte delle risposte a questa domanda fossero deludenti. Sono tornati alla solita vecchia discussione su CS vs Programming ecc. Può darsi, ma mi sembra che il corso su cui si trova l'OP non stia insegnando neanche.

Ero nella situazione di aver già lavorato come programmatore, e ho studiato un bel po 'da solo, prima di studiare CS part-time al college. Mi sono guardato intorno con attenzione, ma in generale ho trovato il curriculum come una perdita di tempo. Inoltre, non mi permetterebbero di saltare i corsi nonostante avessi già esperienza professionale nell'area.

Nella mia esperienza, una percentuale significativa di professori è piuttosto pigra e utilizza un curriculum obsoleto. Onestamente sembra che tu stia sprecando il tuo tempo. Mi domando anche se il completamento del diploma ti aiuterà a trovare un lavoro.

Dubito che tu possa fare molto per cambiare le cose sul tuo corso. Puoi completarlo con lo studio da solo. Oppure dimentica tutto e studia CS in modo indipendente, e fai anche alcune certificazioni di settore.

Devo aggiungere che non ho idea del valore del diploma nel mercato del lavoro del tuo paese. Se il diploma stesso è prezioso nonostante il contenuto, allora potresti semplicemente dover accettare un curriculum che è in qualche modo carente.

    
risposta data 07.11.2011 - 01:33
fonte
0

Devono soddisfare gli studenti. La maggior parte degli studenti non può programmare. Quindi non sono spinti ad andare lì tecnici.

Hanno anche le proprie aree di ricerca specializzate, ma non lo stanno insegnando. E comunque molti ricercatori non sono bravi maestri, quindi potresti considerarti fortunato se insegnano cose che già conosci!

In ogni caso, sembra che tu non sappia cosa sia l'informatica. Non si tratta di ciò che è pratico per l'industria.

    
risposta data 18.11.2011 - 03:35
fonte
-6

Vorrei chiedere (e poi insistere) per restituire i compiti in c ++ standard. Questo è del tutto ragionevole poiché non si è in grado di completare gli incarichi altrimenti.

Per quanto riguarda lo stile cattivo; ci sarà inevitabilmente un po 'di questo per cominciare. Imparare ad usare la libreria io standard correttamente richiede alcune funzionalità avanzate di c ++, in particolare modelli ed iteratori. Posso capire perché un docente ti farebbe usare funzioni io molto semplici per cominciare. Non avrei paura di chiedere questo, però, mostra entusiasmo e un po 'di luce nei tuoi occhi. Il tuo docente dovrebbe essere in grado di tessere la tua domanda in una conferenza futura in cui tu (si spera) rimetti a posto i tuoi primi esercizi.

Lo lascerei comunque. Anche se c ++ può essere un linguaggio indipendente dalla piattaforma, spesso non lo è. Imparare alcune funzioni di sistema di Windows non è una brutta cosa, specialmente se ti alleni a farlo secondo lo standard. Ad un certo punto ti imbatterai in conio.h guardando il codice di altri popoli e sarà bello sapere cosa fa.

    
risposta data 03.11.2011 - 10:13
fonte

Leggi altre domande sui tag