The main aim of this book is to teach D to readers who are new to computer programming. Although having experience in other programming languages is certainly helpful, this book starts from the basics. D is a multi-paradigm system programming language that combines a wide range of powerful programming concepts from the lowest to the highest levels. It has C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity in mind. Each chapter is based on the contents of the previous ones, introducing as few new concepts as possible. It is recommended that the book is read in linear fashion, without skipping chapters if possible. Although this book was written with beginners in mind, it covers almost all features of D. More experienced programmers can use the book as a D language reference by starting from the index section. Blurbs from the back cover: ´´D is pristine, clean, immensely powerful, and arguably the actual state-of-the-art programming language. Ali´s book is a gem. Clear, concise, and complete.´´ - Olivier Henley ´´I have been using Ali´s online D book to teach D at the university level. It is up-to-date, complete, and most importantly, extremely readable. Having a print version is even better! This is now the ´go-to´ book for learning D programming.´´ - Chuck Allison, Professor and Chair, Computer Science Department, Utah Valley University ´´Ali´s explanations are succinct and on target. I like that he provides rationale for why D was designed in a particular way and how I can use it most effectively. This is the best computer language book I´ve read.´´ - Robbin Carlson, Luthier and Enterprise Architect ´´I taught a CS2 Data Structures class in D with more success and student appreciation than when using either C++ or Java as it´s an ideal language to express the relevant concepts at all scales, from detailed to big picture, without needless complexity. Ali Çehreli´s tutorial played a central role supporting students especially during the first half of the course - without it the course simply would not have worked, so ´´many thanks Ali´´ - and an important part of that is its linearity - it can be read with only backward dependencies. This meant that with hard work even students of little experience and only moderate current abilities could get up to speed, and we saw just that. It is hard to overstate this factor. I unreservedly recommend this book to all.´´ - Dr. Carl Sturtivant, University of Minnesota Department of Computer Science & Engineering ´´This book is one of the best guides through the language that I´ve seen.´´ - Andrew Wray, D Enthusiast ´´I encourage anyone considering D to read this book. Not exactly ´D for Dummies´ but it´s easy to follow even if you don´t have much experience with compiled languages.´´ - bachmeier, Reddit user ´´Having worked through the book, I have to say this is one of the easiest to follow and distraction free read there is and the fact that it made learning a new language a total breeze really impressed me.´´ - Imran Khan, Student
Writing code is the easy part of your work as a software developer. This practical book lets you explore the other 90%-everything from requirements discovery and rapid prototyping to business analysis and designing for maintainability.
The second edition of Programming Scala gets experienced developers up to speed on one of today´s most exciting languages. Scala offers all the benefits of a modern object model, functional programming, and an advanced type system. Packed with code examples, this comprehensive book teaches programmers how to be productive with Scala quickly, and explains what makes this language ideal for today´s highly scalable, component-based applications that support concurrency and distribution. New chapters include pattern matching, comprehensions, and advanced functional programming.
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.
This invaluable textbook presents a comprehensive introduction to modern competitive programming. The text highlights how competitive programming has proven to be an excellent way to learn algorithms, by encouraging the design of algorithms that actually work, stimulating the improvement of programming and debugging skills, and reinforcing the type of thinking required to solve problems in a competitive setting. The book contains many ´´folklore´´ algorithm design tricks that are known by experienced competitive programmers, yet which have previously only been formally discussed in online forums and blog posts. Topics and features: reviews the features of the C++ programming language, and describes how to create efficient algorithms that can quickly process large data sets; discusses sorting algorithms and binary search, and examines a selection of data structures of the C++ standard library; introduces the algorithm design technique of dynamic programming, and investigates elementary graph algorithms; covers such advanced algorithm design topics as bit-parallelism and amortized analysis, and presents a focus on efficiently processing array range queries; surveys specialized algorithms for trees, and discusses the mathematical topics that are relevant in competitive programming; examines advanced graph techniques, geometric algorithms, and string techniques; describes a selection of more advanced topics, including square root algorithms and dynamic programming optimization. This easy-to-follow guide is an ideal reference for all students wishing to learn algorithms, and practice for programming contests. Knowledge of the basics of programming is assumed, but previous background in algorithm design or programming contests is not necessary. Due to the broad range of topics covered at various levels of difficulty, this book is suitable for both beginners and more experienced readers.
This book takes a humorous slant on the programming practice manual by reversing the usual approach: under the pretence of teaching you how to become the world´s worst programmer who generally causes chaos, the book teaches you how to avoid the kind of bad habits that introduce bugs or cause code contributions to be rejected. Why be a code monkey when you can be a chaos monkey? OK, so you want to become a terrible programmer. You want to write code that gets vigorously rejected in review. You look forward to reading feedback plastered in comments like ´´WTF???´´. Even better, you fantasize about your bug-ridden changes sneaking through and causing untold chaos in the codebase. You want to build a reputation as someone who writes creaky, messy, error-prone garbage that frustrates your colleagues. Bad Programming Practices 101 will help you achieve that goal a whole lot quicker by teaching you an array of bad habits that will allow you to cause maximum chaos. Alternatively, you could use this book to identify those bad habits and learn to avoid them. The bad practices are organized into topics that form the basis of programming (layout, variables, loops, modules, and so on). It´s been remarked that to become a good programmer, you must first write 10,000 lines of bad code to get it all out of your system. This book is aimed at programmers who have so far written only a small portion of that. By learning about poor programming habits, you will learn good practices. In addition, you will find out the motivation behind each practice, so you can learn why it is considered good and not simply get a list of rules. What You´ll Learn Become a better coder by learning how (not) to program Choose your tools wisely Think of programming as problem solving Discover the consequences of a program´s appearance and overall structure Explain poor use of variables in programs Avoid bad habits and common mistakes when using conditionals and loops See how poor error-handling makes for unstable programs Sidestep bad practices related specifically to object-oriented programming Mitigate the effects of ineffectual and inadequate bug location and testing Who This Book Is For Those who have some practical programming knowledge (can program in at least one programming language), but little or no professional experience, which they would like to quickly build up. They are either still undergoing training in software development, or are at the beginning of their programming career. They have at most 1-2 years of professional experience.
Parallel Programming with OpenACC is a modern, practical guide to implementing dependable computing systems. The book explains how anyone can use OpenACC to quickly ramp-up application performance using high-level code directives called pragmas. The OpenACC directive-based programming model is designed to provide a simple, yet powerful, approach to accelerators without significant programming effort. Author Rob Farber, working with a team of expert contributors, demonstrates how to turn existing applications into portable GPU accelerated programs that demonstrate immediate speedups. The book also helps users get the most from the latest NVIDIA and AMD GPU plus multicore CPU architectures (and soon for Intel® Xeon PhiT as well). Downloadable example codes provide hands-on OpenACC experience for common problems in scientific, commercial, big-data, and real-time systems. Topics include writing reusable code, asynchronous capabilities, using libraries, multicore clusters, and much more. Each chapter explains how a specific aspect of OpenACC technology fits, how it works, and the pitfalls to avoid. Throughout, the book demonstrates how the use of simple working examples that can be adapted to solve application needs. Presents the simplest way to leverage GPUs to achieve application speedups Shows how OpenACC works, including working examples that can be adapted for application needs Allows readers to download source code and slides from the book´s companion web page
Nearly five years after the first edition of this book exploded on to the market, noted software engineering guru and the father of Extreme Programming (XP) Kent Beck provides a fresh look at this controversial topic. XP remains the most popular agile methodology in software development, and many believe it is ideal for small to mid-size development organizations. However, XP is not without its detractors. The goal of the book remains to help programmers and teams decide if XP is the right path to pursue. The book offers advice, but does not provide a prescriptive, how to style format. This Fifth Anniversary Edition enhances the full knowledge of XP and gives both the advocate and skeptic of XP full detail to move forward with an informed opinion.