Learn You Some Erlang for Great Good! : A Beginner's Guide. için kapak resmi
Learn You Some Erlang for Great Good! : A Beginner's Guide.
Başlık:
Learn You Some Erlang for Great Good! : A Beginner's Guide.
Yazar:
Hebert, Fred.
ISBN:
9781593275044
Yazar Ek Girişi:
Basım Bilgisi:
1st ed.
Fiziksel Tanımlama:
1 online resource (628 pages)
İçerik:
About the Author -- Foreword -- Preface -- To the Foreigner -- To the Erlang Regular -- To the Person Who Has Read This Online -- Acknowledgments -- Introduction -- So What's Erlang? -- Don't Drink Too Much Kool-Aid -- What You Need to Dive In -- Where to Get Help -- 1: Starting Out -- Using the Erlang Shell -- Entering Shell Commands -- Exiting the Shell -- Some Erlang Basics -- Numbers -- Invariable Variables -- Atoms -- Boolean Algebra and Comparison Operators -- Tuples -- Lists -- List Comprehensions -- Working with Binary Data -- Bit Syntax -- Bitwise Binary Operations -- Binary Strings -- Binary Comprehensions -- 2: Modules -- What Are Modules? -- Creating Modules -- Compiling Code -- Compiler Options -- Defining Macros -- More About Modules -- Metadata -- Circular Dependencies -- 3: Syntax in Functions -- Pattern Matching -- Fancier Patterns -- Variables in a Bind -- Guards, Guards! -- What the If ?! -- In case ... of -- Which Should We Use? -- 4: Types (or Lack Thereof) -- Dynamite-Strong Typing -- Type Conversions -- To Guard a Data Type -- For Type Junkies -- 5: Hello Recursion! -- How Recursion Works -- Length of a List -- Length of a Tail Recursion -- More Recursive Functions -- A Duplicate Function -- A Reverse Function -- A Sublist Function -- A Zip Function -- Quick, Sort! -- More Than Lists -- Thinking Recursively -- 6: Higher-Order Functions -- Let's Get Functional -- Anonymous Functions -- More Anonymous Function Power -- Function Scope and Closures -- Maps, Filters, Folds, and More -- Filters -- Fold Everything -- More Abstractions -- 7: Errors and Exceptions -- A Compilation of Errors -- Compile-Time Errors -- No, YOUR Logic Is Wrong! -- Runtime Errors -- Raising Exceptions -- Error Exceptions -- Exit Exceptions -- Throw Exceptions -- Dealing with Exceptions -- Handling Different Types of Exceptions -- After the Catch.

Trying Multiple Expressions -- Wait, There's More! -- Try a try in a Tree -- 8: Functionally Solving Problems -- Reverse Polish Notation Calculator -- How RPN Calculators Work -- Creating an RPN Calculator -- Testing the Code -- Heathrow to London -- Solving the Problem Recursively -- Writing the Code -- Running the Program Without the Erlang Shell -- 9: A Short Visit to Common Data Structures -- Records -- Defining Records -- Reading Values from Records -- Updating Records -- Sharing Records -- Key/Value Stores -- Stores for Small Amounts of Data -- Larger Dictionaries: Dicts and GB Trees -- A Set of Sets -- Directed Graphs -- Queues -- End of the Short Visit -- 10: The Hitchhiker's Guide to Concurrency -- Don't Panic -- Concurrency Concepts -- Scalability -- Fault Tolerance -- Concurrency Implementation -- Not Entirely Unlike Linear Scaling -- So Long and Thanks for All the Fish! -- Spawning Processes -- Sending Messages -- Receiving Messages -- 11: More on Multiprocessing -- State Your State -- We Love Messages, But We Keep Them Secret -- Time Out -- Selective Receives -- The Pitfalls of Selective Receives -- More Mailbox Pitfalls -- 12: Errors and Processes -- Links -- It's a Trap! -- Old Exceptions, New Concepts -- Monitors -- Naming Processes -- 13: Designing a Concurrent Application -- Understanding the Problem -- Defining the Protocol -- Lay Them Foundations -- An Event Module -- Events and Loops -- Adding An Interface -- The Event Server -- Handling Messages -- Hot Code Loving -- I Said, Hide Your Messages -- A Test Drive -- Adding Supervision -- Namespaces (or Lack Thereof) -- 14: An Introduction to OTP -- The Common Process, Abstracted -- The Basic Server -- Introducing the Kitty Server -- Generalizing Calls -- Generalizing the Server Loop -- Starter Functions -- Generalizing Kitty Server -- Specific vs. Generic -- Callback to the Future.

The init Function -- The handle_call Function -- The handle_cast Function -- The handle_info Function -- The terminate Function -- The code_change Function -- .BEAM Me Up, Scotty! -- 15: Rage Against the Finite-State Machines -- What Is a Finite-State Machine? -- Generic Finite-State Machines -- The init Function -- The StateName Function -- The handle_event Function -- The handle_sync_event Function -- The code_change and terminate Functions -- A Trading System Specification -- Show Me Your Moves -- Defining the State Diagrams and Transitions -- Game Trading Between Two Players -- The Public Interface -- FSM-to-FSM Functions -- The gen_fsm Callbacks -- That Was Really Something -- Fit for the Real World? -- 16: Event Handlers -- Handle This! *pumps shotgun* -- Generic Event Handlers -- The init and terminate Functions -- The handle_event Function -- The handle_call Function -- The handle_info Function -- The code_change Function -- It's Curling Time! -- The Scoreboard -- Game Events -- Alert the Press! -- 17: Who Supervises the Supervisors? -- Supervisor Concepts -- Using Supervisors -- Restart Strategies -- Restart Limits -- Child Specifications -- Band Practice -- Musicians -- Band Supervisor -- Dynamic Supervision -- Using Standard Supervisors Dynamically -- Using a simple_one_for_one Supervisor -- 18: Building an Application -- A Pool of Processes -- The Onion Layer Theory -- A Pool's Tree -- Implementing the Supervisors -- Working on the Workers -- Writing a Worker -- Run Pool Run -- Cleaning the Pool -- 19: Building Applications the OTP Way -- My Other Car Is a Pool -- The Application Resource File -- Converting the Pool -- The Application Behavior -- From Chaos to Application -- Library Applications -- 20: The Count of Applications -- From OTP Application to Real Application -- The Application File.

The Application Callback Module and Supervisor -- The Dispatcher -- The Counter -- Run App Run -- Included Applications -- Complex Terminations -- 21: Release Is the Word -- Fixing the Leaky Pipes -- Terminating the VM -- Updating the Application Files -- Compiling the Applications -- Releases with systools -- Creating a Boot File -- Packaging the Release -- Releases with Reltool -- Reltool Options -- Reltool Recipes -- Released from Releases -- 22: Leveling Up in the Process Quest -- The Hiccups of Appups and Relups -- The Ninth Circle of Erl -- Process Quest -- The regis-1.0.0 Application -- The processquest-1.0.0 Application -- The sockserv-1.0.0 Application -- The Release -- Making Process Quest Better -- Updating code_change Functions -- Adding Appup Files -- Upgrading the Release -- Relup Review -- 23: Buckets of Sockets -- IO Lists -- UDP and TCP: Bro-tocols -- UDP Sockets -- TCP Sockets -- More Control with Inet -- Sockserv, Revisited -- Where to Go from Here? -- 24: EUnited Nations Council -- EUnit-What's an EUnit? -- Test Generators -- Fixtures -- More Test Control -- Test Documentation -- Testing Regis -- He Who Knits EUnits -- 25: Bears, ETS, Beets: In-Memory NoSQL for Free! -- Why ETS -- The Concepts of ETS -- ETS Phone Home -- Creating and Deleting Tables -- Inserting and Looking Up Data -- Meeting Your Match -- You Have Been Selected -- DETS -- A Little Less Conversation, a Little More Action, Please -- The Interface -- Implementation Details -- 26: Distribunomicon -- This Is My Boomstick -- Fallacies of Distributed Computing -- The Network Is Reliable -- There Is No Latency -- Bandwidth Is Infinite -- The Network Is Secure -- Topology Doesn't Change -- There Is Only One Administrator -- Transport Cost Is Zero -- The Network Is Homogeneous -- Fallacies in a Nutshell -- Dead or Dead-Alive -- My Other Cap Is a Theorem -- Consistency.

Availability -- Partition Tolerance -- Zombie Survivors and CAP -- Setting Up an Erlang Cluster -- Through the Desert on a Node with No Name -- Connecting Nodes -- More Tools -- Cookies -- Remote Shells -- Hidden Nodes -- The Walls Are Made of Fire, and the Goggles Do Nothing -- The Calls from Beyond -- The net_kernel Module -- The global Module -- The rpc Module -- Burying the Distribunomicon -- 27: Distributed OTP Applications -- Adding More to OTP -- Taking and Failing Over -- The Magic 8 Ball -- Building the Application -- Making the Application Distributed -- 28: Common Test for Uncommon Tests -- What Is Common Test? -- Common Test Structure -- Creating a Simple Test Suite -- Running the Tests -- Testing with State -- Test Groups -- Defining Test Groups -- Test Group Properties -- The Meeting Room -- Test Suites Redux -- Test Specifications -- Specification File Contents -- Creating a Spec File -- Running Tests with a Spec File -- Large-Scale Testing -- Creating a Distributed Spec File -- Running Distributed Tests -- Integrating EUnit Within Common Test -- Is There More? -- 29: Mnesia and the Art of Remembering -- What's Mnesia? -- What Should the Store Store? -- The Data to Store -- Table Structure -- From Record to Table -- Of Mnesia Schemas and Tables -- Creating Tables -- Installing the Database -- Starting the Application -- Access and Context -- Reads, Writes, and More -- Implementing the First Requests -- A Test for Adding Services -- Tests for Lookups -- Accounts and New Needs -- Meet the Boss -- Deleting Stuff, Demonstrated -- Query List Comprehensions -- Remember Mnesia -- 30: Type Specifications and Dialyzer -- PLTs Are the Best Sandwiches -- Success Typing -- Type Inference and Discrepancies -- Typing About Types of Types -- Singleton Types -- Union and Built-in Types -- Defining Types -- Types for Records -- Typing Functions.

Typing Practice.
Özet:
Erlang is a functional programming language used by high paying companies such as Facebook and Amazon. Erlang is growing in popularity because it uniquely allows programmers to manage and modify running code live, thereby avoiding costly downtime. Erlang is also one of the few languages designed for concurrency, meaning it takes full advantage of all the processors in a single machine, or multiple machines connected in a cluster. In the spirit of Learn You a Haskell for Great Good! , Learn You Some Erlang for Great Good! is the highly anticipated book version of author Fred Hebert's extremely popular web tutorial. Hebert's conversational, matter-of-fact tone, novel illustrations, and sometimes unusual sense of humor make the sometimes dense language palatable and fun to learn. This text is a refreshing change from the typical programming book.
Notlar:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2017. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Yazar Ek Girişi:
Elektronik Erişim:
Click to View
Ayırtma: Copies: