SlideShare a Scribd company logo
ERLANG
Operating Systems
PST22211- 2020
Dilshan Chathuranga
Hashani Sandunika
Ishan Suranga
Maduka Shashikani
Minoli Sachinthana
Osuri Dishmini
Pinindu Chethiya
Sandunika Hashani
Thisaru Dhanushika
Yalini Pushpakanthan
01
History01
Facts02
Syntax03
Uses04
Agenda
Style
05 Pros & Cons
02
In a nutshell, what is Erlang?
Erlang is a general-purpose programming language and runtime
environment. Erlang has built-in support for concurrency,
distribution and fault tolerance. Erlang is used in several large
telecommunication systems from Ericsson. Erlang is available
as open source from http://www.erlang.org.
03
The Founder
Along with Robert Virding and Mike
Williams in 1986, Armstrong develo
ped Erlang, which was released as o
pen source in 1998.
Joseph Leslie Armstrong (27
December 1950 – 20 April 2019)
was a computer scientist working
in the area of fault – tolerant
distributed systems. He is best
known as one of the co-designers
of the Erlang programming
language.
Joe
Armstrong
04
What is it ??
-----------------------------------------------------
• Erlang was designed with the aim of
improving the development of
telephony applications.
------------------------------------------------------
• The initial version of Erlang was
implemented in Prolog and was
influenced by the programming
language PLEX used in earlier
Ericsson exchanges.
------------------------------------------------------
• In 1992, work began on
the BEAM virtual machine (VM) which
compiles Erlang to C using a mix of
natively compiled code and threaded
code to strike a balance between
performance and disk space.
------------------------------------------------------
• According to Armstrong, the language
went from lab product to real
applications following the collapse of
the next-generation AXE
telephone named AXE-N in 1995.
The name Erlang,
attributed to Bjarne
Däcker, has been
presumed by those
working on the
telephony switches
(for whom the
language was
designed) to be a
reference to Danish
mathematician and
engineer Agner
Krarup Erlang and
a syllabic
abbreviation of
"Ericsson
Language".
05
• As a result, Erlang was chosen for the next
Asynchronous transfer mode (ATM)
exchange AXD.
• In 1998 Ericsson announced the AXD301
switch, containing over a million lines of
Erlang and reported to achieve a high
availability of nine “9” s.
• Shortly thereafter, Ericsson Radio Systems
banned the in-house use of Erlang for new
products, citing a preference for non-
proprietary languages. The ban caused
Armstrong and others to leave Ericsson.
• The implementation was open-sourced at the
end of the year. Ericsson eventually lifted the
ban and re-hired Armstrong in 2004.
• In 2006, native symmetric multiprocessing
support was added to the runtime system and
VM.
06
Timeline of Erlang
Ericsson CS
Lab formed
1984 1987 1991 1993 1994 1996
First fast
Implementation
First Product
Early Erlang
Prototype
Distributed
Erlang
Open telecom
platform
1998
Become open
Source
Future
07
#Facts
Contents Title
• In 2014, Ericsson reported Erlang was being used in
• its support nodes, and in GPRS ,3G and LTE mobile
networks worldwide and also by Nortel and T-Mobile.
• As Tim Bray, director of Web Technologies at Sun
Microsystems, expressed in his keynote at O’Reilly Open
Source Convention (OSCON) in July 2008:
• If somebody came to me and wanted to pay me a lot of money
to build a large scale message handling system that really had
to be up all the time, could never afford to go down for years at
a time, I would unhesitatingly choose Erlang to build it in.
• Erlang is the programming language used to code Whatsapp.
Contents Title Contents Title
08
Erlang Features
• Concurrency
• Fault tolerance
• Soft – Real time
• Distribution
• Hot code loading
• External Interfaces
• Platform Independent
09
Data Types
• Numbers: Integers and floats
• Atoms – similar to constants
(true and false are atoms)
• Funs – anonymous functions
• Sum = fun(X,Y) -> X+Y end.
• Sum(5,5)
• Tuples – Fixed amount of data.
Any item can be accessed in
constant time
• Lists – Group of data types;
varying amount. First item can
be accessed in constant time,
while other elements can be
accessed in O(n) time.
• Records – similar to structs in c
10
Syntax
11
Syntax
Hello World
You can simply impress your audience and add
a unique zing and appeal to your Presentations.
Content
Here
12
Recursive
Functions
-module(recursive).
-export([fact/1, qsort/1]).
fact(1) -> 1;
fact(N) -> N * fact(N - 1).
qsort([]) -> [];
qsort([H | T]) ->
qsort([X || X <- T, X < H])
++ [H] ++
qsort([X || X <- T, X >= H]).
• Recursive.erl
• Compile/Run
13
Guarded Commands
• Compare.erl
-module(guarded).
-export([gt/2]).
greaterThan(N, M) ->
if N > M -> true;
N < M -> false;
true -> equal
end.
while(N) when N == 5 ->
io:fwrite("~n~B ",[N]), while(N-
1);
while(N) when N > 0 ->
io:fwrite("~B ",[N]), while(N-1);
while(_) when true ->
done.
• Compile/Run
14
Who use Erlang
146 companies reportedly use Erlang in their tech stacks, including WhatsApp, Heroku, and thoughtbot.
15
Erlang Integrations
Rollbar, Google Code Prettify, Airbrake, Tile38, and Leptus are some of the popular tools that
integrate with Erlang. Here's a list of all 7 tools that integrate with Erlang.
16
Pros
&
Cons
Pros
• Simplicity
this is one of the most valuable characteristics of a language.it has a very
small set of syntactic primitives that can use. Even the concurrent aspect of
the language is done using just plain functions (with the exception of
the receive primitive).
Erlang's simplicity also makes it very understandable and fun to work
with.
• Managing Concurrency & Failure
Erlang concurrent programs can be built, scaled and distributed with
ease. Once you have the deployment and integration set up, scaling
Erlang nodes and spawning new Erlang processes on different
machines becomes easy. Erlang standard library provides easy-to-
use functions for this very purpose, so reaching parallelism is not only
cheap in terms of implementation but also elegant.
17
• When it comes to program failures Erlang also has your back. When spawning new
processes you are guaranteed to be notified about it to all the monitors and links
that were established. This allows to re-spawn any failed process automatically,
which is already part of the OTP standard library and the default way for structuring
Erlang applications.
Mature community
• One of the most important aspects to consider when trying to predict a technology's
future is to check the what kind of community that technology is being supported
and used by. We've all seen good technologies that end up being destroyed with
useless and buggy features; this is usually what a toxic community does.
• Erlang's community is small, mature and simplicity-driven, which protects it from
being destroyed. This is why Erlang benefits and robustness has lasted this long.
18
Pros
&
Cons
Cons
Setup
Setting up, provisioning and deploying Erlang applications can be hard
to understand and cumbersome. This is due to many reasons, one of the
most important ones being the lack of a proper and unique package
manager.
Also, the hot-reloading feature that Erlang provides by default is no
longer applicable is nowadays containerization of applications. Instead of
having to upload the new code and triggering a hot-reload, you would
just start up an new container and stop the one that's currently running.
The Docker-way of doing things differs a bit from the Erlang-way, so in
some cases, you may have to apply some hack-ish behavior for
deployments.
Types
Erlang is a dynamically-typed language, meaning that during the
compilation phase you won't get any type errors. Erlang's robustness
and failure handling makes errors during runtime a lot less costly.
19
Conclusion
All-in-all, Erlang does an almost-perfect job at
handling concurrency and the complexity involved
when dealing with it, including error handling,
concurrency guarantees and architectures
robustness. Even though it lacks some very useful
features used by many programming languages like
a proper package manager and a static type-checker,
it does not obfuscate its benefits. Erlang might not
be the right tool for every project, but it's definitely
very practical and safe working with it which makes
it worth considering it.
20
THANK YOU
21
Any Questions???

More Related Content

What's hot

ROS vs ROS2
ROS vs ROS2ROS vs ROS2
ROS vs ROS2
Asit Deva
 
ROS distributed architecture
ROS  distributed architectureROS  distributed architecture
ROS distributed architecture
Pablo Iñigo Blasco
 
ROS+Docker
ROS+DockerROS+Docker
ROS+Docker
Ruffin White
 
Ros with docker 20151107
Ros with docker  20151107Ros with docker  20151107
Ros with docker 20151107
Sejin Park
 
Guide to ROS tools
Guide to ROS tools Guide to ROS tools
Guide to ROS tools
Ashwin Rajendran
 
Simulating TUM Drone 2.0 by ROS
Simulating TUM Drone 2.0  by ROSSimulating TUM Drone 2.0  by ROS
Simulating TUM Drone 2.0 by ROS
esraatarekahmedhasansadek
 
Robot operating systems (ros) overview &
Robot operating systems (ros) overview &Robot operating systems (ros) overview &
Robot operating systems (ros) overview &
Piyush Chand
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
Sarah Dutkiewicz
 
Ceph Day Berlin: Community Update
Ceph Day Berlin:  Community UpdateCeph Day Berlin:  Community Update
Ceph Day Berlin: Community Update
Ceph Community
 
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
Kazushi Yamashina
 
cReComp : Automated Design Tool for ROS-Compliant FPGA Component
cReComp : Automated Design Tool  for ROS-Compliant FPGA Component cReComp : Automated Design Tool  for ROS-Compliant FPGA Component
cReComp : Automated Design Tool for ROS-Compliant FPGA Component
Kazushi Yamashina
 
Understanding Coroutine
Understanding CoroutineUnderstanding Coroutine
Understanding Coroutine
Justin Li
 
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
Kazushi Yamashina
 
The Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and PythonThe Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and Python
Esteve Fernández
 
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
Kazushi Yamashina
 
FIWARE Global Summit - FIROS: Helping Robots to be Context Aware
FIWARE Global Summit - FIROS: Helping Robots to be Context AwareFIWARE Global Summit - FIROS: Helping Robots to be Context Aware
FIWARE Global Summit - FIROS: Helping Robots to be Context Aware
FIWARE
 
FPGA処理をROSコンポーネント化する自動設計環境
FPGA処理をROSコンポーネント化する自動設計環境FPGA処理をROSコンポーネント化する自動設計環境
FPGA処理をROSコンポーネント化する自動設計環境
Kazushi Yamashina
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spaces
luccastera
 
Intro to KotlinNLP
Intro to KotlinNLPIntro to KotlinNLP
Intro to KotlinNLP
Matteo Grella
 
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
OpenEBS
 

What's hot (20)

ROS vs ROS2
ROS vs ROS2ROS vs ROS2
ROS vs ROS2
 
ROS distributed architecture
ROS  distributed architectureROS  distributed architecture
ROS distributed architecture
 
ROS+Docker
ROS+DockerROS+Docker
ROS+Docker
 
Ros with docker 20151107
Ros with docker  20151107Ros with docker  20151107
Ros with docker 20151107
 
Guide to ROS tools
Guide to ROS tools Guide to ROS tools
Guide to ROS tools
 
Simulating TUM Drone 2.0 by ROS
Simulating TUM Drone 2.0  by ROSSimulating TUM Drone 2.0  by ROS
Simulating TUM Drone 2.0 by ROS
 
Robot operating systems (ros) overview &
Robot operating systems (ros) overview &Robot operating systems (ros) overview &
Robot operating systems (ros) overview &
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
 
Ceph Day Berlin: Community Update
Ceph Day Berlin:  Community UpdateCeph Day Berlin:  Community Update
Ceph Day Berlin: Community Update
 
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
FPGAを用いた処理のロボット向けコンポーネントの設計生産性評価
 
cReComp : Automated Design Tool for ROS-Compliant FPGA Component
cReComp : Automated Design Tool  for ROS-Compliant FPGA Component cReComp : Automated Design Tool  for ROS-Compliant FPGA Component
cReComp : Automated Design Tool for ROS-Compliant FPGA Component
 
Understanding Coroutine
Understanding CoroutineUnderstanding Coroutine
Understanding Coroutine
 
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
FPGAの処理をソフトウェアコンポーネント化する設計ツールcReCompの高機能化の検討
 
The Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and PythonThe Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and Python
 
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
自律移動ロボット向けハード・ソフト協調のためのコンポーネント設計支援ツール
 
FIWARE Global Summit - FIROS: Helping Robots to be Context Aware
FIWARE Global Summit - FIROS: Helping Robots to be Context AwareFIWARE Global Summit - FIROS: Helping Robots to be Context Aware
FIWARE Global Summit - FIROS: Helping Robots to be Context Aware
 
FPGA処理をROSコンポーネント化する自動設計環境
FPGA処理をROSコンポーネント化する自動設計環境FPGA処理をROSコンポーネント化する自動設計環境
FPGA処理をROSコンポーネント化する自動設計環境
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spaces
 
Intro to KotlinNLP
Intro to KotlinNLPIntro to KotlinNLP
Intro to KotlinNLP
 
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
 

Similar to Erlang os

"erlang, webmail and hibari" at Rakuten tech talk
"erlang, webmail and hibari" at Rakuten tech talk"erlang, webmail and hibari" at Rakuten tech talk
"erlang, webmail and hibari" at Rakuten tech talk
CLOUDIAN KK
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlang
Mirko Bonadei
 
TDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação FuncionalTDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação Funcional
tdc-globalcode
 
Erlang sem enrolação
Erlang sem enrolaçãoErlang sem enrolação
Erlang sem enrolação
Felipe Mamud
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
Feng Yu
 
Erlang latest version & opensource projects
Erlang latest version & opensource projectsErlang latest version & opensource projects
Erlang latest version & opensource projects
Digikrit
 
NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
Torben Hoffmann
 
Introduction To Erlang Final
Introduction To Erlang   FinalIntroduction To Erlang   Final
Introduction To Erlang Final
SinarShebl
 
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
siouxhotornot
 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
Patrick Huesler
 
Keynote joearmstrong
Keynote joearmstrongKeynote joearmstrong
Keynote joearmstrong
Sentifi
 
TEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source securityTEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source security
Linaro
 
A sip of Elixir
A sip of ElixirA sip of Elixir
A sip of Elixir
Emanuele DelBono
 
Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"
EPAM Systems
 
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
Wangda Tan
 
Erlang
ErlangErlang
Erlang
ESUG
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
PROIDEA
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
Gianluca Padovani
 
Elixir
ElixirElixir
Learning Elixir as a Rubyist
Learning Elixir as a RubyistLearning Elixir as a Rubyist
Learning Elixir as a Rubyist
Alex Kira
 

Similar to Erlang os (20)

"erlang, webmail and hibari" at Rakuten tech talk
"erlang, webmail and hibari" at Rakuten tech talk"erlang, webmail and hibari" at Rakuten tech talk
"erlang, webmail and hibari" at Rakuten tech talk
 
An introduction to erlang
An introduction to erlangAn introduction to erlang
An introduction to erlang
 
TDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação FuncionalTDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação Funcional
 
Erlang sem enrolação
Erlang sem enrolaçãoErlang sem enrolação
Erlang sem enrolação
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
 
Erlang latest version & opensource projects
Erlang latest version & opensource projectsErlang latest version & opensource projects
Erlang latest version & opensource projects
 
NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
 
Introduction To Erlang Final
Introduction To Erlang   FinalIntroduction To Erlang   Final
Introduction To Erlang Final
 
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
Sioux Hot-or-Not: Functional programming: unlocking the real power of multi-c...
 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
 
Keynote joearmstrong
Keynote joearmstrongKeynote joearmstrong
Keynote joearmstrong
 
TEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source securityTEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source security
 
A sip of Elixir
A sip of ElixirA sip of Elixir
A sip of Elixir
 
Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"
 
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
Running Tensorflow In Production: Challenges and Solutions on YARN 3.x
 
Erlang
ErlangErlang
Erlang
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
 
Elixir
ElixirElixir
Elixir
 
Learning Elixir as a Rubyist
Learning Elixir as a RubyistLearning Elixir as a Rubyist
Learning Elixir as a Rubyist
 

Recently uploaded

9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
saastr
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 

Recently uploaded (20)

9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 

Erlang os

  • 1. ERLANG Operating Systems PST22211- 2020 Dilshan Chathuranga Hashani Sandunika Ishan Suranga Maduka Shashikani Minoli Sachinthana Osuri Dishmini Pinindu Chethiya Sandunika Hashani Thisaru Dhanushika Yalini Pushpakanthan 01
  • 3. In a nutshell, what is Erlang? Erlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson. Erlang is available as open source from http://www.erlang.org. 03
  • 4. The Founder Along with Robert Virding and Mike Williams in 1986, Armstrong develo ped Erlang, which was released as o pen source in 1998. Joseph Leslie Armstrong (27 December 1950 – 20 April 2019) was a computer scientist working in the area of fault – tolerant distributed systems. He is best known as one of the co-designers of the Erlang programming language. Joe Armstrong 04
  • 5. What is it ?? ----------------------------------------------------- • Erlang was designed with the aim of improving the development of telephony applications. ------------------------------------------------------ • The initial version of Erlang was implemented in Prolog and was influenced by the programming language PLEX used in earlier Ericsson exchanges. ------------------------------------------------------ • In 1992, work began on the BEAM virtual machine (VM) which compiles Erlang to C using a mix of natively compiled code and threaded code to strike a balance between performance and disk space. ------------------------------------------------------ • According to Armstrong, the language went from lab product to real applications following the collapse of the next-generation AXE telephone named AXE-N in 1995. The name Erlang, attributed to Bjarne Däcker, has been presumed by those working on the telephony switches (for whom the language was designed) to be a reference to Danish mathematician and engineer Agner Krarup Erlang and a syllabic abbreviation of "Ericsson Language". 05
  • 6. • As a result, Erlang was chosen for the next Asynchronous transfer mode (ATM) exchange AXD. • In 1998 Ericsson announced the AXD301 switch, containing over a million lines of Erlang and reported to achieve a high availability of nine “9” s. • Shortly thereafter, Ericsson Radio Systems banned the in-house use of Erlang for new products, citing a preference for non- proprietary languages. The ban caused Armstrong and others to leave Ericsson. • The implementation was open-sourced at the end of the year. Ericsson eventually lifted the ban and re-hired Armstrong in 2004. • In 2006, native symmetric multiprocessing support was added to the runtime system and VM. 06
  • 7. Timeline of Erlang Ericsson CS Lab formed 1984 1987 1991 1993 1994 1996 First fast Implementation First Product Early Erlang Prototype Distributed Erlang Open telecom platform 1998 Become open Source Future 07
  • 8. #Facts Contents Title • In 2014, Ericsson reported Erlang was being used in • its support nodes, and in GPRS ,3G and LTE mobile networks worldwide and also by Nortel and T-Mobile. • As Tim Bray, director of Web Technologies at Sun Microsystems, expressed in his keynote at O’Reilly Open Source Convention (OSCON) in July 2008: • If somebody came to me and wanted to pay me a lot of money to build a large scale message handling system that really had to be up all the time, could never afford to go down for years at a time, I would unhesitatingly choose Erlang to build it in. • Erlang is the programming language used to code Whatsapp. Contents Title Contents Title 08
  • 9. Erlang Features • Concurrency • Fault tolerance • Soft – Real time • Distribution • Hot code loading • External Interfaces • Platform Independent 09
  • 10. Data Types • Numbers: Integers and floats • Atoms – similar to constants (true and false are atoms) • Funs – anonymous functions • Sum = fun(X,Y) -> X+Y end. • Sum(5,5) • Tuples – Fixed amount of data. Any item can be accessed in constant time • Lists – Group of data types; varying amount. First item can be accessed in constant time, while other elements can be accessed in O(n) time. • Records – similar to structs in c 10
  • 12. Syntax Hello World You can simply impress your audience and add a unique zing and appeal to your Presentations. Content Here 12
  • 13. Recursive Functions -module(recursive). -export([fact/1, qsort/1]). fact(1) -> 1; fact(N) -> N * fact(N - 1). qsort([]) -> []; qsort([H | T]) -> qsort([X || X <- T, X < H]) ++ [H] ++ qsort([X || X <- T, X >= H]). • Recursive.erl • Compile/Run 13
  • 14. Guarded Commands • Compare.erl -module(guarded). -export([gt/2]). greaterThan(N, M) -> if N > M -> true; N < M -> false; true -> equal end. while(N) when N == 5 -> io:fwrite("~n~B ",[N]), while(N- 1); while(N) when N > 0 -> io:fwrite("~B ",[N]), while(N-1); while(_) when true -> done. • Compile/Run 14
  • 15. Who use Erlang 146 companies reportedly use Erlang in their tech stacks, including WhatsApp, Heroku, and thoughtbot. 15
  • 16. Erlang Integrations Rollbar, Google Code Prettify, Airbrake, Tile38, and Leptus are some of the popular tools that integrate with Erlang. Here's a list of all 7 tools that integrate with Erlang. 16
  • 17. Pros & Cons Pros • Simplicity this is one of the most valuable characteristics of a language.it has a very small set of syntactic primitives that can use. Even the concurrent aspect of the language is done using just plain functions (with the exception of the receive primitive). Erlang's simplicity also makes it very understandable and fun to work with. • Managing Concurrency & Failure Erlang concurrent programs can be built, scaled and distributed with ease. Once you have the deployment and integration set up, scaling Erlang nodes and spawning new Erlang processes on different machines becomes easy. Erlang standard library provides easy-to- use functions for this very purpose, so reaching parallelism is not only cheap in terms of implementation but also elegant. 17
  • 18. • When it comes to program failures Erlang also has your back. When spawning new processes you are guaranteed to be notified about it to all the monitors and links that were established. This allows to re-spawn any failed process automatically, which is already part of the OTP standard library and the default way for structuring Erlang applications. Mature community • One of the most important aspects to consider when trying to predict a technology's future is to check the what kind of community that technology is being supported and used by. We've all seen good technologies that end up being destroyed with useless and buggy features; this is usually what a toxic community does. • Erlang's community is small, mature and simplicity-driven, which protects it from being destroyed. This is why Erlang benefits and robustness has lasted this long. 18
  • 19. Pros & Cons Cons Setup Setting up, provisioning and deploying Erlang applications can be hard to understand and cumbersome. This is due to many reasons, one of the most important ones being the lack of a proper and unique package manager. Also, the hot-reloading feature that Erlang provides by default is no longer applicable is nowadays containerization of applications. Instead of having to upload the new code and triggering a hot-reload, you would just start up an new container and stop the one that's currently running. The Docker-way of doing things differs a bit from the Erlang-way, so in some cases, you may have to apply some hack-ish behavior for deployments. Types Erlang is a dynamically-typed language, meaning that during the compilation phase you won't get any type errors. Erlang's robustness and failure handling makes errors during runtime a lot less costly. 19
  • 20. Conclusion All-in-all, Erlang does an almost-perfect job at handling concurrency and the complexity involved when dealing with it, including error handling, concurrency guarantees and architectures robustness. Even though it lacks some very useful features used by many programming languages like a proper package manager and a static type-checker, it does not obfuscate its benefits. Erlang might not be the right tool for every project, but it's definitely very practical and safe working with it which makes it worth considering it. 20