Gå til innhold

Intervju: Matematikere foretrekkes til tunge IT-oppgaver


Anbefalte innlegg

Videoannonse
Annonse

Skikkelig avansert programvare har gjerne bare UI slengt på toppen av en tung beregningsdel. Man bruker ofte en MVC-variant der 99% av arbeidet skjer i C-delen. Vi snakker ikke programmer man får kjøpt i butikken, men ting som "beregn gassflow i prosessanlegg" eller "forutse været".

 

Man kan programmere i årevis uten å se et eneste GUI, den skikkelige beregningen skjer gjerne i Matlab e.l., og dette kompileres så inn som et bibliotek i det ferdige kjørbare programmet (som lages i et hvilket som annet språk).

 

"Modellering" er et bedre ord på det disse folkene driver med enn "programmering". Det har fint lite med koding å gjøre - jobben er å lage modellen, ikke å få den inn i datamaskinen. Den eneste linja på NTNU som gir deg denne kompetansen er Kybernetikk, samt muligens algoritmeretningen på data (men jeg tviler på om de kan brukes til å lage modellene, bare til å få algoritmene som følger til å fungere optimalt).

Endret av kvasbo
  • Liker 3
Lenke til kommentar
Mye vi jobber med her kan man i prinsippet løse helt enkelt ved å ta en snarvei på en datamaskin, men løsningen blir da veldig ineffektiv og ikke anvendbar i praksis. Det vil ta altfor lang tid å beregne det vi skal fram til på en datamaskin om vi ikke tar i bruk de skikkelige numeriske metodene.

Det høres ut som professoren ikke er klar over at diverse algoritmefag er obligatorisk i mer eller mindre alle programmeringsutdanningsløp?

Er det gitt at den gjennomsnittlige matematiker er bedre egnet til å beregne kjøretid enn den gjennomsnittlige informatiker?

 

Enhver programmerer som kun har et minimum med algoritme-orientert programmering bak seg er klar over at nøstede algoritmer - eksempelvis en algoritme som itererer over et datasett, og som for hvert element itererer over hele datasettet på nytt (O(n^2) eller verre) - er forferdelig tidkrevende, og tidsbruken er proporsjonal med kvadratet av alle elementer i datasettet.

I mange tilfeller finnes det raskere alternative måter å løse problemet på. Eksempelvis går det betydelig raskere å regne ut fibonacci-tallrekken ved en løkke som itererer oppover (flat) enn med en rekursiv algoritme.

Dessuten kan man, for prosessor som er så kjøretidsintensive at selv 1% reduksjon i kjøretid er vesentlig, optimere kildekoden for plattformen man kjører på. Å operere med boolske verdier satt til true i Java krever færre prosessorticks enn verdier satt til false (eller var det omvendt?), og de aritmetiske operatorene + og - krever færre ticks enn operatorene * og /. For de fleste er disse forskjellene så minimale at det vil ikke være merkbart, men for trege algoritmer på uhyre store datasett kan det utgjøre en viss forskjell.

 

Jeg ser for meg at matematikere kan være svært nyttig å ha med seg i team når man beveger seg mot svært komplekse algoritmer, men det hjelper nok dårlig om matematikeren ikke samtidig har en godt over middels forståelse for både algoritmer, kjøretid og til en viss grad maskinvarearkitektur. Der er nok de fleste informatikere relativt kompetente fra før.

Lenke til kommentar
Jeg ser for meg at matematikere kan være svært nyttig å ha med seg i team når man beveger seg mot svært komplekse algoritmer, men det hjelper nok dårlig om matematikeren ikke samtidig har en godt over middels forståelse for både algoritmer, kjøretid og til en viss grad maskinvarearkitektur. Der er nok de fleste informatikere relativt kompetente fra før.

 

Problemet er ikke å implementere algoritmen - problemet er å beskrive problemet man ønsker å løse på en måte som lar seg beregne overhodet. Kjøretid er ikke det viktige, men å få en presis nok modell som lar seg kalkulere på en effektiv måte.

 

All verdens algdat setter deg ikke i stand til det - du må forstå matematikken.

 

En typisk oppgave er ikke "beregn fibonacci så fort som mulig" eller "iterer over 1m datapunkter", men heller "beregn totalt trykktap i 20 km oljerør basert på autocad-modeller som beskriver forskjellige måter å designe rørene på. Ta oljekvalitet, -volum og rørets materialvalg som inndata."

 

Vi programmerere er utrolig flinke til å løse problemer innenfor programmering. Det gjør oss ikke spesielt gode til å løse problemer fra andre domener.

Endret av kvasbo
  • Liker 5
Lenke til kommentar

På samme måte som standard programmerere må ha en teskje algoritmefag, må nåtidens matematiker ha numerikk og programmering.

 

Skal du gjøre noe seriøst innenfor naturvitenskap i dag, som ikke er grunnforskning (forskning for viten uten anvendelser), kommer du ikke langt uten programmering.

 

I jobbsammenheng er programmering et likeså viktig verktøy som i forskningssammenheng. Det å trene opp en GUI-programmerer til å ha full forståelse av matematikken bak tunge algoritmer vs. det å trene opp en matematiker (med programmeringsferdigheter) til å meste GUI og arkitektur, vel, la oss si det sånn, det er åpent for diskusjon.

 

For meg er det ingen hemmelighet at matematikere/fysikere med informatisk rettet utdanning står enormt sterkt i jobbsammenheng på tunge algoritmer i forhold til mer standard programmerere. Men som sagt, skal man drive med brukervenlighet og platformtilpassing, burde man se etter andre kriterier enn matematikkferdighetene (dog ikke fokus i denne artikkelen, men et godt poeng).

  • Liker 1
Lenke til kommentar

Forferdelig dårlig råd. Det er allerede massevis av folk som egentlig ville jobbe med matematikk, men som ente opp med å måtte ta IT i tillegg som fyller denne rollen.

 

For det meste vil du føle deg overkvalifisert der du sitter og lager nok en løsning for enda et statlig kontor som ikke har lyst til å benytte standardløsningene siden naboavdelingen har jo sitt eget system.

 

Det går gjerne flere måneder mellom hver gang jeg skriver en for-løkke som ikke er av for-alle typen. Og kan nesten ikke huske siste jeg rørte Math-klassene.

Lenke til kommentar
...

(O(n^2) eller verre)

...

O(n^2) er det som er "raskere eller like raskt som" n^2

Så "O(n^2) eller verre" er alt. Antar du mener det som er Ω(n^2) :p

 

Ellers synes jeg kanskje det skulle vært nevnt at algoritmedesign er en gren innen matematikken. At IME kombinerer matematikk med informasjonsteknologi (og elekronikk) er vel en god illustrasjon på dette.

Lenke til kommentar

Det betyr ikke at du er en matematiker. Alle studerer matematikk i løpet av livet, men de feste stopper lenge før universitetsnivå.

 

Nei, hvor påstår jeg det?

 

Jeg har, for øvrig, ganske så tung matte bak meg som andreårs elektronikkstudent. Ikke kaller jeg meg matematiker, selv om jeg har hatt matte på universitetsnivå.

 

Digresjon til deg, srbz: En del mikrokontollere har dedikerte multipliserings og dele enheter i kjernen som kutter ned regnetiden drastisk.

Lenke til kommentar
Nei, hvor påstår jeg det? Jeg har, for øvrig, ganske så tung matte bak meg som andreårs elektronikkstudent. Ikke kaller jeg meg matematiker, selv om jeg har hatt matte på universitetsnivå.

 

Andre års elektro har ikke hatt avansert matematikk,. Tung regning kanskje, men ikke avansert matematikk. Generelt sett er det veldig få fag som heter noe med "matematikk" som er et som regnes som "ekte" matematikk, da dette er innføringsfag - Calculus o.l.

 

Jeg tror folk her har en litt rar oppfatning av hva en matematiker driver med og tror at han løser regnestykker, bare vanskelige sådanne.

 

(Jeg er siving data, og kan ikke skryte på meg å ha avansert matte på vitnemålet. Ikke i forhold til de som f.eks gikk Fysmat og Kyb. De jobber på et helt annet abstraksjonsnivå med veldig mye mer avansert stoff.)

Endret av kvasbo
  • Liker 3
Lenke til kommentar

Jeg har ingenting imot at man ansatter mattematikere for å programmere avanserte mattematiske løsninger, men jeg synes det blir vannvittig feil å si at statestikk og mattematikk ligger til grunn "svært avansert programmering". Svært avansert mattematik kanskje?

 

Det er ikke til å stikke under en stol at vi trenger mattematikere til en del programmeringsoppgaver, blant annet innenfor finans. Men kunne disse mattematikerene programmert systemer som krever svært avansert programmering som f.eks. OS eller Databaser?

 

Hvis du klarer å skrive en mattematisk algoritme som bruker en tiendel av kjøretiden som en programmerer hadde klart å skrive, så betyr det ikke at du kan svært avansert programmering, men det betyr helt sikkert at du er en kløpper i matte!

 

@srbz: Sannsynligvis tar det kortere tid å bergne true verdier, dette gjelder i alle språk da if setninger evaluerer true setninger, hvis en false verdi skal bli true må du først gjøre den om vha av not (!) operator, som selvfølgelig tar ett tick eller to lenger enn å bare se om en verdi er true...

At det tar lengre tid å løse en fib-utregning rekursivt tar lengre tid i språk som ikke støtter tail-call-optimization (TCO). I funksjonelle språk som Scheme og Haskell utgjør det ingen forskjelle da rekursive funksjoner utføres i konstant minne. En typisk informatisk løsning på å gjøre en fibonacci-utregning raskere på er derimot memoisering, som gjør at du bruker ekstra minne for å mellomlagre tidligere utregninger, på den måten slipper du å regne ut alle fibonacci verdiene på nytt ved flere utregninger. Btw, rekursiv utregning av fibonacci på veldig store tall vil føre til programkræsj (stackoverflow) på språk som ikke støtter TCO.

Lenke til kommentar

Digresjon til deg, srbz: En del mikrokontollere har dedikerte multipliserings og dele enheter i kjernen som kutter ned regnetiden drastisk.

Det er klart, og det å optimere koden helt ned på den enkleste aritmetikken er kun for de aller mest spesielt interesserte.

Likevel, i tidlige primitive programmeringsspråk og arkitekturer var det vesentlig større forskjell på tidsbruken hva angikk pluss/minus vs. gange/dele. Da kunne dette være aktuelle problemer selv for relativt simple applikasjoner.

Lenke til kommentar
Nei, hvor påstår jeg det? Jeg har, for øvrig, ganske så tung matte bak meg som andreårs elektronikkstudent. Ikke kaller jeg meg matematiker, selv om jeg har hatt matte på universitetsnivå.

 

Andre års elektro har ikke hatt avansert matematikk,. Tung regning kanskje, men ikke avansert matematikk. Generelt sett er det veldig få fag som heter noe med "matematikk" som er et som regnes som "ekte" matematikk, da dette er innføringsfag - Calculus o.l.

 

Jeg tror folk her har en litt rar oppfatning av hva en matematiker driver med og tror at han løser regnestykker, bare vanskelige sådanne.

 

(Jeg er siving data, og kan ikke skryte på meg å ha avansert matte på vitnemålet. Ikke i forhold til de som f.eks gikk Fysmat og Kyb. De jobber på et helt annet abstraksjonsnivå med veldig mye mer avansert stoff.)

 

Nåja, jeg vil ikke bagatellisere signalbehandlingen vi har hatt. Stoffet herunder er det samme som blir levert NTNU på masternivå. Fourier gjennomsyrer alt, med høydepunkter som spektrumsrepresentasjon og Z-transformasjonen. "Tung regning" :huh:

Lenke til kommentar

For å få tråden litt tilbake på fokus: skomaker, bli ved din lest. Matematikere vil antageligvis lage en algoritme basert på Dijkstra LANGT raskere og bedre enn en UI designer, mens en UI designer kan lage et bedre, smartere og fremfor alt vakrere UI enn en matematiker.

Jeg ville ikke satt noen av dem til å lage drivere.

  • Liker 2
Lenke til kommentar

Det er ikke til å stikke under en stol at vi trenger mattematikere til en del programmeringsoppgaver, blant annet innenfor finans. Men kunne disse mattematikerene programmert systemer som krever svært avansert programmering som f.eks. OS eller Databaser?

Jeg kjenner flere matematikere som ble rekruttert til å jobbe med databaseutvikling.
Hvis du klarer å skrive en mattematisk algoritme som bruker en tiendel av kjøretiden som en programmerer hadde klart å skrive, så betyr det ikke at du kan svært avansert programmering, men det betyr helt sikkert at du er en kløpper i matte!
Det er riktig, men det skader ikke å ha abstraksjonstreningen fra matte når man skal gå inn i tung template-basert c++ kode.

 

Generelt er min erfaring at du finner flinke folk overalt. I den grad generalisering har noe for seg, så har matematikere en generell bakgrunn som gjør dem anvendelige (så fremt de har kapasitet til å få hodet ut av matematikken, noe slett ikke alle har). IT folk kan være drivende dyktig på utvikling, men mangler ofte nødvendig bakgrunn på feltet koden skal brukes på. Fysikere kan være en god kombinasjon hvis de bare er ryddige nok. Statistikere er som anvendte matematikere, men uten numerikkbakgrunnen.

 

I Oslo mangler teknologifokuset ved universitetet, men ildsjeler har skapt miljøer utenfor. På NTNU og UiB har det vært bevisst satsing over tid som har gitt resultater. Vil spesielt trekke frem CSE som et godt initiativ for å gi studenter som ønsker datakoblingen et godt tilbud: http://www.math.ntnu.no/cse/

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...