(simple)Pointers Considered Harmful
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Eksempel
Parameter modeller Call-by-reference Call-by-value
Introduktion
Alan Mycroft Professor p˚ Cambridge Universitet a ”Cambridge Programming Research”gruppen Beskæftiger sig med program analyse Artikkel Springer-Verlag i August 2007
4/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Perspektiv
1985 - 2005 Stadig en enkelt processor Hurtigere processorer, Moores lov Hellere tilg˚ hukommelse end genberegning, CSE a Langsommere adgang til extern hukommelse
14/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Pointer tæmning
Teknikker Kontroller antal alias til objekter Linære typesystemer Linære typesystemer Kun en reference til et object Ingen race-conditions Quasi linære typesystemer
8/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Multi-processor Hardware
Andre flaskehalse Kommunikation > Beregning Ny m˚de at programmere p˚ a a Nuværende programmeringssprog Mangler paralellitet
11/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Early binding
Flere processorer Call-by-Reference
2/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Sprog er ikke fulgt med hardware
Motivation Hardware arkitektur ændrer sig Sprog har ikke tilpasset sig denne ændring Enkelte processorer bliver ikke hurtigere
class C{}; void f1(C x); void f2(C ∗x);
Enkelt processor Performance diskussion - kopi/reference
10/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
5/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Perspektiv
2005 problemer Hastighedsloft, 5Ghz Varme Størrelse Lysets hastighed
Programming Language Design and Analysis motivated by Hardware Evolution
Alan Mycroft
Presenter: Thomas Bøgholm
September 24, 2007
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
6/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Ny arkitektur
Multi processor Flere sm˚ processore a Mindre varme Nye problemer
9/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Arkitektur indflydelse
Eksempel
1 2 3
Kan hukommelse peget p˚ af *x tilg˚es p˚ processor P? a a a
Call-by-Name
Object x tilstand og klons tilstand?
11/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
7/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Ny arkitektur
Multi processor Flere sm˚ processore a MiBiblioteka Baidudre varme Nye problemer
7/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Multi-processor Hardware
Andre flaskehalse Kommunikation > Beregning Ny m˚de at programmere p˚ a a Nuværende programmeringssprog Mangler paralellitet
Early binding
Flere processorer Call-by-Reference
Kan hukommelse peget p˚ af *x tilg˚es p˚ processor P? a a a
Call-by-Name
Object x tilstand og klons tilstand?
Late binding
Call-by-Either-When-Equivalent
1
void f3(C @x);
CBV ≡ CBR
12/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
13/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Pointer tæmning
Teknikker Kontroller antal alias til objekter Linære typesystemer Linære typesystemer Kun en reference til et object Ingen race-conditions Quasi linære typesystemer
14/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Program analyse
Analyse Nogle problemer kan løses via analyse Optimering ved at parallelisere Giver problemer p˚ Fuld program niveau a Bør støttes af interface specifikationer
15/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Aktør modellen
Aktør modellen Kun message parsing Udvikling til mange processore Skalerbart Erlang
3/22
Introduktion
Introduktion Situation (simple)Pointers Considered Harmful Design / Analyse Future work konklussion
Perspektiv
1985 Enkelt processor RAM og CPU var ca. lige hurtige En CPU cyklus for at tilg˚ hukommelse a Operationer i programmeringssprog, f.eks. C, tog 1-2 cykler
Paralellitet og pointere
Aliasing
1
for(i=0;i<NCHANS;i++) process(i);
Pointere fra process(0) til process(1)? Ikke uniform hukommelse Hvis funktion A p˚ processor PA kalder B som køres p˚ PB a a By-reference parametre skal være tilgængelige af begge Kan være langsom Kan være ikke eksisterende