The document describes an incremental approach to name and type analysis for programming languages. It involves the following key tasks:
1. Caching previous analysis results to reuse when possible.
2. Detecting changes to the program to determine what needs reanalysis.
3. Invalidating and propagating effects of changes to determine dependent calculations that need re-evaluation.
4. Tracking dependencies between calculations to determine propagation of changes.
5. Scheduling re-evaluation of invalidated calculations in an efficient order based on dependencies.
This approach aims to perform analysis incrementally on changes rather than reanalyzing the entire program from scratch, improving efficiency.
The aptitude test consisted tricky questions on core subjects of CSE like C , C++, Java ,Data Structures, Database, Computer Networks, Theory of Computation.
The aptitude test consisted tricky questions on core subjects of CSE like C , C++, Java ,Data Structures, Database, Computer Networks, Theory of Computation.
C Programming
We Also Provide SYNOPSIS AND PROJECT.
Contact www.kimsharma.co.in for best and lowest cost solution or
Email: amitymbaassignment@gmail.com
Call: 9971223030
[Question Paper] Introduction To C++ Programming (Revised Course) [April / 2015]Mumbai B.Sc.IT Study
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - I [Introduction To C++ Programming] (Revised Course). [Year - April / 2015] . . .Solution Set of this Paper is Coming soon..
Why functional programming and category theory strongly mattersPiotr Paradziński
Abstractions of Category Theory to define abstractions (Functor, Applicative, Monad, Comonad, Coyoneda) commonly used in functional programming (FP). Using definitions from Category Theory to reason about modular and composable design. Examples based on Haskell papers: Functional pearls translated to Scala.
In a weird parallel world where programming is based on type theory, every term has a type, if you declare it or not, every function has a type, and polymorphic functions can't know the type of their argument or see what's inside.
Even if you don't use languages from that world, they can still be an inspiration.
A very basic introductory presentation on Category Theory. Focus was on directly relating category theory to programming in a functional language. Scala was the language of choice for the presentation.
Basic coverage of Functors. Monads to follow in later talk.
Explains the basic concepts of Category Theory, useful terminology to help understand the literature, and why it's so relevant to software engineering.
C programming language character set keywords constants variables data typesSourav Ganguly
Hello friends I am Sourav Ganguly. This c programme (program) or programming (programing) language tutorial contain basic or basics and advance knowledge for begginer (beginer) or begginers (beginers) with examples including input with output and different types of question or questions and answer or answers. We may call this tutorial or tutorials as complete online youtube video or videos with software and power point or ppt presentation. In this series of tutorials you will learn about keyword, different rules for constructing variables, integer, real, character constant, data types, character set, normal and nested if else statement, if else or else if ladder, different types of for, while and do while loop, switch case statement, break, continue, goto, function declaration and calling with values and address or reference, scope, recursion, union, static, extern, one, two and three or multi dimensional array, pointer, string, library, structure, file opening and closing with copy then paste and write function.
It is an attempt to make the students of IT understand the basics of programming in C in a simple and easy way. Send your feedback for rectification/further development.
Alternatives a l’hospitalització convencional (AHC) Hospital Verge de la Cinta. Blanca Cuevas.
Exposició dels diferents dispositius articulats des del HUVC, considerats AHC.
C Programming
We Also Provide SYNOPSIS AND PROJECT.
Contact www.kimsharma.co.in for best and lowest cost solution or
Email: amitymbaassignment@gmail.com
Call: 9971223030
[Question Paper] Introduction To C++ Programming (Revised Course) [April / 2015]Mumbai B.Sc.IT Study
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - I [Introduction To C++ Programming] (Revised Course). [Year - April / 2015] . . .Solution Set of this Paper is Coming soon..
Why functional programming and category theory strongly mattersPiotr Paradziński
Abstractions of Category Theory to define abstractions (Functor, Applicative, Monad, Comonad, Coyoneda) commonly used in functional programming (FP). Using definitions from Category Theory to reason about modular and composable design. Examples based on Haskell papers: Functional pearls translated to Scala.
In a weird parallel world where programming is based on type theory, every term has a type, if you declare it or not, every function has a type, and polymorphic functions can't know the type of their argument or see what's inside.
Even if you don't use languages from that world, they can still be an inspiration.
A very basic introductory presentation on Category Theory. Focus was on directly relating category theory to programming in a functional language. Scala was the language of choice for the presentation.
Basic coverage of Functors. Monads to follow in later talk.
Explains the basic concepts of Category Theory, useful terminology to help understand the literature, and why it's so relevant to software engineering.
C programming language character set keywords constants variables data typesSourav Ganguly
Hello friends I am Sourav Ganguly. This c programme (program) or programming (programing) language tutorial contain basic or basics and advance knowledge for begginer (beginer) or begginers (beginers) with examples including input with output and different types of question or questions and answer or answers. We may call this tutorial or tutorials as complete online youtube video or videos with software and power point or ppt presentation. In this series of tutorials you will learn about keyword, different rules for constructing variables, integer, real, character constant, data types, character set, normal and nested if else statement, if else or else if ladder, different types of for, while and do while loop, switch case statement, break, continue, goto, function declaration and calling with values and address or reference, scope, recursion, union, static, extern, one, two and three or multi dimensional array, pointer, string, library, structure, file opening and closing with copy then paste and write function.
It is an attempt to make the students of IT understand the basics of programming in C in a simple and easy way. Send your feedback for rectification/further development.
Alternatives a l’hospitalització convencional (AHC) Hospital Verge de la Cinta. Blanca Cuevas.
Exposició dels diferents dispositius articulats des del HUVC, considerats AHC.
Bootstrapping Meta-Languages of Language WorkbenchesGabriël Konat
It is common practice to bootstrap compilers of programming languages. By using the compiled language to implement the compiler, compiler developers can code in their own high-level language and gain a large-scale test case. In this paper, we investigate bootstrapping of compiler-compilers as they occur in language workbenches. Language workbenches support the development of compilers through the application of multiple collaborating domain-specific meta-languages for defining a language's syntax, analysis, code generation, and editor support. We analyze the bootstrapping problem of language workbenches in detail, propose a method for sound bootstrapping based on fixpoint compilation, and develop recipes for conducting breaking meta-language changes in a bootstrapped language workbench. We have applied sound bootstrapping to the Spoofax language workbench and report on our experience.
Una eina bàsica: les TIC. Jordi Martínez.
Importància de les TIC en la garantia de la continuïtat de la informació en el 7 x 24: HCCC, carpeta personal, ...
Kotlin is a statically-typed programming language for the JVM and the browser, built by a team at JetBrains and designed as a pragmatic and easy-to-use Java alternative. In this presentation we'll explore the most notable Kotlin features, such as:
- Extension functions
- Null-safety
- Smart casts
- and many more
Check out and see that programming in Kotlin is fun!
Blazing Fast, Pure Effects without Monads — LambdaConf 2018John De Goes
Effect monads like IO are the way functional programmers interact with the real world. Yet, monadic effects in programming languages like Scala often perform poorly compared to their Haskell counterparts—as much as 10x slower in some benchmarks. In this presentation, John A. De Goes, author of the Scalaz 8 effect system, dredges up an old paper to cast new light on the question of how to model effects, and comes to the surprising conclusion that in Scala, monads may not be the fastest way to model purely functional effects. Join John as he shows a new model of effects that offers performance improvements without sacrificing the wonderful purity that functional programmers rely on to reason about their software.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Essentials of Automations: The Art of Triggers and Actions in FME
A Language Independent Task Engine for Incremental Name and Type Analysis - SLE 2013
1. A Language Independent Task
Engine for Incremental Name
and Type Analysis
Guido H. Wachsmuth
Gabriel D. P. Konat
Vlad A.Vergu
Danny M. Groenewegen
Eelco Visser
5. class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
6. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
7. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
8. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
9. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
10. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
11. Name Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign to each reference its corresponding definition
12. Type Analysis
class A {
class C : A {
class B {
B b;
int m;
}
}
float f;
float m() {
return 1 + b.f;
}
int n() {
return m();
}
int i;
int m() {
return 0;
}
}
Assign a type to each expression
13. Type Analysis
class A {
class C : A {
B b;
}
float f;
float m() {
return 1 + b.f;
}
}
int i;
int m;
int n() {
return m();
}
float
class B {
int m() {
return 0;
}
}
Assign a type to each expression
14. Type Analysis
class A {
class C : A {
B b;
}
float f;
float m() {
return 1 + b.f;
}
}
int i;
int m;
int n() {
return m();
}
float
class B {
int m() {
return 0;
}
}
Assign a type to each expression
15. Type Analysis
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
Assign a type to each expression
16. Type Analysis
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
Assign a type to each expression
17. Type Analysis
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
Assign a type to each expression
18. Type Analysis
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
float
Assign a type to each expression
19. Type Analysis
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
float
Assign a type to each expression
int
20. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
float
int
21. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
float m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
float
int
22. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
float
class B {
}
int m() {
return 0;
}
}
float
float
float
int
23. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
24. class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
25. class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
return 1 + b.f
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
27. class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int m() {
b.f
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
28. 1. Caching
class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int m() {
b.f
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
Reuse analysis results from previous analysis
int
29. 2. Change detection
class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int
int m() {
b.f
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
Which part of the program has changed?
int
30. 3. Invalidation & propagation
class A {
class C : A {
B b;
int n() {
return m();
m()
}
int m;
int i;
B
float f;
int m() {
b.f
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
Which calculations are affected by a change?
int
31. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
32. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
33. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
34. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
35. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
36. 4. Dependency tracking
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
What are the dependencies between calculations?
37. 5. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
int
float
How to (re-)schedule invalidated calculations?
39. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
40. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
f
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
41. class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
42. Caching
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
43. Change Detection
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
44. Invalidation
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
45. Propagation
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
46. Propagation
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
47. Propagation
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
48. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
49. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
50. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
float
float
float
int
51. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int m;
int i;
B
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
float
float
int
52. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
float
int
int
53. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
i
return 1 + b.f;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
54. Scheduling
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
55. class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
57. class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
58. Units of computation ...
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
59. ... with cacheable results ...
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
60. ... and dependencies on each other
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
61. resolve class A
resolve class B
resolve method m
resolve field b
resolve field i
class A {
class C : A {
B b;
int n() {
return m();
}
int i;
B
int m;
float f;
int m() {
return 1 + b.i;
}
}
int
class B {
}
int m() {
return 0;
}
}
int
int
int
int
62. resolve class A
resolve class B
resolve method m
resolve field b
resolve field i
class A {
class C : A {
B b;
float f;
int m() {
return 1 + b.i;
}
}
int i;
int m;
int n() {
return m();
}
int m() {
return 0;
}
}
calc type of m()
class B {
}
calc type of b
calc type of i
calc type of b.i
calc type of 1 + b.i
calc type of 0
65. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.i; }
}
66. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.i; }
}
67. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class B
define field i
type of i is int
define field f
type of f is float
Facts
68. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class B
define field i
type of i is int
define field f
type of f is float
Facts
Tasks
69. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class B
define field i
type of i is int
define field f
type of f is float
Facts
Tasks
70. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
define field f
type of f is float
Facts
Tasks
71. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
type of f is float
Facts
Tasks
72. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
resolve class B
resolve field b
resolve field i
calc type of b
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
1
type of i is int
define field f
type of f is float
Facts
Tasks
73. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
1
type of i is int
define field f
type of f is float
resolve class B
2
resolve field b
resolve field i
Facts
Tasks
calc type of b
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
74. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
1
type of i is int
define field f
type of f is float
resolve class B
2
resolve field i
Facts
Tasks
calc type of i
calc type of b.i
resolve field b
calc type of b
3
calc type of 1
calc type of 1 + b.i
75. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
1
define field f
type of f is float
Facts
Tasks
resolve class B
2
resolve field b
resolve field i
type of i is int
4
calc type of b
calc type of i
3
calc type of 1
calc type of b.i
calc type of 1 + b.i
76. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
1
resolve class B
2
resolve field b
define field f
5
resolve field i
4
calc type of b
calc type of i
3
calc type of 1
type of f is float
Facts
Tasks
calc type of b.i
calc type of 1 + b.i
77. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
1
resolve class B
2
resolve field b
define field f
5
resolve field i
4
calc type of b
6
calc type of i
3
calc type of 1
type of f is float
Facts
Tasks
calc type of b.i
calc type of 1 + b.i
78. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
1
resolve class B
2
resolve field b
define field f
5
resolve field i
4
calc type of b
Facts
6
calc type of i
3
calc type of 1
Tasks
7
calc type of b.i
type of f is float
calc type of 1 + b.i
79. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
1
resolve class B
2
resolve field b
define field f
5
resolve field i
4
calc type of b
Facts
6
calc type of i
3
calc type of 1
Tasks
7
calc type of b.i
type of f is float
calc
8
type of 1 + b.i
80. class A {
B b;
float m() { return 1 + b.i; }
}
class B {
int i;
float f;
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
1
resolve class B
2
resolve field b
define field f
5
resolve field i
4
calc type of b
Facts
6
calc type of i
3
calc type of 1
Tasks
7
calc type of b.i
type of f is float
calc
8
type of 1 + b.i
82. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
83. class B {
int i;
float f;
}
class A {
B b;
i
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
84. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
85. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
86. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
87. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field i
calc type of b
type of f is float
calc type of i
calc type of 1
calc type of b.i
calc type of 1 + b.i
88. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
calc type of b
type of f is float
calc type of 1
89. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
90. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
define field f
type of f is float
1
91. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
1
resolve field f
calc type of b
type of f is float
2
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
92. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
1
resolve field f
calc type of b
type of f is float
2
calc type of f
calc type of 1
3
calc type of b.f
calc type of 1 + b.f
93. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
1
resolve field f
calc type of b
type of f is float
2
calc type of f
calc type of 1
3
calc type of b.f
calc
4
type of 1 + b.f
94. class B {
int i;
float f;
}
class A {
B b;
f
float m() { return 1 + b.i; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
1
resolve field f
calc type of b
type of f is float
2
calc type of f
calc type of 1
3
calc type of b.f
calc
4
type of 1 + b.f
95. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
96. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
97. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
98. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
99. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
define field f
resolve field f
calc type of b
type of f is float
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
100. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
101. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
102. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
103. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
1
104. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
1
resolve field f
calc type of b
2
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
105. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
1
resolve field f
calc type of b
2
calc type of f
calc type of 1
3
calc type of b.f
calc type of 1 + b.f
106. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
1
resolve field f
calc type of b
2
calc type of f
calc type of 1
3
calc type of b.f
calc
4
type of 1 + b.f
107. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f
108. class B {
int i;
float f;
}
class A {
B b;
float m() { return 1 + b.f; }
}
define class A
define class B
define method m
type of m is float
define field i
define field b
type of b is B
type of i is int
resolve class B
resolve field b
resolve field f
calc type of b
calc type of f
calc type of 1
calc type of b.f
calc type of 1 + b.f