A computational science agenda for programming language research - slides
Dominic Orchard and Andrew Rice
International Conference on Computational Science, 2014
http://dorchard.co.uk/science
A computational science agenda for programming language research - - - PowerPoint PPT Presentation
A computational science agenda for programming language research - slides Dominic Orchard and Andrew Rice http://dorchard.co.uk/science International Conference on Computational Science, 2014 Better Software Better Research Software
Dominic Orchard and Andrew Rice
International Conference on Computational Science, 2014
http://dorchard.co.uk/science
Software Sustainability Institute (www.software.ac.uk)
Inadequately supported Too easy to introduce
4
Abstract model Solution strategy Prediction calculation Abstract model Solution strategy Prediction calculation
5
Abstract model
x = φt−1 x
x+1 − 2φt−1 x
x−1)
Solution strategy
6
Prediction calculation
real :: h(1:nx), h_old(1:nx) ! heat function (discretised in space) h = 0 ! initialise as cold h(1) = 1 ! with one hot end do t = 1, nt h_old = h
r*(h_old(x-1) - 2*h_old(x) + h_old(x+1))
forall (x = 2:(nx - 1)) end do
h(x) = h_old(x) +
end do
9 10 11 12 13 14 15 16 17
7
Computer programs Computer programs
8
9
complicated relationship
Computer programs Computer programs
10
!! Some progress: publishing code, Open Science!
11
Abstract model maths code Prediction strategy Prediction calculation papers programs ???
12
13
!
15
16
17
Abstract model Solution strategy Prediction calculation
Verification Validation Automated
18
spec h = (d h T) === (constant ?alpha * d2 h X) ‘withDomain‘ (X :. T :. Nil)
experiment = let ?dx = 0.05 ?dt = 0.05 ?nx = 100 ?nt = 100 ?alpha = 0.006 in verifyModel Euler spec approxFast
approx h’ (x, t) | x == 0 = 1 | x == ?nx = 0 | t == 0 = 0 | t == 0 = 0 | otherwise = h’ (x, t-1) + r * (
+ r * (h’ (x+1, t-1) - 2 * h’ (x, t-1) + h’ (x-1, t-1))
e = h’ (x, t-1) + r * (h’ (x+1, t-1) - 2 * h’ ( where r = ?alpha * (?dt / (?dx * ?dx))
19
20
Leverage advanced features Libraries/DSLs
Refactoring tools Language extensions Test generation tools New languages
CamFort
PDESpec
21
22