Hvad er nogle af de bedste måder at lære programmering på?

Bedste svar

En masse mennesker spørger mig, hvordan at lære programmering fra bunden. Fra dette svar lærer du, hvordan du gør det. Jeg programmerer i 20 år. Jeg deler mine oplevelser og mennesker, som jeg har hjulpet i denne karrierevejsudvikling.

Svaret blev oprindeligt skrevet på min blog og modtog 30 000 visninger og 1 000 stemmer på Wykop – polsk reddit-lignende side. Nyd!

En masse mennesker spørger mig, hvordan man lærer programmering fra bunden. Hver dag læser jeg kommentarer af sådan art. For eksempel arbejder nogen i et andet område og ønsker at blive softwaretester. Eller han / hun arbejder inden for it, men ønsker at hoppe på et nyt niveau og starte programmering. Alle disse mennesker har en ting til fælles. De vil starte programmeringsrejsen. Men dette område er så bredt, at de ikke ved, hvordan man starter. Og alle fortæller andre ting om, hvordan man gør det.

Fra dette svar lærer du, hvordan du starter programmering fra bunden. Du vil også modtage nogle råd, der kan hjælpe dig med fremskridtene. Så lad os begynde:

For at lære at kode, skal du følge disse trin:

1. Se dig omkring

I øjeblikket er programmering et meget bredt område. Så det er godt at se sig omkring og se, i hvilken retning du kan gå. For hvis du kender mulige måder, kan du vælge den rigtige til dig. Det hjælper også med at vælge teknologier, du skal lære.

Til at begynde med kan jeg fortælle om webstedsprogrammerere . Dette er mennesker, der bruger for eksempel WordPress eller et andet content management system (CMS) og ved hjælp af deres færdigheder tilpasser de hjemmesiden, så det fungerer som klienten forventer, at det skal ske. For at gøre det skal sådanne mennesker mest kende JavaScript, HTML og CSS.

Webstedsudvikler – dette er formodentlig den mest populære fortolkning af en “programmør” i verden.

Men programmering handler ikke kun om WordPress-websteder. Det er meget meget mere. Programmering er opdelt i flere realer. For det første vil jeg give dig tre eksempler på frontend-riger. Frontend programmering er programmering af noget, som brugeren / klienten ser. En grænseflade. Med korte ord:

Webapp-programmering – opbygning af forretnings-online-apps (såsom din bankapp eller film-sammenligning-app). Dette er specifikke applikationer, der udfylder specifikke brugergruppers behov. De tjener ikke til at styre indhold (som WordPress), men til at styre processer (det vil sige, så folk med korte ord kan udføre nogle opgaver). Ud over JavaScript skal HTML- og CSS-programmører kende nogle ekstra teknologier til webapp-programmering. Det afhænger af et projekt, for eksempel: SCSS, TypeScript og en af ​​følgende rammer: Ember, Angular, Vue eller React. (Framework er et skelet af en applikation med build it-funktioner).

Programmering af desktop-app – som ovenfor, men det handler om programmering af applikationer, som du f.eks. Kan installere på et Windows-system. Denne gruppe adskiller sig fra den foregående. Det bruger andre teknologier. For eksempel kan programmering til Windows bruge C # sprog og .NET Framework.

Programmering af mobilapps – det handler om at skrive apps installeret på mobile enheder . Hovedsageligt på enheder med Android- og iOS-operativsystemer. Programmering til Android bruger hovedsageligt Java-programmeringssprog og til iOS: Hurtigt sprog. For hvert system er der forskellige rammer. Der er også rammer for begge systemer.

Dette var eksempler på frontend reals. Lad os nu gå videre til backend-riger. Backend er mere eller mindre programmering af noget, klienten / brugeren ikke kan se, men er afgørende for, at systemet fungerer:

Databaseprogrammering – databaser som MySQL og MSSQL. Database er mere eller mindre et avanceret regneark. Database gemmer således flere data og giver mulighed for at manipulere det programatisk. Tilføj data, fjern dem, skift. Derudover tillader det at opsætte forskellige måder at håndtere data på. For eksempel afvise ufuldstændige data eller indsamle data fra forskellige tabeller. Databasesystemer bruger deres variationer af SQL-sprog (for eksempel T-SQL til MSSQL). Sproget gør det muligt at kode forskellige operationer på dataene. Der er også databaser, der ikke bruger SQL-sprog. De bruger et mystisk navn: NoSQL.

Backend-programmering – backend-udvikler behandler data mellem database og frontend eller mellem forskellige systemer, der skal samarbejde. Næsten ethvert programmeringssprog kan bruges til backend-formål. Men da backend har specifikke brugssager, har folk en tendens til at bruge forskellige sprog end til frontend. For eksempel: PHP, Ruby, Python, Java, men også JavaScipt.

De fleste af programmører deler sig i frontend- og backend-udviklere. Men der er også fullstack-udviklere.Fullstack-udvikler er en person, der kender frontend- og backend-teknologier. Han / hun kan tage sig af alt for at oprette en applikation: database, backend og brugergrænseflade.

Men det er ikke alle områder. Og i de fleste af sådanne oversigter er andre områder udeladt. Vi har flere og mere avancerede enheder, sensorer, der leverer data til informationssystemer. Disse skal også programmeres. Dette kaldes indlejret programmering. Indbygget programmering udføres for det meste på C- og C ++ – sprog, fordi disse sprog giver programmøren adgang til abstraktion på lavt niveau. Det sparer ressourcer på disse små enheder.

Et andet blomstrende område for programmering er dataanalyse. Udviklere af dataanalyse bruger store datasæt i virksomheder og forbereder resultater til forretningskonklusioner, der skal drages over dem. Sådanne programmører bruger forskellige sæt sprog, herunder Python og R (ja, dette er et navn på et programmeringssprog, bare et bogstav R. Hvor kommer verden til højre?).

Et andet område er arv programmering. Ældre udviklere kender teknologier, der blev brugt til at bygge systemer, men som ikke længere er populære. De understøtter ældre systemer, der har brug for at fungere, men blev bygget for mange år siden.

Der er en masse andre programmeringsrealer. Jeg skriver ikke om alle disse her. Men det er muligt at finde dem.

Dette er slutningen på dette punkt. Hvorfor er det så vigtigt? Hvis du ved, hvilket område du er interesseret i, kan du vælge teknologier, bør du lære. Og det er lettere at lære nogle få teknologier end 200 af disse.

Lad os antage, at du allerede ved, hvilket område du er interesseret i, skal vi? Hvad er det næste?

2. Vælg teknologier

For at komme videre skal du tage en informeret beslutning om teknologier, du skal lære. Men ærligt talt er det svært at få et godt råd om det. Du kan spørge nogen eller gå til studier eller et bootcamp. Men uanset hvad vil du ende med at lære: a) hvad der er populært b) hvad ved den person, der lærer dig c) hvad bruger den person, der svarer. Og ofte er det ikke et godt valg. Men jeg har gode nyheder. Du kan gøre det bedre og gøre det godt.

Læs om hvilke teknologier der bruges af virksomheder, der arbejder i området, du er interesseret i. Søg efter jobtilbud, se hvilke teknologier der opstår igen. Gå ikke glip af begejstring, fordi der er 20 teknologier der. Det er en fiktion. Folk skriver ting, der ikke er nødvendige senere for jobbet.

Ofte læser jeg, at folk ved lidt om dette, lidt af det. Og de ved stadig ikke, hvordan man bliver programmør. De er tabt. Det er helt sandt. Programmering er et meget bredt område, og du kan ikke lære alt. Du skal vælge retning og holde fast ved det. På den måde øger du din chance for at få succes.

3. Vælg læringsmetode

Dette punkt er meget vigtigt, og jeg vil skrive hvorfor. Alle har deres mening, hvordan en udvikler skal lære. Hvis du ledte efter svaret online, finder du en masse ideer, hvad der er rigtigt. Man vil rådgive at bruge YouTube-videoer. Anden vil fortælle bog er vejen at gå. En anden person vil fortælle, at et bootcamp er det bedste. Softwareudvikler lærer af en dokumentation! Nogle udviklere siger også, at universitetsuddannelse er ubrugelig. Jeg er ked af sådanne udsagn.

Du ved ikke, hvad der er bedst. Og det er helt naturligt. Alle fortæller forskellige ting. Personligt kunne jeg anbefale e-bøger og video-tutorials, fordi jeg kan lide disse. Men dette ville ikke være et ordentligt eller nyttigt svar.

I virkeligheden betyder det ikke noget, hvordan du lærer. Så længe du lærer. Og kan du huske hvordan du lærte i skolen? Hvordan så det ud? Bedte en undervisning dig om at lære lidt af dette, lidt af det. Ting, der ikke har nogen forbindelse imellem? Nej. Og i skolen lærer du komplicerede ting. Ting der ikke betyder noget for dig. Men alle huskede lidt på dette.

Det er fordi læring i skolerne er systematisk og metodisk. Trin efter trin. Systemet blev udviklet gennem hundrede års erfaring. Hvis du synes, det ikke er godt nok: spørg dig selv: hvordan man laver et kartoffelbatteri? Dette system er så godt!

Du er interesseret i at lære programmering. Det bedste, du kan gøre for dig selv, er at vælge en metode, der er metodisk og systematisk. Så lad os svare på os selv, hvad er den mest metodiske og systematiske metode til læring? Det er åbenbart en gymnasial uddannelse. Gymnasielærere kender metodisk og systematisk uddannelse meget godt. Det vil være svært, men du lærer programmering.

En anden måde at lære er bøger og bøger. Med lidt forsigtighed finder du en bog, der lærer ting trin for trin. Fra lette til vanskelige ting. Fra A til Z. Men du skal lide at læse.

Videoundervisning og online-kurser – disse kan være gode, hvis forfatteren forbereder det metodisk – det hjælper dig med læring. Især hvis du kan lide at se og lære.

Bootcamp – en intensiv programmeringstræning. Du kan også drage fordel af dette. Det er en god løsning, hvis du kan lide at arbejde med mennesker i en gruppe.

Den eneste ting, jeg vil gøre dig opmærksom på, at du ikke bruger ikke-metodiske, ikke-systematiske og ufuldstændige måder at lære programmering på. Forestil dig, at du lærte 50\% af et emne fra et YouTube-videokursus (fordi det er gratis). Men der er ingen sidstnævnte del. Du søger efter andet kursus. Men på andre kursus er der ting, du ikke ved. Også nogle ting, du ved. Og emnet forklares på en helt anden måde. Det er så ned-ånd! Så til at begynde med: indhold, der dækker emne fra A til Z.

Når jeg snart når slutningen af ​​dette punkt, ville jeg også bemærke et problem, der er ekstremt vigtigt. Jeg læste, at folk rådgiver begyndere til at bruge engelsk indhold til at lære. Disse mennesker ved ikke, hvad de laver. Når du er nybegynder – gør ikke dit liv svært. Hvis du har indhold på dit modersmål – brug det. Hvorfor skal du lære programmering på fremmed sprog? Det er et fuldstændigt affald. Du kan også lære spansk fra tysk bog, mens du taler engelsk, eller polsk fra canadisk bog, mens du taler japan. er det muligt? Ja. Men hvorfor?

4. Sæt et mål

At indstille mål udelades ofte i planlægningen af ​​en arbejdskarriere. Folk begynder at lære et kursus end at stoppe og derefter gå til en bootcamp, mens tiden uundgåeligt går. Efter flere måneder kan du ikke huske, hvad du har lært før. Det ser ud til, at du har lært noget, men hvad præcist er du færdig med?

For at gøre det lettere at lære er det en god idé at sætte et mål. For eksempel kan du sværge på, at du vil læse en 800 sider lang bog om en måned. Eller du vil ende med kandidatstudier eller finde et juniorudviklerjob om seks måneder.

Alt går bedre, hvis du sætter et mål. Det er noget om vores natur, at målene gør livet lettere. At lære er ikke let. Programmering jeg er ikke let. Læring programmering er ude af hitlisterne. Derfor er et mål så vigtigt. Og tilfredshed med at nå det giver motivation til videre arbejde.

5. Lær systematisk

Når du allerede har et mål, er næste trin at lave en læringsplan. Hver dag en time. Men hver dag, altid en time. Og ikke at tage endnu en videoundervisning eller læse en artikel, men at lære noget meningsfuldt.

Er der en måde at gøre det lettere på? Mind focus er påkrævet for at lære programmering. En masse sind fokus. Prøv dette. Annoncer til alle: kl. 18 vil jeg lære at programmere i en time og forstyrr mig ikke. Sluk for telefonen, log ud fra Facebook. Giv børn til svigerforældre. Giv hund til en nabo.

Vær opmærksom på, hvor meget du vil lære! Du er nødt til at afskære dig selv fra verden for virkelig at forstå undervurderingen ved programmering.

6. Kod dig selv

Jeg følger en fantastisk nybegynder softwareudvikler på LinkedIn. Hun fandt en fantastisk måde at øve programmering på. Hver dag sætter hun et mål om at kode noget. For eksempel: en dag: enkel lommeregner. Næste dag: enkel side med filmomslag. Hun opretter en animeret GIF med hvad hun gjorde og sætter den på LinkedIn. Hun skriver, hvad hun har lært i løbet af dagen. Jeg elsker at følge hende. Hun skaber nogle geniale mini-projekter. Oven i dette har jeg også i de tidlige dage gjort, hvad hun gør. Hvad hver god softwareudvikler, jeg kender, gjorde. Udarbejde opgaver og programmering. Sådan bliver du softwareudvikler.

Det er selvfølgelig lettere, når du studerer, arbejder eller deltager i en bootcamp eller har en bog med eksempler på opgaver. Fordi du ikke behøver at finde ud af opgaver alene. Dette er også en god metode. Men nogle gange er sådanne opgaver kedelige, ikke tvinge dig til at gå uden for din komfortzone. Og hvad hvis du selv finder ud af en opgave? End du vil ramme nogle forhindringer, der vil finde ud af, hvad du skal lære at gå videre med din praksis.

7. Bed om hjælp

Da vi taler om problemer. Det er svært at formulere, hvad du har problemer i de tidlige programmeringsdage. For eksempel når en fejl opstår i en applikation. Hvordan oversætter man problemet til ord? Hvordan beder jeg om det? Nogle gange er det så svært, at folk ikke ved, hvilken sætning de skal sætte i en DuckDuckGo-søgning. For mange år siden var det lettere. Der var StackOverflow og supportgrupper, hvor du var i stand til at stille spørgsmål. Du kan stole på hjælp fra andre.

I dag kan du stå over for sådanne svar som “søg på internettet” eller “dette blev bedt om før” eller “igen”. Dette er frustrerende. Uheldigvis. Internettet er fyldt med svar. Hvad avancerede softwareudviklere ikke forstår, er at det er svært at nævne et problem, hvis du er nybegynderprogrammerer. Selvom de havde nøjagtigt det samme problem! Jeg kan forsikre dig om dette!

Derfor opfordrer jeg dig kraftigt til at stille spørgsmål. Find et dejligt sted på internettet til softwareudviklere, eller find en mentor. Og spørg spørg spørg.Nogle gange vil du snuble over en tøven. Men det skal ikke bringe dig ned. Og i så fald skal du finde et andet sted, der er pænere.

Jo mere du vil spørge, jo lettere bliver det at formulere det, du har problemer med. Mens tiden går, bliver dine spørgsmål bedre og bedre, svarene vises hurtigere og hurtigere. Og senere, vil du opdage, at nogle problemer kan løses bare ved at formulere et ordentligt spørgsmål.

8. Find arbejde hurtigt

Jeg læser ofte, at folk udsætter søgningen efter et job, indtil de lærer noget mere. Og halvdelen af ​​året går forbi. Softwareudvikling er et felt, hvor du hele tiden har brug for at forny din viden. Lad os sige, at du har lært 3-4 teknologier, som du har brug for. Du begynder at søge efter et job og komme i problemer. Du kunne søge et job i flere måneder! Og mens du gør det, glemmer du halvdelen af ​​de ting, du har lært.

Så mit råd er, at du skal begynde at søge efter et job mere eller mindre halvvejs på din læringsvej. Af flere gode grunde. Først og fremmest, hvis du tager en praktikant eller et juniorjob, antager din arbejdsgiver, at du næsten ikke ved noget. For det andet tager rekruttering selv tid. Inden du finjusterer dit CV, inden du lærer foruddefineret, tilgængelig online, vil testspørgsmålene gå. Det vil passere, mens du vil skærpe din rekrutteringstale uden rystelser. At finde et job er også noget, du har brug for at lære.

Så halvvejs i læringsstien begynder du at kigge efter et job. Send CVer, planlæg møder, vænne dig til det. End din tekniske parathed vil møde rekrutteringsklarhed, og der vil ikke være nogen forsinkelser.

9. Bed om mere komplicerede opgaver

Nu har du en arbejdsstilling. Men den største fælde ved programmering ligger foran dig. Da du har et job, kan du lægge bøger i hylderne og bare gøre det, du bliver bedt om at blive gjort.

Det er ikke sådan! Vær opmærksom på, at praktikanter / juniorer ofte ikke bliver bedt om at udføre komplicerede opgaver, men meget lette. Du vil snart bemærke, det tager mindre og mindre tid at gennemføre det og begynder at blive kedeligt. Hvis du ikke vil gøre noget ved det, mister du tid. Du kan lære nye ting. Lad være med at løbe rundt i cirkler.

Herudover ser din arbejdsgiver, hvornår praktikant / junior står stille. Jeg er arbejdsgiver, det er lige så klart som himlen. Og ingen vil have tidløst internet / junior.

Så når du ser, bliver du bedre, så spørg din vejleder om mere komplicerede opgaver. Han / hun skulle vide at give dig noget mere komplement. Dette er vigtigt for at fortsætte med at lære og udvikle dig selv, mens du er på arbejde.

Som praktikant / junior skal du lære meget, meget mere. Jeg er 100\% sikker på, at du ikke vil blive en af ​​disse fyre på internettet, der siger, at praktikant / juniorposition ikke gav dem noget, lærte intet. De lærte ikke, fordi de ikke ønskede at gå længere. De spilder deres og deres arbejdsgivers tid.

10. Beherske nye teknologier

Programmering er et fantastisk felt, men det ændrer sig hele tiden. Det, du har lært i dag, bliver forældet om et år. Og forældet i 5. Når du finder et job og føler dig godt tilpas med det, skal du mestre noget nyt. Udvid dine færdigheder. Bliv ikke stille med din professionelle udvikling. Hvis du holder op med at studere, er det måske værd at gå tilbage. Deltag i et bootcamp, læs en bog, deltag i et online kursus. Uanset hvad det giver dig mulighed for at være opdateret med teknologier.

Opdatering: hvis du vil huske programmeringsmetoder, skal du kigge efter Summon The JSON-projektet. I øjeblikket er der et kort til JavaScript-programmører. Du kan lære mere her: Indkald JSON: JS Deck

Det er alt hvad du behøver for at lære at starte programmering fra bunden. Dette var en rigtig lang artikel, og jeg er virkelig forbløffet over, at du har nået slutningen af ​​den. Jeg er sikker på, at 99\% af befolkningen ikke gjorde det. Det ser ud til, at du er interesseret i at blive softwareudvikler. Omsorg er 99\% af en succes. Jeg ønsker dig held og lykke. Programmering er fantastisk og giver en masse professionel tilfredshed. Mist ikke dit hjerte for det. Fortsæt. Trin for trin.

Engelsk er ikke mit modersmål. Hvis du finder fejl i svaret, bedes du rette det. Du vil blive nævnt i svaret. Tak!

Svar

En god start er at finde ud af, hvordan man elsker programmering. For at citere fra en ny programmør, som jeg hjalp:

GASP DET FUNKEREDE DET FUNKEREDE DET FUNKEREDE, HVORDAN BLIR DU ALDRIG syg af denne følelse

Hun havde brugt den foregående time på at få et objekt i hendes spil, der ændrede farve, og dets farve var lige blevet ændret.

Skrivekode er som at tale magiske ord, der faktisk gør noget . Det er engagerende og måske lidt vanedannende.Det er også svært. At finde disse små øjeblikke med motivation er meget nyttigt for de tidspunkter, hvor du har brug for at lære noget hårdt. Hukommelsen om, hvad der er muligt, kan hjælpe dig med at slog igennem, hvad der er kedeligt.

Stadig, hvis du kommer derhen, skal du have nogle sjove, kreative oplevelser med programmering. Her er et par ideer:

  1. Tag fat i StarCraft (1 eller 2) niveau editor og find ud af, hvordan du bruger udløserne. Jeg har brugt mange glade timer på at hacke væk på StarCraft-kort, og du kan skrive nogle utroligt involverede spil inden for spillet ved hjælp af det.
  2. Find ud af alle redstone-mekanikerne i MineCraft og bygg dig selv en latterlig maskine. At lave mods, der tilføjer nye funktioner til MineCraft, er også populært, men lær nogle grundlæggende, inden du prøver det; deres tutorials ( Basic Modding – Minecraft Forge ) er meget lettere at forstå, hvis du allerede kender noget Java.
  3. Find ud af hvordan man bygger noget fantastisk i Factorio (advarsel: videoen nedenfor er latterlig; forvent ikke at gøre det med det samme). Factorio har også en ret komplet modding API understøttet af udvikleren ( Modding Tutorial ), selvom du måske vil lære mere om det grundlæggende inden du prøver det.
  1. Download Scratch , og lav et par enkle spil med det (den artikel nævner også en række andre uddannelsesmæssige programmeringssprog i bunden). Scratch behandler programmering som puslespil, som du passer sammen for at opbygge adfærd, og det er enkelt nok til, at yngre børn kan skabe arbejdsprogrammer med ringe indsats. Det er som at programmere med træningshjul.

Billedkredit: Af Lifelong Kindergarten Group at MIT Media Lab.

  1. Find en af ​​disse “lær X i 21 dage” bøger og strøm gennem den. Det er hverken prangende eller grundigt, men det kan give dig nok grund til, at nogle af disse andre ideer bliver mulige. skubbet mig til at arbejde igennem de hårde koncepter. Jeg anbefaler kun dette, hvis du allerede er sikker på, at du ønsker at lære programmering; klasser er gode til at skovle information ind i din hjerne men er ret dårlige til at motivere dig. Det bedste ved at tage en klasse er, at de “vil lære dig om ting, som du aldrig ville have gættet eksisterede; du kan ikke selvlære et koncept, som du ikke ved eksisterer.
  2. Vil du have, at dine programmer påvirker den virkelige verden? Overvej at udføre nogle projekter ved hjælp af en mikrokontroller, noget som disse: Top 10 Kickass Arduino-projekter . Hvis Arduino er for skræmmende, kan du prøve LEGO Mindstorms først.

Sikkerhedssystem? Robotter? Dumme fantastiske julelys? Dette er din enhed. Billede fra Arduino .

  1. Game Maker ( Yoyo Games ) er et ret godt udviklingsmiljø til enkle videospil; det er mere avanceret end Scratch og dybere end triggereditorerne i StarCrafts korteditor. Det er muligt at fremstille en række 2d-videospil med det, og det er muligt at lave noget godt nok til at blive solgt kommercielt.
  2. Hvis du vil flytte til 3d, skal Unity ( Unity – Game Engine ) er en anstændig 3D-spilmotor af god kvalitet. Du har brug for lidt mere programmeringsevne end Game Maker, og du har brug for en eller anden måde at skabe aktiver på, men det er kraftigt nok til at lave temmelig avancerede spil.
  3. Din stationære eller bærbare computer indeholder allerede et halvvejs anstændigt udviklingsmiljø: din webbrowser. Hvis du opretter en webside på din egen harddisk, kan du åbne den med din webbrowser. Hvis denne webside indeholder JavaScript, kører browseren den. Du kan begynde at lære uden har brug for at downloade eller installere noget andet. HTML5-spilvejledning – Lav et slangespil ved hjælp af HTML5-lærred og Jquery er en morsom gennemgang af, hvordan man laver et grundlæggende spil.
  4. Lær hvordan man spiller RoboZZle online puslespil . Af alle de programmeringsspil, jeg har spillet, er dette uden tvivl den dybeste. De fleste spil lærer dig masser af variabler og objekter, men denne vil lære dig at tænke dybt over rekursion. Lambda-beregning burde føles vagt kendt, hvis du “har slået nogle mellemstore til hårde Robozzle-gåder.
  5. Download community-versionen af ​​Visual Studio . Dette er et professionelt kvalitetsværktøj, og det er vanskeligt at få dit første program til at køre. Men når du først ved det godt nok, kan du lave alt.Hvis du “er på en Mac, er ækvivalenten XCode .

Forhåbentlig får nogle af disse ideer dig i bevægelse. Til sidst, hvis du vil blive god til det, bliver du nødt til at knække lærebøgerne og studere formelt, men jeg synes, det fungerer bedst, hvis du finder din hvorfor først.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *