SET Meeting about "Programming with Scala - Object-Oriented Meets Functional" in Bangkok, Thailand
This presentation is a prequel to Brian's talk about Scala
Infos about the meeting
http://www.meetup.com/Software-Engineering-Thailand/events/222548484/
Get Python Training in Chennai from the experts. Greens Technology is the best Python Training institutes in Chennai located in OMR, Tambaram, Velachery and Anna Nagar. We provide Django and python courses in chennai to freshers and Working professionals.
While Python can be more user-friendly than Java, as it has a more intuitive coding style, both languages do have their unique advantages for developers and end users. However, if you are just beginning your path towards a programming career, you might want to start by learning Python, as it is less complex.
Semantic interoperability is essential on the Semantic Web to enable different information systems to exchange data. Such interoperability can be achieved by identifying similar information in heterogeneous ontologies. In this paper, we describe the Knowledge Organisation System Implicit Mapping (KOSIMap) framework, which differs from existing ontology mapping approaches by using description logic reasoning (i) to extract implicit information as background knowledge for every entity, and (ii) to remove inappropriate mappings from an alignment.
The results of our evaluation show that the use of Description Logic in the ontology matching task increases coverage.
Full text is available at http://bit.ly/cTqFHt.
Short introduction to Project Management and Scrum.
Meetup SET Software Engineering Thailand:
http://www.meetup.com/Software-Engineering-Thailand/events/223939279/
This presentation focus on the S.O.L.I.D. software engineering principles for object-oriented design. We will see and discuss the rule-set with simple examples. S.O.L.I.D. stands for
S – Single-responsiblity principle
O – Open-closed principle
L – Liskov substitution principle
I – Interface segregation principle
D – Dependency Inversion Principle
Meeting (Software Engineering Thailand) about Internet of Things, Internet of Everything, Physical Web, Smart home & Co in Bangkok on Feb. 29. I talked about the Big Picture, i.e. Industry 4.0 and some technological concepts. Then we took a look at IoT standards and products, e.g. The Kaa Project, IBM Bluemix, Carriots, Relayr etc. Later we discussed different aspects of IoT and Cloud Computing:
Průzkum informačních portálů v souvislosti s informacemi o VŠ v HolandskuMŠMT IPN KREDO
Specificky je průzkum zaměřen na dynamické informace napojené na autorizované zdroje informací (typicky ministerstva), které umožní vyhledávání a porovnávání jednotlivých institucí z hlediska zaměření, kvalit nebo místa výskytu.
V případě Holandska je vzdělávání propojeno s vlámskou komunitou v Belgii, jde zde o téměř identické odkazy. Téměř všechny další odkazy jsou ve vlámštině.
Valorizzazione cereali minori di montagna in provincia di bresciaMarco Garoffolo
In passato, l’importante ruolo svolto dalla coltivazione dei cereali minori (orzo, segale, grano saraceno, frumento ecc.) in zone di montagna - nel rifornimento di farine per il sostentamento delle popolazioni alpine - ha garantito per molti anni la gestione del
territorio. Le colture minori sono specie “antiche”, che hanno avuto un ruolo fondamentale nella storia dell’alimentazione umana, oltre a occupare una posizione strategica
nell’origine delle attuali forme coltivate. Purtroppo, dopo gli anni Cinquanta, la coltivazione dei cereali minori nelle zone di montagna è progressivamente calata, lasciando
spazio a colture più remunerative o, peggio ancora, all’abbandono. Tale evoluzione ha portato un cambiamento del paesaggio: là dove i campi sono pianeggianti sono
stati mantenuti a seminativo o a prato stabile; ma dove le caratteristiche pedologiche e strutturali (terreni poco fertili e con molto scheletro, pendenza elevata, difficoltà di accesso,
appezzamenti poco meccanizzabili) il terreno una volta seminato a segale o frumento ha lasciato il posto al rimboschimento delle superfici. Questo ha comportato un abbassamento della diversificazione visiva del paesaggio, con un impoverimento della
biodiversità vegetale e animale. I cereali minori possono essere definiti come piante rustiche, tolleranti a stress ambientali,
capaci di dare una produzione economicamente valida anche in condizioni di modesta fertilità del terreno. Hanno spesso pregevoli caratteristiche qualitative e nutrizionali, che ne fanno ingredienti principali in preparazioni dietetiche e salutistiche, in gradevoli
preparazioni culinarie attorno alle quali si muovono tradizioni popolari e usanze.
http://www.saporidivallecamonica.it/uploads/docs/512b37a2aade4.pdf
So what are the Food Trends For 2016?
Here is a short run down of what we believe lies ahead.
From "Eating with the eyes", "Food Tech", "Quick Refills", "Food Rescuers" right down to the "Experience Amplifyers", "Fresher than Fresh" and "Meal Planning &Food Pairing Apps", we hope you enjoy the read.
We "see" and use patterns every day - not only in software user interfaces. For example, doors and windows of a house follow a well known mechanism or "pattern' and a user expects the them to conform to certain behavioral characteristics like "open" or "close". Usability or HCI (Human Computer Interaction) Patterns are no different, they contribute to an intuitive, easy to use and consistent software user interface. In this talk you will learn what Usability Patterns are, how they can improve user interface design and lead to better user experience. Examples for web app and game patterns are presented and discussed with the audience.
Get Python Training in Chennai from the experts. Greens Technology is the best Python Training institutes in Chennai located in OMR, Tambaram, Velachery and Anna Nagar. We provide Django and python courses in chennai to freshers and Working professionals.
While Python can be more user-friendly than Java, as it has a more intuitive coding style, both languages do have their unique advantages for developers and end users. However, if you are just beginning your path towards a programming career, you might want to start by learning Python, as it is less complex.
Semantic interoperability is essential on the Semantic Web to enable different information systems to exchange data. Such interoperability can be achieved by identifying similar information in heterogeneous ontologies. In this paper, we describe the Knowledge Organisation System Implicit Mapping (KOSIMap) framework, which differs from existing ontology mapping approaches by using description logic reasoning (i) to extract implicit information as background knowledge for every entity, and (ii) to remove inappropriate mappings from an alignment.
The results of our evaluation show that the use of Description Logic in the ontology matching task increases coverage.
Full text is available at http://bit.ly/cTqFHt.
Short introduction to Project Management and Scrum.
Meetup SET Software Engineering Thailand:
http://www.meetup.com/Software-Engineering-Thailand/events/223939279/
This presentation focus on the S.O.L.I.D. software engineering principles for object-oriented design. We will see and discuss the rule-set with simple examples. S.O.L.I.D. stands for
S – Single-responsiblity principle
O – Open-closed principle
L – Liskov substitution principle
I – Interface segregation principle
D – Dependency Inversion Principle
Meeting (Software Engineering Thailand) about Internet of Things, Internet of Everything, Physical Web, Smart home & Co in Bangkok on Feb. 29. I talked about the Big Picture, i.e. Industry 4.0 and some technological concepts. Then we took a look at IoT standards and products, e.g. The Kaa Project, IBM Bluemix, Carriots, Relayr etc. Later we discussed different aspects of IoT and Cloud Computing:
Průzkum informačních portálů v souvislosti s informacemi o VŠ v HolandskuMŠMT IPN KREDO
Specificky je průzkum zaměřen na dynamické informace napojené na autorizované zdroje informací (typicky ministerstva), které umožní vyhledávání a porovnávání jednotlivých institucí z hlediska zaměření, kvalit nebo místa výskytu.
V případě Holandska je vzdělávání propojeno s vlámskou komunitou v Belgii, jde zde o téměř identické odkazy. Téměř všechny další odkazy jsou ve vlámštině.
Valorizzazione cereali minori di montagna in provincia di bresciaMarco Garoffolo
In passato, l’importante ruolo svolto dalla coltivazione dei cereali minori (orzo, segale, grano saraceno, frumento ecc.) in zone di montagna - nel rifornimento di farine per il sostentamento delle popolazioni alpine - ha garantito per molti anni la gestione del
territorio. Le colture minori sono specie “antiche”, che hanno avuto un ruolo fondamentale nella storia dell’alimentazione umana, oltre a occupare una posizione strategica
nell’origine delle attuali forme coltivate. Purtroppo, dopo gli anni Cinquanta, la coltivazione dei cereali minori nelle zone di montagna è progressivamente calata, lasciando
spazio a colture più remunerative o, peggio ancora, all’abbandono. Tale evoluzione ha portato un cambiamento del paesaggio: là dove i campi sono pianeggianti sono
stati mantenuti a seminativo o a prato stabile; ma dove le caratteristiche pedologiche e strutturali (terreni poco fertili e con molto scheletro, pendenza elevata, difficoltà di accesso,
appezzamenti poco meccanizzabili) il terreno una volta seminato a segale o frumento ha lasciato il posto al rimboschimento delle superfici. Questo ha comportato un abbassamento della diversificazione visiva del paesaggio, con un impoverimento della
biodiversità vegetale e animale. I cereali minori possono essere definiti come piante rustiche, tolleranti a stress ambientali,
capaci di dare una produzione economicamente valida anche in condizioni di modesta fertilità del terreno. Hanno spesso pregevoli caratteristiche qualitative e nutrizionali, che ne fanno ingredienti principali in preparazioni dietetiche e salutistiche, in gradevoli
preparazioni culinarie attorno alle quali si muovono tradizioni popolari e usanze.
http://www.saporidivallecamonica.it/uploads/docs/512b37a2aade4.pdf
So what are the Food Trends For 2016?
Here is a short run down of what we believe lies ahead.
From "Eating with the eyes", "Food Tech", "Quick Refills", "Food Rescuers" right down to the "Experience Amplifyers", "Fresher than Fresh" and "Meal Planning &Food Pairing Apps", we hope you enjoy the read.
We "see" and use patterns every day - not only in software user interfaces. For example, doors and windows of a house follow a well known mechanism or "pattern' and a user expects the them to conform to certain behavioral characteristics like "open" or "close". Usability or HCI (Human Computer Interaction) Patterns are no different, they contribute to an intuitive, easy to use and consistent software user interface. In this talk you will learn what Usability Patterns are, how they can improve user interface design and lead to better user experience. Examples for web app and game patterns are presented and discussed with the audience.
Του Ιάκωβου Κονιτόπουλου - από το Διήμερο αφιέρωμα της Στέγης Ελληνικών Χορωδιών στον Αλέξανδρο Ξένο Μουσουργό και Αγωνιστή της Εθνικής Αντίστασης
Περισσότερα:
http://www.stegi-chorus.gr/greek/stegi/ekdiloseis84.html
Some notes about programming in Scala: it covers Scala syntax and semantics, programming techniques, idioms, patterns. Many Scala features are introduced, from basic to intermediate and advanced. These are not introductory notes, but they assume a working knowledge with some other programming language (Java, C#, C++), object-oriented programming (OOP) concepts, and functional programming (FP) concepts.
Scala - The Simple Parts, SFScala presentationMartin Odersky
These are the slides of the talk I gave on May 22, 2014 to the San Francisco Scala user group. Similar talks were given before at GOTO Chicago, keynote, at Gilt Groupe and Hunter College in New York, at JAX Mainz and at FlatMap Oslo.
My presentation at Sulake (www.sulake.com) about functional programming languages and how to adopt a functional-style in Java development. I argue that functional programs are more robust than imperative ones.
Launch Your Streaming Platforms in MinutesRoshan Dwivedi
The claim of launching a streaming platform in minutes might be a bit of an exaggeration, but there are services that can significantly streamline the process. Here's a breakdown:
Pros of Speedy Streaming Platform Launch Services:
No coding required: These services often use drag-and-drop interfaces or pre-built templates, eliminating the need for programming knowledge.
Faster setup: Compared to building from scratch, these platforms can get you up and running much quicker.
All-in-one solutions: Many services offer features like content management systems (CMS), video players, and monetization tools, reducing the need for multiple integrations.
Things to Consider:
Limited customization: These platforms may offer less flexibility in design and functionality compared to custom-built solutions.
Scalability: As your audience grows, you might need to upgrade to a more robust platform or encounter limitations with the "quick launch" option.
Features: Carefully evaluate which features are included and if they meet your specific needs (e.g., live streaming, subscription options).
Examples of Services for Launching Streaming Platforms:
Muvi [muvi com]
Uscreen [usencreen tv]
Alternatives to Consider:
Existing Streaming platforms: Platforms like YouTube or Twitch might be suitable for basic streaming needs, though monetization options might be limited.
Custom Development: While more time-consuming, custom development offers the most control and flexibility for your platform.
Overall, launching a streaming platform in minutes might not be entirely realistic, but these services can significantly speed up the process compared to building from scratch. Carefully consider your needs and budget when choosing the best option for you.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
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!
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaYara Milbes
Discover the transformative power of the WhatsApp API in our latest SlideShare presentation, "Top 7 Unique WhatsApp API Benefits." In today's fast-paced digital era, effective communication is crucial for both personal and professional success. Whether you're a small business looking to enhance customer interactions or an individual seeking seamless communication with loved ones, the WhatsApp API offers robust capabilities that can significantly elevate your experience.
In this presentation, we delve into the top 7 distinctive benefits of the WhatsApp API, provided by the leading WhatsApp API service provider in Saudi Arabia. Learn how to streamline customer support, automate notifications, leverage rich media messaging, run scalable marketing campaigns, integrate secure payments, synchronize with CRM systems, and ensure enhanced security and privacy.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Globus Compute wth IRI Workflows - GlobusWorld 2024
SET Software Engineering Thailand Meeting: Functional Programming with Scala - Prequel
1. Meet-up, May 28, 2015, Launchpad, Bangkok
Roland Petrasch & Brian Topping
Welcome!
2. SET Meet-up
Programming with Scala
Agenda
SET — Software Engineering Thailand
Programming with Scala – Prequel
(speaker: Roland Petrasch)
Type Systems / Data Types
Functional Programming
Combination of OOP and FP
Programming with Scala -
Object-Oriented meets Functional
(Speaker: Brian Topping)
Discussion
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 2
Programming
Debugging
Debugging
Programming
3. SET — Software Engineering Thailand
The Interest Group from & (not only) for Developers
Open Group: Members, Sponsors and Organizers welcome
Next topics: HCI Patterns, Scrum, Model-Based UID, Agile Testing,
Software Architectures & Frameworks, S.O.L.I.D. & Co., UML ...
Contact
Roland Petrasch, Professor for Software Engineering
Thammasat University, Department of Computer Science,
Rangsit Campus, Pathum Thani
roland.petrasch@cs.tu.ac.th
roland.petrasch@gmail.com
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 3
4. Type system
Ruleset: assign types to variables, expressions, functions
Error prevention (type errors), e.g. float calculateThrust(Position p)
Other purposes: documentation, compiler optimization
Evolution
Type safety: type checking
During compile-time (static typing), e.g. C++, C#, Java, Scala
During run-time (dynamic typing), e.g. JavaScript, Ruby, Python
Combination, e.g. C# 4.0 (dynamic)
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 4
Untyped Primitive Data Types Abstract Data Types Classes …
Assembler Fortran, Pascal, C C++, Java, C#
5. JavaScript: dynamic typing, implicit type conversion, type inference
var five = '5', two = 2, sth;
sth = five * two; → 10
sth = five + two; → 52
sth = five + two * 5; → 510
sth = five + two * 5 + true; → 510true
sth = five + two * 5 + true / 10; → 5100.1
sth = (five + two * 5 + true) / 10; → NaN
Sth = 10 / 0; → Infinity
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 5
6. Type system
Type inference: automatically deduce the type at compile time
partly or completely, e.g. var i = 5; // inferred type: int
Type inference is not only a feature of dynamically typed languages
Static/dynamic typing and strong/weak typing are orthogonal:
Many discussions about strong and weak typing, no precise definition
Weak typing: use a value of one type as if it were a value of another type,
e.g. in C: char c = 'A'; c++; c=42;
or in JavaScript: var s = 'x' + 3; // get 'x3'
Strong typing
e.g. in Java: String s = "1" + ' ' * 2 + false; // 164false
int i = '3' * 2.2; // error
Importance of „strong” and semantically rich data types
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 6
To a C programmer
strong typing means
pressing the keys
harder
7. Data Types
Data Types and type checking is very (!) important
Example: float calculateThrust(Position p)
2 software components:
One is providing and another one is using
the calculateThrust function
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 7
Mars Lander by Brian McMullin
Source: Defense Intelligence
Agency, DoD, USA
ThrustContolUnit
NavigationSystem
calculateThrust(Position p)Call
Germany USA
The thrust is a float. A good data type? Yes? Okay? Right?
No: Sematics (unit) not clear: Can be „newton” (metric) or
„pound-force” (non metric) → sematically poor in this case
8. Semantically rich data types and error prevention
„NASA lost a $125 million Mars orbiter because one
engineering team used metric units while another
used English units for a key spacecraft operation.“
(http://edition.cnn.com/TECH/space/9909/30/mars.metric/)
Example 2.0:
Thrust calculateThrust(Position p)
A new data type Thrust is needed
class Thrust {
private Unit unit;
private Value value;
public float getValue(Unit unit) …
}
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 8
Mars Polar Lander
Source: NASA
9. Functional programming
Declarative programming paradigm
Evaluation of functions, avoids changing-state & mutable data,
eliminate side-effects
Functions: output depends only on input → error prevention
Example for side-effect in Java
int i=0;
if (true != false || ++i==0) { }
System.out.println(i); // i is 0
Based on lambda calculus for simple semantics for computation
Anonymous Functions (→ closures), no explicit names
Functions of a single input
Example (λx.x+1) 4 → 4+1 → 5
-function
-expression computaton
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 9
10. Functional programming
λ-Example 2.0
(λx.x+2)((λy.y*10)4)
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 10
Alonzo Church (1903–1995),
Photo: Wikipedia
"Answer to the Ultimate Question of
Life, the Universe, and Everything“
(The Hitchhiker's Guide to the Galaxy)
11. Combination of object-oriented and functional paradigms
OO and FP have similarities, e.g.
Expressive power (semantics)
Encapsulation of small parts (reduction of complexity)
Data types
...
OOP: High in cohesion (class consists of data and functions) and
low in coupling (classes should be independent as far as possible)
FP: Data is only loosely coupled to functions, functions hide their
implementation, immutability, no side-effects
Multi-paradigm languages like Scala combine the features from
object-oriented and functional paradigms
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 11
12. Combination of Object-oriented and Functional (object-functional)
OOP & FP are orthogonal concepts, i.e. they are not contradictory, e.g.
encapsulation, inheritance, polymorphism, abstration do not imply mutability
SET Meet-up
Programming with Scala - Prequel
Roland Petrasch28.5.2015, SET Meet-up
Programming with Scala - Prequel
Slide 12
calcValue
IntegerValue
Class
calcValue
OO: Every value is an object; attributes & behavior of an object are
described by a class; objects are instances of a class)
FP: Every function is a value; and every value is an object
→ so every function is an object
13. This was the little prequel,
thank you for your attention
SET Meet-up
Programming with Scala - Prequel
Brian Topping
Entrepreneurial, results-oriented architect
Developer and leader with > 20 years
experience
Companies: Apple, Oracle, Nokia, AT&T,
Intel and Bloomberg.
Dozens of programming & scripting
languages, OS, and IDE