Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Højniveausprog til Indlejrede Systemer den 2. oktober 2013. Læs mere om interessegruppen her: http://infinit.dk/dk/interessegrupper/hoejniveau_sprog_til_indlejrede_systemer/hoejniveau_sprog_til_indlejrede_systemer.htm
18 css101j pps unit 1
Evolution of Programming & Languages - Problem Solving through Programming - Creating Algorithms - Drawing Flowcharts - Writing Pseudocode - Evolution of C language, its usage history - Input and output functions: Printf and scanf - Variables and identifiers – Expressions - Single line and multiline comments - Constants, Keywords - Values, Names, Scope, Binding, Storage Classes - Numeric Data types: integer - floating point - Non-Numeric Data types: char and string - Increment and decrement operator - Comma, Arrow and Assignment operator - Bitwise and Sizeof operator
Outline of my experience introducing and championing the usage of Julia Language inside a medium sized Financial organization. Cover reason for using it, reason why I thought it was a good fit and some advice on how to improve other first experience
18 css101j pps unit 1
Evolution of Programming & Languages - Problem Solving through Programming - Creating Algorithms - Drawing Flowcharts - Writing Pseudocode - Evolution of C language, its usage history - Input and output functions: Printf and scanf - Variables and identifiers – Expressions - Single line and multiline comments - Constants, Keywords - Values, Names, Scope, Binding, Storage Classes - Numeric Data types: integer - floating point - Non-Numeric Data types: char and string - Increment and decrement operator - Comma, Arrow and Assignment operator - Bitwise and Sizeof operator
Outline of my experience introducing and championing the usage of Julia Language inside a medium sized Financial organization. Cover reason for using it, reason why I thought it was a good fit and some advice on how to improve other first experience
Invited Talk at Summer School on Semantic Web, Bertinoro, 2015
Abstract:
Two decades ago one has discussed how to build seamless digital workflows
such that the medium for data in a workflow would not switch between paper, fax, phone,
and digital, because each transcription from one to another medium would
be laborious and cost-inefficient. Thus, the issue was avoiding *medium discontinuities*.
Today, we have all-digital data workflows, but we have still plenty of *semantic discontinuities*.
In this talk, I want first to describe reasons for this discontinuities including: autonomy of
data providers, need for agility and flexibility, or decentralized organizations in
the world-wide data spaces.
Then I want to describe several semantics discontinuities and some efforts to
ameliorate them by:
1. Semantic programming (Horizontal workflow paradigm)
2. Core ontologies (Vertical workflow paradigm)
3. Semantic data production and consumption (Sticky semantics)
Programming Languages
A formal language for describing computation?
A “user interface” to a computer?
Syntax + semantics?
Compiler, or interpreter, or translator?
A tool to support a programming paradigm?
Après la présentation de #Flutter, Julien nous révèle toute la puissance de #Go, encore un autre langage de programmation créé par Google.
After the #Flutter presentation, Julien reveals all the power of #Go, yet another programming language created by Google.
Language,
Low-level languages,
High-level languages,
CHARACTERSTICS OF LOW LEVEL LANGUAGES
Third generation languages (3GL)
Types: - C++
VISUAL BASIC
JAVA
JAVASCRIPT
The Software Challenges of Building Smart Chatbots - ICSE'21Jordi Cabot
Chatbots are popular solutions assisting humans in multiple fields, such as customer support or e-learning. However, building such applications has become a complex task requiring a high-level of expertise in a variety of technical domains. Chatbots need to integrate (AI-based) NLU components, but also connect to internal/external services, deploy on various platforms, etc.
The briefing will first cover the current landscape of chatbot frameworks. Then, we’ll get our hands dirty and create a few bots of increasing difficulty playing with aspects like entity recognition, sentiment analysis, event processing, or testing. By the end of the session, attendees will have all the keys to understand the main steps and obstacles to building a good chatbot.
Here is a presentation I created quite a few years back when giving a presentation to students on programming languages. I have updated it with some recent trends.
Object oriented programming in 2014:Standard or Legacy?mat f.
From the OOP cult in the 90s to now: What happened? What failed? The current combinations with other software architecture paradigms?
1) The Great Hopes About OOP
2) There is no Silver Bullet
3) Case: Epigami Docker OO Infrastructure
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingSkills Matter
DSLs or Domain Specific Languages focus on a domain or a particular problem. They serve as an effective human-machine interaction tool as they're highly expressive. Their scope is fairly focused and that keeps them simple and small from the user's point of view. However, designing and implementing DSLs is not easy. Typically this involves steep learning curve and difficult parsing techniques. This is where Groovy comes in. You can take advantage of the flexible syntax of Groovy and it's metaprogramming capability to create what are called internal DSLs, that is, DSLs hosted using a higher level language.
In this fast paced highly interactive presentation you will start out learning the characteristics and types of DSLs. Then you will learn about the challenges in designing DSLs and deep dive into Groovy features that can ease the pain of implementing DSLs. Then, using some live coding, Venkat will show you how to create and implement internal DSLs using Groovy. Along the way you'll learn some tricks to facilitate desirable syntax for your DSL.
Using Aspects for Language Portability (SCAM 2010)lennartkats
Software platforms such as the Java Virtual Machine or the CLR .NET virtual machine have their own ecosystem of a core programming language or instruction set, libraries, and developer community. Programming languages can target multiple software platforms to increase interoperability or to boost performance. Introducing a new compiler backend for a language is the first step towards targeting a new platform, translating the language to the platform\'s language or instruction set. Programs written in modern languages generally make extensive use of APIs, based on the runtime system of the software platform, introducing additional portability concerns. They may use APIs that are implemented by platform-specific libraries. Libraries may perform platform-specific operations, make direct native calls, or make assumptions about performance characteristics of operations or about the file system. This paper proposes to use aspect weaving to invasively adapt programs and libraries to address such portability concerns, and identifies four classes of aspects for this purpose. We evaluate this approach through a case study where we retarget the Stratego program transformation language towards the Java Virtual Machine.
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)jaxLondonConference
Presented at JAX London 2013
Worried about the future of Java? Want to see it keep moving forward? Don't be concerned. The transformation of Java is already underway. Driven by new technologies and new opportunities Java and the JVM are entering uncharted worlds and challenging old approaches. In this session learn about one such expedition in the form of an introductory talk to technology being developed by IBM. This experimental technology is exploring a new way to share data between the JVM and other runtimes.
Invited Talk at Summer School on Semantic Web, Bertinoro, 2015
Abstract:
Two decades ago one has discussed how to build seamless digital workflows
such that the medium for data in a workflow would not switch between paper, fax, phone,
and digital, because each transcription from one to another medium would
be laborious and cost-inefficient. Thus, the issue was avoiding *medium discontinuities*.
Today, we have all-digital data workflows, but we have still plenty of *semantic discontinuities*.
In this talk, I want first to describe reasons for this discontinuities including: autonomy of
data providers, need for agility and flexibility, or decentralized organizations in
the world-wide data spaces.
Then I want to describe several semantics discontinuities and some efforts to
ameliorate them by:
1. Semantic programming (Horizontal workflow paradigm)
2. Core ontologies (Vertical workflow paradigm)
3. Semantic data production and consumption (Sticky semantics)
Programming Languages
A formal language for describing computation?
A “user interface” to a computer?
Syntax + semantics?
Compiler, or interpreter, or translator?
A tool to support a programming paradigm?
Après la présentation de #Flutter, Julien nous révèle toute la puissance de #Go, encore un autre langage de programmation créé par Google.
After the #Flutter presentation, Julien reveals all the power of #Go, yet another programming language created by Google.
Language,
Low-level languages,
High-level languages,
CHARACTERSTICS OF LOW LEVEL LANGUAGES
Third generation languages (3GL)
Types: - C++
VISUAL BASIC
JAVA
JAVASCRIPT
The Software Challenges of Building Smart Chatbots - ICSE'21Jordi Cabot
Chatbots are popular solutions assisting humans in multiple fields, such as customer support or e-learning. However, building such applications has become a complex task requiring a high-level of expertise in a variety of technical domains. Chatbots need to integrate (AI-based) NLU components, but also connect to internal/external services, deploy on various platforms, etc.
The briefing will first cover the current landscape of chatbot frameworks. Then, we’ll get our hands dirty and create a few bots of increasing difficulty playing with aspects like entity recognition, sentiment analysis, event processing, or testing. By the end of the session, attendees will have all the keys to understand the main steps and obstacles to building a good chatbot.
Here is a presentation I created quite a few years back when giving a presentation to students on programming languages. I have updated it with some recent trends.
Object oriented programming in 2014:Standard or Legacy?mat f.
From the OOP cult in the 90s to now: What happened? What failed? The current combinations with other software architecture paradigms?
1) The Great Hopes About OOP
2) There is no Silver Bullet
3) Case: Epigami Docker OO Infrastructure
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingSkills Matter
DSLs or Domain Specific Languages focus on a domain or a particular problem. They serve as an effective human-machine interaction tool as they're highly expressive. Their scope is fairly focused and that keeps them simple and small from the user's point of view. However, designing and implementing DSLs is not easy. Typically this involves steep learning curve and difficult parsing techniques. This is where Groovy comes in. You can take advantage of the flexible syntax of Groovy and it's metaprogramming capability to create what are called internal DSLs, that is, DSLs hosted using a higher level language.
In this fast paced highly interactive presentation you will start out learning the characteristics and types of DSLs. Then you will learn about the challenges in designing DSLs and deep dive into Groovy features that can ease the pain of implementing DSLs. Then, using some live coding, Venkat will show you how to create and implement internal DSLs using Groovy. Along the way you'll learn some tricks to facilitate desirable syntax for your DSL.
Using Aspects for Language Portability (SCAM 2010)lennartkats
Software platforms such as the Java Virtual Machine or the CLR .NET virtual machine have their own ecosystem of a core programming language or instruction set, libraries, and developer community. Programming languages can target multiple software platforms to increase interoperability or to boost performance. Introducing a new compiler backend for a language is the first step towards targeting a new platform, translating the language to the platform\'s language or instruction set. Programs written in modern languages generally make extensive use of APIs, based on the runtime system of the software platform, introducing additional portability concerns. They may use APIs that are implemented by platform-specific libraries. Libraries may perform platform-specific operations, make direct native calls, or make assumptions about performance characteristics of operations or about the file system. This paper proposes to use aspect weaving to invasively adapt programs and libraries to address such portability concerns, and identifies four classes of aspects for this purpose. We evaluate this approach through a case study where we retarget the Stratego program transformation language towards the Java Virtual Machine.
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)jaxLondonConference
Presented at JAX London 2013
Worried about the future of Java? Want to see it keep moving forward? Don't be concerned. The transformation of Java is already underway. Driven by new technologies and new opportunities Java and the JVM are entering uncharted worlds and challenging old approaches. In this session learn about one such expedition in the form of an introductory talk to technology being developed by IBM. This experimental technology is exploring a new way to share data between the JVM and other runtimes.
High-level Programming Languages: Apache Pig and Pig LatinPietro Michiardi
This slide deck is used as an introduction to the Apache Pig system and the Pig Latin high-level programming language, as part of the Distributed Systems and Cloud Computing course I hold at Eurecom.
Course website:
http://michiard.github.io/DISC-CLOUD-COURSE/
Sources available here:
https://github.com/michiard/DISC-CLOUD-COURSE
External or internal domain-specific languages (DSLs) or (fluent)
APIs? Whoever you are – a developer or a user of a DSL –
you usually have to choose side; you should not! What about
metamorphic DSLs that change their shape according to your
needs? Our 4-years journey of providing the "right" support
(in the domain of feature modeling), led us to develop an external
DSL, different shapes of an internal API, and maintain
all these languages. A key insight is that there is no one-size-fits-
all solution or no clear superiority of a solution compared
to another. On the contrary, we found that it does make sense
to continue the maintenance of an external and internal DSL.
Based on our experience and on an analysis of the DSL engineering
field, the vision that we foresee for the future of
software languages is their ability to be self-adaptable to the
most appropriate shape (including the corresponding integrated
development environment) according to a particular
usage or task. We call metamorphic DSL such a language,
able to change from one shape to another shape.
The talk has been presented at SPLASH conference in Portland (USA), Onward! Essays track.
Paper is here: https://hal.archives-ouvertes.fr/hal-01061576/fr
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Højniveau sprog til indlejrede systemer den 11. november 2009.
Læs mere om interessegruppen på http://www.infinit.dk/dk/interessegrupper/hoejniveau_sprog_til_indlejrede_systemer/
Metaprogramming is a way by which programs can inspect and generate programs. Ruby language provides powerful features for metaprogramming. This presentation discusses some of these features.
Concurrency Programming in Java - 01 - Introduction to Concurrency ProgrammingSachintha Gunasena
This session discusses a basic high-level introduction to concurrency programming with Java which include:
programming basics, OOP concepts, concurrency, concurrent programming, parallel computing, concurrent vs parallel, why concurrency, real world example, terms, Moore's Law, Amdahl's Law, types of parallel computation, MIMD Variants, shared memory model, distributed memory model, client server model, scoop mechanism, scoop preview - a sequential program, in a concurrent setting - using scoop, programming then & now, sequential programming, concurrent programming,
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
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.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
4. Computers for a long while looked like this
“Computers are grey boxes full of black smoke.
When the black smoke escapes
The computer doesn’t work anymore”
- Anonymous computer science student
4
7. A programmer’s view of
computers
This model was pretty accurate in 1985.
Processors (386, ARM, MIPS, SPARC) all ran at 1–10MHz clock
speed and could access external memory in 1 cycle; and most
instructions took 1 cycle.
Indeed the C language was as expressively time-accurate as a
language could be: almost all C operators took one or two cycles.
But this model is no longer accurate!
7
8. A modern view of memory timings
So what happened?
On-chip computation (clock-speed) sped up faster (1985–2005) than offchip communication (with memory) as feature sizes shrank.
The gap was filled by spending transistor budget on caches which
(statistically) filled the mismatch until 2005 or so.
Techniques like caches, deep pipelining with bypasses, and
superscalar instruction issue burned power to preserve our illusions.
2005 or so was crunch point as faster, hotter, single-CPU Pentiums
were scrapped. These techniques had delayed the inevitable.
8
9. The Current Mainstream Processor
Will scale to 2, 4 maybe 8 processors.
But ultimately shared memory becomes the bottleneck (1024 processors?!?).
9
… introduce NUMA (Non Uniform Memory Access) …
10. Hardware is getting more diverse
• Cell
– Multi-core with 1 PPC + 8(6) SPE (SIMD)
– 3 level memory hierarchy
– broadcast communication
• GPU
– 256 SIMD HW treads
– Data parallel memory
10
11. SpiNNaker
• 1 million core machine
• Globally Asynchronous Locally Synchronous (GALS)
• Project lead: Steven Furber, Manchester U.
11
12. The IT industry wakeup call
“Multicore: This is the one which will have the biggest impact on us.
We have never had a problem to solve like this.
A breakthrough is needed in how applications are done on multicore devices.”
– Bill Gates, Microsoft Faculty Summit in 2008
• The super computing community
discovered the change in hardware first
– Already in the mid-late 80’ies
• Mainstream of the computing industry is
frantically working on the problem
• Embedded systems:
– Some have started to worry
12
13. Consequences of the changing HW
• To use the new hardware efficiently:
– Algorithms should do most work on local data !!
– Programmers need to
•
•
•
•
make decisions on parallel execution
know what is local and what is not
need to deal with communication
Know on which core to run
– Programmers have to exploit:
• Data Parallelism and memory parallelism
• Task parallelism and instruction parallelism
– Programmers need to make decisions on resources:
• changing the clock speed, energy aware, money aware
13
14. But how can the poor programmer
ensure this?
• The programmer can struggle on using C/C++
with a bewildering set of libraries and variants:
– POSIX threads, OpenMPI, OpenMP, CUDA, …
ALTERNATIVELY
• New programming model(s) reflecting the new
world are called for
• New programming language constructs are
needed
• New analysis tools to help programmers are
needed
• (New development methods are needed)
14
15. Three Trends
• Declarative programming languages in
vogue again
– Especially functional
• Dynamic programming languages are
gaining momentum
• Concurrent programming languages are
back on the agenda
15
16. Declarative Programming
• Lots of talk about declarative languages:
– Haskell
– Scheme, Lisp, Clojure
– F#, O’Caml, SML
– Scala, Fortress
• Lots of talk about declarative constructs in
traditional languages
– C# (and Java and C++)
16
17. What do we mean by
declarative/functional?
• Say what you want, without saying how
Or as Anders Heilsberg, Inventor of C#, puts it:
”programmers need to talk less about how to do
things and more about what they want done and
have computers reason it out."
17
20. What do we mean by
declarative/functional?
• Say what you want, without saying how
•
•
•
•
•
•
Functions as first class entities
Lazy or(/and) eager evaluation
Pure vs. impure
Value oriented (vs. state oriented)
Pattern matching
Generics (or parametric polymorphism)
20
21. Mainstream programming is going
declarative
In 2005 Anders Heilsberg (designer of C#) said:
``Generally speaking, it's interesting to think about more
declarative styles of programming vs. imperative styles. ...
Functional programming languages and queries are
actually a more declarative style of programming''.
``programmers have to unlearn .. and to learn to trust that
when they're just stating the ``what''
The machine is smart enough to do the ``how'' the way they
want it done, or the most efficient way''. - Anders Hejlsberg
http://www.microsoft-watch.com/content/operating_systems/the_father_of_c_on_the_past_present_and_future_of_programming.html
21
22. C# 3.0 Features
–
–
–
–
–
–
–
–
–
–
–
Implicitly Typed Local Variables
Lambda Expressions
Anonymous Types
Expression Trees
Query Expressions
Extension Methods
Object Initializers
Collection Initializers
Iterators
Lazy streams
Nullable value types
– C# 2.0 already has:
• Generics
• Structured Value Types
• First class anonymous functions (called delegates)
22
23. F#
• A .NET language (developed by Don Syme)
– Functional language with .Net OO model
– Connects with all Microsoft foundation technologies
– 3rd official MS language shipped with VisualStudio since VS2010
• Aims to combine the best of Lisp, ML, Scheme, Haskell, in
the context of .NET
– Actually based on O’Caml
• Functional, math-oriented, scalable
• Aimed particularly at the "Symbolic Programming" niche at
Microsoft
23
24. Java Future
• Since its launch in 1995 Java has been
the darling of Industry and Academia
• Java is now almost 20 years old
• Pace of language innovation slowing down
– Java 6 SE released Dec. 2006
– Java 6 EE released Dec. 2009
• Java 7 SE / JDK 7
– Work started in 2006
– Forecast Feb. 2010
– Released July 28th, 2011
• Java 8 was expected in October 2012
24
25. Java 7 Features
•
•
•
•
•
•
•
Strings in switch
Automatic resource management in try-statement
Improved type inference for generic instance creation
Simplified varargs method invocation
Binary integer literals
Allowing underscores in numeric literals
Catching multiple exception types and rethrowing exceptions with
improved type checking
•
Lambda expressions postponed to Java 8 !!
25
26. Beyond Java
"A Conversation With Guy Steele Jr."
Dr. Dobb's Journal (04/05) Vol. 30, No. 4, P. 17; Woehr, Jack J.
Guy Steele theorizes that programming languages are
finite, and argues that the time is right for a successor
to Java, which has another two decades of life left. Sun
is investigating whether aligning programming
languages more closely to traditional mathematical
notation can reduce the burden for scientific
programmers
Guy Steele co-wrote the original Java specifications and in
1996 was awarded the ACM SIGPLAN Programming
Language Achievement Award. Steele is a distinguished
engineer and principal investigator at Sun Microsystems
Laboratories, where he heads the company's Programming
Language Research Group.
26
27. Fortress
•
One of the three languages DARPA spent 1BN$ on
– Actually SUN only got 49.7M$ (IBM and CRAY got the rest)
•
•
•
•
First class higher order functions
Type inference
Immutable and mutable variables
Traits
– Like Java interfaces with code, classes without fields
•
Objects
– Consist of fields and methods
•
Designed to be parallel unless explicit sequential
– For loops and generators, tuples
– Transactional Memory
– PGAS (Partitioned Global Address Space)
•
Runs on top of the JVM
27
28. Scala
•
Scala is an object-oriented and functional language which is
completely interoperable with Java
– Developed by Martin Odersky, EPFL, Lausanne, Switzerland
•
Uniform object model
–
–
–
–
•
•
•
Everything is an object
Class based, single inheritance
Mixins and traits
Singleton objects defined directly
Higher Order and Anonymous functions with Pattern matching
Genericity
Extendible
– All operators are overloadable, function symbols can be pre-, post- or
infix
– New control structures can be defined without using macros
28
29. Clojure
• Concurrent Lisp like language on JVM
– Developed by Rich Hickey
• Functions are first-class values
• Everything is an expression, except:
– Symbols
– Operations (op ...)
– Special operations:
• def if fn let loop recur do new . throw try set! quote var
• Code is expressed in data structures
– Clojure is homoiconic
homoiconicity is a property of some programming languages, in which the
primary representation of programs is also a data structure in a primitive type of
29
the language itself - Wikipedia
30. Dynamic Programming
• Lots of talk about dynamic languages
–
–
–
–
–
–
–
PhP, Perl, Ruby
JavaScript
Lisp/Scheme
Erlang
Groovy
Clojure
Python
• jPython for JVM and IronPyhon for .Net
• Real-programmers don’t need types
30
32. Dynamic Language characteristics
• (Perceived) to be less verbose
– Comes with good libraries/frameworks
•
•
•
•
Interpreted or JIT to bytecode
Eval: string -> code
REPL style programming
Embeddable in larger applications as scripting language
• Supports Higher Order Function!
• Object oriented
– JavaScript, Ruby and Python
– Based on Self resp. SmallTalk
• Meta Programming made easier
32
33. Dynamic Programming in C# 4.0
– Dynamic Lookup
• A new static type called: dynamic
• No static typing of operations with dynamic
• Exceptions on invalid usage at runtime
dynamic d = GetDynamicObject(…);
d.M(7); // calling methods
d.f= d.P; // getting and settings fields and properties
d[“one”] = d[“two”]; // getting and setting thorughindexers
Int i= d + 3; // calling operators
string s = d(5,7); // invoking as a delegate
– Optional and Named Parameters
– COM interop features
– (Co-and Contra-variance)
33
34. Concurrent Programming
• Lots of talk about Erlang
• Fortress, X10 and Chapel
• Clojure
• Actors in Scala
• Java.util.concurrency
•
•
•
•
C omega
F# / Axum
.Net Parallel Extensions
C# 5.0 async
34
35. The problem with Threads
• Threads
–
–
–
–
Program counter
Own stack
Shared Memory
Create, start (stop), yield ..
• Locks
– Wait, notify, notifyall
– manually lock and unlock
• or implicit via synchronized
– lock ordering is a big problem
– Granularity is important
– Not compositional
35
36. Several directions
• (Software) Transactional Memory
– Enclose code in begin/end blocks or atomic
blocks
– Variations
• specify manual abort/retry
• specify an alternate path (way of controlling
manual abort)
– Java STM2 library
– Clojure, Fortress, X10, Chapel
36
39. Problems with Actor like models
•
•
•
•
Actors (Agents, Process or Threads) are not free
Message sending is not free
Context switching is not free
Still need Lock acquire/release at some level
and it is not free
• Multiple actor coordination
– reinvent transactions?
– Actors can still deadlock and starve
– Programmer defines granularity by choosing what is
an actor
39
41. Other concurrency models
• Dataflow
– Stream Processing Functions
• Futures
• Tuple Spaces
• Stop gap solutions based on parallelised
libraries and (embedded) DSLs e.g. for GPU
• Lots of R&D (again) in this area!!!
41
42. Other trends worth watching
• Development methods
–
–
–
–
–
Away from waterfall, top-down
Towards agile/XP/Scrum
Refactoring
Frameworks, Patterns
test-driven-development
• Tools
– Powerful IDEs with plug-ins
– Frameworks
– VM and OS integrations
• MS PowerShell, v8 in Android
42
43. Other trends worth watching
• Semantics is back on the agenda
– SOS/Calculi for Fortress, Scala, F# … (java and C#)
• Even C/C++ now described using SOS !
– Advanced type systems and type inference
• Program Analysis and verification
–
–
–
–
–
–
JML and SPEC# (Design by contract)
SPIN, Blast
ProVerif (Microsoft)
JavaPathfinder (NASA, Fujitsu)
WALA (IBM), Soot Framework
UPPAAL
43
44. Programming multi-core
•
•
•
•
•
Understanding of HW has (again) become necessary
New ways of programming is back on the agenda
Lots of new constructs in older programming languages
Lots of new programming languages
No unified approach to concurrency:
– Shared memory
– Message passing
– Hidden in well engineered libraries
• Many need to deal with resources
– Time, power, money
•
Worries about correct behaviours is more up-front
– Tools are entering mainstream
44
46. Embedded hard real-time
safety-critical systems
• Programmers
– Spilt the system into a set of handlers
– Deal explicitly with concurrency
– Need to make decisions on what is local and what is
not
– Need to deal with synchronizations and priorities
– Need to know about hardware
– Need to analyse resource use
• Time, memory, battery
– Need to ensure correct behaviour
46
47. Embedded hard real‐time
safety‐critical systems
– Nuclear Power plants, car‐control systems, aeroplanes etc.
– Embedded Systems
• Limited Processor power
• Limited memory
• Resources matter!
– Hard real‐time systems
• Timeliness
– Safety‐critical systems
• Functional correctness
– Grundfos pumps and SKOV pig farm air conditions
– Aalborg Industries (ship boilers) and Gomspace (satellites)
50. Java
• Most popular programming language ever !
– In 2005 Sun estimated 4.5 million Java
programmers
– In 2010 Oracle estimated 9 million Java
programmers
– 61% of all programmers are Java programmers
• Originally designed for settop‐boxes
• But propelled to popularity by the internet
http://jaxenter.com/how‐many‐java‐developers‐are‐there‐10462.html
51.
52. What is the problem with Java?
• Unpredictable performance
– Memory
• Garbage collected heap
– Control and data flow
•
•
•
•
Dynamic class loading
Recursion
Unbounded loops
Dynamic dispatch
– Scheduling
– Lack high resolution time
• JVM
– Good for portability – bad for predictability
54. Predictable JVM
• JOP
– Java Optimized Processor
– JVM in Hardware (FPGA)
• HVM
–
–
–
–
–
targeted at devices with 256 kB flash and 8kB of RAM
Interpreted or AOT compilering
1st level interupt handlers in Java
supports all Java byte codes, except float and double
Runs on ATmega2560, CR16C and x86
• JamaicaVM
– Industrial strength real‐time JVM from Aicas
– Enroute for Certification for use in Airplanes and Cars
56. What about Time Analysis?
• Traditional approaches to
analysis of RT systems are
hard and conservative
Utilisation-Based Analysis
• A simple sufficient but not necessary
schedulability test exists
U
N
i 1
Ci
N ( 2 1 / N 1)
Ti
U 0.69 as N
Where C is WCET and T is period
41
Response Time Equation
R
R i C i i C j
j hp ( i ) T
j
Where hp(i) is the set of tasks with priority higher than task i
Solve by forming a recurrence relationship:
w in 1 C
i
0
j hp ( i )
1
2
w in
Tj
C
j
n
The set of values wi , wi , wi ,..., wi ,.. is monotonically non decreasing
When win win 1 the solution to the equation has been found, wi0
must not be greater that Ri (e.g. 0 or Ci )
42
• Very difficult to use with
Java because of JVM (and
Object Orientedness)
57. Model based Analysis
– TIMES
• Model based schedulability tool based on UPPAAL
– WCA
• WCET analysis for JOP
– SARTS
• Schedulability on JOP
– TetaJ
• WCET analysis for SW JVM on Commodity HW
– TetaSARTS
• Schedulability analysis for SW JVM on Commodity HW and JOP
57
58. TetaJ
• WCET analysis tool
– taking Java portability into account
•
•
•
•
Analysis at method level
Can be used interactively
Takes VM into account
Takes HW into account
58
66. What about all the new declarative
and dynamic stuff?
• Higher Order Programming
– Elegant programming styles
– Harder to analyse control flow
– Usually implies use of GC
• Dynamic Programming
– Lots of run-time checks
– Harder to analyse type violations
66
67. Other trends worth watching
• Semantics is back on the agenda
– SOS/Calculi for java
– Advanced type systems and type inference
• Program Analysis and verification
–
–
–
–
–
JML (Design by contract)
Key (Aicas)
JavaPathfinder (NASA, Fujitsu)
WALA (IBM), Soot Framework
UPPAAL
67
68. Other trends worth watching
• Development methods
–
–
–
–
–
Away from waterfall, top-down
Towards agile/XP/Scrum
Refactoring
Frameworks, Patterns
test-driven-development
• Tools
– Powerful IDEs with plug-ins
– Frameworks
– VM and OS integrations
68
69. Are Safety Critical and Multicore
Converging Trends?
• I think the answer is yes
• Did I convince you?
• Questions – please !
• Thank you for your attention
69
70. Hardware support for CSP on a
Java chip multiprocessor
Flavius Gruian, Martin Schoeberl,
Hardware support for CSP on a Java chip multiprocessor,
Microprocessors and Microsystems, Volume 37, Issues 4–5, June–July 2013,
Pages 472-481, ISSN 0141-9331, http://dx.doi.org/10.1016/j.micpro.2012.08.004.
(http://www.sciencedirect.com/science/article/pii/S0141933112001585)
70