Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Like dokumenter
Introduksjon til programmering og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Programmering. Carsten Wulff

6108 Programmering i Java. Leksjon 1. Introduksjon til programmering og til Java

Java. Henrik Lieng Høgskolen i Oslo og Akershus

Hva er programmering?

Læringsmål og pensum. v=nkiu9yen5nc

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Operativsystemer og grensesnitt

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Et forsøk på definisjon. Eksempel 1

Litt om Javas class-filer og byte-kode

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Forelesning inf Java 1

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Et forsøk på definisjon

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Forkurs i informatikk Python. Andreas Færøvig Olsen

Forelesning 23/9-08 Webprog 1. Tom Heine Nätt

Generelt om operativsystemer

Velkommen til INF2100

Et forsøk på definisjon

Steg 1: Få noe på skjermen

Et forsøk på definisjon. Eksempel 1

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Forprosjekt gruppe 13

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

Lær kidsa programmering med

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Del 1 En oversikt over C-programmering

Forelesning inf Java 1

AlgDat 12. Forelesning 2. Gunnar Misund

Oppgave 1 - Linux kommandolinje (%)

Programmering (DAPE/ITPE 1400) Høgskolen i Oslo og Akershus Høst 2017 Henrik Lieng

datatyper Hva er programmering? Variabler og Informasjonsteknologi 2 Kompetansesemål

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Forelesning inf Java 1

Intro til WWW, HTML5 og CSS

Velkommen til INF2100 Jeg er Dag Langmyhr

Hvordan en prosessor arbeider, del 1

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Velkommen til INF5110 Kompilatorteknikk

Javascript. Mer om layout

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

FINF1001 høst Asbjørn Korsbakken

JavaServer Pages (JSP)

EKSAMEN Webpublisering

Forprosjekt. Accenture Rune Waage,

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

En kortfattelig guide til JavaScript programmering. Joachim Haagen Skeie. Når vi bruker jquery funksjoner, må jquery inkluderes

INF1000 : Forelesning 1 (del 2)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Programmeringsspråket C

UNIVERSITETET I OSLO

AlgDat 10. Forelesning 2. Gunnar Misund

Velkommen til INF Kompilatorteknikk

Kom i gang med Python

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

INF3110 Programmeringsspråk. Velkommen til kurset INF 3110/4110. Programmeringsspråk 1/24

INF 3110/4110. Velkommen til kurset. Programmeringsspråk. Først det praktiske

Programmeringsspråket C

Programmeringsspråket C

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare

Introduksjon til Eclipse

Før super:bit-oppdraget (120 min) Lærerveiledning forarbeid (6. trinn)

1. Introduksjon til J2ME

Hovedprosjekt. Høgskolen i Oslo data/informasjonsteknologi våren 2011 Forprosjektrapport. K-skjema og ferie kalender

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?

Dokumentasjon av Installasjon

Transkript:

Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus

Kategorisering av programmeringsspråk? Deklarativ vs. imperativ Lav nivå vs. høy nivå Kompilert vs. tolket Generell vs. spesifikk

Veldig høy-nivå programmering med Scratch

Hva er et språk? Hvert språk har en formell beskrivelse av grammatikken til språket. To kategorier: 1. Systaks: beskriver strukturen til teksten if(true) System.out.println(); er lov, mens if true, System->println() ikke er lov 2. Semantikk: beskriver meningen med ulike tegn og symboler Hva er effekten? if(false) domethod1(); else domethod2();

Deklarativ vs. Imperativ programmering Deklarativ Beskriver hva som skal gjøres, men ikke hvordan Programmer ofte delt inn i matematiske funksjoner (funksjonell programmering) Dette semesteret: HTML Imperativ Beskriver både hva og hvordan Programmer delt inn i en sekvens av instruksjoner «Oppskrifter» på løsninger Dette semesteret: Java

Deklarativ programmering - HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>hello</title> </head> <body> <p>hello, world!</p> </body></html>

Spesifikke språk Mainstream språk har generell programutvikling som hovedmål. Spesifikke språk har spesifikke domener som målgruppe. Eksempler: HTML for nettsideformatering Mathematica for matematikk SQL for databasekommunikasjon Bash for Linux skallprogrammering UnrealScript for dataspillutvikling GLSL for dataprosessering på grafikkprosessor

Hvor mange språk finnes det? Det blir oppfunnet tusenvis av språk hvert tiår. De fleste dør ut Et nytt språk dekker et nytt behov Java: skriv kode en gang, kjør på hvilken som helst maskin C: muliggjør utvikling av store systemer uten Assembly kode (UNIX) C++: C med klasser (språket het først C with Classes ) Behov i dag: Rapid agile development Sikkerhet Web og mobil

Hvilket språk er best? Ingen språk dekker alle behov Ikke bruk C/C++ fordi de er usikre Ikke bruk Java fordi du får dårlig ytelse Ikke bruk Python fordi det er for light-weight MEN, noen språk kan være bedre på spesifikke ting: C for operativsystemer Java for web- og apputvikling Matlab for matematikk Javascript for dynamiske websider

PYPL- PopularitY of Programming Language Index

Ikke-kompilerte (tolkede) språk Java er et kompilert språk: kildekoden kompileres slik at maskinen kan utføre instruksjonene til programmet. Det finnes imidlertid språk som ikke trenger kompilering. Her blir kildekoden istedenfor tolket av en tolk. Eksempler: JavaScript: tolkes av nettleser (som Google Chrome) PHP: tolkes av en PHP tolk (eget program typisk installert på en server) Python: tolkes av en Python tolk (kan konvertere til maskinkode) De fleste «deklarative» språk (eks. HTML, XML)

Python Lett å lære Lett/simpel syntaks, ikke C-syntaks (som Java) Prosedyre-basert, med svekket støtte for objekter Støtter ikke objekt-orientert programmering 100 %, som Java

Raspberry Pi Raspberry Pi ble laget for å få barn mer interessert i programmering. Systemet tilbyr et enkelt programmeringsmiljø, med Python, der kommunikasjon til enheter, som I/O, er rett-frem. PS: ikke bare for barn Eksempel: https://youtu.be/qwrklyc2kdm

Java Høy-nivå kompilert språk Kjører på en «virtuell maskin» Fordel: samme kode fungerer på alle typer maskiner (så lenge den støtter Java). Dette er ikke tilfellet med C/C++. Ulempe: Java vil alltid ha dårligere ytelse enn tilsvarende C/C++ programmer på grunn av prosessering av den virtuelle maskinen. Hovedprinsipper: sikkert (stol ikke på programmerer) enkelt (tilby abstraksjoner over C) objekt-orientert («alt» i Java er klasser)

C++ C++ er en utvidelse av C. C++ støtter objekt-orientert programmering. Ligger veldig nærme maskinvaren. C++ støtter all funksjonalitet tilgjengelig i C (men ikke motsatt).

C C er et høynivå-språk som ligger «nærme» maskinvaren. Å konvertere fra C til maskinkode/assembly er relativt «lett». C er verdens mest distribuerte språk. Så å si alle datamaskinarkitekturer støtter språket. C er prosedyre-basert, dvs. at programmet er delt inn i mindre prosedyrer. C programmer er ofte skrevet i en stor fil (med mange prosedyrer). Java er hovedsakelig implementert i C. C brukes i flere teoretiske eksempler i dett faget, der Java ikke «strekker til».

Lav-nivå språk: maskin- og assemblykode

Oppsummering Veldig-høy-nivå språk: Scratch (visuelt) Høy-nivå, tolket: Python, JavaScript, PHP, HTML Høy-nivå, kompilert: Java, C++, C Imperativt: Python, JavaScript, PHP, Java, C++, C Deklarativt: HTML, Scala Felles: semantikk, variabelt: syntaks Spesifikke språk: HTML, Matlab Generell: Python, Java, C