skip to main content
Skip header Section
Programming in Scala: A Comprehensive Step-by-step GuideNovember 2008
Publisher:
  • Artima Incorporation
  • 883 S. Knickerbocker Dr.
  • Sunnyvale
  • CA
  • United States
ISBN:978-0-9815316-0-1
Published:26 November 2008
Pages:
776
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Programming in Scala is the definitive book on Scala, the new language for the Java Platform that blends object-oriented and functional programming concepts into a unique and powerful tool for developers. Coauthored by the designer of the Scala language, this authoritative book will teach you, one step at a time, the Scala language and the ideas behind it. The book is carefully crafted to help you learn. The first few chapters will give you enough of the basics that you can already start using Scala for simple tasks. The entire book is organized so that each new concept builds on concepts that came before - a series of steps that promises to help you master the Scala language and the important ideas about programming that Scala embodies. A comprehensive tutorial and reference for Scala, this book covers the entire language and important libraries.

Cited By

  1. Paulweber P, Pescosta E and Zdun U Structuring the State and Behavior of ASMs: Introducing a Trait-Based Construct for Abstract State Machine Languages Rigorous State-Based Methods, (237-243)
  2. Shukla N, Pandey M and Srivastava S (2019). Formal modeling and verification of software‐defined networks, International Journal of Network Management, 29:5, Online publication date: 12-Sep-2019.
  3. Filatov A and Mikheev V (2019). Quantitative Evaluation of Thread-Local Garbage Collection Efficiency for Java, Programming and Computing Software, 45:1, (1-11), Online publication date: 1-Jan-2019.
  4. ACM
    Newton J and Verna D Recognizing heterogeneous sequences by rational type expression Proceedings of the 3rd ACM SIGPLAN International Workshop on Meta-Programming Techniques and Reflection, (5-14)
  5. ACM
    Madhavan R, Kulal S and Kuncak V (2017). Contract-based resource verification for higher-order functions with memoization, ACM SIGPLAN Notices, 52:1, (330-343), Online publication date: 11-May-2017.
  6. ACM
    Madhavan R, Kulal S and Kuncak V Contract-based resource verification for higher-order functions with memoization Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, (330-343)
  7. ACM
    Lippe T, Smith T, Pelsmaeker D and Visser E A scalable infrastructure for teaching concepts of programming languages in Scala with WebLab: an experience report Proceedings of the 2016 7th ACM SIGPLAN Symposium on Scala, (65-74)
  8. ACM
    Lorenzen F and Erdweg S (2016). Sound type-dependent syntactic language extension, ACM SIGPLAN Notices, 51:1, (204-216), Online publication date: 8-Apr-2016.
  9. ACM
    Lorenzen F and Erdweg S Sound type-dependent syntactic language extension Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (204-216)
  10. Kordjamshidi P, Roth D and Wu H Saul Proceedings of the 24th International Conference on Artificial Intelligence, (1844-1851)
  11. ACM
    Deligiannis P, Donaldson A, Ketema J, Lal A and Thomson P (2015). Asynchronous programming, analysis and testing with state machines, ACM SIGPLAN Notices, 50:6, (154-164), Online publication date: 7-Aug-2015.
  12. ACM
    Deligiannis P, Donaldson A, Ketema J, Lal A and Thomson P Asynchronous programming, analysis and testing with state machines Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, (154-164)
  13. ACM
    Arslan M, Kuchcinski K, Gruian F and Liu Y Programming support for reconfigurable custom vector architectures Proceedings of the Sixth International Workshop on Programming Models and Applications for Multicores and Manycores, (49-57)
  14. Schellhorn G, Ernst G, Pfähler J, Haneberg D and Reif W Development of a Verified Flash File System Proceedings of the 4th International Conference on Abstract State Machines, Alloy, B, TLA, VDM, and Z - Volume 8477, (9-24)
  15. ACM
    Ray B, Posnett D, Filkov V and Devanbu P A large scale study of programming languages and code quality in github Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, (155-165)
  16. ACM
    Jonnalagedda M, Coppey T, Stucki S, Rompf T and Odersky M (2014). Staged parser combinators for efficient data processing, ACM SIGPLAN Notices, 49:10, (637-653), Online publication date: 31-Dec-2015.
  17. ACM
    Jonnalagedda M, Coppey T, Stucki S, Rompf T and Odersky M Staged parser combinators for efficient data processing Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, (637-653)
  18. ACM
    Béguet E and Jonnalagedda M Accelerating parser combinators with macros Proceedings of the Fifth Annual Scala Workshop, (7-17)
  19. ACM
    Weiher M and Hirschfeld R (2013). Polymorphic identifiers, ACM SIGPLAN Notices, 49:2, (61-72), Online publication date: 5-Feb-2014.
  20. ACM
    Darulova E and Kuncak V (2014). Sound compilation of reals, ACM SIGPLAN Notices, 49:1, (235-248), Online publication date: 13-Jan-2014.
  21. ACM
    Bodden E, Tanter É and Inostroza M (2014). Join point interfaces for safe and flexible decoupling of aspects, ACM Transactions on Software Engineering and Methodology, 23:1, (1-41), Online publication date: 1-Feb-2014.
  22. ACM
    Darulova E and Kuncak V Sound compilation of reals Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (235-248)
  23. Madhavan R and Kuncak V Symbolic Resource Bound Inference for Functional Programs Proceedings of the 16th International Conference on Computer Aided Verification - Volume 8559, (762-778)
  24. ACM
    De Koster J, Marr S, D'Hondt T and Van Cutsem T Tanks Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (61-68)
  25. ACM
    Weiher M and Hirschfeld R Polymorphic identifiers Proceedings of the 9th symposium on Dynamic languages, (61-72)
  26. ACM
    Isradisaikul C and Myers A (2013). Reconciling exhaustive pattern matching with objects, ACM SIGPLAN Notices, 48:6, (343-354), Online publication date: 23-Jun-2013.
  27. ACM
    Isradisaikul C and Myers A Reconciling exhaustive pattern matching with objects Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, (343-354)
  28. ACM
    Koksal A, Pu Y, Srivastava S, Bodik R, Fisher J and Piterman N (2013). Synthesis of biological models from mutation experiments, ACM SIGPLAN Notices, 48:1, (469-482), Online publication date: 23-Jan-2013.
  29. ACM
    Ichikawa K Powerful and seamless syntax extensions on a statically typed language Proceedings of the 12th annual international conference companion on Aspect-oriented software development, (41-42)
  30. ACM
    Koksal A, Pu Y, Srivastava S, Bodik R, Fisher J and Piterman N Synthesis of biological models from mutation experiments Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (469-482)
  31. Kuncak V, Mayer M, Piskac R and Suter P (2013). Functional synthesis for linear arithmetic and sets, International Journal on Software Tools for Technology Transfer (STTT), 15:5-6, (455-474), Online publication date: 1-Oct-2013.
  32. ACM
    Köksal A, Kuncak V and Suter P Constraints as control Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (151-164)
  33. ACM
    Köksal A, Kuncak V and Suter P (2012). Constraints as control, ACM SIGPLAN Notices, 47:1, (151-164), Online publication date: 18-Jan-2012.
  34. Fouquet F, Nain G, Morin B, Daubert E, Barais O, Plouzeau N and Jézéquel J An eclipse modelling framework alternative to meet the models@runtime requirements Proceedings of the 15th international conference on Model Driven Engineering Languages and Systems, (87-101)
  35. Wies T, Muñiz M and Kuncak V Deciding functional lists with sublist sets Proceedings of the 4th international conference on Verified Software: theories, tools, experiments, (66-81)
  36. ACM
    Kuncak V, Mayer M, Piskac R and Suter P (2012). Software synthesis procedures, Communications of the ACM, 55:2, (103-111), Online publication date: 1-Feb-2012.
  37. Rodriguez J and Lhoták O Actor-based parallel dataflow analysis Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software, (179-197)
  38. Köksal A, Kuncak V and Suter P Scala to the power of Z3 Proceedings of the 23rd international conference on Automated deduction, (400-406)
  39. Gvero T, Kuncak V and Piskac R Interactive synthesis of code snippets Proceedings of the 23rd international conference on Computer aided verification, (418-423)
  40. Suter P, Köksal A and Kuncak V Satisfiability modulo recursive programs Proceedings of the 18th international conference on Static analysis, (298-315)
  41. Rolf C and Kuchcinski K Distributed constraint programming with agents Proceedings of the Second international conference on Adaptive and intelligent systems, (320-331)
  42. Matiello P and Melo A PiStache Proceedings of the 14th Brazilian Symposium on Formal Methods, Foundations and Applications - Volume 7021, (76-91)
  43. Roverso R, El-Ansary S, Gkogkas A and Haridi S Mesmerizer Proceedings of the 4th International ICST Conference on Simulation Tools and Techniques, (506-515)
  44. ACM
    Kästner C, Giarrusso P, Rendel T, Erdweg S, Ostermann K and Berger T (2011). Variability-aware parsing in the presence of lexical macros and conditional compilation, ACM SIGPLAN Notices, 46:10, (805-824), Online publication date: 18-Oct-2011.
  45. ACM
    Darulova E and Kuncak V (2011). Trustworthy numerical computation in Scala, ACM SIGPLAN Notices, 46:10, (325-344), Online publication date: 18-Oct-2011.
  46. ACM
    Allende E and Fabry J Application optimization when using gradual typing Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, (1-6)
  47. ACM
    Kästner C, Giarrusso P, Rendel T, Erdweg S, Ostermann K and Berger T Variability-aware parsing in the presence of lexical macros and conditional compilation Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, (805-824)
  48. ACM
    Darulova E and Kuncak V Trustworthy numerical computation in Scala Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, (325-344)
  49. ACM
    Bodden E Closure joinpoints Proceedings of the tenth international conference on Aspect-oriented software development, (117-128)
  50. ACM
    Grech N, Rathke J and Fischer B (2010). JEqualityGen, ACM SIGPLAN Notices, 46:2, (177-186), Online publication date: 26-Jan-2011.
  51. ACM
    Ducournau R (2011). Implementing statically typed object-oriented programming languages, ACM Computing Surveys, 43:3, (1-48), Online publication date: 1-Apr-2011.
  52. Miller J, Han J and Hybinette M Using domain specific language for modeling and simulation Proceedings of the Winter Simulation Conference, (741-752)
  53. Hamza J, Jobstmann B and Kuncak V Synthesis for regular specifications over unbounded domains Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design, (101-109)
  54. Bracha G, von der Ahé P, Bykov V, Kashai Y, Maddox W and Miranda E Modules as objects in newspeak Proceedings of the 24th European conference on Object-oriented programming, (405-428)
  55. Haller P and Odersky M Capabilities for uniqueness and borrowing Proceedings of the 24th European conference on Object-oriented programming, (354-378)
  56. ACM
    Günther S and Cleenewerck T Design principles for internal domain-specific languages Proceedings of the 17th Conference on Pattern Languages of Programs, (1-35)
  57. ACM
    Brown R, Shoop E, Adams J, Clifton C, Gardner M, Haupt M and Hinsbeeck P Strategies for preparing computer science students for the multicore world Proceedings of the 2010 ITiCSE working group reports, (97-115)
  58. ACM
    Matsakis N and Gross T (2010). A time-aware type system for data-race protection and guaranteed initialization, ACM SIGPLAN Notices, 45:10, (634-651), Online publication date: 17-Oct-2010.
  59. ACM
    Ducournau R and Morandat F Towards a full multiple-inheritance virtual machine Proceedings of the Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems, (1-6)
  60. ACM
    Matsakis N and Gross T A time-aware type system for data-race protection and guaranteed initialization Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (634-651)
  61. ACM
    Grech N, Rathke J and Fischer B JEqualityGen Proceedings of the ninth international conference on Generative programming and component engineering, (177-186)
  62. ACM
    Kuncak V, Mayer M, Piskac R and Suter P (2010). Complete functional synthesis, ACM SIGPLAN Notices, 45:6, (316-329), Online publication date: 12-Jun-2010.
  63. ACM
    Kuncak V, Mayer M, Piskac R and Suter P Complete functional synthesis Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation, (316-329)
  64. ACM
    Suter P, Dotta M and Kuncak V (2010). Decision procedures for algebraic data types with abstractions, ACM SIGPLAN Notices, 45:1, (199-210), Online publication date: 2-Jan-2010.
  65. ACM
    Rudolph J and Thiemann P Mnemonics Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation, (15-24)
  66. ACM
    Suter P, Dotta M and Kuncak V Decision procedures for algebraic data types with abstractions Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (199-210)
  67. Kuncak V, Piskac R, Suter P and Wies T Building a calculus of data structures Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation, (26-44)
  68. ACM
    Cook W On understanding data abstraction, revisited Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, (557-572)
  69. ACM
    Cook W (2009). On understanding data abstraction, revisited, ACM SIGPLAN Notices, 44:10, (557-572), Online publication date: 25-Oct-2009.
  70. ACM
    Dubochet G and Odersky M Compiling structural types on the JVM Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, (34-41)
  71. ACM
    Naeem N and Lhoták O Efficient alias set analysis using SSA form Proceedings of the 2009 international symposium on Memory management, (79-88)
  72. Falcon J and Cook W Gel Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages, (58-77)
  73. Cunningham H and Church J (2009). Multiparadigm programming in Scala, Journal of Computing Sciences in Colleges, 24:5, (99-100), Online publication date: 1-May-2009.
  74. ACM
    Ducournau R (2008). Perfect hashing as an almost perfect subtype test, ACM Transactions on Programming Languages and Systems, 30:6, (1-56), Online publication date: 1-Oct-2008.
Contributors
  • Georgia Institute of Technology

Recommendations

Reviews

Diomidis Spinellis

Although writing a graphical user interface (GUI) spreadsheet application in 200 lines of code is certainly a tall order, this is exactly the example provided in the last chapter of this book. Many of Scala's features are described in the book, including the integration of functional and object-oriented programming; an advanced type system that allows for the enhancement of built-in types through traits; pattern-matching combinators; and a powerful event-handling abstraction. Of course, this is not a comprehensive list of Scala's strengths; in the new world of multicore processors, it provides a robust foundation for concurrent programming, by supporting immutable value types and adopting Erlang's actor mechanism. Scala also aids developers who rely on application programming interfaces (APIs), by making the corresponding code appear as a domain-specific language. Scala's type system also helps in this regard, by inferring types in the API client code, thereby reducing the verbosity associated with static typing. Furthermore, the type system promotes code robustness by handling null-like results. A carefully constructed class hierarchy gives all elements an object-like appearance, without sacrificing efficiency. Other powerful features of Scala that are explained in the book's 33 chapters include partially applied functions, lazy evaluation, nested packages, singleton objects, case classes, and native Extensible Markup Language (XML) support. As one can infer from the description above, Scala is a large and complex language. Although it is compatible with Java's ecosystem, Java programmers will have scores of new concepts to master, with the functional programming style being the most difficult and rewarding element. The larger examples included in the book effectively demonstrate the language's power, as well as the appropriate design and implementation techniques. Books that introduce a new programming language are in the unenviable position of being compared with Kernighan and Ritchie's classic work [1]. When compared to this exacting standard, the book has room for improvement. A machete-wielding editor could create a superior second edition by cutting back on comparisons with Java, implementation details, advocacy, footnotes, and the many examples of errors and suboptimal alternatives. Ideally, such an edition would also allow mere mortals to understand the language's more esoteric features, such as variance annotations and abstract members. In its current form, the book can admirably serve programmers, as it is a detailed and complete guide to an exciting new language. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.