This document provides an overview of the new features in Ada 2012 including:
- Improved support for program correctness through pre- and postconditions, type invariants, and subtype predicates.
- New and improved container libraries including bounded containers, holder containers, and multiway trees.
- Increased programming expressiveness through features like conditional expressions, quantified expressions, expression functions, and case expressions.
- Enhancements to visibility rules and the use of incomplete types.
- New concurrency and real-time constructs for managing resources on multicore systems.
The presentation covers ANTLR and its testing. In the presentation we will discuss what is grammar and how its been parsed into its corresponding parse tree. Then we will focus on the stages of the process of parsing. We will then understand what is ANTLR and will see some of the companies exploring features of ANTLR. Towards the end of the discussion we discuss how to test weather an input string is correct with respect to a grammar or not using TestRig along with the demonstration.
You may refer following blog:
https://blog.knoldus.com/2016/04/29/testing-grammar-using-antlr4-testrig-grun/
Using ANTLR on real example - convert "string combined" queries into paramete...Alexey Diyan
1. Hello ANTLR: ANother Tool for Language Recognition
2. Where we can use ANTLR?
3. Why just not use regular expression language?
4. Tools under ANTLR umbrella
5. ANTLR basic syntax
6. ANTLR on real example
Why I use C# lambdas all the time and for everything and so should you.
A presentation on how to use functional programming techniques effectively in C#
The presentation covers ANTLR and its testing. In the presentation we will discuss what is grammar and how its been parsed into its corresponding parse tree. Then we will focus on the stages of the process of parsing. We will then understand what is ANTLR and will see some of the companies exploring features of ANTLR. Towards the end of the discussion we discuss how to test weather an input string is correct with respect to a grammar or not using TestRig along with the demonstration.
You may refer following blog:
https://blog.knoldus.com/2016/04/29/testing-grammar-using-antlr4-testrig-grun/
Using ANTLR on real example - convert "string combined" queries into paramete...Alexey Diyan
1. Hello ANTLR: ANother Tool for Language Recognition
2. Where we can use ANTLR?
3. Why just not use regular expression language?
4. Tools under ANTLR umbrella
5. ANTLR basic syntax
6. ANTLR on real example
Why I use C# lambdas all the time and for everything and so should you.
A presentation on how to use functional programming techniques effectively in C#
- Highlight the performance benefits of using Java 8 - after all, you’ll probably have to persuade "The Management" that tampering with
existing code is worthwhile
- Demonstrate how to identify areas of code that can be updated to use Java 8 features, and how to pick which changes will give you the
most benefit
- Demonstrate how to automatically refactor your code to make use of features like lambdas and streams
- Cover some of the pros and cons of using the new features - including suggestions of when refactoring may NOT be the best idea.
This talk introduces the core concepts of functional programming, why it matters now and how these principles are adopted for programming.
Beyond the usage of the functional principles for programming in the small, their applicability to the design of components and further on to the architecture of software systems is also explored along with relevant examples.
The code samples used in the talk are in Haskell / Java 8 / Scala / Elm and JavaScript, but deep understanding of any of these languages are not a pre-requisite.
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03) Jonathan Engelsma
This lecture covers the very basics of the syntax of the Swift programming language.
The course is an intensive and very compressed deep dive into iOS development in Swift. Visit the course web page to get copies of the course outline, lecture notes, sample code, etc.
Course website: http://www.themobilemontage.com/2015/05/12/ios-bootcamp-learning-to-create-awesome-apps-on-ios-using-swift/
YouTube Link to lecture: TBD
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Raffi Khatchadourian
Event logging is pervasive in modern applications, assisting developers, users, and administrators, alike in understanding and diagnosing issues involving sophisticated software. Unfortunately, the high transactionality of today's software can cause logging to be less effective due to information overload. Log levels help alleviate this problem by correlating a "severity" to system events that can be filtered. However, as software evolves, log levels may also require alteration as events once deemed important may have decreased in priority and vice-versa. We present our work-in-progress in devising an automated approach that assists developers in evolving logging levels. The approach, based on mining git histories and manipulating a degree of interest (DOI) model, transforms source code to "rejuvenate" log levels based on the "interestingness" of surrounding code. The approach was implemented as a plug-in to the Eclipse IDE, built upon JGit and Mylyn, and was evaluated on 18 Java projects having 2.89 million lines of code and ∼4K log statements. Our tool was able to successfully analyze 99.26% of logging statements, increase the distribution of log levels by 17.14%, and identify logs that were modified by developers with a recall of 79.31% and a level direction match success rate of 86.96%. Moreover, two of our pull (patch) requests were integrated into large and popular open-source projects. The results indicate that the approach is promising in assisting developers in evolving logging levels. We also discuss the relationship to software security, specifically, to side-channel attacks.
Older (2008) presentation I gave internally to SunGard to educate developers on C# and LINQ. LINQ still rocks, and the concepts I cover are important language features while C# developers should be asked in interviews event today.
New Jersey is top paying State for HR Managers when considering Percentiles of Pay, From 10th percentile to 75th Percentile. Top 10 are:
1. New Jersey
2. District of Columbia
3. Rhode Island
4. Colorado
5. Delaware
6. Maryland
7. New York
8. Connecticut
9. Pennsylvania & Virginia (tied)
10. Texas
- Highlight the performance benefits of using Java 8 - after all, you’ll probably have to persuade "The Management" that tampering with
existing code is worthwhile
- Demonstrate how to identify areas of code that can be updated to use Java 8 features, and how to pick which changes will give you the
most benefit
- Demonstrate how to automatically refactor your code to make use of features like lambdas and streams
- Cover some of the pros and cons of using the new features - including suggestions of when refactoring may NOT be the best idea.
This talk introduces the core concepts of functional programming, why it matters now and how these principles are adopted for programming.
Beyond the usage of the functional principles for programming in the small, their applicability to the design of components and further on to the architecture of software systems is also explored along with relevant examples.
The code samples used in the talk are in Haskell / Java 8 / Scala / Elm and JavaScript, but deep understanding of any of these languages are not a pre-requisite.
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03) Jonathan Engelsma
This lecture covers the very basics of the syntax of the Swift programming language.
The course is an intensive and very compressed deep dive into iOS development in Swift. Visit the course web page to get copies of the course outline, lecture notes, sample code, etc.
Course website: http://www.themobilemontage.com/2015/05/12/ios-bootcamp-learning-to-create-awesome-apps-on-ios-using-swift/
YouTube Link to lecture: TBD
Automated Evolution of Feature Logging Statement Levels Using Git Histories a...Raffi Khatchadourian
Event logging is pervasive in modern applications, assisting developers, users, and administrators, alike in understanding and diagnosing issues involving sophisticated software. Unfortunately, the high transactionality of today's software can cause logging to be less effective due to information overload. Log levels help alleviate this problem by correlating a "severity" to system events that can be filtered. However, as software evolves, log levels may also require alteration as events once deemed important may have decreased in priority and vice-versa. We present our work-in-progress in devising an automated approach that assists developers in evolving logging levels. The approach, based on mining git histories and manipulating a degree of interest (DOI) model, transforms source code to "rejuvenate" log levels based on the "interestingness" of surrounding code. The approach was implemented as a plug-in to the Eclipse IDE, built upon JGit and Mylyn, and was evaluated on 18 Java projects having 2.89 million lines of code and ∼4K log statements. Our tool was able to successfully analyze 99.26% of logging statements, increase the distribution of log levels by 17.14%, and identify logs that were modified by developers with a recall of 79.31% and a level direction match success rate of 86.96%. Moreover, two of our pull (patch) requests were integrated into large and popular open-source projects. The results indicate that the approach is promising in assisting developers in evolving logging levels. We also discuss the relationship to software security, specifically, to side-channel attacks.
Older (2008) presentation I gave internally to SunGard to educate developers on C# and LINQ. LINQ still rocks, and the concepts I cover are important language features while C# developers should be asked in interviews event today.
New Jersey is top paying State for HR Managers when considering Percentiles of Pay, From 10th percentile to 75th Percentile. Top 10 are:
1. New Jersey
2. District of Columbia
3. Rhode Island
4. Colorado
5. Delaware
6. Maryland
7. New York
8. Connecticut
9. Pennsylvania & Virginia (tied)
10. Texas
Pushing the Boundary of Mostly Automatic Program ProofAdaCore
With the large-scale verification of complex programs like compilers and microkernels, program proof has realised the grand challenge of creating a “verifying compiler” proposed by Sir Tony Hoare in 2003. Still, the effort and expertise required for developing the program and its proof to feed to the “verifying compiler” will exceed the V&V budget of most projects. Another approach gaining traction is to automate the proof as much as possible. More specifically, by tailoring the proof tool to the strengths of a target programming language, leveraging an array of automatic provers, and limiting the ambition of proof to those properties for which proof can be mostly automated. This is the approach we are following in SPARK. In this talk, we will survey what properties can be “mostly” proved automatically, and what this means in terms of effort and expertise.
What comes to your mind when you hear the word "type"? Do you think of an integer or string? Do you think of an object type from your favorite OOP language? Do you think about never ending religious debates regarding static vs dynamic types? Do you realize that these things hardly scratch the surface of what it means to be a "type"? Be prepared to understand types on a whole new level.
In this talk, we will explore type systems. What is a type system? Why are type systems important? How have type systems been influenced by functional programming, category theory, and type theory?
We will talk about variance, polymorphisms, higher-kinded types, existential types, algebraic data types, and type classes. We will scratch the surface of type theory and learn how logic systems have influenced programming language design.
This talk will be approachable to a wide audience and previous knowledge of type theory is not needed.
Esoft Metro Campus - Programming with C++
(Template - Virtusa Corporate)
Contents:
Overview of C++ Language
C++ Program Structure
C++ Basic Syntax
Primitive Built-in types in C++
Variable types
typedef Declarations
Enumerated Types
Variable Scope
Constants/Literals
Storage Classes
Operators
Control Constructs
Functions
Math Operations in C++
Arrays
Multi-dimensional Arrays
Strings
C++ Pointers
References
Date and Time
Structures
Basic Input / Output
Classes and Objects
Inheritance
Overloading
Polymorphism
Interfaces
Files and Streams
Exception Handling
Dynamic Memory
Namespaces
Templates
Preprocessor
Multithreading
it is written in a very simple language.generally ,it will help students of first year to achieve success in this language . one can easily score good marks after reading from this note.
RCA OCORA: Safe Computing Platform using open standardsAdaCore
The railway sector is facing a major transition as it moves towards more fully automated systems on both the train and infrastructure side. This in turn, requires the development of appropriate, future-proof connectivity and IT platforms.
The Reference Control Command and Signalling Architecture (RCA) and Open Control Command and Signalling Onboard Reference Architecture (OCORA) have developed a functional architecture for future trackside and onboard functions. The RCA OCORA open Control Command Signalling (CCS) on-board reference architecture introduces a standardized separation of safety-relevant and non-safety-relevant railway applications and the underlying IT platforms. This allows rail operators to decouple the very distinct life cycles of the domains and aggregate multiple railway applications on common IT platforms.
Based on a Safe Computing Platform (SCP), the architecture accommodates a Platform Independent Application Programming Interface (PI API) between safety-relevant railway applications and IT platforms. This approach supports the portability of railway applications among IT platform realisations from different vendors.
Two of its authors will discuss the RCA OCORA architecture with emphasis on its safe computing framework. The talk will review the required operating system standards and the discuss the newly-released DDS Reference Implementation for Safe Computing Platform Messaging. While designed for rail, this architecture will have elements of interest for other industries.
Long-lived software is a challenge. This was seen very clearly a couple of years ago in the “US COBOL crisis”, but the reasons are less clearly understood, and are worth exploring. The speaker works in Computer Algebra, where “younger” systems are 30-40 years old, and the algorithmic kernel of SageMath, the newest major system, is actually 55 years old, and the people who can debug it are in single figures. More recently, very substantial retooling was required to enable Line 14, the driverless line, of the Paris Métro to be extended. Having reviewed these cases, the speaker will make some tentative suggestions for the management of long-lived software.
Rust and the coming age of high integrity languagesAdaCore
Rust is undeniably successful. In just over 7 year, it moved from a newly released language to one that is considered as a language for high integrity systems. This success did not happen in isolation - Rusts success is deeply rooted in a number of contributing environmental factors.
In this talk, I’d like to make the case why Rust success is due to a general ground shift in software development. What we are seeing is a resurging interest in software practices that were usually part of safety-critical environments being applied to non-safety related, mission-critical environments. On the other side, we are seeing the worlds of safety and security merging.
I’d like to take a step back and talk about coming opportunities, changes and chances not only for Rust, but also for other languages and products.
SPARKNaCl: A verified, fast cryptographic libraryAdaCore
SPARKNaCl https://github.com/rod-chapman/SPARKNaCl is a new, freely-available, verified and fast reference implementation of the NaCl cryptographic API, based on the TweetNaCl distribution. It has a fully automated, complete and sound proof of type-safety and several key correctness properties. In addition, the code is surprisingly fast - out-performing TweetNaCl's C implementation on an Ed25519 Sign operation by a factor of 3 at all optimisation levels on a 32-bit RISC-V bare-metal machine. This talk will concentrate on how "Proof Driven Optimisation" can result in code that is both correct and fast.
Developing Future High Integrity Processing SolutionsAdaCore
Rolls-Royce has been developing high integrity digital processing solutions for its safety critical aerospace engine controllers since the 1980s. By the turn of the century, the electronics industry experienced an inflection point. This resulted in a shift to a consumer driven market and a much-reduced focus on the harsh environment electronics and the extended life cycles required by the aerospace industry. As a result, Rolls-Royce took the decision to design its own microprocessor, and for the last 25 years, has been successfully developing harsh environment safety critical processing solutions for all its aerospace engines.
Alongside the ever-increasing performance expectations, the past few years have seen cyber-security become a major driver in new processor developments. This presents new and interesting development challenges that will need to be addressed.
Taming event-driven software via formal verificationAdaCore
Event-driven software can be found everywhere, from low-level drivers, to software that controls and coordinates complex subcomponents, and even in GUIs. Typically, event-driven software is characterised as consisting of a number of stateful components that communicate by sending messages to each other. Event-driven software is notoriously difficult to test. There are often many different sequences of events, and because the exact order of the events will affect the state of the system, it can be easy for bugs to lurk in obscure un-tested sequences of events. Even worse, reproducing these bugs can be difficult due to the need to reproduce the exact sequence of events that led to the issue.
Formal verification is one method of solving this: rather than writing tests to check each of the different possible sequences of events, automated formal verification could be used to verify that the software is correct no matter what sequence of events is observed. In this talk, we will look at what capabilities are required to ensure that this will be successful, including what it means for event-driven software to be correct, and how to ensure that the verification can scale to industrial-sized software projects.
RCA OCORA: Safe Computing Platform using open standardsAdaCore
The railway sector is facing a major transition as it moves towards more fully automated systems on both the train and infrastructure side. This in turn, requires the development of appropriate, future-proof connectivity and IT platforms.
The Reference Control Command and Signalling Architecture (RCA) and Open Control Command and Signalling Onboard Reference Architecture (OCORA) have developed a functional architecture for future trackside and onboard functions. The RCA OCORA open Control Command Signalling (CCS) on-board reference architecture introduces a standardized separation of safety-relevant and non-safety-relevant railway applications and the underlying IT platforms. This allows rail operators to decouple the very distinct life cycles of the domains and aggregate multiple railway applications on common IT platforms.
Based on a Safe Computing Platform (SCP), the architecture accommodates a Platform Independent Application Programming Interface (PI API) between safety-relevant railway applications and IT platforms. This approach supports the portability of railway applications among IT platform realisations from different vendors.
Two of its authors will discuss the RCA OCORA architecture with emphasis on its safe computing framework. The talk will review the required operating system standards and the discuss the newly-released DDS Reference Implementation for Safe Computing Platform Messaging. While designed for rail, this architecture will have elements of interest for other industries.
Product Lines and Ecosystems: from customization to configurationAdaCore
Digitalization is concerned with a fundamental shift in value delivery to customers from transactional to continuous. For R&D this requires adopting processes such as DevOps and continuous deployment. Systems engineering companies using platforms need to adjust their ways of working and be cognisant of the role of the ecosystem surrounding them to capitalize on this transformation. The keynote talk will discuss these developments and provide industrial examples from Software Center, a collaboration between 17 large, international companies and five universities with the intent of accelerating the digital transformation of the European software intensive industry.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
1. A quick tour of Ada 2012
Edmond Schonberg
November 4, 2015
2. Ada 2012 has been here for 3 years !
The labor of a cast of thousands!
The latest in language design!
300 Ada Issues addressed! (and another 178 already created for Ada
2012)
For details: http://www.ada-auth.org and John Barnes book
For the gory details:
http://www.ada-auth.org/standards/12aarm/html/AA-TTL.html
For the history of the gory details:
http://www.ada-auth.org/AI05-SUMMARY.HTML
3. Highlights of Ada 2012
Program Correctness: programming by contract
• Pre- and Post-conditions for subprograms
• Type invariants, subtype predicates
– Iterators, generalized indexing and implicit dereference
– Bounded containers, proper concurrent queues, holder container
– Conditional and case expressions, expression functions
– Quantified expressions
– New concurrency constructs for multicores
– Better accessibility rules for anonymous access types
4. Program Correctness
• Need a general mechanism to introduce new checkable properties of entities :
subprograms, types, subtypes.
• Checking may be static (compiler) or dynamic (assertions)
• RM 6.1.1 (AI05-0145) Pre- and Postconditions
• RM 7.3.2 (AI05-0146) Type Invariants
• RM 3.2.4 (AI05-0153) Subtype predicates
• One general syntactic mechanism for all of the above, and more:
• RM 13.1.1 (AI05-0183) Aspect Specifications
5. Pre- and Postconditions
generic
type Item is private;
package Stack_Interfaces is
type Stack is interface;
function Is_Empty (S : Stack) return Boolean is abstract;
function Is_Full (S : Stack) return Boolean is abstract;
procedure Push (S : in out Stack; I : in Item) is abstract
with Pre'Class => not Is_Full (S),
Post'Class => not Is_Empty (S);
private
…
end Stack_Interfaces;
6. Pre- and Postconditions (2)
• Unified syntax for aspect specifications
• Semantic analysis of conditions is done at end of current list of
declarations or at freeze point of subprogram
• Conditions can be verified dynamically like assertions, or statically by
analysis tools and/or clever compilers
• Can specify classwide conditions and type-specific conditions.
Classwide conditions are inherited by the corresponding primitive of
each descendant type.
• Dynamic condition checking is controlled by assertion mode
• Check can be in caller or in callee.
7. Aspect Specifications
• General mechanism to replace most attribute definition clauses and
assorted pragmas.
type Bit_Vector is array (natural range <>) of Boolean
with pack;
function Square (x : Integer) return Integer
with inline => True;
Overlay : Some_Type
with address => Some_Object’address,
atomic => False;
8. Pre- and postconditions (3)
• New Attributes, for use in postconditions (illegal in any other context)
• X’Old denotes the value of X before subprogram starts execution (X
can be an arbitrary expression)
procedure Incr (X : in out Integer)
with
post => (X = X’Old + 1);
• F’Result denotes the result of the current function call.
function Sin (X : Float) return Float
with
post => (Sin’Result <= 1.0);
9. Type invariants
package Q is
type T(...) is private
with Type_Invariant => Is_Valid (T);
function Is_Valid (X : T) return Boolean; -- analyzed later
type T2(...) is abstract tagged private
with Type_Invariant'Class => Is_Valid (T2);
function Is_Valid (X2 : T2) return Boolean is abstract;
private
…
end Q;
10. Type Invariants (2)
• For private types and type extensions.
• Classwide invariants and type-specific invariants
• Inheritance follows Liskov’s rules
• Invariants are checked:
– On object initialization
– On conversion to the type
– On return from function that creates object of the type
– On return from subprogram that has (in)- out parameter of the type
• Not bullet-proof:
– Still possible to modify object through access values
– If invariant for private extension depends on visible inherited component,
invariant is at risk.
11. Invariants and inheritance
• Aspect Type_Invariant for T is type-specific
• Aspect Type_Invariant’class for T applies to all descendants of T
type Root is private
with Type_Invariant’class => Root_OK (Root);
-- boolean function
type Child is new Root and private
with Type_Invariant’class => Child_OK (Child);
type Grandchild is new Child and private
with Type_Invariant => Details_OK (Grandchild);
• Upon creation of an object of type Grandchild, Root_OK, Child_OK
and Details_OK are checked.
12. Subtype Predicates
• Applies to all subtypes:
type Rec is record
A : Natural;
end record;
subtype Decimal_Rec is Rec
with Dynamic_Predicate => Decimal_Rec.A mod 10 = 0;
• A predicate can be specified for any subtype
• A predicate is not a constraint (akin to a null exclusion)
• Most common use: non-contiguous enumeration types.
• Two varieties: Static and Dynamic (GNAT conflates them)
13. Static predicates
• Predicate composed of predefined comparison operators, literals, scalar
ranges, and membership tests : can be evaluated statically on scalar
operands.
subtype T3 is Positive
with Static_Predicate =>
T3 in 1 .. 10 or else T3 in 50 .. 60 or else T3 = 100;
-- could be a single Ada 2012 membership test.
If a static predicate evaluates statically to False it is an error (as for a static
expression that raises Constraint_Error)
No_Way : constant T3 := 70; -- illegal
14. Dynamic predicates
• Predicate is an arbitrary expression:
subtype Prime is positive
with Dynamic_Predicate => Clever_Primality (Prime);
• Cannot apply ‘first, ‘last, ‘range to subtype with predicate
• ‘pred and ‘succ give value of base type (as usual)
• Cannot use subtype with predicate as index_type, as choice in
named_array_aggregate, or as loop parameter specification (anything
that would imply some sequential processing to find next value)
15. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-times
• Anonymous access types and storage management
• Syntactic sweeteners
16. Containers
• The Ada2005 library is sparse, compared with those of other
languages, and with the state of the art in data-structure design.
• RM A.18.19 - A.18-25 Bounded containers
• RM A.18.18 Holder container
• RM A.18.17 Multiway tree container
• RM A.18.27 – A 18.31 Queue containers
• Throughout : Accessors and Iterators for Containers
17. Bounded containers
• Existing containers use dynamic memory allocation: not
convenient in high-integrity applications
• Introduce stack-allocated containers with defined maximum
capacity:
• type Vector (Capacity : Count_Type) is tagged private;
18. Holder container
• Cannot create an object of an indefinite type that can hold any value of the
type:
• X : T’class; -- illegal without initialization
• (can use access type and indefinite designated type).
• Better to define container that can hold single indefinite item:
generic
type Element_Type (<>) is private;
with function "=" (Left, Right : Element_Type) return Boolean is <>;
package Ada.Containers.Indefinite_Holders is
type Holder is tagged private;
pragma Preelaborable_Initialization (Holder);
Empty_Holder : constant Holder;
…
19. Multiway trees
• What, no trees in the library?
• Multiway trees are threaded every which way:
• Node has sequence of descendants, traversal functions include
– Parent, First_Child, Last_Child
– Next_Sibling, Previous_Sibling
• Can search and iterate over whole tree, over subtree, over children
• Can insert and delete elements, children, subtrees
• Indefinite and bounded versions also available
20. Queue containers
• Considered too trivial to bother with in Ada 2005
• Less trivial if must be task-safe
• Provide common interface:
generic
type Element_Type is private;
package Ada.Containers.Synchronized_Queue_Interfaces is
type Queue is synchronized interface; -- isn’t Ada2005 great?
procedure Enqueue
(Container : in out Queue; New_Item : in Element_Type) is abstract
with Synchronization => By_Entry;
procedure Dequeue ….
…
• Implement interface in bounded queues, unbounded queues, and priority
queues.
21. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-time
• Anonymous access types and storage management
• Syntactic sweeteners
22. Programming expressiveness
• More powerful functions
• Better iterators on all containers
• RM 5.5.2 (AI05-0139) Iterators
• AI05-0142 Explicitly aliased parameters
• AI05-0143 In Out parameters for functions
• AI05-0144 Detecting dangerous order dependences
• AI05-0177 expression functions
23. Iterator machinery
• Generalized reference
• Generalized indexing
• Change to freezing rules for incomplete types
• All of this is invisible to the user who just wants to iterate over
containers:
• for Item of My_Bag loop Mangle (Item); end loop;
24. Generalized reference
• Can define aspect on type with an access discriminant:
type Wrapper (Data : access Integer) is null record
with Implicit_Dereference => Data;
function Find (From : aliased in out Box; Key : String)
return Wrapper;
find (My_Box, “green”) := 15;
-- equivalent to find (My_Box, “green”).Data.all
25. Generalized indexing
• Another aspect that generalizes the indexed component notation of arrays.
– Array => Container
– Index => Cursor
• We want My_Bag (That_One) to be analogous to Arr (N)
type Bunch is tagged null record
with Variable_Indexing => Reference;
function Reference (Obj : Bunch; S : String)
return Wrapper; -- returns a reference type
My_Bag (“Nines”) := 999;
-- equivalent to Reference (My_Bag, “nines”).data.all := 999;
26. Putting it together: iterators
• An iterator wraps a pointer to a container, and has iteration operations (first,
next, last):
generic
type Cursor; -- formal incomplete type
with function Has_Element (Position : Cursor) return Boolean;
package Ada.Iterator_Interfaces is
pragma Pure;
type Forward_Iterator is limited interface;
function First (Object : Forward_Iterator) return Cursor is abstract;
function Next (Object : Forward_Iterator; Position : Cursor) return Cursor is abstract;
…
Instantiation has to provide concrete cursor
27. Uniform structure for predefined
containers:
with Ada.Iterator_Interfaces;
…
generic
type Element_Type is private;
…
package Ada.Containers.Doubly_Linked_Lists is
…
type List is tagged private
with
Constant_Indexing => Constant_Reference,
Variable_Indexing => Reference,
Default_Iterator => Iterate,
Iterator_Element => Element_Type;
type Reference_Type (Element : not null access Element_Type) is private
with Implicit_Dereference => Element;
…
function Reference (Container : aliased in out List; Position : Cursor) return Reference_Type;
function Iterate (Container : List) return List_Iterator_Interfaces.Reversible_Iterator'Class;
28. At the end: simple syntax for
generalized loops
for Cursor in Iterate (Container) loop
Container (Cursor) := Container (Cursor) + 1;
end loop;
-- container (cursor) means
-- reference (container, cursor).Element.all
for Thing of Box loop Modify (thing); end loop;
-- cursor is implicit
Both forms apply to arrays and containers.
(no iteration over holder containers or queues)
29. In-out parameter for functions and their price:
Detecting dangerous order dependences
• In-out parameters for functions and unspecified order of evaluation
are a bad combination!
• F (Obj) + G (Obj)
• Is problematic if F and/or G have side-effects on their actuals
• New rule provides a precise statically checkable definition of
identity and overlap between objects. Compiler can then verify that:
• in a complex expression involving a function call with a modifiable
parameter, there is no other component of the expression that
denotes the same object or a portion of it.
30. Programming expressiveness (2)
• Flexible syntactic forms for predicates in contracts and elsewhere
• AI05-0147 Conditional expressions
• AI05-0158 Generalizing membership tests
• AI05-0176 Quantified expressions
• AI05-0177 expression functions
• AI05-0188 Case expressions
• AI05-0191 Aliasing predicates
31. Conditional Expressions
Value:= (if X > Y then F (X) else G (Y));
• If result type is Boolean, else_part can be omitted.
• Generally parenthesized
• Must work with classwide types and anonymous access types
(some complication when branches have different types)
32. Extending membership
operations
• The argument of a membership test can be a set of values:
if (C not in 'A' | 'B' | 'O’) then
Put_Line ("invalid blood type");
raise ER_Error;
else
Perform_Transfusion (500 * cc);
end if;
33. Expression functions
• To simplify the writing of pre/postconditions and predicates, allow
expression functions (aka function bodies in package specs):
• function Cube (X : integer) return Integer is (X ** 3) ;
• Can be used as completions
• Not quite a new idea (FORTRAN had function statements half-a-
century ago)
34. Quantified expressions
Predicate states that A is sorted in increasing order:
(for all J in A'First .. T'Pred(A'Last) =>
A (J) <= A (T'Succ (J)))
Predicate asserts that N is composite:
(for some X in 2 .. N / 2 => N mod X /= 0)
Computation is short-circuited.
some is a new reserved word
35. Non-intuitive boundary case:
• (for all X in empty_set => P (X)) is always True
• (for some X in empty_set => P (X)) is always False
• Common convention in set theory, arbitrary but settled
• Want to preserve identity:
for all X in S => P (x) = not (for some X in S => not P (X))
36. Putting it together:
• Specifying the behavior of a linear search function:
function Test_Recovery_Highest (S : Set) return Integer
with post =>
(for all Cu in S =>
Test_Recovery_Highest'Result >= Element (Cu));
37. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-time
• Anonymous access types and storage management
• Syntactic sweeteners
38. Visibility mechanisms
• Need more flexible ways to name entities in the complex
environment in which a unit is compiled.
• Incomplete types can be useful in additional contexts
• RM 8.4 (AI05-0150) Use all type clause
• RM 3.10.1 (AI05-0151) Allow incomplete types as parameter and
result types
• RM 3.10.1 (AI05-0162) Allow incomplete types to be completed by
partial views
39. More uses for use (and more uses
for all)
package P is
type T is new Integer;
function Nth (X : T; Expon : Natural) return T;
end P;
package body P is … end P;
X : T; -- illegal without use package clause
Y : P.T := X * 25; -- illegal without use type clause
Z : P.T := Nth (X, 5); -- illegal without use all type clause
40. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-time
• Anonymous access types and storage management
• Syntactic sweeteners
41. Concurrency and real-time
features
• Need to address the multicore revolution
• Better scheduling tools justify more elaborate constructs
• Mostly real-time annex and shared variable control
• Mostly suggestions from IRTAW
• RM D.16 (AI05-0167) Managing affinities on multiprocessors
• C.6 (AI05-0117) Memory barriers and Volatile objects
• D.14.2 (AI05-0169) Defining group budgets for multiprocessors
• D.13 (AI05-0171) Ravenscar Profile for Multiprocessor Systems
• RM D.2.4 (AI05-0166) non-preemptive dispatching (Yield operations)
• RM D.10 (AI05-0168) Extended suspension objects
• RM D.14.3 (AI05-0170) Monitoring the time spent in Interrupt Handlers
• RM D.10.1 (AI05-0174) Task barriers
42. Managing affinities
• Construct to map tasks to processing units (core/chip)
package System.Multiprocessors is
type CPU_Range is range …
…
package System.Multiprocessors.Dispatching_Domains is
type Dispatching_Domain (<>) is limited private;
function Create (First, Last: CPU) return Dispatching_Domain;
procedure Set_CPU (CPU : in CPU_Range; T : in Task_Id := Current_Task);
function Get_CPU (T : in Task_Id := Current_Task) return CPU_Range;
…
Implementation must describe how ranges map to actual silicon (hot topic)
43. Synchronous barriers
• More flexible than using a protected type, and usually supported by
OS
package Ada.Synchronous_Barriers is
subtype Barrier_Limit is Positive range 1 .. Implementation_defined-
type Synchronous_Barrier (Release_Threshold : Barrier_Limit)
is limited private;
procedure Wait_For_Release
(The_Barrier : in out Synchronous_Barrier; Notified : Boolean);
44. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-time
• Anonymous access types and storage management
• Syntactic sweeteners
45. Anonymous access types and
storage management
• Need to simplify accessibility rules for anonymous types
• Need more flexible storage reclamation mechanisms
• AI05-0148 Accessibility of anonymous access stand-alone objects
• AI05-0149 Access types conversion and membership
• The heart of darkness (RM 3.10.2) !
• AI05-0152 Restriction No_Anonymous_Allocators
• AI05-0189 Restriction No_Allocators_After_Elaboration
• AI05-0190 Global storage pool controls
• AI05-0193 Alignment of allocators
46. Major topics
• Program correctness
• Containers
• Constructs for expressiveness
• Visibility mechanisms
• Concurrency and real-time
• Syntactic sweeteners
47. Syntactic sweeteners
• What, no “continue” statement?
• Where are pragmas legal?
• RM 2.8 (AI05-0100) Placement of pragmas
• RM 2.8 (AI05-0163) Pragmas instead of null
• RM 5.1(120 (AI05-0179) Labels at end of a
sequence_of_statements
48. The language design imperative
• “You boil it in sawdust: you salt it in glue: You condense it with
locusts and tape:Still keeping one principal object in view— To
preserve its symmetrical shape.”
The Hunting of the snark
49. Discards
• AI05-0074-2 Allowing an explicit "end private;" in a package spec
• AI05-0074-3 Deferred instance freezing
• AI05-0135 Integrated nested packages
• AI05-0140-1 Identity functions
• AI05-0175-1 Cyclic fixed point types
• AI05-0187-1 Shorthand for assignments with expressions naming target ( a += 1)
• (but stay tuned for Ada 2020)
50. • Check definition of “the software present tense”
• Active testbed for proposed language extensions
GNAT does it all!
Editor's Notes
This template can be used as a starter file for presenting training materials in a group setting.
Sections
Sections can help to organize your slides or facilitate collaboration between multiple authors. On the Home tab under Slides, click Section, and then click Add Section.
Notes
Use the Notes pane for delivery notes or to provide additional details for the audience. You can see these notes in Presenter View during your presentation.
Keep in mind the font size (important for accessibility, visibility, videotaping, and online production)
Coordinated colors
Pay particular attention to the graphs, charts, and text boxes.
Consider that attendees will print in black and white or grayscale. Run a test print to make sure your colors work when printed in pure black and white and grayscale.
Graphics, tables, and graphs
Keep it simple: If possible, use consistent, non-distracting styles and colors.
Label all graphs and tables.