Book picks similar to
SmallTalk, Objects, and Design by Chamond Liu
programming
computer-science
living-room
tech-languages
The Passionate Programmer
Chad Fowler - 2009
In this book, you'll learn how to become an entrepreneur, driving your career in the direction of your choosing. You'll learn how to build your software development career step by step, following the same path that you would follow if you were building, marketing, and selling a product. After all, your skills themselves are a product. The choices you make about which technologies to focus on and which business domains to master have at least as much impact on your success as your technical knowledge itself--don't let those choices be accidental. We'll walk through all aspects of the decision-making process, so you can ensure that you're investing your time and energy in the right areas. You'll develop a structured plan for keeping your mind engaged and your skills fresh. You'll learn how to assess your skills in terms of where they fit on the value chain, driving you away from commodity skills and toward those that are in high demand. Through a mix of high-level, thought-provoking essays and tactical "Act on It" sections, you will come away with concrete plans you can put into action immediately. You'll also get a chance to read the perspectives of several highly successful members of our industry from a variety of career paths. As with any product or service, if nobody knows what you're selling, nobody will buy. We'll walk through the often-neglected world of marketing, and you'll create a plan to market yourself both inside your company and to the industry in general. Above all, you'll see how you can set the direction of your career, leading to a more fulfilling and remarkable professional life.
Writing for Computer Science
Justin Zobel - 1997
For the most part the book is a discussion of good writing style and effective research strategies. Some of the material is accepted wisdom, some is controversial, and some is my opinions. Although the book is brief, it is designed to be comprehensive: some readers may be interested in exploring topics further, but for most readers this book should be suf?cient. The ?rst edition of this book was almost entirely about writing. This e- tion, partly in response to reader feedback and partly in response to issues that arose in my ownexperiences as an advisor, researcher, and referee, is also about research methods. Indeed, the two topics writing about and doing research are not clearly separated. It is a small step from asking how do I write? to askingwhatisitthatIwriteabout? As previously, the guidance on writing focuses on research, but much of the material is applicable to general technical and professional communication. Likewise, the guidance on the practice of research has broader lessons. A pr- titioner trying a new algorithm or explaining to colleagues why one solution is preferable to another should be con?dent that the arguments are built on robust foundations. And, while this edition has a stronger emphasis on research than did the ?rst, nothing has been deleted; there is additional material on research, but the guidance on writing has not been taken away."
14 Habits of Highly Productive Developers
Zeno Rocha - 2020
This book is a result of a quest. A quest to uncover what habits can be cultivated to become a better software engineer.
Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
Michael T. Nygard - 2007
Did you design your system to survivef a sudden rush of visitors from Digg or Slashdot? Or an influx of real world customers from 100 different countries? Are you ready for a world filled with flakey networks, tangled databases, and impatient users?If you're a developer and don't want to be on call for 3AM for the rest of your life, this book will help.In Release It!, Michael T. Nygard shows you how to design and architect your application for the harsh realities it will face. You'll learn how to design your application for maximum uptime, performance, and return on investment.Mike explains that many problems with systems today start with the design.
The Scheme Programming Language
R. Kent Dybvig - 1987
Many exercises are presented to help reinforce the lessons learned, and answers to the exercises are given in a new appendix.Most of the remaining chapters are dedicated to the reference material, which describes in detail the standard features of Scheme included in the Revised$^5$ Report on Scheme and the ANSI/IEEE standard for Scheme.Numerous examples are presented throughout the introductory and reference portions of the text, and a unique set of extended example programs and applications, with additional exercises, are presented in the final chapter. Reinforcing the book's utility as a reference text are appendices that present the formal syntax of Scheme, a summary of standard forms and procedures, and a bibliography of Scheme resources.The Scheme Programming Language stands alone as an introduction to and essential reference for Scheme programmers. it is also useful as a supplementary text for any course that uses Scheme.The Scheme Programming Language is illustrated by artist Jean-Pierre Hébert, who writes Scheme programs to extend his ability to create sophisticated works of digital art.R. Kent Dybvig is Professor of Computer Science at Indiana University and principal developer of Chez Scheme.
The Joy of Clojure
Michael Fogus - 2010
It combines the nice features of a scripting language with the powerful features of a production environment—features like persistent data structures and clean multithreading that you'll need for industrial-strength application development.The Joy of Clojure goes beyond just syntax to show you how to write fluent and idiomatic Clojure code. You'll learn a functional approach to programming and will master Lisp techniques that make Clojure so elegant and efficient. The book gives you easy access to hard soft ware areas like concurrency, interoperability, and performance. And it shows you how great it can be to think about problems the Clojure way. Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book. What's InsideThe what and why of ClojureHow to work with macrosHow to do elegant application designFunctional programming idiomsWritten for programmers coming to Clojure from another programming background—no prior experience with Clojure or Lisp is required.
JavaScript Enlightenment
Cody Lindley - 2012
In this concise book, JavaScript expert Cody Lindley (jQuery Cookbook) provides an accurate view of the language by examining its objects and supporting nuances.Libraries and frameworks help you build web applications quickly and efficiently, but when things go wrong or performance becomes an issue, knowing how and why they work is critical. If you're ready to go under the hood and get your hands dirty with JavaScript internals, this is your book. Get a short and digestible summary of ECMA-262, Edition 3, backed by real code you can run instantly Examine the creation of JavaScript objects Learn complex values, primitive values, scope, and inheritance Understand the importance of the head object Work with string, number, and Boolean objects and values Discover how to use the null value and the built-in math object Get into the details--beyond Mozilla's reference guide for JavaScript 1.5
Python: For Beginners: A Crash Course Guide To Learn Python in 1 Week (coding, programming, web-programming, programmer)
Timothy C. Needham - 2017
It is very readable and the stress many beginners face about memorizing arcane syntax typically presented by other programming languages will not affect you at all. Conversely, you will be able to concentrate on learning concepts and paradigms of programming. This book shall introduce you to an easy way to learn Python in just 7 days and in this time, be able to complete your own projects! By reading the book and implementing what you learn herein, you will realize just why major institutions like NASA, Google, Mozilla, Yahoo, Dropbox, IBM, Facebook and many others prefer to use python in their core products, services and business processes. Let
Seriously Funny #01: Life, Love & God...Musings Between Two Good Friends
Adrian Plass - 2010
Breathtakingly honest, Seriously Funny is a celebration of 21st century Christianity - as well as a no-holds barred expose of its sillier side. And they are equally hard on themselves - their most embarrassing moments are a joy to read.
Joel on Software
Joel Spolsky - 2004
For years, Joel Spolsky has done exactly this at www.joelonsoftware.com. Now, for the first time, you can own a collection of the most important essays from his site in one book, with exclusive commentary and new insights from joel.
LISP in Small Pieces
Christian Queinnec - 1996
It describes 11 interpreters and 2 compilers, including very recent techniques of interpretation and compilation. The book is in two parts. The first starts from a simple evaluation function and enriches it with multiple name spaces, continuations and side-effects with commented variants, while at the same time the language used to define these features is reduced to a simple lambda-calculus. Denotational semantics is then naturally introduced. The second part focuses more on implementation techniques and discusses precompilation for fast interpretation: threaded code or bytecode; compilation towards C. Some extensions are also described such as dynamic evaluation, reflection, macros and objects. This will become the new standard reference for people wanting to know more about the Lisp family of languages: how they work, how they are implemented, what their variants are and why such variants exist. The full code is supplied (and also available over the Net). A large bibliography is given as well as a considerable number of exercises. Thus it may also be used by students to accompany second courses on Lisp or Scheme.
Composing Software
Eric Elliott - 2018
Most developers have a limited understanding of compositional techniques. It's time for that to change.In "Composing Software", Eric Elliott shares the fundamentals of composition, including both function composition and object composition, and explores them in the context of JavaScript. The book covers the foundations of both functional programming and object oriented programming to help the reader better understand how to build and structure complex applications using simple building blocks.You'll learn: • Functional programming • Object composition • How to work with composite data structures • Closures • Higher order functions • Functors (e.g., array.map) • Monads (e.g., promises) • Transducers • LensesAll of this in the context of JavaScript, the most used programming language in the world. But the learning doesn't stop at JavaScript. You'll be able to apply these lessons to any language. This book is about the timeless principles of software composition and its lessons will outlast the hot languages and frameworks of today. Unlike most programming books, this one may still be relevant 20 years from now.This book began life as a popular blog post series that attracted hundreds of thousands of readers and influenced the way software is built at many high growth tech startups and fortune 500 companies.
Mastering Algorithms with Perl
Jon Orwant - 1999
Computer scientists have identified many techniques that a wide range of programs need, such as: Fuzzy pattern matching for text (identify misspellings!) Finding correlations in data Game-playing algorithms Predicting phenomena such as Web traffic Polynomial and spline fitting Using algorithms explained in this book, you too can carry out traditional programming tasks in a high-powered, efficient, easy-to-maintain manner with Perl.This book assumes a basic understanding of Perl syntax and functions, but not necessarily any background in computer science. The authors explain in a readable fashion the reasons for using various classic programming techniques, the kind of applications that use them, and -- most important -- how to code these algorithms in Perl.If you are an amateur programmer, this book will fill you in on the essential algorithms you need to solve problems like an expert. If you have already learned algorithms in other languages, you will be surprised at how much different (and often easier) it is to implement them in Perl. And yes, the book even has the obligatory fractal display program.There have been dozens of books on programming algorithms, some of them excellent, but never before has there been one that uses Perl.The authors include the editor of The Perl Journal and master librarian of CPAN; all are contributors to CPAN and have archived much of the code in this book there."This book was so exciting I lost sleep reading it." Tom Christiansen
Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better
Jeff Langr - 2013
Test-driven development (TDD) is a modern software development practice that can dramatically reduce the number of defects in systems, produce more maintainable code, and give you the confidence to change your software to meet changing needs. But C++ programmers have been ignored by those promoting TDD--until now. In this book, Jeff Langr gives you hands-on lessons in the challenges and rewards of doing TDD in C++.Modern C++ Programming With Test-Driven Development, the only comprehensive treatment on TDD in C++ provides you with everything you need to know about TDD, and the challenges and benefits of implementing it in your C++ systems. Its many detailed code examples take you step-by-step from TDD basics to advanced concepts. As a veteran C++ programmer, you're already writing high-quality code, and you work hard to maintain code quality. It doesn't have to be that hard. In this book, you'll learn: how to use TDD to improve legacy C++ systems how to identify and deal with troublesome system dependencies how to do dependency injection, which is particularly tricky in C++ how to use testing tools for C++ that aid TDD new C++11 features that facilitate TDD As you grow in TDD mastery, you'll discover how to keep a massive C++ system from becoming a design mess over time, as well as particular C++ trouble spots to avoid. You'll find out how to prevent your tests from being a maintenance burden and how to think in TDD without giving up your hard-won C++ skills. Finally, you'll see how to grow and sustain TDD in your team. Whether you're a complete unit-testing novice or an experienced tester, this book will lead you to mastery of test-driven development in C++.What You Need A C++ compiler running under Windows or Linux, preferably one that supports C++11. Examples presented in the book were built under gcc 4.7.2. Google Mock 1.6 (downloadable for free; it contains Google Test as well) or an alternate C++ unit testing tool. Most examples in the book are written for Google Mock, but it isn't difficult to translate them to your tool of choice. A good programmer's editor or IDE. cmake, preferably. Of course, you can use your own preferred make too. CMakeLists.txt files are provided for each project. Examples provided were built using cmake version 2.8.9. Various freely-available third-party libraries are used as the basis for examples in the book. These include: - cURL - JsonCpp - Boost (filesystem, date_time/gregorian, algorithm, assign) Several examples use the boost headers/libraries. Only one example uses cURL and JsonCpp.
Advanced Programming in the UNIX Environment
W. Richard Stevens - 1992
Rich Stevens describes more than 200 system calls and functions; since he believes the best way to learn code is to read code, a brief example accompanies each description.Building upon information presented in the first 15 chapters, the author offers chapter-long examples teaching you how to create a database library, a PostScript printer driver, a modem dialer, and a program that runs other programs under a pseudo terminal. To make your analysis and understanding of this code even easier, and to allow you to modify it, all of the code in the book is available via UUNET.A 20-page appendix provides detailed function prototypes for all the UNIX, POSIX, and ANSI C functions that are described in the book, and lists the page on which each prototype function is described in detail. Additional tables throughout the text and a thorough index make Advanced Programming in the UNIX Environment an invaluable reference tool that all UNIX programmers - beginners to experts - w