Great programmers aren’t born—they’re made. The industry is moving from object-oriented languages to functional languages, and you need to commit to radical improvement. New programming languages arm you with the tools and idioms you need to refine your craft. While other language primers take you through basic installation and “Hello, World,” we aim higher. Each language in Seven More Languages in Seven Weeks will take you on a step-by-step journey through the most important paradigms of our time. You’ll learn seven exciting languages: Lua, Factor, Elixir, Elm, Julia, MiniKanren, and Idris.
Just as each new spoken language can make you smarter and increase your options, each programming language increases your mental tool kit, adding new abstractions you can throw at each new problem. Knowledge is power. The Seven in Seven series builds on that power across many different dimensions. Each chapter in each book walks you through some nontrivial problem with each language, or database, or web server. These books take commitment to read, but their impact can be profound.
About this Book
- 350 pages
- Release: P1.0 (2014-11-18)
- ISBN: 978-1-94122-215-7
Learn from the award-winning programming series that inspired the Elixir language. Hear how other programmers across broadly different communities solve problems important enough to compel language development. Expand your perspective, and learn to solve multicore and distribution problems.
When you’re done, you’ll have written programs in five different programming paradigms that were written on three different continents. You’ll have explored four languages on the leading edge, invented in the past five years, and three more radically different languages, each with something significant to teach you.
Seven Lessons from Seven More Languages in Seven Weeks
With each passing day, it is becoming more likely that new programmers will use functional programming, an entirely new programming paradigm. Each of the new languages has something unique to teach the next generation of programmers.
1. To learn functional programming, learn functional composition first.
Programmers who want to improve themselves are learning functional programming in increasing numbers. Factor is a great language for learning about the composition of functions. The concatenative language forces new users to think through how functions will work together.
3. You don’t need callbacks to build a beautiful user interface.
4. To build better cloud applications, your applications need to know how to fail.
Applications are becoming more distributed than ever before. Elixir is among the most promising young languages for building cloud applications that scale well and handle failure in a sensible, reliable way. Elixir combines the natural syntax of Ruby with Clojure-style macros, all on the Erlang virtual machine for distribution and failover.
5. Technical computing will hit the limitations of multicore architectures before most other programming branches will.
Scientific computing is increasingly hitting a wall because existing languages don’t take full advantage of multicore architecture. The Julia language is growing quickly, allowing familiar programming approaches but enabling much more scalable and powerful mathematical models without dropping into C++.
6. Use logic programming when you need to build applications that “think.”
You don’t need to know Mercury or Prolog to write logic programs. If you find yourself needing to occasionally solve logic problems, use a library instead. MiniKanren is one such library that is available in languages like Haskell and Clojure.
7. You don’t need to use Haskell, Agda or Idris to take advantage of advanced type theory in your everyday job.
Sometimes, it’s hard to see the forest for the trees. Languages like Idris are excellent for reasoning about typing. You can build a type model in Idris and adapt it to a language like C++.
Contents and Extracts
- The Lay of the Land
- Bruce Tate (Elixir and Elm)
- Fred Daoud (Factor)
- Ian Dees (Lua, Idris)
- Jack Moffit (Julia, miniKanren)
- Who Should Read This Book
- A Final Charge
- Online Resources
- Day 1: The Call to Adventure
- Day 2: Tables All the Way Down
- Day 3: Lua and the World
- Wrapping Up Lua
- Day 1: Stack On, Stack Off
- Day 2: Painting the Fence
- Day 3: Balancing on a Boat
- Wrapping Up Factor
- Day 1: Handling the Basics
- Day 2: Taming Callbacks excerpt
- Day 3: It’s All a Game
- Wrapping Up Elm
- Day 1: Laying a Great Foundation excerpt
- Day 2: Controlling Mutations
- Day 3: Spawning and Respawning
- Wrapping Up Elixir
- Day 1: Unified Theories of Code
- Day 2: Mixing the Logical and Functional
- Day 3: Writing Stories with Logic excerpt
- Wrapping Up miniKanren
- Wrapping Up
Comments and Reviews
—Brian Sletten President, Bosatsu Consulting, Inc.
I’m tired of learning new programming languages and thought seven additional somewhat esoteric languages wouldn’t be very useful. I couldn’t have been more wrong. I loved it. The languages were suitably interesting and compellingly presented, and I now want to experiment with them.
—Evan Czaplicki Creator of Elm, Prezi
Languages are not just new syntax, they are new ways of thinking about problems. What is the best way to think about user interfaces or scientific computing or distributed systems or safety guarantees? As you dive into each of the languages in this book you will get a glimpse of new abstractions and principles that will help you write better programs in any language. Do it!
—Ted Neward Author, speaker, mentor, Neward and Associates, LLC
If you think reading a book about programming languages won’t change your thinking about programming, I dare you to read the chapter on Idris—unless the idea of reasoning about your C++ (or C# or Java) code more clearly and reducing hundreds or thousands of lines of code down to two is not appealing to you, of course.
—Paul Butcher Author of Seven Concurrency Models in Seven Weeks
Just as an artist’s choice of oil, acrylic, or watercolor paint constrains the range of effects they can achieve, the languages we choose constrain the programs we can write. Learning a new language enables you to both conceive new solutions and express them in new ways. Read this book to add seven particularly interesting languages to your repertoire.
—Matthew Wild Author, Prosody IM XMPP server
Seven More Languages in Seven Weeks is a well-paced introduction to a set of fascinating languages that will be new to many. This one goes at just the right tempo and provides enough detail to be useful—but not so much as to douse natural curiosity. Definitely a book I would recommend to others wanting to expand their programming horizons.
—Daniel Hinojosa Developer, speaker, instructor, author of Testing in Scala
Seven More Languages in Seven Weeks not only introduces us to a wide spectrum of languages, but also challenges us on how we think about language use and design. Software development is a demanding career and learning new languages will always be essential. That is why the Seven in Seven series is one of the most invaluable reads for any serious programmer.