Introduktion till programmering. Programspråk och paradigmer



Relevanta dokument
Program & programmering

Föreläsning 2. Operativsystem och programmering

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Introduktion till programmering och Python Grundkurs i programmering med Python

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Imperativ programmering

Grundkurs i programmering - intro

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Innehålls förteckning

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

TDDC77 Objektorienterad Programmering

TDP002 Imperativ programmering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Föreläsning 1: Intro till kursen och programmering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Föreläsning 1: Intro till kursen och programmering

DD1361 Programmeringsparadigm Föreläsning 1: Intro

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledande programmering med C# (1DV402) Introduktion till C#

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Software Technology. Josef Svenningsson

DD1361 Programmeringsparadigm Föreläsning 1: Intro

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Introduktion till programmering, hösten 2011

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Genicore AB. Modellbaserad ansats. En liten firma i Göteborg som gör stora datasystem. Systemspråk - När modellen är systemet. torsdag 10 maj 2012

Objektorienterad Programmering DAT043. Föreläsning 1 15/1-18 Moa Johansson

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

IT för personligt arbete F6

TDP002 - Imperativ programmering

Exempel på typer av datorspråk EXCEL

Imperativ programmering. Föreläsning 4

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

TDP002 - Imperativ programmering

Erlang. Programspråk 5DV086. Sebastian Backstad

Objektorientering/ Klasser

Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

JAVAUTVECKLING LEKTION 1

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Föreläsning 1 & 2 INTRODUKTION

Kapitel 2. Evolutionen av de viktigaste programmeringsspråken ISBN

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

OOP Objekt-orienterad programmering

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Föreläsning 1 & 2 INTRODUKTION

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Exempel på typer av datorspråk EXCEL

Föreläsning 5 5DV086 - Programspråk

Imperativ programmering. Föreläsning 3

F5: Högnivåprogrammering

LADDA NER LÄSA. Beskrivning. Programmering i Python PDF LÄSA ladda ner

F5: Högnivåprogrammering

Inledande programmering med C# (1DV402) Introduktion till programmering

Mjukstart i programmering

Programmering i C++ Kompilering från kommandoraden

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Introduktion till programmering

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Universe Engine Rapport

SMD 134 Objektorienterad programmering

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Deklarativ programmering

Deklarativt programmeringsparadigm

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

TDP002 Imperativ programmering. Översikt. Programplan för IP - översikt. Innovativ programmering

TDP002 Imperativ programmering

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

Funktionell programmering

Objektorienterad Programmering (TDDC77)

TDDD78 / 729A85 Objektorienterad programmering och Java. Kursinformation Java: Varifrån och varför? Java för Pythonprogrammerare

Objektorienterad programmering i Java I

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

En livsmedelsbutik på Internet

Introduktion till Haskell

Objektorienterad Programmering (TDDC77)

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

F2: Krav på objektorienterat språk

Föreläsning 1: Introduktion till kursen

Transkript:

Introduktion till programmering Programspråk och paradigmer

Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly a computer [ ] to control the behavior of [the] machine or to express algorithms. Google Syntax, semantik, implementation, bibliotek.

Exempel på icke-programspråk Skript-språk Sh, Bash, Win32 batch, Query-språk SQL, XQuery, XSLT, Datalog, Markup-språk HTML, XML, JSON,

Hög-nivå vs låg-nivå Glidande skala: ju längre ifrån processorn, som förstår binärkod, och minneshanteringen, desto högre nivå. Binärkod < Assembler (< C) < Hög-nivå-språk

Tolkat vs kompilerat En kompilator ( compiler ) översätter ett program från en högre nivå till en lägre, ofta till assembler eller binärkod. Kompilatorn körs en gång, det färdiga programmet kan köras många gånger. Effektivt. Behöver känna till datorarkitektur, processor mm. Ett program som kompilerats till en arkitektur kan inte flyttas till en annan.

Tolkat vs kompilerat En tolk ( interpreter ) läser ett program på (typiskt) en hög nivå och exekverar dess kommandon on the fly. Tolken behöver tolka varje gång programmet körs. Ineffektivt. En tolk är i sig ett program, ofta skrivet i ett annat programspråk (ex Pythons tolk är skriven i C).

Virtuell maskin (VM) En virtuell maskin är i princip en tolk för ett lågnivå-språk. Ex: Java kompileras till Java Bytecode, ett dedikerat lågnivå-språk (likt assembler). En Java VM tolkar Java Bytecode. Effektivare än att tolka Java direkt, mer portabelt än att kompilera till arkitektur-beroende assembler.

Statisk vs dynamisk typning Statisk typning: kontrollera att programmet använder rätt typer vid kompilering (eller inladdning) Java, Haskell, C#, ML, Dynamisk typning: ge felmeddelande bara om programmet försöker använda data med fel typ Python, JavaScript, Ruby

Statisk vs dynamisk evaluering Dynamiska språk (ej att förväxla med dynamiskt typade språk) tillåter skapande och exekverande av kod on the fly. Python, JavaScript, Utmärks typiskt av funktionen eval

Imperativt vs deklarativt Imperativa språk bygger på kommandontill datorn. C, C++, C#, Java, (otaliga) Deklarativaspråk deklarerar betydelsenav t ex funktioner, och låter tolk/kompilator hantera hur denna betydelse hanteras. Funktionella eller logiska språk

Funktionella språk Funktioner är värden. De kan sparas i variabler och listor, användas som argument till funktioner, appliceras helt eller delvis. Haskell, OCaml, SML, Scala, Clojure, Även andra språk stöder ofta funktioner som värden i någon utsträckning, men sällan bra. Python, C#, Java 8,

Objekt-orientering Objekt är (bara) ett sätt att hantera data och dess beteende som en enhet, i en klass. Stöds av de flesta språk, t ex Python, Haskell Objekt-orientering innebär ett sätt att tänka, där (i princip) allt i programmet modelleras med objekt. Objekt-orienterade språkär byggda så att allt är objekt från grunden. Kan vara imperativa (oftast) eller funktionella: Java, C#, C++, Scala, Smalltalk, OCaml,

Prominenta programspråk I Java Imperativt, objekt-orienterat, statiskt typat, hög-nivå. Dåligt stöd för funktionella mönster. Körs på VM. C# I korthet, Microsofts version av Java. Lite bättre stöd för funktionella mönster. Körs på VM (.NET). C Imperativt, svagt statiskt typat (går att kringgå), mid-nivå. Används typiskt vid system-nära programmering (t ex drivrutiner). Kompileras till binärkod. Bibliotek finns för allt. C++ Objekt-orienterad utökning av C. Används typiskt vid extremt performance-kritiska program (t ex grafikmotor till spel). Tusentals bibliotek.

Prominenta programspråk II Python Imperativt, dynamiskt typat, har eval, hög-nivå. Tolkas (men finns även kompilatorer och VM). Tusentals bibliotek. Ruby Likt Python, skillnader mest i syntax och implementation. JavaScript Funktionellt(!), dynamiskt typat, har eval, hög-nivå. Tolkas (av browsers). PHP Imperativt, dynamiskt typat, har eval, hög-nivå. Främst använt för hemsidor.

Prominenta programspråk III Haskell Funktionellt, statiskt typat, kompileras eller tolkas. Det mest arketypiska funktionella språket. Separerar pure från impure kod. ML Funktionellt, statiskt typat, kompileras eller tolkas. Separerar ej pure från impure. OCaml Objekt-orienterad variant av ML. Scala Funktionellt, objekt-orienterat. Liknar Java, men med fullt utvecklat stöd för funktionell programmering. Körs på Java VM.