, ,

Clojure Programming

Practical Lisp for the Java World

Specificaties
Paperback, 607 blz. | Engels
O'Reilly | 1e druk, 2012
ISBN13: 9781449394707
Rubricering
Hoofdrubriek : Computer en informatica
O'Reilly 1e druk, 2012 9781449394707
Verwachte levertijd ongeveer 16 werkdagen

Samenvatting

Why choose Clojure? This functional programming language not only lets you take advantage of Java Libraries, services, and other JVM resources, it rivals other dynamic languages such as Ruby and Python. With this comprehensive guide, you'll learn Clojure fundamentals with examples that relate it to languages you already know, in the domains and topic you work with daily.

Discover Clojure's flexibility in common tasks like web programming and working with the latest databases. You'll quickly learn how this language helps eliminate unnecessary complexity from your programming practice and opens up new options for solving challenging problems-including multithread programming.

- Use Clojure without losing your investment in the Java platform
- Understand the advantages of Clojure as an efficient Lisp for the JVM
- Learn how functional programming helps eliminate common bugs and faults
- Make concurrency and parallelism more tractable and reliable with battle-tested tools
- Eliminate the need for overley verbose and complicated design patterns
- Build abstraction with macros, data and protocols, and multimethods
- Deploy large web applications across hundreds of cloud nodes

Specificaties

ISBN13:9781449394707
Taal:Engels
Bindwijze:paperback
Aantal pagina's:607
Uitgever:O'Reilly
Druk:1

Over Chas Emerick

Chas Emerick is the founder of Snowtide Informatics, a small software company in Western Massachusetts where he is the technical lead for PDFTextStream, a PDF content extraction library for Java and .NET. He has been a consistent presence in the Clojure community since early 2008, has had contributions included in the core language, been involved in dozens of Clojure open source projects, and speaks regularly on Clojure, document automation technologies, and the business of software. Chas writes about Clojure, software development practices, entrepreneurship, and other passions at cemerick.com.

Andere boeken door Chas Emerick

Over Brian Carper

I've been a professional programmer since 2005, designing applications for data collection and analysis in psychological research. After a long journey through the lush gardens of Perl and Ruby, I chanced upon Clojure, and quickly fell in love. Since 2008, Clojure has been my secret weapon for data munging and web development. One of my favorite hobbies is attempting to communicate arcane technical information to people unfamiliar with it. I feel that a knack for clear communication is one of the most important and overlooked tools in a programmer's toolbox. My goal as an author is to spread the good news about Clojure in a way that's accessible to programmers of all backgrounds. I'm the creator of several Clojure projects including a Clojure-to-CSS compiler, an object-relational mapper and a blog engine; all can be found at https://github.com/briancarper. When I'm not coding, I can be found doing magic tricks with Vim and Emacs, practicing origami or blogging at http://briancarper.net. I currently live in British Columbia with my patient and forgiving wife.

Andere boeken door Brian Carper

Over Christophe Grand

Christophe Grand is an independent consultant, based near Lyon, France. He tutors, trains and codes primarily in Clojure. A participant in developing the core Clojure language, he also authored the Enlive and Moustache libaries and is a contributor to Counterclockwise, the Clojure IDE for Eclipse. Christophe writes on Clojure at clj-me.cgrand.net.

Andere boeken door Christophe Grand

Inhoudsopgave

1. Down the Rabbit Hole
-Why Clojure?
-Obtaining Clojure
-The Clojure REPL
-No, Parentheses Actually Won't Make You Go Blind
-Expressions, Operators, Syntax, and Precedence
-Homoiconicity
-The Reader
-Namespaces
-Symbol Evaluation
-Special Forms
-Putting It All Together
-This Is Just the Beginning

Part 1: Functional Programming and Concurrency
2. Functional Programming
-What Does Functional Programming Mean?
-On the Importance of Values
-First-Class and Higher-Order Functions
-Composition of Function(ality)
-Pure Functions
-Functional Programming in the Real World

3. Collections and Data Structures
-Abstractions over Implementations
-Concise Collection Access
-Data Structure Types
-Immutability and Persistence
-Metadata
-Putting Clojure's Collections to Work
-In Summary

4. Concurrency and Parallelism
-Shifting Computation Through Time and Space
-Parallelism on the Cheap
-State and Identity
-Clojure Reference Types
-Classifying Concurrent Operations
-Atoms
-Notifications and Constraints
-Refs
-Vars
-Agents
-Using Java's Concurrency Primitives
-Final Thoughts

Part 2: Building Abstractions
5. Macros
-What Is a Macro?
-Writing Your First Macro
-Debugging Macros
-Syntax
-When to Use Macros
-Hygiene
-Common Macro Idioms and Patterns
-The Implicit Arguments: &env and &form
-In Detail: -> and ->>
-Final Thoughts

6. Datatypes and Protocols
-Protocols
-Extending to Existing Types
-Defining Your Own Types
-Implementing Protocols
-Protocol Introspection
-Protocol Dispatch Edge Cases
-Participating in Clojure's Collection Abstractions
-Final Thoughts

7. Multimethods
-Multimethods Basics
-Toward Hierarchies
-Hierarchies
-Making It Really Multiple!
-A Few More Things
-Final Thoughts

Part 3: Tools, Platform, and Projects
8. Organizing and Building Clojure Projects
-Project Geography
-Build
-Final Thoughts

9. Java and JVM Interoperability
-The JVM Is Clojure's Foundation
-Using Java Classes, Methods, and Fields
-Handy Interop Utilities
-Exceptions and Error Handling
-Type Hinting for Performance
-Arrays
-Defining Classes and Implementing Interfaces
-Using Clojure from Java
-Collaborating Partners

10. REPL-Oriented Programming
-Interactive Development
-Tooling
-Debugging, Monitoring, and Patching Production in the REPL
-Limitations to Redefining Constructs
-In Summary

Part 4: Practicums
11. Numerics and Mathematics
-Clojure Numerics
-Clojure Mathematics
-Equality and Equivalence
-Optimizing Numeric Performance
-Visualizing the Mandelbrot Set in Clojure

12 Design Patterns
-Dependency Injection
-Strategy Pattern
-Chain of Responsibility
-Aspect-Oriented Programming
-Final Thoughts

13. Testing
-Immutable Values and Pure Functions
-clojure.test
-Growing an HTML DSL
-Relying upon Assertions

14. Using Relational Databases
-clojure.java.jdbc
-Korma
-Hibernate
-Final Thoughts

15. Using Nonrelational Databases
-Getting Set Up with CouchDB and Clutch
-Basic CRUD Operations
-Views
-_changes: Abusing CouchDB as a Message Queue
-À la Carte Message Queues
-Final Thoughts

16. Clojure and the Web
-The "Clojure Stack"
-The Foundation: Ring
-Routing Requests with Compojure
-Templating
-Final Thoughts

17. Deploying Clojure Web Applications
-Java and Clojure Web Architecture
-Running Web Apps Locally
-Web Application Deployment
-Going Beyond Simple Web Application Deployment

Part 5: Miscellanea
18. Choosing Clojure Type Definition Forms Wisely

19. Introducing Clojure into Your Workplace
-Just the Facts..
-Emphasize Productivity
-Emphasize Community
-Be Prudent

20. What's Next?
-(dissoc Clojure 'JVM)
-4Clojure
-Overtone
-core.logic
-Pallet
-Avout
-Clojure on Heroku

Index

Net verschenen

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Clojure Programming