27. juni 2005 - 13:33Der er
31 kommentarer og 3 løsninger
Programmering, datalogi osv.
Hej. Jeg overvejer at vælge Datalogi uddannelsen efter min ungdomsuddannelse (ved godt der er et stykke tid endnu, men jeg vil gerne vide lidt mere).
1. Først og fremmest, er der nogen Datalogi uddannede eller som er på den uddannelse herinde? Hvis der er, kender i så foreskellene på de forskellige universiteter? Er uddannelse præcis den samme på dem alle, eller er der store forskelle?
2. Dette henvender sig ikke kun til dataloger, men også andre programmører og andre med viden om emnet:
Hvilket programmeringssprog er SPROGET, hvis der er altså er ét. Her mener jeg i forbindelse med arbejde som programmør hos et firma, hvilket programmeringssprog er det foretrukne alt i alt? Mit eget gæt ville være C++, men det ved i bedre end mig.
Hvad er forskellen på C++ og C, og bruger man overhovedet C ved nogen firmaer?
Hvilke opgaver kan man typisk komme ud for at programmere som Datalog? Jeg har virkelig ikke kunnet finde på ret mange, så jeg håber i kan hjælpe mig:
Spil - Store spil mest vil jeg tro.
Store Programmer - Her kunne jeg ikke finde på så mange, og Office-pakken, Adobe's programmer (photoshop osv.) var alt jeg kunne komme på her, hjælp! :P
Styresystemer - Windows kun går jeg udfra? Sidder der et helt hold af programmøre og skriver Linux når det er freeware? Hvad med Macintosh?
Hvordan foregår det egentlig når mange programmøre sammen skal kode et kæmpe projekt? Hvis det måske består af 200.000 linier kode, skriver hver programmør så bare en lige del af det og så samles det tilsidst, eller hvordan dælan gør de det?
3. Jeg har en del tid tilovers her i Sommerferien så jeg tænkte at jeg ligeså godt kunne gå igang med et programmeringssprog. Nu ville det være ret smart at tage SPROGET, hvis der var sådan et indenfor professionelt arbejde som programmør, eller hvad? Jeg har tidligere arbejdet lidt med Delphi, dog ikke så meget kode, da det var et forbedret Notepad og alle de funktioner skulle jeg knap nok selv skrive) og meget lidt med C++, hvilket jeg synes var meget svært (men var vist også kun 11-12 år) og jeg nåede aldrig at lave noget med GUI, hvilket man jo gør fra minut 1 i Delphi.
Hvilket sprog anbefaler i (ikke et "webprogrammeringssprog", da jeg allerede kan flere af dem): Delphi, C++, C?, Java, ellers andre? Kom gerne med jeres mening om alle sprogene og fortæl hvorfor jeg lige skal vælge X.
1. Jeg læser Datalogi på Århus Universitet. Datalogisk Institut i Århus er det der har uddannet flest dataloger og det er så vidt jeg ved også det sted som har mest forskning. Universitetet bestemmer selv indholdet af uddannelsen så der vil være forskellige og tingene er til dels formet efter dem, der underviser. Nogle universiteter kører meget matematik som en del af uddannelsen hvilket man er gået væk fra i Århus ved at gøre meget af det valgfrit.
2. På Datalogisk institut i Århus foregår det meste programmering i Java og en lille smule i C. I industrien bruger man efterhånden mest Java, forskellig slags .NET og stadig nonget C++ men det er lidt på retur. C++ er objektorienteret men er lavet med udgangspunkt i C, som er imperisk. C++ og Java har meget til fælles og det ene kan hurtigt læres når man kender det andet. Det samme gælder for Java/C++ og de sprog man koder .NET med (primært C# som ligner C++ eller J# som er gjort mere Java-agtigt). Du kan godt komme til at kode spil som datalog. I Århus tager man mindre matematik og mere af Multimedieuddannelsen på Universitetet for derved at få fag som Game-engine programmering og ting af den slags. Dette åbner også mulighed for at tage en kandidat-uddannelse om spil-programmør, der er ved at blive oprettet. I Århus er der både Linux og Windows maskinerne, men folk bruger primært Linux. Der er nogle Windows XP-maskiner, men de bliver sjældent brugt og flere af dem har netop fået Linux også (Fedora). Når vi mest koder i Java betyder det jo ikke så meget, så er det mest hvad man foretrækker, der afgør sagen. Det er forskelligt hvordan strukturen er når man er mange om at kode, men det er vigtigt at den er der. Typisk arbejder man i små grupper som tager sig at sin del af programmet. Som datalog på arbejdsmarkedet kommer du nok også i høj grad til at programmere software på bestilling fra firmaer og det offentlige, og nok ikke så meget software-pakker som kan købes i butikkerne.
3. Du skal vælge Java hvis du vil i gang som datalog (man lærer selvfølgelig også at programmere som et af de indledende fag på datalogi) af ovennævnte grunde. Når du har godt styr på Java er C++ eller noget andet objekt-orienteret primært et spørgsmål om at lære en anden syntax og nogle standardbiblioteker.
OK, jeg vidste ikke at man brugte Java så meget. Hvad er der specielt ved det der .NET? Og mht. Java, hvilke programmer bruger i/du så til at kode det i? Ellers andet jeg skal skaffe for at kunne komme igang med Java og kender du evt. nogle gode begynder bøger om emnet?
Tror/ved du om fx. de nyere spil som FarCry, GTA San Andreas, World of Warcraft osv. er kodet i Java?
For dataloger er der ikke et sprog. Der er mange sprog. De viul typisk komme igennem en 5-10 forskellige sprog under uddannelsen. Bl.a. med det formål at lære at et sprogs syntax kun er syntax, mens at der gælder nogle mere universelle regler for programmers struktur og opbygning.
C bruges stadig - mest til vedligeholdelse af ældre programmer og embedded programmer
Dataloger laver en million forskellige ting, men hvis vi snakker arbejdspladser, så er det nok virksomheds systemer ((ERP, CRM etc.) som vejer tungest.
200000 linier koder er ikke et stort program - kun et middelstort.
På store projekter så bliver kodning en ret lille del af udviklingen. Krav, design og test fylder meget i forhold til selve kodningen.
Brug af source control er selvfølgelig et must.
Og selvfølgelig må man på et tidspunkt uddelegere arbejde, så hver udvikler for sit lille område at implementere.
Hmm... arne_v: "Dataloger laver en million forskellige ting, men hvis vi snakker arbejdspladser, så er det nok virksomheds systemer ((ERP, CRM etc.) som vejer tungest. "
Hvad er de der virksomheds systemer, ERP, CRM? Og du skriver "men hvis vi snakker arbejdspladser", det forstår jeg ikke helt, hvad laver dataloger da udover at arbejde et eller andet sted, og hvor du så skriver at så er det virksomheds systemer.
der bliver ikke lavet meget basis software i DK - jeg mener at vi har nogle få *BSD committere og Trifork
der bliver heller ikke lavet så meget plastic software i DK (plastic software = software i æske med plastic omkring som sælges i tusindvis/millioner af eksemplarer) omend der vel er nogle få eksempler
Windows, Office etc. laves nok i USA (eller måske indien)
MS har dog en pæn udviklinsg afdeling i DK (Navision)
Der er så vidt jeg ved også en enkelt stor spil udvikler i DK og nogle små
Men selvom den slags software kræver hundredetusinder af timer, så batter det alligevel ikke så meget beskæftigelsesmæssigt, når softwaren så sælges over hele verden. Der mere beskæftigelse i de tusinder af firmaer som skal have udviklet en special løsning eller have tilrettet et standard system til lige netop deres behov.
De store spil programmeres nok i C++, ikke Java.. Jeg tror ikke at Java kan hamle op med C++, på det område.. Det er vist en hel anden slags programmering..
Java kan sagtens hamle op med C++ men det er nemmere at få C++ til at spille sammen med DirectX end det er med Java.
Microsoft har ikke ret mange dataloger ansat i Danmark.
Et framework en en række kompenenter som en programmør kan sætte sammen til et program. Den der programmerer frameworket ved ikke hvad komponenterne skal bruges til, han stiller dem bare til rådighed. Gode frameworks sparer en masse tid for programmøren da han ikke skal opfinde den dybe tallerken hver gang. Når alt dette er sagt så er hverken .NET eller Java i sig selv frameworks, men de indeholder begge brugbare frameworks. .Net og Java er en slags virtuelle computere (Virtual Machines) som kan køre programmer der er skrevet til dem. Når man vil køre et javaprogram startes altså et program som kaldes Java Virual Machine. Dette program sørger så for at udføre det program, du har skrevet. Det samme gælder for .NET. Fordelen ved dette system er at det samme program kan køre på alle systemer hvor der er en Java Virtual Machine til rådighed, så du eksempelvis kan køre dit program under både Windows, Linux, MacOS og Solaris uden at lave en særlig version til hver. Microsoft syntes i sin tid at den idé var så god at de kopierede SUN's Java. Dette fik de forbud mod og lavede så i stedet deres eget som kaldes .NET. De to systemer har mange til til fælles men er ikke kompatible. Derudover udgives .NET kun til Windows.
Danmark har IO Interactive (som nok er dem arne_v mener? Det er dem med hitman 1 - 500, og freedom fighters). Men der er osse deadline games, som med et budget på 50 mill på seneste titel, og 50 mand på produktionen ikke er helt små i spiludvikling.
De store spil laves på engines som enten er inhouse eller indkøbte til formålet. IO bruger deres egen (og det tror jeg egentlig også deadline gør), en engine er oftest lavet i c/c++. Til interaktion med disse engines er der ofte et simplere scriptsprog (som udviklerne selv laver), eller et eksisterende scriptsprog, eller bare c++.
Når du har engang har lært Java, er det ikke så svært at sætte dig ind i C++. Teknikkerne er de samme. Man kunne i øvrigt tro at Java er langsommere en C++ fordi programmer skrevet i C++ kører direkte på Windows, men Java i princippet kører i et andet program. Dette er dog ikke tilfældet. Forskellen er først og fremmest teoretisk, for Java Virtual Machine er optimeret i alle leder og kanter til det, den er beregnet til. Sprogene ligner som sagt hinanden (Java er konstrueret med udgangspunkt i C++ og C), og C++ siges at være bedre til tal-beregninger, mens Java er bedre til at gentage beregninger mange gange (~algoritmer).
Som færdiguddannet datalog kan du uden problemer bruge begge dele. Du lærer mindst en håndfuld fuldblods-programmeringssprog i løbet uddannelsen plus det løse.
C er udviklet på Unix-systemer (som Linux) og bruges stadig en del her. Eksempelvis er Linux-kernen skrevet i C. Det har aldrig været meget anvendt til Windows-programmer. Du lærer C på datalogistudiet, men det er ikke ret anvendt. De ligner Java (og C++), men har ingen objekter, ingen klasser, ingen fejlhåndtering og en række andre ting.
Er det der J# og C# så sådan noget .NET, altså en slags virtuel machine også? Og kræver Java så ikke at man downloader den Virtual Machine for at bruge det (tror jeg også jeg har downloadet engang, men ved ikke om det er det samme, det var til sådan noget intetnetside Java noget, er det det samme?) bruger J# og C# også sådan en?
Hvad er bedst af J# (hvis er det en slags Java .NET) og Java.
Lærer man Java på Datalogistudiet, eller er det kun C?
Ja, .NET er en virtual machine på samme måde som Java. Den skulle også engang hentes ned og installeres men den indgår vist i SP1 og SP2 til Windows XP, så langt de fleste har den installeret, men det gælder nu også for Java.
J# er en .NET version af Java, men det er ikke ret udbredt. De fleste bruger C# til at skrive programmer til .NET. Jeg vil klart anbefale dig Java. Det er meget mere brugt en J# og det gør dig i stand til at lave alle mulige forskellige programmer.
Ja, Java-applets (det du kalder internet-side Java) er også Java-programmer. Det bruges en del til eksempel net-banker da man hermed kan nøjes med at lave ét netbank-program som alle kan anvende gennem deres browser. Jeg benytter eksempelvis Nordeas netbank i både Windows og Linux og i både Firefox og Internet Explorer uden at der er nogle problemer i det og uden at Nordea behøver at vide noget som helst andet en at jeg har en Java Virual Machine installert på min computer.
Mht til C som sprog til embedded software så er Java også ved at tage noget over her. Der er eksempler på chips som kan køre Java-programmer uden brug af en Virtual Machine (altså er designet så programmerne kan køre direkte på CPU'en) og i for eksempel mobil-telefoner er det også Java man bruger til at lave programmer.
C bliver der mindre og mindre af fordi det er besværligt at skrive i, let kan give rodet struktur, ikke har nogen fejlhåndtering og fordi man som programmør selv skal sørge for at holde styr på en lang række ting, der, hvis man glemmer dem, kan gøre systemet sårbart overfor hacker-angreb og kan give mystiske nedbrud. C er også noget bøvl at finde fejl i. Hvis programmet går ned, skal man tit rode en del for at finde fejlen, Java Virtual Machine vil derimod fortælle dig nøjagtig hvilke linjer, som var ved at blive udført, hvis dit Java-program går ned. Jeg siger ikke at C er noget lort. Det skal ses som at der er sket en udvikling og at tingene er blevet mere raffinerede med tiden. C er langt ældre en Java.
OK, jeg tror vist jeg vælger Java :) Hvordan kan jeg tjekke om jeg har Java Virtual Machine, og hvad skal jeg ellers bruge for at være godt rustet til Java programmering. Jeg går udfra at i ikke bruger Notepad og så kompiler i et andet program, så hvilket program programmerer i Java i, og findes der evt. noget godt freeware software som i vil anbefale mig?
PS. Kan alle dem der gerne vil have point, lige ligget et svar, tak :)
schwarz84 > Man bruger nu flere ting til at lave programmer til mobiltelefoner; J2ME (Java), mophun (c/c++ og assembler), BREW (c/c++ og assembler). Der er flere apps på en mobiltelefon der ikke er lavet i Java (bl.a styresystemet). Mit indtryk er bestemt ikke at c/c++ er "på vej ud". Det er stadig nerven i mange apps, især i spiludvikling til større platforme.
mat > Ja, det er korrekt, men hvis man selv skal kode programmer til mobiltelefoner, foregår det normalt i Java. Jeg har ikke selv bygget et nyt styresystem til min Nokia endnu... Jeg tror ikke at C++ er på vej ud, men jeg tror at C er det. Java og .NET har overtaget en stor del af det marked C++ havde tidligere i industrien.
rasmuslarsen2: Du skal have fat i Java Development Kit (JDK) fra: http://java.sun.com/j2se/1.5.0/download.jsp. Du skal have den nyeste under alle omstændigheder. Du kan godt skrive i Notepad, hvis det er det du vil. Jeg foretrækker en ren teksteditor, når jeg skriver kode. I mit tilfælde vil det sig Vim, da den er mere avanceret end Notepad, men Notepad kan sagtens gå. Du kompilerer filen Test.java ved at skrive "javac Test.java" i kommandoprompten i Windows (du skal sætte path til at pege på Java's bin-mappe for at dette virker).
Hvis du foretrækker en IDE ligesom Delphi hvor der er noget "hjælp" til at skrive og drag-and-drop konstruktion af brugerfladerne i dit program, er der ikke nogen vej udenom Eclipse, som kan hentes fra http://www.eclipse.org/ Jeg foretrækker nu klart Notepad/Vim-løsningen. Så er der mindre til at forstyrre.
Et godt "begynder-IDE" er BlueJ. Her kan du lege lidt med koder og klasser, så du kan lære hvordan tingene fungerer. BlueJ kan hentes fra http://www.bluej.org og kræver at du har installeret Java, da det er et Java-program. Bogen, der reklameres for på forsiden "Objects First with Java, A Practical Introduction using BlueJ, 2nd ed" er meget anbefalelsesværdig. Måske kan den lånes på dit bibliotek. Den giver en grundig introduktion til klasse/object-begreberne og til sproget som helhed, og den er ikke så svær at gå til.
OK, jeg takker, og vil læse de to artikler af arne_v nu.
Fortsat god dag allesammen :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.