[BAT] Hydra;9936973 zei:
Ik zit in mijn eerste master informatica en heb al redelijk veel geprogrammeerd vind ik. De meeste zaken in Java, maar ik heb ook geleerd/taken gehad over C#, C++, c, perl, visual basic, fortran, eiffel, smalltalk, matlab + enkele minder bekende (en rare (imo)) AI talen zoals Prolog, haskell, (Nu)SMV, IDP en Alloy.
Maar of hier nu 3 of 100 talen opgesomd werden in dit lijstje maakt niet zo enorm veel uit. Als je één taal echt grondig beheerst kan je zonder al te veel problemen beginnen programmeren in een andere taal.
Voor de standaard (imperatieve) talen is dat laatste waar. Maar voor de talen die je als raar bestempelt (praktisch allemaal declaratieve) is dat toch geen waar. Wie van een imperatieve achtergrond komt heeft vaak genoeg last om in de denkwijze van logische en/of functionele programmeertalen te geraken. Misschien ook de reden waarom je ze bestempelde als "raar".
Je kan er wel op een imperatieve manier in beginnen "hacken", maar dan ben je niet bezig met de talen echt nuttig te gebruiken.
Mingz zei:
Maar leer je die talen wel goed genoeg op de univ om ze echt goed te kunnen?
Zelf heb ik in mijn kandidaturen informatica in de twee vakken over programmeren genoeg Java gezien om GUI-applicaties met databanken zonder veel problemen te kunnen maken. Daarna volgde een vak "software-ontwikkeling" dat echter meer weg had van een basiscursus C/C++.
In de licenties moest men kiezen tussen verschillende richtingen binnen de informatica en daar kregen bepaalde richtingen wel nog wat uitgebreidere Java te zien. Dus Java kon je wel uitgebreid zien (ik heb een andere richting gekozen dan die met de vele Java).
Maar dat is niet noodzakelijk de juiste manier om programmeren aan te brengen op de universiteit.
In principe zou het mijns inziens beter zijn moest men op de universiteit mensen eerder kennis laten maken met de fundamentele principes achter het programmeren, de verschillende paradigma's die bestaan (imperatief, functioneel, logisch, equationeel, concurrent, ...) en het nut van elk paradigma (ook al gebeurt daar nog veel onderzoek naar). Met concrete programmeeropdrachten in een bepaalde taal natuurlijk. Dat men een hele brok Java daar nog bijgeeft, mij niet gelaten, maar men mag (zeker op een universiteit, maar misschien beter in de TI ook) niet de indruk wekken dat er maar één soort programmeertaal bestaat (OO-programmeertalen dus) en dat die dé oplossing zijn voor elk probleem. Zo creëer je verkeerdelijk het beeld dat een programmeertaal slechts een kwestie is van wat syntax te leren (zoals in de eerste quote in deze post ook al geïllustreerd).
Dijkstra zag, zoals gewoonlijk, die bui al hangen. Hij beschreef vele jaren terug al hoe een programmeertaal een werktuig is, en hoe een werktuig dat je manier van denken over het probleem beïnvloedt. Kennis van meerdere paradigma's omtrent programmeren is dan ook essentieel voor elke informaticus.
Dat is ook relevant voor de threadstarter: wil je leren programmeren in een specifieke programmeertaal (en programmeerparadigma), kies toegepaste informatica. Wil je breder gaan, kies een universitaire opleiding en kies vakken over declaratief programmeren (voor zover je universiteit die niet afgeschaft heeft natuurlijk, zoals de UGent in een vlaag van idiotie met het declaratief programmeren vak heeft gedaan).