Making Reliable Distributed Systems in the Presence of Sodware Errors Final Version (With Corrections) — Last Update 20 November 2003
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Introducing Elixir Getting Started in Functional Programming [St. Laurent & Eisenberg 2014-09-25].Pdf
Introducing Elixir Introducing Elixir Introducing Elixir is an excellent language if you want to learn about functional programming, and with this hands-on introduction, you’ll discover just how powerful and fun Elixir can be. This language combines the robust functional programming of Erlang with a syntax similar to Ruby, and includes powerful features for metaprogramming. This book shows you how to write simple Elixir programs by teaching one skill at a time. Once you pick up pattern matching, process-oriented programming, and other concepts, you’ll understand why Elixir makes it easier to build concurrent and resilient programs that scale up and down with ease. ■ Get comfortable with IEx, Elixir’s command-line interface ■ Discover atoms, pattern matching, and guards: the foundations of your program structure ■ Delve into the heart of Elixir with recursion, strings, lists, and higher-order functions ■ Create processes, send messages among them, and apply pattern matching to incoming messages ■ Store and manipulate structured data with Erlang Term Storage and the Mnesia database ■ Build resilient applications with Erlang’s Open Telecom Platform Introducing ■ Define macros with Elixir’s metaprogramming tools St. Laurent & Eisenberg Laurent St. Simon St. Laurent is a Strategic Content Director at O’Reilly Media, Inc., focusing primarily on web-related topics. He is co-chair of O’Reilly’s Fluent and OSCON conferences. Simon has written or co-written books, including Introducing Erlang, Learning Rails 3, and XML Pocket Reference, Third Edition (all O’Reilly). J. David Eisenberg is a programmer and instructor in San Jose, California, with a talent for teaching and explaining. -
Mnesia Database Management System (MNESIA)
Mnesia Database Management System (MNESIA) version 4.4 Typeset in LATEX from SGML source using the DocBuilder-0.9.8.5 Document System. Contents 1 Mnesia User’s Guide 1 1.1 Introduction.......................................... 1 1.1.1AboutMnesia..................................... 1 1.1.2TheMnesiaDataBaseManagementSystem(DBMS)............... 2 1.2 GettingStartedwithMnesia................................. 4 1.2.1StartingMnesiaforthefirsttime.......................... 4 1.2.2AnIntroductoryExample.............................. 5 1.3 BuildingAMnesiaDatabase................................. 14 1.3.1DefiningaSchema.................................. 15 1.3.2TheDataModel................................... 16 1.3.3StartingMnesia.................................... 16 1.3.4CreatingNewTables................................. 19 1.4 TransactionsandOtherAccessContexts.......................... 21 1.4.1TransactionProperties................................ 22 1.4.2Locking........................................ 23 1.4.3DirtyOperations................................... 27 1.4.4RecordNamesversusTableNames......................... 28 1.4.5ActivityConceptandVariousAccessContexts................... 30 1.4.6Nestedtransactions.................................. 32 1.4.7PatternMatching................................... 33 1.4.8Iteration........................................ 35 1.5 MiscellaneousMnesiaFeatures................................ 36 1.5.1Indexing........................................ 37 1.5.2DistributionandFaultTolerance......................... -
Implementing Erlang/OTP on Intel Galileo
DEGREE PROJECT, IN INFORMATION TECHNOLOGY, FIRST LEVEL STOCKHOLM, SWEDEN 2015-06-22 Implementing Erlang/OTP on Intel Galileo Paul Coada, Erkut Kaya KTH ROYAL INSTITUTE OF TECHNOLOGY INFORMATION AND COMMUNICATION TECHNOLOGY Abstract The Intel Galileo, inspired by the well-known Arduino board, is a development board with many possibilities because of its strength. The Galileo is has an Intel processor capable of running GNU/Linux and can be connected to the internet, which opens up the possibility to be controlled remotely. The programming language that comes with the Intel Galileo is the same as for the Arduino development boards, and is therefore very limited and does not utilize the Galileo’s entire strength. Our aim with this project is to integrate a more suitable programming language; a language that can make better use of the relatively powerful processor to control the components of the board. The programming language of choice is Erlang, and the reason is obvious. Erlang can be described as a process-oriented programming language based on the functional programming paradigm and its power in concurrency. The result of the project was the successful integration of a complete version of GNU/Linux on the board and the cross-compilation of Erlang/OTP onto the board. Having Erlang running on the system opens up many possibilities for future work, amongst all: creating Erlang programs for the Intel Galileo, integrating an effective API, and measuring the pros and cons of using Erlang on an Intel Galileo. Keywords Embedded, Arduino, multiprogramming, concurrency, Internet of Things, cross-compilation, API Sammanfattning Intel Galileo är ett utvecklingskort som bygger på Arduinos succé. -
Top Functional Programming Languages Based on Sentiment Analysis 2021 11
POWERED BY: TOP FUNCTIONAL PROGRAMMING LANGUAGES BASED ON SENTIMENT ANALYSIS 2021 Functional Programming helps companies build software that is scalable, and less prone to bugs, which means that software is more reliable and future-proof. It gives developers the opportunity to write code that is clean, elegant, and powerful. Functional Programming is used in demanding industries like eCommerce or streaming services in companies such as Zalando, Netflix, or Airbnb. Developers that work with Functional Programming languages are among the highest paid in the business. I personally fell in love with Functional Programming in Scala, and that’s why Scalac was born. I wanted to encourage both companies, and developers to expect more from their applications, and Scala was the perfect answer, especially for Big Data, Blockchain, and FinTech solutions. I’m glad that my marketing and tech team picked this topic, to prepare the report that is focused on sentiment - because that is what really drives people. All of us want to build effective applications that will help businesses succeed - but still... We want to have some fun along the way, and I believe that the Functional Programming paradigm gives developers exactly that - fun, and a chance to clearly express themselves solving complex challenges in an elegant code. LUKASZ KUCZERA, CEO AT SCALAC 01 Table of contents Introduction 03 What Is Functional Programming? 04 Big Data and the WHY behind the idea of functional programming. 04 Functional Programming Languages Ranking 05 Methodology 06 Brand24 -
Erlang – a Platform for Developing Distributed Software Systems
Erlang – a platform for developing distributed software systems Lars-Ake˚ Fredlund 1 / 55 Problems of distributed systems ■ Distributed programming is hard ■ Challenges for concurrency: ◆ process coordination and communication 2 / 55 Problems of distributed systems ■ Distributed programming is hard ■ Challenges for concurrency: ◆ process coordination and communication ■ And challenges for distributed software: ◆ heterogeneous systems ◆ security, reliability (lack of control) ◆ performance 2 / 55 Distributed Programming Today Todays contrasts: ■ Vision – easy programming of distributed systems ■ The nightmare/reality – Web services, XML, Apache, SOAP, WSDL, . ■ Why are Web services a nightmare? Too many standards, too many tools, too many layers, too complex! ■ Erlang is an Industrially proven solution for developing and maintaining demanding distributed applications ■ Good qualities of Erlang as a distributed systems platform: Complexity encapsulated in a programming language, good performance, efficient data formats, debuggable, not complex 3 / 55 Erlang as a component platform: a summary ■ Processes are the components 4 / 55 Erlang as a component platform: a summary ■ Processes are the components ■ Components (processes) communicate by binary asynchronous message passing 4 / 55 Erlang as a component platform: a summary ■ Processes are the components ■ Components (processes) communicate by binary asynchronous message passing ■ Component communication does not depend on whether components are located in the same node, or physically remote -
The Implementation and Use of a Generic Dataflow Behaviour in Erlang
The Implementation and Use of a Generic Dataflow Behaviour in Erlang Christopher Meiklejohn Peter Van Roy Basho Technologies, Inc. Universite´ catholique de Louvain Bellevue, WA, United States Louvain-la-Neuve, Belgium [email protected] [email protected] Abstract concurrent programming: developers author code that adheres to a 2 We propose a new “generic” abstraction for Erlang/OTP that aids in specific “behaviour” and these abstractions then provide a com- the implementation of dataflow programming languages and mod- mon way to supervise, manage, and reason about processing con- els on the Erlang VM. This abstraction simplifies the implemen- current messages to a single actor. tation of “processing elements” in dataflow languages by provid- We propose a new Erlang/OTP “generic” abstraction for dataflow ing a simple callback interface in the style of the gen server and programming on the Erlang VM called gen flow. This abstraction gen fsm abstractions. We motivate the use of this new abstraction allows for the arbitrary composition of stateful actors into larger by examining the implementation of a distributed dataflow pro- dataflow computations. This abstraction is sufficiently generic to gramming variant called Lasp. aid in the implementation of an arbitrary dataflow language in Erlang/OTP: we motivate the use of gen flow through the im- Categories and Subject Descriptors D.1.3 [Programming Tech- plementation of a deterministic distributed dataflow variant called niques]: Concurrent Programming; E.1 [Data Structures]: Dis- Lasp. [14, 15] tributed data structures This paper contains the following contributions: Keywords Dataflow Programming, Erlang, Concurrent Program- • gen flow abstraction: We propose gen flow, a new abstrac- ming tion in the style of the “generic” abstractions provided by Er- lang/OTP for building dataflow “processing elements.” 1. -
Francesco Cesarini, Simon Thompson — «Erlang Programming
Erlang Programming Francesco Cesarini and Simon Thompson Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo Erlang Programming by Francesco Cesarini and Simon Thompson Copyright © 2009 Francesco Cesarini and Simon Thompson. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected]. Editor: Mike Loukides Indexer: Lucie Haskins Production Editor: Sumita Mukherji Cover Designer: Karen Montgomery Copyeditor: Audrey Doyle Interior Designer: David Futato Proofreader: Sumita Mukherji Illustrator: Robert Romano Printing History: June 2009: First Edition. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Erlang Programming, the image of a brush-tailed rat kangaroo, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information con- tained herein. TM This book uses RepKover™, a durable and flexible lay-flat binding. ISBN: 978-0-596-51818-9 [M] 1244557300 Table of Contents Foreword . -
Elixir Language
Elixir Language #elixir Table of Contents About 1 Chapter 1: Getting started with Elixir Language 2 Remarks 2 Versions 2 Examples 2 Hello World 2 Hello World from IEx 3 Chapter 2: Basic .gitignore for elixir program 5 Chapter 3: Basic .gitignore for elixir program 6 Remarks 6 Examples 6 A basic .gitignore for Elixir 6 Example 6 Standalone elixir application 6 Phoenix application 7 Auto-generated .gitignore 7 Chapter 4: basic use of guard clauses 8 Examples 8 basic uses of guard clauses 8 Chapter 5: BEAM 10 Examples 10 Introduction 10 Chapter 6: Behaviours 11 Examples 11 Introduction 11 Chapter 7: Better debugging with IO.inspect and labels 12 Introduction 12 Remarks 12 Examples 12 Without labels 12 With labels 13 Chapter 8: Built-in types 14 Examples 14 Numbers 14 Atoms 15 Binaries and Bitstrings 15 Chapter 9: Conditionals 17 Remarks 17 Examples 17 case 17 if and unless 17 cond 18 with clause 18 Chapter 10: Constants 20 Remarks 20 Examples 20 Module-scoped constants 20 Constants as functions 20 Constants via macros 21 Chapter 11: Data Structures 23 Syntax 23 Remarks 23 Examples 23 Lists 23 Tuples 23 Chapter 12: Debugging Tips 24 Examples 24 Debugging with IEX.pry/0 24 Debugging with IO.inspect/1 24 Debug in pipe 25 Pry in pipe 25 Chapter 13: Doctests 27 Examples 27 Introduction 27 Generating HTML documentation based on doctest 27 Multiline doctests 27 Chapter 14: Ecto 29 Examples 29 Adding a Ecto.Repo in an elixir program 29 "and" clause in a Repo.get_by/3 29 Querying with dynamic fields 30 Add custom data types to migration and to schema -
The Implementation and Use of a Generic Dataflow Behaviour in Erlang
The Implementation and Use of a Generic Dataflow Behaviour in Erlang Christopher Meiklejohn Peter Van Roy Basho Technologies, Inc. Universite´ catholique de Louvain Bellevue, WA, United States Louvain-la-Neuve, Belgium [email protected] [email protected] Abstract concurrent programming: developers author code that adheres to a 2 We propose a new “generic” abstraction for Erlang/OTP that aids in specific “behaviour” and these abstractions then provide a com- the implementation of dataflow programming languages and mod- mon way to supervise, manage, and reason about processing con- els on the Erlang VM. This abstraction simplifies the implemen- current messages to a single actor. tation of “processing elements” in dataflow languages by provid- We propose a new Erlang/OTP “generic” abstraction for dataflow ing a simple callback interface in the style of the gen server and programming on the Erlang VM called gen flow. This abstraction gen fsm abstractions. We motivate the use of this new abstraction allows for the arbitrary composition of stateful actors into larger by examining the implementation of a distributed dataflow pro- dataflow computations. This abstraction is sufficiently generic to gramming variant called Lasp. aid in the implementation of an arbitrary dataflow language in Erlang/OTP: we motivate the use of gen flow through the im- Categories and Subject Descriptors D.1.3 [Programming Tech- plementation of a deterministic distributed dataflow variant called niques]: Concurrent Programming; E.1 [Data Structures]: Dis- Lasp. [14, 15] tributed data structures This paper contains the following contributions: Keywords Dataflow Programming, Erlang, Concurrent Program- • gen flow abstraction: We propose gen flow, a new abstrac- ming tion in the style of the “generic” abstractions provided by Er- lang/OTP for building dataflow “processing elements.” 1. -
Getting Started with Erlang
Getting Started with Erlang version 5.2 Typeset in LATEX from SGML source using the DOCBUILDER 3.2.2 Document System. Contents 1 Getting Started with Erlang 1 1.1 GettingStartedwithErlang................................. 1 1.1.1Introduction...................................... 1 1.1.2WorkingwithErlang................................. 2 1.1.3TheErlangShell................................... 5 1.1.4 Compiling . 13 1.1.5DebuggingwithPman................................ 16 1.1.6DistributedErlang.................................. 18 1.1.7Configuration..................................... 22 List of Figures 23 List of Tables 25 Bibliography 27 Getting Started with Erlang iii iv Getting Started with Erlang Chapter 1 Getting Started with Erlang 1.1 Getting Started with Erlang 1.1.1 Introduction This chapter describes the most common tasks users perform in Erlang/OTP and is intended for readers who are running Erlang/OTP for the first time. It also contains references to more detailed information. This manual assumes that you have another source of information about how the language Erlang works. The first chapter of the book Concurrent Programming in ERLANG,[Concurrent Programming in ERLANG [1]], is available online in PDF1 format. This manual will describe how to ¯ compile and run Erlang programs ¯ work with the Erlang shell, this is the most central part of the development environment ¯ use the basic tools, Debugger and Pman This manual will also describe differences in development environment on the Unix and Windows platforms. Manual conventions The following conventions are used to describe commands, which are entered from the keyboard in the Erlang shell, or on the Emacs command line: window-based ¯ to enter the command C-c: Press the Control key and the letter c simultaneously. C-c is equivalent to ^c. -
Go Big - Scaling Erlang
Informatix Solutions GO BIG - SCALING ERLANG Richard Croucher Page 1 © - Informatix Solutions, 2014 Version 1.0 Informatix Background and Biases – Richard Croucher Solutions • Platform architect • Chief Architect at Sun Microsystems where I helped create the dotcom deployment standard and designed and deployed a 1024 server cluster • Principle DevOPs Architect at Microsoft for all its Internet properties . Adding 4000 servers a month. Established the dynamic computing working group to create design patterns for Cloud computing • Primary focus over the last decade has been High Frequency Trading systems for Banks - pushing technology to extremes • Involved with several Cloud startups • Code in multiple languages • Transitioned through Assembler, Pascal, C, C++, Java , C# and Erlang • Love new technology and finding novel ways to use existing technologies • Degrees in Physics, Electronics and Materials Science • Elected Fellow of the British Computer Society and Fellow of STAC Research • See www.informatix-sol.com Page 2 © - Informatix Solutions, 2014 Version 1.0 Informatix My Erlang journey Solutions Wow! Erlang is great Page 3 © - Informatix Solutions, 2014 Version 1.0 Informatix My Erlang journey Solutions OTP has all I need Wow! Erlang is great Page 4 © - Informatix Solutions, 2014 Version 1.0 Informatix My Erlang journey Solutions c("tcp-test"). tcp-test.erl:4: bad module declaration Immutable variables take some getting used to OTP has Where’s ‘while’ all I OTP is so hard need Limited atoms Slow maths chatty Wow! OOM Erlang is great Page 5 © - Informatix Solutions, 2014 Version 1.0 Informatix My Erlang journey Solutions c("tcp-test"). tcp-test.erl:4: bad module declaration Immutable variables take some getting used to OTP has Where’s ‘while’ all I OTP is so hard need Limited atoms Slow maths chatty Wow! OOM Erlang is great Page 6 © - Informatix Solutions, 2014 Version 1.0 Informatix My Erlang journey Solutions c("tcp-test"). -
Elixir in Action
SECOND EDITION Saša Juric´ Sample Chapter MANNING Elixir in Action by Saša Jurić Chapter 1 Copyright 2019 Manning Publications brief contents 1 ■ First steps 1 2 ■ Building blocks 16 3 ■ Control flow 63 4 ■ Data abstractions 102 5 ■ Concurrency primitives 129 6 ■ Generic server processes 159 7 ■ Building a concurrent system 179 8 ■ Fault-tolerance basics 201 9 ■ Isolating error effects 224 10 ■ Beyond GenServer 251 11 ■ Working with components 277 12 ■ Building a distributed system 305 13 ■ Running the system 334 v First steps This chapter covers 1 ¡ Overview of Erlang ¡ Benefits of Elixir This is the beginning of your journey into the world of Elixir and Erlang, two effi- cient and useful technologies that can significantly simplify the development of large, scalable systems. Chances are, you’re reading this book to learn about Elixir. But because Elixir is built on top of Erlang and depends heavily on it, you should first learn a bit about what Erlang is and the benefits it offers. So let’s take a brief, high-level look at Erlang. 1.1 About Erlang Erlang is a development platform for building scalable and reliable systems that constantly provide service with little or no downtime. This is a bold statement, but it’s exactly what Erlang was made for. Conceived in the mid-1980s by Ericsson, a Swedish telecom giant, Erlang was driven by the needs of the company’s own tele- com systems, where properties like reliability, responsiveness, scalability, and con- stant availability were imperative. A telephone network should always operate 1 2 CHAPTER 1 First steps regardless of the number of simultaneous calls, unexpected bugs, or hardware and software upgrades taking place.