Kan dataloger kode?

I den sidste tid har der været skrevet meget om datalogers (og fysikeres) evner ud i programmeringen kunst - og der har været en helt klart spændende diskussion om, hvad dataloger skal forventes at kunne, når de bliver færdige, og hvad studiestederne så gør for at lade de studerende opnå disse kvalifikationer. Hvordan holder datalogiuddannelsen sig frisk og relevant?

Selv synes jeg dog at den seneste tids diskussion om fysikere og datalogers evner i forhold til hinanden indenfor programmering er ligegyldig og meningsløs - med mindre man står med en konklusion og forsøger at lære af den. Resten af diskussionen minder mere om "min er større end din" og "min far kan banke din far", og det er jo ikke specielt konstruktivt.

Som et indlæg i diskussionen om dataloger og programmering vil jeg bidrage med lidt oplysninger om udviklingen i programmeringsundervisningen på DAIMI i Århus; Der har i de sidste år været et skift fra en holdning om, at dataloger skal være bredt funderet i programmeringssprog til en holdning om, at det er bedst at de studerende har en dybdegående forståelse af et mainstream programmeringssprog, Java.

Java bliver, så vidt jeg kan se, i dag brugt som del af undervisningen i mere eller mindre alle fag og andre programmeringssprog bliver kun berørt i fagene programmeringssprog, webprogrammering og enkelte valgfag.

Selv tilhører jeg den generation af dataloger, som havde Java, Beta, C, Assembler, ML, Scheme, Prolog og meget andet i løbet af mine første år på studiet - altså en markant anden programmeringsprofil end dataloger fra Århus der følger den nuværende studieordning. Den ene profil er bredt funderet, men mere overfladisk i sit kendskab til det enkelte programmeringssprog og den anden er nok mere erhvervsrettet med et dybere kendskab til et enkelt mainstreamsprog, hvilket jo er praktisk, når man skal søge job under og efter studiet.

Jeg er lidt misundelig på de yngre studerende, som ikke konstant skal skifte programmeringssprog - de bliver bedre programmører indenfor det sprog og det er et nemmere studie, når man ikke konstant skal skifte sprog. Jeg har selv haft semestre, hvor jeg konstant skulle skifte mellem 3 meget forskellige sprog - og det er ikke optimalt.

På den anden side er der også trends i programmeringssprog som tyder på at funktionelle sprog vinder frem - hvis ikke som selvstændige sprog, så som en del af multiparadigme sprog. Med det i mente er det måske meget fornuftigt at dataloger får lov til at se ordentligt på andet end Java under deres studie.

Når man først har set lidt forskelligt er det jo også nemmere at lære noget nyt og det var i hvert fald engang underoverskriften på en datalog og så mange andre akademiske uddannelser - man lærer at lære.

Begge typer af dataloger har altså deres berettigelse, men hvad bør man satse på i fremtiden' Hvad gør en datalog til en datalog - og skal dataloger være som datamatikere bare med lidt flere års uddannelse' Burde det være muligt at vælge om man vil være en bredt funderet datalog med mange sprog i værktøjskassen eller en javaspecialist-datalog' Og hvorfor Java' Bør dataloger overhovedet kunne kode?

Trenden på DAIMI er i hvert fald at der er fokus på at dataloger skal kunne kode (og langt de fleste nyuddannede kan) - hvad slags programmører man så får ud af uddannelsen i forhold til hvad slags programmører man bør satse på er bestemt en diskussion værd.

Kommentarer (12)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Poul-Henning Kamp Blogger

Jeg synes ensretningen til Java er lige så uheldig indenfor datalogiske uddannelser, som ensretningen til Word er indenfor det offentlige.

Databranchen finder hver femte år sin nye "endlösung" og det har vi efterhånden lært at leve med.

Men jeg finder det meget problematisk hvis netop datalogiuddannelsen begynder at hoppe på vognen hvergang den kører forbi.

For det første fordi der skulle komme så mange forskellige dataloger ud af uddannelsen som muligt, ikke så mange ens dataloger som muligt.

Men for det andet, fordi universiteterne per definition er kronisk bagefter på den måde.

Man kunne håbe, at der i det mindste er et kursus der hedder "problemet med Java" undervejs, men jeg tvivler.

Poul-Henning

  • 0
  • 0
Hans-Kristian Bjerregaard

Jeg syntes også at det er problematisk at man fokuserer på et sprog. Et programmeringssprog er jo en programmørs værktøj til at løse den opgave han har for hånden og hvilket værktøj der skal bruges afhænger jo meget af opgaven.

Det ville svare til at uddanne tømrere til kun at kunne save. De ville blive utroligt dygtige til at save men være ret lost når de skulle bygge noget der krævede en hammer.

Så i mine øjne er det vigtigt at kunne forstå en bred vifte af sprog. Det er ikke nok at kunne syntaksen man skal også forstå hvordan det man arbejder med rent faktisk fungerer når det bliver kørt. Det er præcis på dette punkt at jeg mener at dataloger har overhånden da man jo lærer en del om hvad der foregår 'under the hood' når det gælder programmeringssprog.

  • 0
  • 0
Martin Falck-Hansen

Joel Spolsky har skrevet om samme emne og hvorfor det er en dårlig ide at læreanstalter er gået over til Java:

All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea. I've seen all kinds of figures for drop-out rates in CS and they're usually between 40% and 70%. The universities tend to see this as a waste; I think it's just a necessary culling of the people who aren't going to be happy or successful in programming careers.

Altså det er en god ting, at der er et vist frafald på datalogi ... men det er nok svært at overbevise fakulteterne om. Men spørgsmålet er vel relevant nok: skal datalogi være noget alle skal kunne komme igennem, uanset om man har evnerne eller ej?

Still. CS is proofs (recursion), algorithms (recursion), languages (lambda calculus), operating systems (pointers), compilers (lambda calculus) -- and so the bottom line is that a JavaSchool that won't teach C and won't teach Scheme is not really teaching computer science, either.

Det er nok at sætte det på spidsen, men med et gran af sandhed i det. Jeg ved ikke, om det er at strække analogien og spørge om hvordan kvaliteten af undervisningen var, hvis der udelukkende blev undervist i f.eks. historien efter anden verdenskrig på Historie?

Læs evt hele artiklen her:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

  • 0
  • 0
Poul-Henning Kamp Blogger

Altså det er en god ting, at der er et vist frafald på datalogi ... men det er nok svært at overbevise fakulteterne om. Men spørgsmålet er vel relevant nok: skal datalogi være noget alle skal kunne komme igennem, uanset om man har evnerne eller ej?

Spørgsmålet er snarere om ikke man burde indføre en talent-test som man har det f.eks på Musikkonservatoriet
og teaterskolerne ?

Der er så meget evidens for at programmering er et skabende talent på linie med skabende kunst, hvorfor forholder vi os ikke til det ?

Poul-Henning

  • 0
  • 0
Lars Wive Marcussen

Hvis du vil have oprettet en kodekunstskole, så bør det jo ikke være en universitetsuddannelse, ligesom der er forskel på Musikkonservatoriet og Musikvidenskab. Og jeg mener altså at jeg er blevet en bedre programmør af at have haft flere typer sprog samt sprogteorien ved at skulle skrive oversætter og kerne på datalogi.

  • 0
  • 0
Poul-Henning Kamp Blogger

Det er ikke noget nyt.

Man har normalt fokuseret på produktivitet og fejlfrihed, men i sidste ende er det samme ting: nogen kan det skidt, andre kan ikke.

Du kan starte med at læse hvad Frederick P. Brooks skrev i "The Mythical Man-Month", has referenceliste er også værd at frekventere.

Der er forså vidt ingen grund til at det ikke skulle forholde sig sådan, selvom vi kan alle skrive et brev til mor, er der ikke så mange der kan skrive en god bog.

Et meget interessant og debatteret indskud om dette spørgsmål kan du læse her:

http://www.cs.mdx.ac.uk/research/PhDArea/saeed/

Poul-Henning

  • 0
  • 0
Jens Madsen

Jeg synes, at det er vigtigt, de studerende kan forholde sig kritisk, til de programmeringssprog, som de lærer - ikke kun lære dem "udenad", og acceptere, at sådan fungere de altså. De skal kunne indsé, hvor i sproget, at der er "brølere" - ting, som fører til fejl, til langsom kode, ikke deterministisk kode, osv. De skal forstå, hvad der forstås ved ord som "højniveau", og "abstrakt", og kunne vurdere, om et sprog, lever op til disse store ambitioner om hardwareuafhængighed ved at beskrive problemet udfra problemet alene, og gøre det så det lader sig effektivt oversætte til enhver type hardware. Og de skal kunne foreslå løsninger, til hvordan problemerne løses, så sprogene bliver korrekte - og gerne perfekte. Jeg synes også, at de bør være i stand til at indsé, om reelt de samme ting, beskrives på flere måder, og sammenligne de pågældende ting, med henblik på at finde forskelle, og se om disse er en fejl. Logik er, at ens ting, skal beskrives ens - og det skal man kunne. Derved, opstår ikke så nemt fejl, og tingene testes bedre, fordi det bruges meget ofte. Samtidigt, kan det regnes ud uden at vide det, da det fremgår af sund fornuft.

Det er i orden, at lære et sprog, som ikke er perfekt - men ikke uden, at lære at forholde sig kritisk til sproget.

Ensretning, til at "kun" lære JAVA, tror jeg kan forringe de studerendes evner, til at indsé andre muligheder for programmeringssprog, hvor ambitionerne er højere end for JAVA - som minimum, burde man lære grundlæggende sprog, såsom Fortran.

Dengang vi lærte "pascal", var det altid med små sjove hentydninger til C og C++, som ikke var lærens livret. Det gør lidt, at man lærer at forholde sig kritisk, til programmeringssprog, og forstår sprogets fornuft - men ikke mindst også mangel på fornuft, og forstår hvordan problemerne løses. Som eksempel, var "integer" ikke pascal. Det var en "C ting", og vi måtte ikke bruge integer. Med mindre, at vi erklærede det som -32767..32767 hvis det altså var det, at opgaven jo netop krævede. Og hvor ofte var det så det? Det er "mystiske tal", som intet har med koden at gøre, og som er "arvet" fra underliggende niveau, og intet har med pascal at gøre. I C++, er det derimod deffineret, som "standard". Derfor, er det ikke abstrakt programmeringssprog, da det indeholder konstante, som er arvet fra fysikken. (Ligesom matematik, ikke havde været abstrakt, hvis det måtte låne talkonstante fra fysik). I dag, er mit indtryk, at de færreste ved, hvad højniveau, og abstrakt dækker. Dem, der kender lidt til VHDL, kender måske lidt til begreber som "højniveau", fordi at man her lærer, at compileren ikke kan generere effektiv kode, hvis det kodes detaljeret. Eksempelvis, må man ikke i koden skrive "hvordan" en addition skal forløbe, for så kan den ikke implementeres effektiv, i enhver type hardware. (Det er umuligt, at implementere et program effektivt - genneralt set - hvis det er kodet som "hvordan man laver additionen bit for bit.)

  • 0
  • 0
Therese Hansen

Jeg er faktisk heller ikke sikker på, hvorfor der fra universitetets side er blevet besluttet, at Java er "sproget". Umiddelbart kunne det være for at gøre livet nemmere for de studerende, ved at de ikke skal skifte sprog flere gange om dagen - og motivationen for det kunne nok være, at der har været/er et stort problem med overvældende frafald blandt studerende.

  • 0
  • 0
Mikkel Meyer Andersen

På AAU bliver der "jævnligt" (med nogle års mellemrum) skiftet i kurset om OOP - for nogle år siden var det vist Smalltalk, så Java og nu er det C#, og der har sikkert været anvendt andre også. Dog er compiler-kurset m.fl. stadig med udgangspunkt i Java; det kan give lidt forvirring, men det er en god øvelse.

  • 0
  • 0
Kai Birger Nielsen

Hvis der er nogen af læserne i nærheden af Katrinebjerg den 6. februar, så er jeg sikker på at vi giver en kop kaffe og et stykke kage oven i forelæsningen her:

http://www.daimi.au.dk/news/upcoming-events/archive/2009/february/06/fri...

Michael er en af vores forelæsere på 1. år, så han svarer sikkert også gerne på spørgsmål som dem, der er rejst i debatten her.

Jeg skal dog gerne selv lægge hovedet på blokken og gætte på at en af grundene til at det lige er Java er at der er udmærkede og billige lærebøger tilgængelige. Det trækker tænder ud selv at skrive den slags og det føles som spild af tid, hvis man ikke er sikker på at man i sidste ende laver et bedre materiale end hvad man kunne have købt sig til.

Der er også nogle udmærkede pædagogiske pointer i Java (kører på en virtuel maskine, kører alle vegne, kan bruges uden videre til at programmere vores legorobotter med, ...), men de kunne også nemt tilgodeses med andre sprog, så jeg tror at det er kvaliteten af lærebøger i sprog X, der afgør sagen.

Disclaimer: Jeg er systemadministrator, ikke underviser.
Non-Disclaimer: I gamle dage var jeg rodet ind i at implementere et undervisningssprog til brug for 1. årsundervisningen, så lidt forstand på sagen har jeg dog.

  • 0
  • 0
Per Andersen

Jeg synes, at der er for meget fokus på at være programmeringsekspert. Nogle dataloger skal være eksperter i dette; men man skal også kunne analysere en problemstilling og vælge en fornuftig angrebsvinkel - herunder vælge et sprog, der egner sig til problemstillingen. Jeg ville bruge et andet sprog til en embedded applikation end til en bankapplikation på en IBM mainframe med DB2 databaser.

Derfor kan det være væsentligt at (nogle) dataloger kan overskue en vifte af sprog(familier) og deres anvendelsesområder - så kan man altid finde en passende programmeringsguru til at implementere løsningen.

Så efter min mening er der både brug for medarbejdere der er specialister i at kode i et givet sprog og medarbejdere der kan arbejde på et mere overordnet niveau, og det er ikke nødvendigvis alle, der er gode til begge dele.

  • 0
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize