SlideShare a Scribd company logo
Ada 202x
A broad overview of relevant news
1st November, 2016
HIS 2016
Altran UK Limited
Florian Schanda
1
Introduction
Apologies
Anish Mohammed (Ripple Labs) could sadly not attend - this is
not his talk.
Instead some news from the Ada language design group!
Overall direction
New language features
Potential language features
2
Ada 202x
Broad direction
’95 Polymorphism, Protected objects, and many more
2005 Interfaces, Ravenscar, Assertions, Containers
3
Ada 202x
Broad direction
’95 Polymorphism, Protected objects, and many more
2005 Interfaces, Ravenscar, Assertions, Containers
2012 Contracts (and richer expressions)
3
Ada 202x
Broad direction
’95 Polymorphism, Protected objects, and many more
2005 Interfaces, Ravenscar, Assertions, Containers
2012 Contracts (and richer expressions)
202x Parallelism (and richer expressions)
3
Ada 202x
Parallelism
Todays architectures are increasingly multi-core
GPU based solutions are an extreme example
It’s notoriously difficult to get this right
4
Ada 202x
Parallelism
Todays architectures are increasingly multi-core
GPU based solutions are an extreme example
It’s notoriously difficult to get this right
Ada should make this easy!
4
Ada 202x
Parallelism
The parallel block statement:
parallel
P := Compute_Prime (Bits => 4096 ,
RNG => "/dev/random");
and
Q := Compute_Prime (Bits => 4096 ,
RNG => "/dev/random");
end parallel;
parallel
N := P * Q;
and
Phi := (P - 1) * (Q - 1);
end parallel;
parallel
Public_Key := Make_Public_Key (N, Phi );
and
Private_Key := Make_Private_Key (N, Phi);
end parallel;
5
Ada 202x
Parallelism
Something similar is planned for parallel loops. Three parts:
Optional declaration of storage for each chunk
Loop
Optional reduction
parallel
Sum : array (<>) of Integer := (others => 0);
−− Size of loop array depends on number of chunks
for I in 1 .. 1_000_000 loop
Sum (<>) := Sum (<>) + A (I); −− Write to the current chunk’s sum
then
Answer := 0;
for Value of Sum loop
Answer := Answer + Value;
end loop;
end loop;
6
Ada 202x
Expressions
Short-hand for the left-hand-side of an assignment:
Database. Current_Instance (N). Usage_Count := @ + 1;
7
Ada 202x
Expressions
Short-hand for the left-hand-side of an assignment:
Database. Current_Instance (N). Usage_Count := @ + 1;
More flexible than += or similar short-hands found in other
languages:
Arr (X + Y) := (if @ < Integer ’Last
then @ + 1
else Integer ’First );
7
Ada 202x
Expressions
Delta aggregates replace Spark update expressions:
procedure Adjust (R : in out Record_T;
Fudge : Float)
with Post => R = (R’Old with delta
Low_Bound => Fudge * R’Old.Low_Bound ,
Hi_Bound => Fudge * R’Old.Hi_Bound );
−− We now know all other fields *do not* change
Also quite useful in non-contract code:
All_Zero : constant Array_T := (others => 0);
Mask : constant Array_T := (All_Zero with delta
A .. B => 1,
C .. D => 1);
8
Ada 202x
Tasking
New aspect Nonblocking
New aspect Max Entry Queue Length
Extended Ravenscar profile
Multiple entries
Relative delay
Support for Ada.Calendar and implicit heap allocations
9
Ada 202x
Other possible features
Let expressions
Lambda functions
10
Ada 202x
Other possible features
Let expressions
Lambda functions
Generator subprograms (a limited form of co-routines)
yield 0; −− Return to calling subprogram, resume execution here
yield X;
These are iterable:
for Values of My_Generator loop
−− First we get 0, then we get X, ...
10
Ada 202x
Other possible features
Let expressions
Lambda functions
Generator subprograms (a limited form of co-routines)
yield 0; −− Return to calling subprogram, resume execution here
yield X;
These are iterable:
for Values of My_Generator loop
−− First we get 0, then we get X, ...
Container aggregates and displays
S : Hash_Set := (X, Y, Z);
P : Hash_Set := (for N in Positive if Is_Prime (N) => N);
10
Ada 202x
Conclusion
Parallelism
More expressions (better contracts)
Many of these will make it into Spark
11
12

More Related Content

PPT
Data compression tech cs
PPTX
Gremlin Queries with DataStax Enterprise Graph
PPT
The Python Programming Language and HDF5: H5Py
PDF
Python and HDF5: Overview
PPT
Substituting HDF5 tools with Python/H5py scripts
PDF
A Concurrent Language for Argumentation: Preliminary Notes
PDF
Hdf5 is for Lovers (PyData SV 2013)
Data compression tech cs
Gremlin Queries with DataStax Enterprise Graph
The Python Programming Language and HDF5: H5Py
Python and HDF5: Overview
Substituting HDF5 tools with Python/H5py scripts
A Concurrent Language for Argumentation: Preliminary Notes
Hdf5 is for Lovers (PyData SV 2013)

What's hot (7)

PPT
Using HDF5 and Python: The H5py module
PDF
A Concurrent Language for Argumentation
PDF
Timed Concurrent Language for Argumentation
PDF
Timed Concurrent Language for Argumentation: an Interleaving Approach
PPTX
PDF
Introduction to probabilistic programming with pyro
Using HDF5 and Python: The H5py module
A Concurrent Language for Argumentation
Timed Concurrent Language for Argumentation
Timed Concurrent Language for Argumentation: an Interleaving Approach
Introduction to probabilistic programming with pyro
Ad

Viewers also liked (20)

PDF
The Application of Formal Methods to Railway Signalling Software
PDF
HIS 2015: Ivan Ellis - VISIUMCORE A High Integrity Processor for Safety Criti...
PDF
HIS 2015: Neil White - Advances in Practical Techniques for Critical Developm...
PDF
HIS 2015: Tom Chothia - Formal Security of Critical Infrastructure
PDF
An Alternative Approach to DO-178B
PDF
MISRA C – Recent developments and a road map to the future
PDF
Multi-Core (MC) Processor Qualification for Safety Critical Systems
PDF
Verification and Validation of Robotic Assistants
PDF
Bounded Model Checking for C Programs in an Enterprise Environment
PDF
A Computer Vision Application for In Vitro Diagnostics Devices
PDF
HIS 2015: Roderick Chapman - Murphy Vs Satan Why programming secure systems i...
PDF
The Muen Separation Kernel
PDF
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
PDF
HIS 2015: Prof. Ian Phillips - Stronger than its weakest link
PDF
Practical Application of Agile Techniques in Developing Safety Related Systems
PDF
Mind your language(s), A Discussion about Languages and Security
PDF
How should we build that? Evolving a development environment that's suitable ...
PDF
Mixed Criticality Systems and Many-Core Platforms
PDF
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
PDF
HIS Conf 2014: An Insight into MISRA-C
The Application of Formal Methods to Railway Signalling Software
HIS 2015: Ivan Ellis - VISIUMCORE A High Integrity Processor for Safety Criti...
HIS 2015: Neil White - Advances in Practical Techniques for Critical Developm...
HIS 2015: Tom Chothia - Formal Security of Critical Infrastructure
An Alternative Approach to DO-178B
MISRA C – Recent developments and a road map to the future
Multi-Core (MC) Processor Qualification for Safety Critical Systems
Verification and Validation of Robotic Assistants
Bounded Model Checking for C Programs in an Enterprise Environment
A Computer Vision Application for In Vitro Diagnostics Devices
HIS 2015: Roderick Chapman - Murphy Vs Satan Why programming secure systems i...
The Muen Separation Kernel
HIS 2015: Alastair F. Donaldson - Fighting for Software Correctness in a Mass...
HIS 2015: Prof. Ian Phillips - Stronger than its weakest link
Practical Application of Agile Techniques in Developing Safety Related Systems
Mind your language(s), A Discussion about Languages and Security
How should we build that? Evolving a development environment that's suitable ...
Mixed Criticality Systems and Many-Core Platforms
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
HIS Conf 2014: An Insight into MISRA-C
Ad

Similar to Ada 202x A broad overview of relevant news (20)

PPT
Tech Days 2015: A quick tour of Ada 2012
PDF
Clojure - An Introduction for Lisp Programmers
PPTX
ADA programming language
PPTX
Not Everything is an Object - Rocksolid Tour 2013
PPT
Unit 2 Principles of Programming Languages
PPTX
Introduction to Clojure and why it's hot for Sart-Ups
DOCX
CD CLASS NOTES- UNIT-4.docx
PPTX
iii-ii cd nCompiler design UNIT-V-1.pptx
PDF
Programming Languages #devcon2013
PDF
Programming In Ada 2012 1st Edition Barnes John Gilbert Presslie
PPT
14-types.ppt
PPT
Primitive data types
PPTX
Hema wt (1)
PPT
Reliable and Concurrent Software: Ada presentation
PPTX
a brief explanation on the topic of Imperative Programming Paradigm.pptx
PDF
Ada Seminar — An Introduction to Ada
PPTX
Lecture 15 run timeenvironment_2
PDF
Introduction To Lisp
PDF
Programing paradigm &amp; implementation
Tech Days 2015: A quick tour of Ada 2012
Clojure - An Introduction for Lisp Programmers
ADA programming language
Not Everything is an Object - Rocksolid Tour 2013
Unit 2 Principles of Programming Languages
Introduction to Clojure and why it's hot for Sart-Ups
CD CLASS NOTES- UNIT-4.docx
iii-ii cd nCompiler design UNIT-V-1.pptx
Programming Languages #devcon2013
Programming In Ada 2012 1st Edition Barnes John Gilbert Presslie
14-types.ppt
Primitive data types
Hema wt (1)
Reliable and Concurrent Software: Ada presentation
a brief explanation on the topic of Imperative Programming Paradigm.pptx
Ada Seminar — An Introduction to Ada
Lecture 15 run timeenvironment_2
Introduction To Lisp
Programing paradigm &amp; implementation

More from AdaCore (19)

PDF
RCA OCORA: Safe Computing Platform using open standards
PDF
Have we a Human Ecosystem?
PDF
Rust and the coming age of high integrity languages
PDF
SPARKNaCl: A verified, fast cryptographic library
PDF
Developing Future High Integrity Processing Solutions
PDF
Taming event-driven software via formal verification
PDF
Pushing the Boundary of Mostly Automatic Program Proof
PDF
RCA OCORA: Safe Computing Platform using open standards
PDF
Product Lines and Ecosystems: from customization to configuration
PDF
Securing the Future of Safety and Security of Embedded Software
PDF
Spark / Ada for Safe and Secure Firmware Development
PDF
Introducing the HICLASS Research Programme - Enabling Development of Complex ...
PDF
The Future of Aerospace – More Software Please!
PDF
Adaptive AUTOSAR - The New AUTOSAR Architecture
PDF
Using Tiers of Assurance Evidence to Reduce the Tears! Adopting the “Wheel of...
PDF
Software Engineering for Robotics - The RoboStar Technology
PDF
MISRA C in an ISO 26262 context
PPTX
Application of theorem proving for safety-critical vehicle software
PDF
HIS 2015: Prof. Phil Koopman - A Case Study of Toyota Unintended Acceleration...
RCA OCORA: Safe Computing Platform using open standards
Have we a Human Ecosystem?
Rust and the coming age of high integrity languages
SPARKNaCl: A verified, fast cryptographic library
Developing Future High Integrity Processing Solutions
Taming event-driven software via formal verification
Pushing the Boundary of Mostly Automatic Program Proof
RCA OCORA: Safe Computing Platform using open standards
Product Lines and Ecosystems: from customization to configuration
Securing the Future of Safety and Security of Embedded Software
Spark / Ada for Safe and Secure Firmware Development
Introducing the HICLASS Research Programme - Enabling Development of Complex ...
The Future of Aerospace – More Software Please!
Adaptive AUTOSAR - The New AUTOSAR Architecture
Using Tiers of Assurance Evidence to Reduce the Tears! Adopting the “Wheel of...
Software Engineering for Robotics - The RoboStar Technology
MISRA C in an ISO 26262 context
Application of theorem proving for safety-critical vehicle software
HIS 2015: Prof. Phil Koopman - A Case Study of Toyota Unintended Acceleration...

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
A Presentation on Artificial Intelligence
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Approach and Philosophy of On baking technology
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Big Data Technologies - Introduction.pptx
Machine Learning_overview_presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Encapsulation theory and applications.pdf
Empathic Computing: Creating Shared Understanding
Assigned Numbers - 2025 - Bluetooth® Document
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MIND Revenue Release Quarter 2 2025 Press Release
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
A Presentation on Artificial Intelligence
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
sap open course for s4hana steps from ECC to s4
Approach and Philosophy of On baking technology
Chapter 3 Spatial Domain Image Processing.pdf
Spectroscopy.pptx food analysis technology
20250228 LYD VKU AI Blended-Learning.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Big Data Technologies - Introduction.pptx

Ada 202x A broad overview of relevant news

  • 1. Ada 202x A broad overview of relevant news 1st November, 2016 HIS 2016 Altran UK Limited Florian Schanda 1
  • 2. Introduction Apologies Anish Mohammed (Ripple Labs) could sadly not attend - this is not his talk. Instead some news from the Ada language design group! Overall direction New language features Potential language features 2
  • 3. Ada 202x Broad direction ’95 Polymorphism, Protected objects, and many more 2005 Interfaces, Ravenscar, Assertions, Containers 3
  • 4. Ada 202x Broad direction ’95 Polymorphism, Protected objects, and many more 2005 Interfaces, Ravenscar, Assertions, Containers 2012 Contracts (and richer expressions) 3
  • 5. Ada 202x Broad direction ’95 Polymorphism, Protected objects, and many more 2005 Interfaces, Ravenscar, Assertions, Containers 2012 Contracts (and richer expressions) 202x Parallelism (and richer expressions) 3
  • 6. Ada 202x Parallelism Todays architectures are increasingly multi-core GPU based solutions are an extreme example It’s notoriously difficult to get this right 4
  • 7. Ada 202x Parallelism Todays architectures are increasingly multi-core GPU based solutions are an extreme example It’s notoriously difficult to get this right Ada should make this easy! 4
  • 8. Ada 202x Parallelism The parallel block statement: parallel P := Compute_Prime (Bits => 4096 , RNG => "/dev/random"); and Q := Compute_Prime (Bits => 4096 , RNG => "/dev/random"); end parallel; parallel N := P * Q; and Phi := (P - 1) * (Q - 1); end parallel; parallel Public_Key := Make_Public_Key (N, Phi ); and Private_Key := Make_Private_Key (N, Phi); end parallel; 5
  • 9. Ada 202x Parallelism Something similar is planned for parallel loops. Three parts: Optional declaration of storage for each chunk Loop Optional reduction parallel Sum : array (<>) of Integer := (others => 0); −− Size of loop array depends on number of chunks for I in 1 .. 1_000_000 loop Sum (<>) := Sum (<>) + A (I); −− Write to the current chunk’s sum then Answer := 0; for Value of Sum loop Answer := Answer + Value; end loop; end loop; 6
  • 10. Ada 202x Expressions Short-hand for the left-hand-side of an assignment: Database. Current_Instance (N). Usage_Count := @ + 1; 7
  • 11. Ada 202x Expressions Short-hand for the left-hand-side of an assignment: Database. Current_Instance (N). Usage_Count := @ + 1; More flexible than += or similar short-hands found in other languages: Arr (X + Y) := (if @ < Integer ’Last then @ + 1 else Integer ’First ); 7
  • 12. Ada 202x Expressions Delta aggregates replace Spark update expressions: procedure Adjust (R : in out Record_T; Fudge : Float) with Post => R = (R’Old with delta Low_Bound => Fudge * R’Old.Low_Bound , Hi_Bound => Fudge * R’Old.Hi_Bound ); −− We now know all other fields *do not* change Also quite useful in non-contract code: All_Zero : constant Array_T := (others => 0); Mask : constant Array_T := (All_Zero with delta A .. B => 1, C .. D => 1); 8
  • 13. Ada 202x Tasking New aspect Nonblocking New aspect Max Entry Queue Length Extended Ravenscar profile Multiple entries Relative delay Support for Ada.Calendar and implicit heap allocations 9
  • 14. Ada 202x Other possible features Let expressions Lambda functions 10
  • 15. Ada 202x Other possible features Let expressions Lambda functions Generator subprograms (a limited form of co-routines) yield 0; −− Return to calling subprogram, resume execution here yield X; These are iterable: for Values of My_Generator loop −− First we get 0, then we get X, ... 10
  • 16. Ada 202x Other possible features Let expressions Lambda functions Generator subprograms (a limited form of co-routines) yield 0; −− Return to calling subprogram, resume execution here yield X; These are iterable: for Values of My_Generator loop −− First we get 0, then we get X, ... Container aggregates and displays S : Hash_Set := (X, Y, Z); P : Hash_Set := (for N in Positive if Is_Prime (N) => N); 10
  • 17. Ada 202x Conclusion Parallelism More expressions (better contracts) Many of these will make it into Spark 11
  • 18. 12