Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship. Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it.
What kind of work will you be doing? You’ll be reading code—lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft.
Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code—of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code.
Readers will come away from this book understanding
How to tell the difference between good and bad code
How to write good code and how to transform bad code into good code
How to create good names, good functions, good objects, and good classes
How to format code for maximum readability
How to implement complete error handling without obscuring code logic
How to unit test and practice test-driven development
This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
Kapcsolódó könyvek
Robert C. Martin - Tiszta kód
A rossz kód is működhet, de ha a kód nem tiszta, az térdre kényszerítheti a fejlesztőket. Évente számtalan óra és jelentős erőforrások vesznek kárba a rosszul megírt kódok miatt. Ennek azonban nem feltétlenül kell így lennie.
Az elismert szoftverszakértő, Robert C. Martin egy forradalmi módszert mutat be a Tiszta kód – Az agilis szoftverfejlesztés kézikönyve című kötetében. Martin és kollégái az Object Mentor cégnél összefogtak, hogy az agilis programfejlesztés legjobb „menet közbeni” kód-kitisztítási eljárásait egy olyan könyvben gyűjtsék össze, amely felruház minket mindazokkal a szakmai erényekkel, amelyek révén jobb programozóvá válhatunk – de csak akkor, ha mi is teszünk érte.
Miféle munkát fogunk végezni? Nos, kódot fogunk olvasni – rengeteg kódot. És el kell gondolkodnunk rajta, hogy mi az, ami jó a kódban, és mi az, ami rossz. Ami pedig ennél is fontosabb: át kell értékelnünk mindazt, amit a szakmáról tudunk, és a szakma iránt érzett elkötelezettségünket.
A Tiszta kód három részre oszlik. Az első a tiszta kód írásához szükséges alapelveket, mintákat és eljárásokat mutatja be. A második részben számos, egyre összetettebb esettanulmányt találhatunk. Minden esettanulmány a kód kitisztításának egy-egy módját szemlélteti – hibás kódokat fogunk egészséges és hatékony kódokká alakítani. A harmadik rész a jutalom: egyetlen fejezetből áll, amely azokat az árulkodó jeleket és „szagokat” sorolja fel, amelyeket a szerző és társai az esettanulmányok összeállítása során gyűjtöttek össze. Az eredmény egy olyan tudásalap, amely leírja, hogyan gondolkodjunk, amikor kódot írunk, olvasunk és tisztítunk.
Randal L. Schwartz - Tom Phoenix - brian d foy - Learning Perl
Learning Perl is the quintessential tutorial for the Perl programming language. The third edition has not only been updated to Perl Version 5.6, but has also been rewritten from the ground up to reflect the needs of programmers learning Perl today. Other books may teach you to program in Perl, but this book will turn you into a Perl programmer.
Christopher Schmitt - Kyle Simpson - HTML5 Cookbook
With scores of practical recipes you can use in your projects right away, this cookbook helps you gain hands-on experience with HTML5’s versatile collection of elements. You get clear solutions for handling issues with everything from markup semantics, web forms, and audio and video elements to related technologies such as geolocation and rich JavaScript APIs.
Each informative recipe includes sample code and a detailed discussion on why and how the solution works. Perfect for intermediate to advanced web and mobile web developers, this handy book lets you choose the HTML5 features that work for you—and helps you experiment with the rest.
Test browsers for HTML5 support, and use techniques for applying unsupported features
Discover how HTML5 makes web form implementation much simpler
Overcome challenges for implementing native audio and video elements
Learn techniques for using HTML5 with ARIA accessibility guidelines
Explore examples that cover using geolocation data in your applications
Draw images, use transparencies, add gradients and patterns, and more with Canvas
Bring HTML5 features to life with a variety of advanced JavaScript APIs
Michael Bowers - Dionysios Synodinos - Victor Sumner - Pro HTML5 and CSS3 Design Patterns
Pro HTML5 and CSS3 Design Patterns is a reference book and a cookbook on how to style web pages using CSS3 and HTML5. It contains 350 ready to use patterns (CSS3 and HTML5 code snippets) that you can copy and paste into your code. Each pattern can be combined with other patterns to create an unlimited number of solutions, and each pattern works reliably in all major browsers without the need for browser hacks. The book is completely up-to-date with code, best practices, and browser compatibilities for HTML5 and CSS3 - enabling you to dive in and make use of these new technologies in production environments. Pro HTML5 and CSS3 Design Patterns is so much more than just a cookbook, though! It systematically covers every usable feature of CSS3 and combines these features with HTML5 to create reusable patterns. Each pattern has an intuitive name to make it easy to find, remember, and refer to. Accessibility and best practices are carefully engineered into each design pattern, example, and source code. The book's layout, with a pattern's example on the left page and its explanation on the right, makes it easy to find a pattern and study it without having to flip between pages. The book is also readable from cover to cover, with topics building carefully upon previous topics. Pro HTML5 and CSS3 Design Patterns book unleashes your productivity and creativity in web design and development. Instead of hacking your way toward a solution, you'll learn how to predictably create successful designs every time by reusing and combining modular design patterns. What you'll learn * Code CSS3 and HTML5 * Use CSS3 Selectors * Use six CSS3 Box Models * Create rounded corners, shadows, gradients, sprites, and transparency * Replace text with images without affecting accessibility * Style text with fonts, highlights, decorations, and shadows * Create flexible, fluid layouts * Position elements with absolute pixel precision * Stack elements in layers * Size, stretch, shrinkwrap, indent, align, and offset elements * Style tables with borders and alternating striped rows * Size table columns automatically * Integrate CSS3 and JavaScript without embedding JavaScript in HTML5 * Create drop caps, callouts, quotes, and alerts Who this book is for A software developer can use this book to learn CSS3 for the first time. A designer familiar with CSS3 can use this book to master CSS3 and HTML5. If you are completely new to coding or completely new to CSS3 and HTML5, you may want to read an introductory book on CSS3 and HTML5 first. Table of Contents * Design Patterns: Making CSS 3 Easy! * HTML Design Patterns * CSS Selectors and Inheritance * Box Models * Box Model Extents * Box Model Properties * Positioning Models * Positioning: Indented, Offset, and Aligned * Positioning: Advanced * Styling Text * Spacing Content * Aligning Content * Blocks * Images * Tables * Table Column Layouts * Layouts * Dropcaps * Callouts and Quotes * Alerts
Kent Beck - Implementation Patterns
Great code doesn’t just function: it clearly and consistently communicates your intentions, allowing other programmers to understand your code, rely on it, and modify it with confidence. But great code doesn’t just happen. It is the outcome of hundreds of small but critical decisions programmers make every single day. Now, legendary software innovator Kent Beck–known worldwide for creating Extreme Programming and pioneering software patterns and test-driven development–focuses on these critical decisions, unearthing powerful “implementation patterns” for writing programs that are simpler, clearer, better organized, and more cost effective.
Beck collects 77 patterns for handling everyday programming tasks and writing more readable code. This new collection of patterns addresses many aspects of development, including class, state, behavior, method, collections, frameworks, and more. He uses diagrams, stories, examples, and essays to engage the reader as he illuminates the patterns. You’ll find proven solutions for handling everything from naming variables to checking exceptions.
Mario Zechner - Beginning Android Games
Beginning Android Games offers everything you need to join the ranks of successful Android game developers. You'll start with game design fundamentals and programming basics, and then progress towards creating your own basic game engine and playable game.
Partha Kuchana - Software Architecture Design Patterns in Java
Software engineering and computer science students need a resource that explains how to apply design patterns at the enterprise level, allowing them to design and implement systems of high stability and quality.
Software Architecture Design Patterns in Java is a detailed explanation of how to apply design patterns and develop software architectures. It provides in-depth examples in Java, and guides students by detailing when, why, and how to use specific patterns.
This textbook presents 42 design patterns, including 23 GoF patterns. Categories include: Basic, Creational, Collectional, Structural, Behavioral, and Concurrency, with multiple examples for each. The discussion of each pattern includes an example implemented in Java. The source code for all examples is found on a companion Web site.
The author explains the content so that it is easy to understand, and each pattern discussion includes Practice Questions to aid instructors. The textbook concludes with a case study that pulls several patterns together to demonstrate how patterns are not applied in isolation, but collaborate within domains to solve complicated problems.
Gerard Meszaros - xUnit Test Patterns - Refactoring Test Code
Automated testing is a cornerstone of agile development. An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge.
xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable--and far more cost-effective.
Loaded with information, this book feels like three books in one. The first part is a detailed tutorial on test automation that covers everything from test strategy to in-depth test coding. The second part, a catalog of 18 frequently encountered "test smells," provides trouble-shooting guidelines to help you determine the root cause of problems and the most applicable patterns. The third part contains detailed descriptions of each pattern, including refactoring instructions illustrated by extensive code samples in multiple programming languages.
Erich Gamma - Richard Helm - Ralph Johnson - John Vlissides - Programtervezési minták
E kötetben az objektumközpontú szoftvertervezésben szerzett hatalmas tapasztalataikkal felvértezve négy elismert tervező mutatja be egyszerű, de nagyszerű megoldásait az általánosan felbukkanó tervezési problémákra. A korábban még le nem írt 23 tervezési minta lehetővé teszi, hogy a tervezők rugalmasabb, elegánsabb - és ami a legfontosabb -, újrahasznosítható programterveket készíthessenek, anélkül, hogy a megoldásokat maguknak kellene felfedezniük. A szerzők először bemutatják a létező mintákat, illetve hogy ezek miként segítenek bennünket az objektumközpontú programok fejlesztésében, majd rendszerezve nevet adnak az objektumközpontú rendszerekben vissza-visszatérő mintáknak, elmagyarázzák és értékelik azokat. A Programtervezési minták segítségével megtanuljuk, hogyan illeszkednek ezek a minták a szoftverfejlesztés folyamatába, és hogyan oldhatók meg velük a leghatékonyabban saját egyéni tervezési gondjaink. Minden mintánál leírják, milyen körülmények között alkalmazható, milyen más tervezési megkötéseket kell figyelembe venni, illetve hogy az adott minta nagyobb terv részeként való felhasználásánál milyen következményekkel és mellékhatásokkal kell számolnunk. Minden minta létező rendszeren, a valós életből vett példákon alapul. Mindegyikhez tartozik kód is, amely bemutatja, hogyan valósítható meg a minta az olyan objektumközpontú nyelveken, mint a C++ vagy a Smalltalk. A szerzők nemzetközileg elismert szakemberek az objektumközpontú programozás területén. Dr. Erich Gamma a svájci Zürichben az Object Techology International szoftvertechnológiai központjának technikai igazgatója. Dr. Richard Helm az ausztráliai Sydneyben dolgozik, mint az IBM Consulting Group Object Technology Practice Group csoportjának tagja. Dr. Ralph Johnson az illionoisi egyetemen oktat, a számítógép-tudományok tanszékén. Dr. John Vlissides az IBM Thomas J. Watson kutatóközpontjában folytatja kutatásait a New York állambeli Hawthorne-ban.
Richard Wagstaff - Python In A Day
Are you fed up with reading long, boring, lengthy paragraphs after paragraphs of text and want to get up and running in Python as soon as possible? Well, you're not alone. I for one hate having to read through masses of text for very little benefit. Python In A Day strips away the non essentials and instead provides you with the fundamentals from which you can blossom as a Python programmer. So, what can I expect from the book? Learn the Basics Python In A Day provides you with the fundamental building blocks to get you up and running in Python in no time. Learn it Quick Written for simplicity so that you can learn Python quickly and efficiently. Start Coding Fast You start coding as soon as Python is installed on your computer. Anything else? Yes! Lots more. For example, every single script in the book is available to view online or download, providing you with all the code you need at your finger tips! Learning to code does not need to be difficult or complicated. This book will supercharge your Python learning experience.
Laura Lemay - Perl mesteri szinten 21 nap alatt
Mindössze 21 nap szükséges ahhoz, hogy elsajátítsuk a Perl programok írásához, hibakereséséhez és futtatásához szükséges alapvető ismereteket. A könyv leckéi lépésekre bontva, könnyen érthető módon mutatják be a nyelv különböző lehetőségeit. A tanult elméletet és módszereket működő példák támasztják alá.
A Perl a legtöbb Unix rendszerben megtalálható, de Windows és Macintosh környezetben is egyre gyakrabban találkozhatunk vele: azoknak a rendszergazdáknak, programozóknak és honlapfejlesztőknek a munkaeszköze, akiknek mindennap feladataik megoldásához rugalmas, gyorsan programozható nyelvre van szükségük.
A Perl lehet bonyolult is; ennek az érthetően megírt, a nyelvet a gyakorlatban bemutató tankönyvnek a birtokában azonban könnyedén elsajátíthatjuk az alapjait. Többek között a következőket fogjuk megtanulni:
● Karakterláncok, listák és egyéb adatszerkezetek kezelése
● Minták illesztése szabályos kifejezésekkel
● Fájl- és könyvtárkezelés, az operációs rendszer használata
● CGI programok készítése webkiszolgálókhoz
Laura Lemay a legnépszerűbb szerzők egyike a webfejlesztés témakörében. Munkái közül érdemes kiemelni a nagy példányszámban eladott Sams Teach Yourself Java in 21 Days és a szintén nagy sikernek örvendő Sams Teach Yourself Web Publishing with HTML in a Week című kiadványokat. Laura híres arról, hogy a legbonyolultabb témákat is képes érthetően tolmácsolni, előadását ráadásul hasznos gyakorlati példákkal teszi még érdekesebbé.
Robert C. Martin - Túlélőkönyv programozóknak
„Bob bácsi” sikerkönyve, a Tiszta kód várva-várt folytatása azoknak a programozóknak, akiket nem rettent el a bizonytalanság, és sikerrel állják a folyamatos nyomást, van egy közös erényük: mélyen tisztelik, és komoly szakmának tekintik a szoftverfejlesztést. Egy szóval: profik.
Clean coder: Irányelvek hivatásos programozóknak Robert C. Martin, a legendás szoftverszakértő legújabb könyve, amelyben a szerző azt mutatja be, hogyan kell viselkednie, milyen eljárásokat kell követnie, és milyen eszközöket kell használnia annak, aki valóban profi programozóvá szeretne válni.
A kötet tele van gyakorlati tanácsokkal, az egy-egy munkához szükséges idő megbecslésétől a kódoláson keresztül az újratervezésig és a tesztelésig, de nem pusztán a technikáról szól: sokkal inkább a hozzáállásról. Martin megmutatja, hogyan lehet a szoftverfejlesztést becsülettel, önbecsüléssel és büszkeséggel megközelíteni; hogyan kell jól és tisztán dolgozni; őszintén kommunikálni, becsülni és nehéz döntéseket meghozni; és megérteni, hogy a szaktudással együtt jár a cselekvés felelőssége is.
# A könyvet elolvasva a következőket tanulhatjuk meg: Hogyan viselkedik egy valóban profi szoftverfejlesztő?
# Hogyan kezelhetjük a konfliktusokat, a szoros határidőket és az ésszerűtlen döntéseket hozó feletteseket?
# Hogyan juthatunk túl az írói válságon, és lendülhetünk bele a kódolásba?
# Hogyan kezelhetjük a szüntelen nyomást, és kerülhetjük el a kiégést?
# Hogyan egyeztethetjük össze a bevált megoldásokat az új fejlesztési megközelítésekkel?
# Hogyan osszuk be az időnket, és kerüljük el a vakvágányokat és ingoványos területeket?
# Hogyan alakíthatunk ki a programozók és csapatok számára ösztönző környezetet?
# Mikor mondjunk nemet – és hogyan?
# Mikor mondjunk igent – és mit jelent valójában az „igen”?
A jó szoftverben gyönyörködni lehet, mert sokoldalú, elegáns, praktikus, és fejlesztőként és felhasználóként egyaránt öröm vele dolgozni. A jó szoftvert nem gépek készítik, hanem hivatásos, profi programozók, akik megingathatatlan elkötelezettséget éreznek a szakmájuk iránt. A Clean coder segít, hogy mi is igazi profivá váljunk, és azt a büszkeséget és elégedettséget érezzük, ami csak egy profinak jut osztályrészül.
Bjarne Stroustrup - A C++ programozási nyelv
Mint e könyv első kiadásában ígértük, a C++ továbbfejlődött a felhasználók igényei szerint. Ezt a fejlődést a változatos hátterű, sokféle alkalmazási területen dolgozó felhasználók tapasztalatai vezérlik. A C++ felhasználóinak közössége az első kiadás óta eltelt hat év alatt százszorosára nőtt; sok leckét megtanultunk és sok módszert fedeztünk fel és/vagy szentesítettünk a tapasztalat alapján. E tapasztalatok némelyike itt tükröződik.Könyvünk bemutatja a teljes C++ nyelvet. Az 1.-10. fejezetek oktató jellegű bevezetést adnak, a 11.-13. fejezetek tervezési és szoftverfejlesztési kérdésekkel foglalkoznak, végül a teljes C++ hivatkozási kézikönyv következik.A szerző a művet az első kiadás óta teljesen átdolgozta, hogy úgy mutathassa be a nyelvet azok számára, akik csak most ismerkednek a C++-szal hogy közben a tapasztaltabb programozók is találjanak benne újdonságokat. Ez a fordítás a 2000. évi úgynevezett special edition változaton alapul, amely két új függeléket tartalmaz a harmadik kiadáshoz képest.
Daniel Keyes - Flowers for Algernon
Charlie Gordon, IQ 68, is a floor sweeper, and the gentle butt of everyone's jokes, until an experiment in the enhancement of human intelligence turns him into a genius. But then Algernon, the mouse whose triumphal experimental tranformation preceded his, fades and dies, and Charlie has to face the possibility that his salvation was only temporary.
Joshua Bloch - Effective Java
Are you looking for a deeper understanding of the Java™ programming language so that you can write code that is clearer, more correct, more robust, and more reusable? Look no further! Effective Java™, Second Edition, brings together seventy-eight indispensable programmer’s rules of thumb: working, best-practice solutions for the programming challenges you encounter every day.
This highly anticipated new edition of the classic, Jolt Award-winning work has been thoroughly updated to cover Java SE 5 and Java SE 6 features introduced since the first edition. Bloch explores new design patterns and language idioms, showing you how to make the most of features ranging from generics to enums, annotations to autoboxing.
Each chapter in the book consists of several “items” presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and outstanding code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.
Highlights include:
New coverage of generics, enums, annotations, autoboxing, the for-each loop, varargs, concurrency utilities, and much more
Updated techniques and best practices on classic topics, including objects, classes, libraries, methods, and serialization
How to avoid the traps and pitfalls of commonly misunderstood subtleties of the language
Focus on the language and its most fundamental libraries: java.lang, java.util, and, to a lesser extent, java.util.concurrent and java.io
Simply put, Effective Java™, Second Edition, presents the most practical, authoritative guidelines available for writing efficient, well-designed programs.
Wankyu Choi - Allan Kent - David Mercer - Dave W. Mercer - Steven D. Nowicki - Dan Squier - PHP5 - Bevezetés a PHP5 programozásba
A PHP5 a "hiperszöveg előfeldolgozó", vagyis a dinamikus, interaktív webhelyek építésére létrehozott programozási nyelv legújabb inkarnációja. A PHP5 temérdek új funkciót és lehetőséget kínál, a legkülönfélébb alkalmazások hozhatók létre, az egyszerűbb segédprogramoktól kezdve a nagy teljesítményű webes programokig. Olyan webhelyek programozását oldhatjuk meg a PHP5 közreműködésével, melyek
-adatokat jelenítenek meg a legkülönbözőbb forrásokból, például adatbázisokból, állományokból, vagy éppen más weboldalakról;
-interaktív elemeket - például keresési lehetőségeket, üzenőfalat vagy szavazógépet - tartalmaznak;
-lehetővé teszik a felhasználók számára különböző műveletek végrehajtását, így például e-mail küldését vagy rendelési/vásárlási tranzakció lebonyolítását.
Ez a könyv azokat célozza meg, akik csak most kezdik az ismerkedést a PHP5-tel. Ez a megfogalmazás meglehetősen széles olvasói kört fed le: a programírással csak most barátkozó kezdőktől egészen a harcedzett, sokat látott és tapasztalt programozókig, akik arra kíváncsiak, hogy mit tudnak kezdeni a PHP legújabb verziójával.
Anil Hemrajani - Agile Java Development with Spring, Hibernate and Eclipse
Agile Java™ Development With Spring, Hibernate and Eclipse is a book about robust technologies and effective methods which help bring simplicity back into the world of enterprise Java development. The three key technologies covered in this book, the Spring Framework, Hibernate and Eclipse, help reduce the complexity of enterprise Java development significantly. Furthermore, these technologies enable plain old Java objects (POJOs) to be deployed in light-weight containers versus heavy-handed remote objects that require heavy EJB containers. This book also extensively covers technologies such as Ant, JUnit, JSP tag libraries and touches upon other areas such as such logging, GUI based debugging, monitoring using JMX, job scheduling, emailing, and more. Also, Extreme Programming (XP), Agile Model Driven Development (AMDD) and refactoring are methods that can expedite the software development projects by reducing the amount of up front requirements and design; hence these methods are embedded throughout the book but with just enough details and examples to not sidetrack the focus of this book. In addition, this book contains well separated, subjective material (opinion sidebars), comic illustrations, tips and tricks, all of which provide real-world and practical perspectives on relevant topics. Last but not least, this book demonstrates the complete lifecycle by building and following a sample application, chapter-by-chapter, starting from conceptualization to production using the technology and processes covered in this book. In summary, by using the technologies and methods covered in this book, the reader will be able to effectively develop enterprise-class Java applications, in an agile manner!
Steven Vickers - Sinclair ZX81 BASIC Programming
Ehhez a könyvhöz nincs fülszöveg, de ettől függetlenül még rukkolható/happolható.
Dave Thomas - Chad Fowler - Andy Hunt - Programming Ruby
Ruby is an increasingly popular, fully object-oriented dynamic programming language, hailed by many practitioners as the finest and most useful language available today. When Ruby first burst onto the scene in the Western world, the Pragmatic Programmers were there with the definitive reference manual, Programming Ruby: The Pragmatic Programmer's Guide.
Now in its Second Edition, author Dave Thomas has expanded the famous Pickaxe book with over 200 pages of new content, covering all the new and improved language features of Ruby 1.8 and standard library modules. The Pickaxe contains four major sections: An acclaimed tutorial on using Ruby. The definitive reference to the language. Complete documentation on all built-in classes, modules, and methods Complete descriptions of all 98 standard libraries.
If you enjoyed the First Edition, you'll appreciate the new and expanded content, including: enhanced coverage of installation, packaging, documenting Ruby source code, threading and synchronization, and enhancing Ruby's capabilities using C-language extensions. Programming for the world-wide web is easy in Ruby, with new chapters on XML/RPC, SOAP, distributed Ruby, templating systems and other web services. There's even a new chapter on unit testing.
This is the definitive reference manual for Ruby, including a description of all the standard library modules, a complete reference to all built-in classes and modules (including more than 250 significant changes since the First Edition). Coverage of other features has grown tremendously, including details on how to harness the sophisticated capabilities of irb, so you can dynamically examine and experiment with your running code. "Ruby is a wonderfully powerful and useful language, and whenever I'm working with it this book is at my side" --Martin Fowler, Chief Scientist, ThoughtWorks
Donald E. Knuth - The Art of Computer Programming - Seminumerical Algorithms
The second volume offers a complete introduction to the field of seminumerical algorithms, with separate chapters on random numbers and arithmetic. The book summarizes the major paradigms and basic theory of such algorithms, thereby providing a comprehensive interface between computer programming and numerical analysis. Particularly noteworthy in this third edition is Knuth's new treatment of random number generators, and his discussion of calculations with formal power series.