Programming
A Small Matter of Programming 豆瓣
作者: Nardi, Bonnie A. Mit Pr 1993 - 7
A Small Matter of Programming asks why it has been so difficult for end users to command programming power and explores the problems of end user-driven application development that must be solved to afford end users greater computational power.Drawing on empirical research on existing end user systems, A Small Matter of Programming analyzes cognitive, social, and technical issues of end user programming. In particular, it examines the importance of task-specific programming languages, visual application frameworks, and collaborative work practices for end user computing, with the goal of helping designers and programmers understand and better satisfy the needs of end users who want the capability to create, customize, and extend their applications software.The ideas in the book are based on the author's research on two successful end user programming systems - spreadsheets and CAD systems - as well as other empirical research. Nardi concentrates on broad issues in end user programming, especially end users' strengths and problems, introducing tools and techniques as they are related to higher-level user issues.Bonnie A. Nardi is a Member of the Technical Staff at Hewlett Packard Laboratories.
Learn Python the Hard Way 豆瓣 Goodreads
8.8 (5 个评分) 作者: Zed A. Shaw Addison-Wesley Professional 2013 - 10
Master Python and become a programmer-even if you never thought you could! This breakthrough book and CD can help practically anyone get started in programming. It's called "The Hard Way," but it's really quite simple. What's "hard" is this: it requires discipline, practice, and persistence. Zed A. Shaw teaches the Python programming language through a series of 52 brilliantly-crafted exercises-all formatted consistently, and most no longer than two pages (including "extra credit"). Just read each exercise, type in its sample code precisely (no copy-and-paste!), and make the programs run. As you read, type, fix your mistakes, and watch the results, you'll learn how software works, how programming works, what good programs look like, and how to read, write, and see code. You'll discover how to spot crucial differences that fundamentally affect program behavior, and you'll learn everything you need to know about Python logic, input/output, variables, and functions. Above all, you'll learn the attention to detail that is indispensable to successful programming (and so much else in life). At first, yes, it can be difficult. But it gets easier. And Shaw offers plenty of extra guidance and insight through 5+ full hours of teaching video on the accompanying CD. As Shaw's thousands of online readers and fans will attest, the moment will come when you just "get it"-and that moment feels great. Nothing important comes without discipline, practice, and persistence. But, with Learn Python the Hard Way, readers who bring those qualities to programming will master it-and they will reap the rewards, both personally and in their careers.
Algorithms + Data Structures = Programs 豆瓣
作者: Niklaus Wirth Prentice Hall 1975 - 11
It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominance), but it is still highly recommended.
It is the single book I learnt most from when I was a freshman studying Computer Science at my local University (when Pascal was already declining, I'm not so old ;-). I wish more recent books were as good as this one, but I have not found a single book so focused and, at the same time, so broad in scope as this one.
Wirth covers programming fundamentals (including recursion), many sorting algorithms, data structures (from simple data collections to B-trees and hashing), and basic compiler technology. That is, four books into one (and, surprisingly, this is not a hefty tome.)
The Little Schemer - 4th Edition 豆瓣 Goodreads
9.6 (5 个评分) 作者: Daniel P. Friedman / Matthias Felleisen The MIT Press 1995
This delightful book leads you through the basic elements of programming in Scheme (a Lisp dialect) via a series of dialogues with well-chosen questions and exercises. Besides teaching Scheme, The Little Schemer teaches the reader how to think about computation. The authors focus on ten essential concepts of thinking about how to compute and demonstrate how to apply these concepts in inventive ways. The Little Schemer is an excellent book both for the beginner and for the seasoned programmer.
Computer Systems: A Programmer's Perspective (3rd Edition) 豆瓣 Goodreads
作者: Randal E. Bryant / David R. O'Hallaron Pearson 2015 - 3
For Computer Organization and Architecture and Computer Systems courses in CS and EE and ECE departments. Developed out of an introductory course at Carnegie Mellon University, this text explains the important and enduring concepts underlying all computer systems, and shows the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The text's concrete and hands-on approach will help students understand what is going on "under the hood" of a computer system.

Few students studying computer science or computer engineering will ever have the opportunity to build a computer system. On the other hand, most students will be required to use and program computers on a near daily basis. 'Computer Systems' introduces the important and enduring concepts that underlie application programs.
You Can Program in C++ 豆瓣
作者: Francis Glassborow John Wiley & Sons 2006 - 7
An interactive and fun way to learn C++, one of the most popular high-level programming languages for graphic applications

This unique, hands-on approach to learning C++ makes the experience fun and interesting by offering the opportunity for readers to get started on real coding
Features numerous examples and project ideas as well as GUI and audio extensions so readers can get instant feedback - in addition to instant gratification from producing a program that works
Written by one of the world's leading authorities on C and C++, the book includes invaluable reference sections at the end of each chapter
Discusses modern C++ idioms, which are often neglected in other publications
Domain-Driven Design 豆瓣
作者: Eric Evans Addison-Wesley Professional 2003 - 8
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers-it is a future classic." -Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. "Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion." -Dave Collins, author of Designing Object-Oriented User Interfaces "Eric weaves real-world experience modeling-and building-business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field." -Luke Hohmann, author of Beyond Software Architecture "This book belongs on the shelf of every thoughtful software developer." -Kent Beck "What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important." -Kyle Brown, author of Enterprise Java(TM) Programming with IBM(r) WebSphere(r) The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process. Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis-refactoring not just the code but the model underlying the code-in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include: * Getting all team members to speak the same language * Connecting model and implementation more deeply * Sharpening key distinctions in a model * Managing the lifecycle of a domain object * Writing domain code that is safe to combine in elaborate ways * Making complex code obvious and predictable * Formulating a domain vision statement * Distilling the core of a complex domain * Digging out implicit concepts needed in the model * Applying analysis patterns * Relating design patterns to the model * Maintaining model integrity in a large system * Dealing with coexisting models on the same project * Organizing systems with large-scale structures * Recognizing and responding to modeling breakthroughs With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.
Design Concepts in Programming Languages 豆瓣 Goodreads
作者: Franklyn A. Turbak / David K. Gifford The MIT Press 2008 - 8
Hundreds of programming languages are in use today--scripting languages for Internet commerce, user interface programming tools, spreadsheet macros, page format specification languages, and many others. Designing a programming language is a metaprogramming activity that bears certain similarities to programming in a regular language, with clarity and simplicity even more important than in ordinary programming. This comprehensive text uses a simple and concise framework to teach key ideas in programming language design and implementation. The book's unique approach is based on a family of syntactically simple pedagogical languages that allow students to explore programming language concepts systematically. It takes as premise and starting point the idea that when language behaviors become incredibly complex, the description of the behaviors must be incredibly simple. The book presents a set of tools (a mathematical metalanguage, abstract syntax, operational and denotational semantics) and uses it to explore a comprehensive set of programming language design dimensions, including dynamic semantics (naming, state, control, data), static semantics (types, type reconstruction, polymporphism, effects), and pragmatics (compilation, garbage collection). The many examples and exercises offer students opportunities to apply the foundational ideas explained in the text. Specialized topics and code that implements many of the algorithms and compilation methods in the book can be found on the book's Web site, along with such additional material as a section on concurrency and proofs of the theorems in the text. The book is suitable as a text for an introductory graduate or advanced undergraduate programming languages course; it can also serve as a reference for researchers and practitioners.
Masterminds of Programming 豆瓣 Goodreads
作者: Federico Biancuzzi / Chromatic O'Reilly Media 2009 - 3 其它标题: Masterminds of Programming: Conversations with the Creators of Major Programming Languages
Description
Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), James Gosling (Java), Bjarne Stroustrup (C++), and others whose vision and hard work helped shape the computer industry. You'll find advice you can apply to systems you're developing, even if you don't use the specific languages being discussed.
Full Description
Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. In this unique collection, you'll learn about the processes that led to specific design decisions, including the goals they had in mind, the trade-offs they had to make, and how their experiences have left an impact on programming today. Masterminds of Programming includes individual interviews with:
* Adin D. Falkoff: APL
* Thomas E. Kurtz: BASIC
* Charles H. Moore: FORTH
* Robin Milner: ML
* Donald D. Chamberlin: SQL
* Alfred Aho, Peter Weinberger, and Brian Kernighan: AWK
* Charles Geschke and John Warnock: PostScript
* Bjarne Stroustrup: C++
* Bertrand Meyer: Eiffel
* Brad Cox and Tom Love: Objective-C
* Larry Wall: Perl
* Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes: Haskell
* Guido van Rossum: Python
* Luiz Henrique de Figueiredo and Roberto Ierusalimschy: Lua
* James Gosling: Java
* Grady Booch, Ivar Jacobson, and James Rumbaugh: UML
* Anders Hejlsberg: Delphi inventor and lead developer of C#
If you're interested in the people whose vision and hard work helped shape the computer industry, you'll find Masterminds of Programming fascinating.
Generic Programming and the STL 豆瓣
作者: Matthew H. Austern Addison-Wesley Professional 1999 - 10
Austern's book introduces you to the generic programming paradigm and to the most important instance of that paradigm--the C++ Standard Template Library (STL). This book reveals that the STL is more than a set of convenient container classes: It is also an extensible framework for generic and interoperable components. Austern explains the central ideas underlying generic programming--concepts, modeling, and refinement--and shows how these ideas lead to the fundamental concepts of the STL: iterators, containers, and function objects.
Learning Robotics using Python 豆瓣
作者: Lentin Joseph Packt Publishing 2015 - 5
About This Book
Design, simulate, build and program an interactive autonomous mobile robotProgram Robot Operating System using PythonGet a grip on the hands-on guide to robotics for learning various robotics concepts and build an advanced robot from scratch
Who This Book Is For
If you are an engineer, a researcher, or a hobbyist, and you are interested in robotics and want to build your own robot, this book is for you. Readers are assumed to be new to robotics but should have experience with Python.
What You Will Learn
Understand the core concepts and terminologies of robotics Create 2D and 3D drawings of robots using freeware such as LibreCAD and Blender Simulate your robot using ROS and Gazebo Build robot hardware from the requirements Explore a diverse range of actuators and its interfacing Interface various robotic sensors to robots Set up and program OpenCV, OpenNI, and PCL to process 2D/3D visual data Learn speech processing and synthesis using Python Apply artificial intelligence to robots using Python Build a robot control GUI using Qt and Python Calibration and testing of robot
In Detail
Learning about robotics will become an increasingly essential skill as it becomes a ubiquitous part of life. Even though robotics is a complex subject, several other tools along with Python can help you design a project to create an easy-to-use interface.
Learning Robotics Using Python is an essential guide for creating an autonomous mobile robot using popular robotic software frameworks such as ROS using Python. It also discusses various robot software frameworks and how to go about coding the robot using Python and its framework. It concludes with creating a GUI-based application to control the robot using buttons and slides.
By the end of this tutorial, you'll have a clear idea of how to integrate and assemble all things into a robot and how to bundle the software package.
Real-Time Rendering, Third Edition 豆瓣
作者: Tomas Akenine-Moller / Eric Haines A K Peters/CRC Press 2008 - 7
Thoroughly revised, this third edition focuses on modern techniques used to generate synthetic three-dimensional images in a fraction of a second. With the advent or programmable shaders, a wide variety of new algorithms have arisen and evolved over the past few years.
This edition discusses current, practical rendering methods used in games and other applications. It also presents a solid theoretical framework and relevant mathematics for the field of interactive computer graphics, all in an approachable style.
Extreme Programming Explained 豆瓣
作者: Kent Beck / Cynthia Andres Addison-Wesley 2004 - 11
"In this second edition of Extreme Programming Explained, Kent Beck organizes and presents five years' worth of experiences, growth, and change revolving around XP. If you are seriously interested in understanding how you and your team can start down the path of improvement with XP, you must read this book." -Francesco Cirillo, Chief Executive Officer, XPLabs S.R.L. "The first edition of this book told us what XP was-it changed the way many of us think about software development. This second edition takes it farther and gives us a lot more of the 'why' of XP, the motivations and the principles behind the practices. This is great stuff. Armed with the 'what' and the 'why,' we can now all set out to confidently work on the 'how': how to run our projects better, and how to get agile techniques adopted in our organizations." -Dave Thomas, The Pragmatic Programmers LLC "This book is dynamite! It was revolutionary when it first appeared a few years ago, and this new edition is equally profound. For those who insist on cookbook checklists, there's an excellent chapter on 'primary practices,' but I urge you to begin by truly contemplating the meaning of the opening sentence in the first chapter of Kent Beck's book: 'XP is about social change.' You should do whatever it takes to ensure that every IT professional and every IT manager-all the way up to the CIO-has a copy of Extreme Programming Explained on his or her desk." -Ed Yourdon, author and consultant "XP is a powerful set of concepts for simplifying the process of software design, development, and testing. It is about minimalism and incrementalism, which are especially useful principles when tackling complex problems that require a balance of creativity and discipline." -Michael A. Cusumano, Professor, MIT Sloan School of Management, and author of The Business of Software"Extreme Programming Explained is the work of a talented and passionate craftsman. Kent Beck has brought together a compelling collection of ideas about programming and management that deserves your full attention. My only beef is that our profession has gotten to a point where such common-sense ideas are labeled 'extreme.'..." -Lou Mazzucchelli, Fellow, Cutter Business Technology Council"If your organization is ready for a change in the way it develops software, there's the slow incremental approach, fixing things one by one, or the fast track, jumping feet first into Extreme Programming. Do not be frightened by the name, it is not that extreme at all. It is mostly good old recipes and common sense, nicely integrated together, getting rid of all the fat that has accumulated over the years." -Philippe Kruchten, UBC, Vancouver, British Columbia"Sometimes revolutionaries get left behind as the movement they started takes on a life of its own. In this book, Kent Beck shows that he remains ahead of the curve, leading XP to its next level. Incorporating five years of feedback, this book takes a fresh look at what it takes to develop better software in less time and for less money. There are no silver bullets here, just a set of practical principles that, when used wisely, can lead to dramatic improvements in software development productivity." -Mary Poppendieck, author of Lean Software Development: An Agile Toolkit "Kent Beck has revised his classic book based on five more years of applying and teaching XP. He shows how the path to XP is both easy and hard: It can be started with fewer practices, and yet it challenges teams to go farther than ever." -William Wake, independent consultant "With new insights, wisdom from experience, and clearer explanations of the art of Extreme Programming, this edition of Beck's classic will help many realize the dream of outstanding software development." -Joshua Kerievsky, author of Refactoring to Patterns and Founder, Industrial Logic, Inc."XP has changed the way our industry thinks about software development. Its brilliant simplicity, focused execution, and insistence on fact-based planning over speculation have set a new standard for software delivery." -David Trowbridge, Architect, Microsoft Corporation Accountability. Transparency. Responsibility. These are not words that are often applied to software development. In this completely revised introduction to Extreme Programming (XP), Kent Beck describes how to improve your software development by integrating these highly desirable concepts into your daily development process. The first edition of Extreme Programming Explained is a classic. It won awards for its then-radical ideas for improving small-team development, such as having developers write automated tests for their own code and having the whole team plan weekly. Much has changed in five years. This completely rewritten second edition expands the scope of XP to teams of any size by suggesting a program of continuous improvement based on: * Five core values consistent with excellence in software development * Eleven principles for putting those values into action * Thirteen primary and eleven corollary practices to help you push development past its current business and technical limitations Whether you have a small team that is already closely aligned with your customers or a large team in a gigantic or multinational organization, you will find in these pages a wealth of ideas to challenge, inspire, and encourage you and your team members to substantially improve your software development. You will discover how to: * Involve the whole team-XP style * Increase technical collaboration through pair programming and continuous integration * Reduce defects through developer testing * Align business and technical decisions through weekly and quarterly planning * Improve teamwork by setting up an informative, shared workspace You will also find many other concrete ideas for improvement, all based on a philosophy that emphasizes simultaneously increasing the humanity and effectiveness of software development. Every team can improve. Every team can begin improving today. Improvement is possible-beyond what we can currently imagine. Extreme Programming Explained, Second Edition, offers ideas to fuel your improvement for years to come.
The Practice of Programming 豆瓣 Goodreads
作者: Brian W. Kernighan / Rob Pike Addison-Wesley 1999 - 2
With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from its principles and guidance.
Haskell 豆瓣
作者: Simon Thompson Addison-Wesley Professional 2011 - 10
One of the leading textbooks on Haskell programming, this third edition is thoroughly revised throughout and includes new material on testing and domain-specific languages and a variety of new examples and case studies, including simple games.
* Emphasises software engineering principles.
* Encourages a disciplined approach to building reusable libraries of software components.
* Case studies are used throughout the book to introduce new ideas, illustrate important concepts, and demonstrate how existing techniques work together. Case studies include:
- An interactive calculator programme.
- A coding and decoding system.
- A small queue simulation package.
* Companion website contains supporting material (such as visualisation tools * and a substantial number of web links) to aid further study.
Appendices contain information on Hugs errors.
The Haskell School of Expression 豆瓣 Goodreads
作者: Paul Hudak Cambridge University Press 2000 - 2 其它标题: The Haskell School of Expression: Learning Functional Programming through Multimedia
This book teaches functional programming as a way of thinking and problem solving, using Haskell, the most popular purely functional language. Rather than using the conventional mathematical examples commonly found in other programming language textbooks, the author draws examples from multimedia applications, including graphics, animation, and computer music, thus rewarding the reader with working programs for inherently more interesting applications. Aimed at both beginning and advanced programmers, this tutorial begins with a gentle introduction to functional programming and moves rapidly on to more advanced topics. An underlying theme is the design and implementation of domain specific languages, using three examples: FAL (a Functional Animation Language), IRL (an Imperative Robot Language), and MDL (a Music Description Language). Details about programming in Haskell are presented in boxes throughout the text so they can be easily referred to and found quickly.