Object-Oriented Programming and Abstractions in Technical Computing

Alan Edelman
Mathematics
Computer Science & AI Laboratories
June 9, 2014
Jeff Bezanson, Stefan Karpinski, Viral Shah and may
collaborators worldwide
 
Try Julia/Ijulia today
google: julia 
 downloads
8pm room 4
Stereotypes
Computer Scientists don’t take
derivatives
but computer scientists are great
at abstractions
 Computational Scientists can’t
declare types
but computational scientists are
great at 
 
engineering
simulations and numerical
algorithms
Object-oriented programming with classes
What can I 
  
do with/to
  
 a 
thing
?
class-based OO
classes are more
fundamental
than methods
3
Object-oriented programming with multi-methods
What can I 
  
do with/to
  
 a 
thing
?
top up
pay fare
lose
buy
generic
function
objects
methods
multimethods
relationships between
objects and functions
4
Multi-methods with type hierarchy
top up
pay fare
lose
buy
generic
function
objects
methods
rechargeable
subway
pass
single-use
subway
ticket
is a subtype of
subway
ticket
abstract object
5
6
 Poincaré quipped:
“Mathematics is the art of giving
the same name to different things.”
Technical computing is the art of applying
operations to objects with the same name that
represent different things.
 
-- The Julia Team
Abstractions
Multi-methods for linear algebra
What can I 
  
do with/to
  
 a 
thing
?
find eigenvalues and eigenvectors
find singular values
find singular values and vectors
find eigenvalues
generic
function
objects
methods
general matrix
symmetric tridiagonal matrix
bidiagonal matrix
Methods
 can take advantage of special matrix structures
eigvals
eigfact
svdvals
svdfact
Matrix
SymTridiagonal
Bidiagonal
7
The “Two Language” Problem
As long as the developers’ language is harder than
the users language, technical computing will always
be hindered
What might you ask from your
language?
A whole laundry list of easy to call functions:
http://julia.readthedocs.org/en/latest/packages/packag
elist/
Performance
Can develop libraries
Flexibility
Parallelism
Abstractions
Easy to call other languages/unnecessary to call …
Notebooks to demo
What is multiple dispatch?
iterators
Inspired today
Parallel Tracy widom
Web server
Block SVD
Fractals
Linear Algebra Tutorial
The Colors of Chemistry
Slide Note
Embed
Share

Delve into the realms of object-oriented programming, multi-methods, and abstractions in technical computing through various images and descriptions presented in the content. Discover the intersection of mathematics, computer science, and AI labs with a focus on Julia programming language and its applications in computational science. Unravel the art of giving the same name to different things and applying operations to objects representing diverse entities in the realm of technical computing.

  • Object-Oriented Programming
  • Abstractions
  • Technical Computing
  • Julia Programming
  • Computational Science

Uploaded on Sep 22, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Alan Edelman Mathematics Computer Science & AI Laboratories June 9, 2014 Jeff Bezanson, Stefan Karpinski, Viral Shah and may collaborators worldwide Try Julia/Ijulia today google: julia downloads 8pm room 4

  2. Stereotypes Computer Scientists don t take derivatives but computer scientists are great at abstractions Computational Scientists can t declare types but computational scientists are great at engineering simulations and numerical algorithms 2/30

  3. Object-oriented programming with classes methods objects What can I do with/to a thing? buy top up pay fare class-based OO lose buy classes are more fundamental than methods top up pay fare lose buy pay fare lose 3

  4. Object-oriented programming with multi-methods What can I do with/to a thing? buy multimethods top up relationships between objects and functions pay fare lose methods objects generic function 4

  5. Multi-methods with type hierarchy buy rechargeable subway pass top up subway ticket pay fare single-use subway ticket lose methods objects abstract object generic function is a subtype of 5

  6. Abstractions Poincar quipped: Mathematics is the art of giving the same name to different things. Technical computing is the art of applying operations to objects with the same name that represent different things. -- The Julia Team 6

  7. Multi-methods for linear algebra What can I do with/to a thing? find eigenvalues eigvals general matrix Matrix find eigenvalues and eigenvectors eigfact symmetric tridiagonal matrix SymTridiagonal find singular values svdvals bidiagonal matrix Bidiagonal find singular values and vectors svdfact methods objects generic function Methods can take advantage of special matrix structures 7

  8. The Two Language Problem As long as the developers language is harder than the users language, technical computing will always be hindered 8/30

  9. What might you ask from your language? A whole laundry list of easy to call functions: http://julia.readthedocs.org/en/latest/packages/packag elist/ Performance Can develop libraries Flexibility Parallelism Abstractions Easy to call other languages/unnecessary to call 9/30

  10. Notebooks to demo What is multiple dispatch? iterators Inspired today Parallel Tracy widom Web server Block SVD Fractals Linear Algebra Tutorial The Colors of Chemistry 10/30

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#