Programming Concurrency on the JVM

Programming Concurrency on the JVM – Mastering Synchronization, STM, and Actors, Venkat Subramaniam, – 2011

Programmers will want to read this book. 250 pages.

  • The Power and Perils of Concurrency
  • Strategies for Concurrency
    • Division of Labor excerpt
    • Design Approaches
  • Modern Java/JDK Concurrency
    • Scalability and Thread Safety
    • Taming Shared Mutability excerpt
  • Software Transactional Memory
    • Introduction to Software Transactional Memory
    • STM in Clojure, Groovy, Java, JRuby, and Scala
  • Actor-Based Concurrency
    • Favoring Isolated Mutability excerpt
    • Actors in Groovy, Java, JRuby, and Scala
  • Epilogue
    • Zen of Programming Concurrency
  • Clojure Agents

Functional Programming for Java

Functional Programming for Java Developers Tools for Better Concurrency, Abstraction, and Agility, Dean Wampler, – 2011

Java programmers will want to read this book. The author also wrote the Scala book. Well writen, just 70 pages!

  • FP is more concise and modular than OOP
  • Java type design—such as avoiding nulls
  • data structures and algorithms using FP principles
  • the Actor model and software transactional memory
  • functional libraries and frameworks

Joe Celko’s SQL For Smarties

Joe Celko’s SQL For Smarties : advanced SQL programming, fourth ed. / Joe Celko, Morgan Kaufmann, 2011

If you can get past the cute title, this book is good. It is for advanced programmers, and assumes you have ‘at least a year of actual experience’. 800 pages. Contents:

1 – Databases versus File Systems
2 – Transactions and Concurrency Control
3 – Schema Level Objects
4 – Locating Data and Special Numbers
5 – Base Tables and Related Elements
6 – Procedural, Semiprocedural, and Declarative Programming
7 – Procedural Constructs
8 – Auxiliary Tables
9 – Normalization
10 – Numeric Data Types
11 – Temporal Data Types
12 – Character Data Types
13 – NULLs: Missing Data in SQL
14 – Multiple Column Data Elements
15 – Table Operations
16 – Comparison or Theta Operators
17 – Valued Predicates
18 – CASE Expressions
19 – LIKE and SIMILAR TO Predicates
20 – BETWEEN and OVERLAPS Predicates
21 – The [NOT] IN() Predicate
22 – EXISTS() Predicate
23 – Quantified Subquery Predicates
24 – The Simple SELECT Statement
25 – Advanced SELECT Statements
26 – Virtual Tables: VIEWs, Derived Tables, CTEs, and MQTs
27 – Partitioning Data in Queries
28 – Grouping Operations,
29 – Simple Aggregate Functions
30 – Advanced Grouping, Windowed Aggregation, and OLAP in SQL
31 – Descriptive Statistics in SQL
32 – Subsequences, Regions, Runs, Gaps, and Islands
33 – Matrices in SQL
34 – Set Operations
35 – Subsets
36 – Trees and Hierarchies in SQL
37 – Graphs in SQL
38 – Temporal Queries
39 – Optimizing SQL

Multicore Application Programming

Multicore Application Programming For Windows, Linux, and Oracle Solaris, Darryl Gove, Addison-Wesley (2011)

Hardware, processes, and threads
Coding for performance
Identifying opportunities for parallelism
Synchronization and data sharing
Using POSIX threads
Windows threading
Using automatic parallelization and OpenMP
Handcoded synchronization and sharing
Scaling with multicore processors
Other parallelization technologies
400 pages.

Professional F#

book cover

Professional F# 2.0, Ted Neward, 2011

F# is a high level language that makes good use of multicore processors, not requiring the programmer to put effort into synchronization. I would like to see benchmarks, because there must be considerable overhead. F# is a functional language, and its ancestor is OCaml. This book assumes a good knowledge of .net and has many code examples. Note: you can also use F# on Mono with Linux. 400 pages.