Bjarne Stroustrup

back to index

description: Danish computer scientist, creator of C++

30 results

pages: 923 words: 516,602

The C++ Programming Language
by Bjarne Stroustrup
Published 2 Jan 1986

August, 1994. The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4. All rights reserved. Section 1.8.1 References 19 [Stroustrup,1986] Bjarne Stroustrup: The C++ Programming Language. Addison-Wesley. Reading, Mass. 1986. ISBN 0-201-12078-X. [Stroustrup,1987] Bjarne Stroustrup and Jonathan Shopiro: A Set of C Classes for Co-Routine Style Programming. Proc. USENIX C++ conference. Santa Fe, New Mexico. November 1987. [Stroustrup,1991] Bjarne Stroustrup: The C++ Programming Language (Second Edition). Addison-Wesley.

Provide functions that read D Daattees from input, write D Daattees to output, and initialize a D Daattee with a date. The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4. All rights reserved. 106 Pointers, Arrays, and Structures Chapter 5 . The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4. All rights reserved. Section 5.9 Exercises The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4.

Mike Ball, Dag Bruck, Sean Corfield, Ted Goldstein, Kim Knuttila, Andrew Koenig, Josée Lajoie, Dmitry Lenkov, Nathan Myers, Martin O’Riordan, Tom Plum, Jonathan Shopiro, John Spicer, Jerry Schwarz, Alex Stepanov, and Mike Vilot, as people who each directly cooperated with me over some part of C++ and its standard library. Murray Hill, New Jersey Bjarne Stroustrup The C++ Programming Language, Third Edition by Bjarne Stroustrup. Copyright ©1997 by AT&T. Published by Addison Wesley Longman, Inc. ISBN 0-201-88954-4. All rights reserved. Preface to the Second Edition The road goes ever on and on. – Bilbo Baggins As promised in the first edition of this book, C++ has been evolving to meet the needs of its users.

pages: 287 words: 86,919

Protocol: how control exists after decentralization
by Alexander R. Galloway
Published 1 Apr 2004

Mainstream computer researchers no longer aspire to program intelligence into computers but expect intelligence to emerge from the interactions of small subprograms.”91 This shift, from centralized Machine Man and Other Writings (London: Cambridge University Press, 1996); Villiers de L’Isle Adam, L’Eve future (Paris: Fasquelle, 1921); Raymond Ballour, “Ideal Hadaly,” Camera Obscura no. 15 (Fall 1986); Annette Michelson, “On the Eve of the Future: The Reasonable Facsimile and the Philosophical Toy,” October 29 (1984); Fritz Lang’s Metropolis and the False Maria; Issac Asimov’s three rules for robots; Jasia Reichardt, Robots (London: Thames & Hudson, 1978); John Cohn, Human Robots in Myth and Science (London: Allen & Unwin, 1976). 89. C++ (pronounced “see-plus-plus”) was developed by Bjarne Stroustrup in 1980. Stroustrup’s language was built on the preexisting C language written a decade earlier by Brian Kernighan and Dennis Ritchie (who had previously worked on a lesser version called B). 90. Sherry Turkle, “Who Am We?,” Wired, January 1996, p. 149. 91. Turkle, “Who Am We?,” p. 149. Chapter 3 108 procedural code to distributed object-oriented code, is the most important shift historically for the emergence of artificial life.

The standardization of the C programming language began in 1983 with the establishment of an American National Standards Institute (ANSI) committee called “X3J11.” The ANSI report was finished in 1989 and subsequently accepted as a standard by the international consortium ISO in 1990.12 Starting in 1979, Bjarne Stroustrup developed C++, which added the concept of classes to the original C language. (In fact, Stroustrup’s first nickname for his new language was “C with Classes.”) ANSI standardized the C++ language in 1990. C++ has been tremendously successful as a language. “The spread was world-wide from the beginning,” recalled Stroustrup.

The process of standards creation is, in many ways, simply the recognition 11. Salus, A Quarter Century of Unix, p. 2. 12. See Dennis Ritchie, “The Development of the C Programming Language,” in History of Programming Languages II, ed. Thomas Bergin and Richard Gibson (New York: ACM, 1996), p. 681. 13. Bjarne Stroustrup, “Transcript of Presentation,” in History of Programming Languages II, ed. Thomas Bergin and Richard Gibson (New York: ACM, 1996), p. 761. Chapter 4 124 of technologies that have experienced success in the marketplace. One example is the VHS video format developed by JVC (with Matsushita), which edged out Sony’s Betamax format in the consumer video market.

pages: 474 words: 91,222

Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
by Scott Meyers
Published 16 Jun 2001

The second way is to reserve the maximum space you could ever need, then, once you’ve added all your data, trim off any excess capacity. The trimming part isn’t difficult, but I’m not going to show it here, because there’s a trick to it. To learn the trick, turn to Item 17. Item 15: Be aware of variations in string implementations Bjarne Stroustrup once wrote an article with the curious title, “Sixteen Ways to Stack a Cat” [27]. It turns out that there are almost as many ways to implement strings. As experienced and sophisticated software engineers, of course, we’re supposed to pooh-pooh “implementation details,” but if Einstein is right and God is in the details, reality requires that we sometimes get religion.

[6] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995, ISBN 0-201-63361-2. Also available as Design Patterns CD, Addison-Wesley, 1998, ISBN 0-201-63498-8. The definitive book on design patterns. Every practicing C++ programmer should be familiar with the patterns described here and should have easy access to the book or the CD. [7] Bjarne Stroustrup, The C++ Programming Language (third edition), Addison-Wesley, 1997, ISBN 0-201-88954-4. The “resource acquisition is initialization” idiom I mention in Item 12 is discussed in section 14.4.1 of this book, and the code I refer to in Item 36 is on page 530. [8] Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, Addison-Wesley, 2000, ISBN 0-201-61562-2.

[25] Klaus Kreft and Angelika Langer, “A Sophisticated Implementation of User-Defined Inserters and Extractors,” C++ Report, February 2000. [26] Leor Zolman, “An STL Error Message Decryptor for Visual C++,” C/C++ Users Journal, July 2001. This article and the software it describes are available at http://www.bdsoft.com/tools/stlfilt.html. [27] Bjarne Stroustrup, “Sixteen Ways to Stack a Cat,” C++ Report, October 1990. Available at http://www.research.att.com/~bs/stack_cat.pdf. • Herb Sutter, “Guru of the Week #74: Uses and Abuses of vector,” September 2000, http://www.gotw.ca/gotw/074.htm. This quiz (and accompanying solution) does a good job of making you think about such vector-related issues as size vs. capacity (see Item 14), but it also discusses why algorithm calls are often superior to hand-written loops (see Item 43)

Design Patterns: Elements of Reusable Object-Oriented Software (Joanne Romanovich's Library)
by Erich Gamma , Richard Helm , Ralph Johnson and John Vlissides
Published 18 Jul 1995

In Proceeding of the Second International Workshop on Configurable Distributed Systems, pages 190-201, Pittsburgh, PA, March 1994. IEEE Computer Society. [Str91] Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley, Reading, MA, 1991. Second Edition. [Str93] Paul S. Strauss. IRIS Inventor, a 3D graphics toolkit. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 192-200, Washington, D.C., September 1993. ACM Press. [Str94] Bjarne Stroustrup. The Design and Evolution of C++. Addison-Wesley, Reading, MA, 1994. [Sut63] I.E. Sutherland. Sketchpad: A Man-Machine Graphical Communication System.

[EG92] Thomas Eggenschwiler and Erich Gamma. The ET++SwapsManager: Using object technology in the financial engineering domain. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 166-178, Vancouver, British Columbia, Canada, October 1992. ACM Press. [ES90] Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990. [Foo92] Brian Foote. A fractal model of the lifecycles of reusable objects. OOPSLA ’92 Workshop on Reuse, October 1992. Vancouver, British Columbia, Canada. [GA89] S. Gossain and D.B. Anderson. Designing a class hierarchy for domain representation and reusability.

pages: 462 words: 172,671

Clean Code: A Handbook of Agile Software Craftsmanship
by Robert C. Martin
Published 1 Jan 2007

They’ll have become part of you in the same way that a bicycle becomes an extension of your will when you have mastered how to ride it. Acknowledgments Thank you to my two artists, Jeniffer Kohnke and Angela Brooks. Jennifer is responsible for the stunning and creative pictures at the start of each chapter and also for the portraits of Kent Beck, Ward Cunningham, Bjarne Stroustrup, Ron Jeffries, Grady Booch, Dave Thomas, Michael Feathers, and myself. Angela is responsible for the clever pictures that adorn the innards of each chapter. She has done quite a few pictures for me over the years, including many of the inside pictures in Agile Software Develpment: Principles, Patterns, and Practices.

Thanks to all the Object Mentors, past, present, and future, including: Bob Koss, Michael Feathers, Michael Hill, Erik Meade, Jeff Langr, Pascal Roy, David Farber, Brett Schuchert, Dean Wampler, Tim Ottinger, Dave Thomas, James Grenning, Brian Button, Ron Jeffries, Lowell Lindstrom, Angelique Martin, Cindy Sprague, Libby Ottinger, Joleen Craig, Janice Brown, Susan Rosso, et al. Thanks to Jim Newkirk, my friend and business partner, who taught me more than I think he realizes. Thanks to Kent Beck, Martin Fowler, Ward Cunningham, Bjarne Stroustrup, Grady Booch, and all my other mentors, compatriots, and foils. Thanks to John Vlissides for being there when it counted. Thanks to the guys at Zebra for allowing me to rant on about how long a function should be. And, finally, thank you for reading these thank yous. On the Cover The image on the cover is M104: The Sombrero Galaxy.

In short, a programmer who writes clean code is an artist who can take a blank screen through a series of transformations until it is an elegantly coded system. What Is Clean Code? There are probably as many definitions as there are programmers. So I asked some very well-known and deeply experienced programmers what they thought. Bjarne Stroustrup, inventor of C++ and author of The C++ Programming Language I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled optimizations.

pages: 496 words: 174,084

Masterminds of Programming: Conversations With the Creators of Major Programming Languages
by Federico Biancuzzi and Shane Warden
Published 21 Mar 2009

Although popularized in the 80s and 90s for OO and GUI programming, one of its greatest contributions to software is its pervasive generic programming techniques, exemplified in its Standard Template Library. Newer languages such as Java and C# have attempted to replace C++, but an upcoming revision of the C++ standard adds new and long-awaited features. Bjarne Stroustrup is the creator of the language and still one of its strongest advocates. Design Decisions Why did you choose to extend an existing language instead of creating a new one? Bjarne Stroustrup: When I started—in 1979—my purpose was to help programmers build systems. It still is. To provide genuine help in solving a problem, rather than being just an academic exercise, a language must be complete for the application domain.

If you are looking for inspiring thoughts regarding software and programming languages, you will need a highlighter, or maybe two, because I promise that you will find plenty of them throughout these pages. —Federico Biancuzzi Organization of the Material The chapters in this book are ordered to provide a varied and provocative perspective as you travel through it. Savor the interviews and return often. Chapter 1, C++, interviews Bjarne Stroustrup. Chapter 2, Python, interviews Guido van Rossum. Chapter 3, APL, interviews Adin D. Falkoff. Chapter 4, Forth, interviews Charles H. Moore. Chapter 5, BASIC, interviews Thomas E. Kurtz. Chapter 6, AWK, interviews Alfred Aho, Peter Weinberger, and Brian Kernighan. Chapter 7, Lua, interviews Luiz Henrique de Figueiredo and Roberto Ierusalimschy.

He attends opera, theater, ballet, and art museums. He enjoys fine food, traveling, photography, gardening, and foreign languages. He reads about cosmology, evolution, cognitive science, epic poetry, mythology, fantasy, history, and public affairs. He and his wife live in Saratoga, California. They have two sons in college. Bjarne Stroustrup designed and implemented C++. Over the last decade, C++ has become the most widely used language supporting object-oriented programming by making abstraction techniques affordable and manageable for mainstream projects. Using C++ as his tool, Stroustrup has pioneered the use of object-oriented and generic programming techniques in application areas where efficiency is a premium; examples include general systems programming, switching, simulation, graphics, user-interfaces, embedded systems, and scientific computation.

pages: 544 words: 96,029

Practical C Programming, 3rd Edition
by Steve Oualline
Published 15 Nov 2011

(As we will see, this flexibility is also a drawback, as it allows the program to do things that the programmer never intended.) The second reason that C is popular is that a portable C compiler was widely available. Consequently, people could attach a C compiler for their machine easily and with little expense. In 1980, Bjarne Stroustrup started working on a new language, called “C with Classes.” This language improved on C by adding a number of new features. This new language was improved and augmented, and finally became C++. One of the newest languages, Java, is based on C++. Java was designed to be “C++ with the bugs fixed.”

Buffered I/O Input/Output where intermediate storage (a buffer) is used between the source and destination of an I/O stream. Byte A group of eight bits. C A general-purpose computer programming language developed in 1974 at Bell Laboratories by Dennis Ritchie. C is considered to be a medium-to-high-level language. C++ A language based on C invented in 1980 by Bjarne Stroustrup. First called “C with classes,” it has evolved into its own language. C code Computer instructions written in the C language. C compiler Software that translates C source code into machine code. C syntax. See syntax. Call by value A procedure call in which the parameters are passed by passing the values of the parameters.

pages: 104 words: 39,583

From Punched Cards To Flat Screens: A Technical Autobiography
by Philip Hazel
Published 11 Aug 2017

I have to admit I was relieved eventually to hand this over to a colleague who knew a lot more about graphics than I did. Also at that time I was looking after a Simula implementation. Simula was a simulation language that came from the Norwegian Computing Centre in Oslo. It was an early object-oriented programming language. The major user at Cambridge was a research student called Bjarne Stroustrup, who kept finding bugs in the system. Each time we had to put the evidence onto a magnetic tape and post it off to Norway. A few weeks later, back would come the tape with a fixed version of Simula. Even when the bugs were mended, however, Bjarne found that Simula was very difficult to use for the tasks he wanted it to do.

pages: 394 words: 118,929

Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
by Scott Rosenberg
Published 2 Jan 2006

Bridges are, with skyscrapers and dams and similar monumental structures, the visible representation of our technical mastery over the physical universe. In the past half century, software has emerged as an invisible yet pervasive counterpart to such world-shaping human artifacts. “Our civilization runs on software,” says Bjarne Stroustrup, who invented a widely used computer language called C++. At first this sounds like an outlandish and self-serving claim. Our civilization got along just fine without Microsoft Windows, right? But software is more than the program you use to send email or compose a report; it has seeped into every cranny of our lives, without many of us noticing.

Ellen Ullman also used it in her essay collection Close to the Machine: Technophilia and Its Discontents (City Lights, 1997). Details on the construction of the new Bay Bridge are from http://www.newbaybridge.org/. The National Institute of Standards and Technology study is at http://www.nist.gov/public_affairs/releases/n02-10.htm. “Our civilization runs on software” is widely attributed to Bjarne Stroustrup. One original source is in slides from a course he teaches at Texas A&M University where he is a professor: http://courses.cs.tamu.edu/petep/1_programming_06a.pdf. The Maurice Wilkes quote is from p. 145 of M. V. Wilkes, Memoirs of a Computer Pioneer (MIT Press, 1985) as cited in M. Campbell-Kelly, “The Airy Tape: An Early Chapter on the History of Debugging,” Annals of the History of Computing 14: 4 (1992), pp. 18–28.

pages: 706 words: 120,784

The Joy of Clojure
by Michael Fogus and Chris Houser
Published 28 Nov 2010

Ritchie, The C Programming Language (Englewood Cliffs, NJ: Prentice Hall, 1988). 1972 Prolog Alain Colmerauer Ivan Bratko, PROLOG: Programming for Artificial Intelligence (New York: Addison-Wesley, 2000). 1975 Scheme Guy Steele and Gerald Sussman Guy Steele and Gerald Sussman, the “Lambda Papers,” mng.bz/sU33. 1983 C++ Bjarne Stroustrup Bjarne Stroustrup, The Design and Evolution of C++ (Reading, MA: Addison-Wesley, 1994). 1986 Erlang Telefonaktiebolaget L. M. Ericsson Joe Armstrong, “A History of Erlang,” Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages (2007). 1987 Perl Larry Wall Larry Wall, Tom Christiansen, and Jon Orwant, Programming Perl (Cambridge, MA: O’Reilly, 2000). 1990 Haskell Simon Peyton Jones Miran Lipovača, “Learn You a Haskell for Great Good!”

The Art of Readable Code
by Dustin Boswell and Trevor Foucher
Published 14 Sep 2010

= null && max_length-- > 0) { if (node.name().equals(name)) return true; node = node.next(); } return false; } This version also has the benefit that it still works if max_length is 0 or if node is null. Another reason to avoid do/while is that the continue statement can be confusing inside it. For instance, what does this code do? do { continue; } while (false); Does it loop forever or just once? Most programmers have to stop and think about it. (It should loop just once.) Overall, Bjarne Stroustrup, the creator of C++, says it best (in The C++ Programming Language): In my experience, the do-statement is a source of errors and confusion. … I prefer the condition “up front where I can see it.” Consequently, I tend to avoid do-statements. Returning Early from a Function Some coders believe that functions should never have multiple return statements.

pages: 274 words: 58,675

Puppet 3 Cookbook
by John Arundel
Published 25 Aug 2013

See also ff The Importing dynamic information recipe in Chapter 3, Writing Better Manifests ff The Getting information about the environment recipe in Chapter 3, Writing Better Manifests ff Using regular expressions in if statements, in this chapter 55 3 Writing Better Manifests There are only two kinds of programming languages: those people always bitch about and those nobody uses. —Bjarne Stroustrup In this chapter we will cover: ff Using arrays of resources ff Using definitions ff Using dependencies ff Using tags ff Using run stages ff Using node inheritance ff Passing parameters to classes ff Using class inheritance and overriding ff Writing reusable, cross-platform manifests ff Getting information about the environment ff Importing dynamic information ff Passing arguments to shell commands Downloading the example code You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com.

pages: 680 words: 157,865

Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design
by Diomidis Spinellis and Georgios Gousios
Published 30 Dec 2008

(The first principle is “to program to an interface, not an implementation,” which should be clear to anybody who has seen any advice on encapsulation in the last 40 years.) To programmers who have not followed the arrival of object-oriented programming to center stage in the 1980s and 1990s, this rule might not seem overly important. But if one recalls that time, one of the defining concepts in object-oriented programming was inheritance. Take, for instance, Bjarne Stroustrup’s description of C++ in The C++ Programming Language (1985). We find there (p. 21) that: C++ is a general purpose programming language with a bias toward systems programming that: Is a better C Supports data abstraction Supports object-oriented programming Supports generic programming If we then turn to see exactly what “supports object-oriented programming” entails (p. 39), we find: The programming paradigm is: Decide which classes you want Provide a full set of operations for each class Make commonality explicit by using inheritance Now consider by contrast yet another classic, Joshua Bloch’s Effective Java (2008).

Of course it is possible to program your way around duck typing only the inheritance type of polymorphism. A programmer, however, is wealthier if she has more tools at her disposal for solving the problem she faces. As long as the plurality of tools does not get into the way, she can choose among them as best fits the situation. This has been expressed very elegantly by Bjarne Stroustrup in The Design and Evolution of C++ (1994, p. 23): My interest in computers and programming languages is fundamentally pragmatic. I feel most at home with the empiricists rather than with the idealists.... That is, I tend to prefer Aristotle to Plato, Hume to Descartes, and shake my head sadly over Pascal.

pages: 1,331 words: 183,137

Programming Rust: Fast, Safe Systems Development
by Jim Blandy and Jason Orendorff
Published 21 Nov 2017

Rust is a new systems programming language developed by Mozilla and a community of contributors. Like C and C++, Rust gives developers fine control over the use of memory, and maintains a close relationship between the primitive operations of the language and those of the machines it runs on, helping developers anticipate their code’s costs. Rust shares the ambitions Bjarne Stroustrup articulates for C‍++ in his paper “Abstraction and the C++ Machine Model:” In general, C++ implementations obey the zero-overhead principle: What you don’t use, you don’t pay for. And further: What you do use, you couldn’t hand code any better. To these Rust adds its own goals of memory safety and trustworthy concurrency.

You can iterate fast: arguing with the compiler gets you up and running correctly a lot faster than debugging data races. Chapter 20. Macros A cento (pronounced “cento,” from the Latin for “patchwork”) is a poem made up entirely of lines quoted from another poet. Matt Madden Your quote here. Bjarne Stroustrup Rust supports macros, a way to extend the language in ways that go beyond what you can do with functions alone. For example, we’ve seen the assert_eq! macro, which is handy for tests: assert_eq!(gcd(6, 10), 2); This could have been written as a generic function, but the assert_eq! macro does several things that functions can’t do.

pages: 297 words: 77,362

The Nature of Technology
by W. Brian Arthur
Published 6 Aug 2009

Roller bearings belong to several commonly used domains. 72 Fly-by-wire allowed aircraft control systems: Tomayko. 74 In 1821 Charles Babbage: Joel Shurkin, Engines of the Mind, Norton, New York, 1996, p. 42; Doron Swade, The Difference Engine, Penguin Books, New York, 2002, p. 10. 74 Jules Verne’s: Dover’s 1962 edition of Verne’s From the Earth to the Moon carries many of the original 1860s French illustrations. 77 “the grammar of painting”: Henry James, “The Art of Fiction,” Longman’s Magazine 4, September 1884. 77 the biochemist Erwin Chargaff: The quote is from his “Preface to a Grammar of Biology,” Science 172, May 14, 1971. 77 Where do such… from?: Sometimes grammars exist with no obvious backing of nature. The grammar of a programming language such as C++ is artificial, and based on an agreed-upon set of principles. See Bjarne Stroustrup, The Design and Evolution of C++, Addison-Wesley, Reading, MA, 1994. Grammars do not necessarily derive from our “official” understanding of how nature works, from science. Most of the newer grammars—of nanotechnology, say, or of optical data transmission—do. But the principles that govern older technologies, such as the smelting of metals or leather tanning, were derived mainly from practice, from the casual observation of nature. 77 But this understanding… theory: The aircraft rule is from Vincenti, p. 218. 78 “Doing it well… buyer.”

pages: 238 words: 93,680

The C Programming Language
by Brian W. Kernighan and Dennis M. Ritchie
Published 15 Feb 1988

Emlin, Karen Fortgang, Allen Holub, Andrew Hume, Dave Kristol, John Linderman, Dave Prosser, Gene Spafford, and Chris van Wyk. We also received helpful suggestions from Bill Cheswick, Mark Kernighan, Andy Koenig, Robin Lake, Tom London, Jim Reeds, Clovis Tondo, and Peter Weinberger. Dave Prosser answered many detailed questions about the ANSI standard. We used Bjarne Stroustrup's C++ translator extensively for local testing of our programs, and Dave Kristol provided us with an ANSI C compiler for final testing. Rich Drechsler helped greatly with typesetting. Our sincere thanks to all. Brian W. Kernighan Dennis M. Ritchie 8 Preface to the first edition C is a general-purpose programming language with features economy of expression, modern flow control and data structures, and a rich set of operators.

pages: 345 words: 86,394

Frequently Asked Questions in Quantitative Finance
by Paul Wilmott
Published 3 Jan 2007

Basket A collection of financial instruments. In a basket option the payoff depends on the behaviour of the many underlyings. See page 312. Bermudan swaption An option to enter into a swap that may be exercised on any of a specified number of dates. C++ An enhanced version of the C programming language developed by Bjarne Stroustrup in 1983. The enhancements include classes, virtual functions, multiple inheritance, templates, etc. Calibration Determining parameters (possibly state and time dependent) such that one’s theoretical prices match traded prices. Also called fitting. This is a static process using a snapshot of prices.

pages: 1,201 words: 233,519

Coders at Work
by Peter Seibel
Published 22 Jun 2009

I'm not sure that I've written enough Perl code to be taken seriously as a detractor, but I have not been attracted to the language. I have not been attracted to C++. I have written some C++ code. Anything I think I might want to write in C++ now could be done about as well and more easily in Java. Unless efficiency were the primary concern. But I don't want to be seen as a detractor of Bjarne Stroustrup's effort. He set himself up a particular goal, which was to make an object-oriented language that would be fully backwards-compatible with C. That was a difficult task to set himself. And given that constraint, I think he came up with an admirable design and it has held up well. But given the kinds of goals that I have in programming, I think the decision to be backwards-compatible with C is a fatal flaw.

Seibel: So you're doing your stuff in your own sandbox? Do you mostly do your stuff in C? Thompson: I write mostly in C. I do all my test stuff and toy stuff in C while Google is C++, strictly C++. It's no big deal programming in C++, but I don't like it. I resist it. Seibel: You were at AT&T with Bjarne Stroustrup. Were you involved at all in the development of C++? Thompson: I'm gonna get in trouble. Seibel: That's fine. Thompson: I would try out the language as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed.

Life Is Simple: How Occam's Razor Set Science Free and Shapes the Universe
by Johnjoe McFadden
Published 27 Sep 2021

From the minimalist music of John Cage, to the clean architectural lines of Le Corbusier, the lean prose of Samuel Beckett or the smooth lines of the iPad, modern culture is steeped in simplicity. Occam’s razor finds expression in the advice of the architect Mies van der Rohe that ‘Less is more’; the computer scientist Bjarne Stroustrup’s instruction to ‘Make simple tasks simple’, or the writer and aviator Antoine de Saint-Exupéry’s observation that ‘It seems that perfection is reached not when there is nothing left to add but when there is nothing left to take away.’ In engineering the principle is best known under the acronym KISS, or ‘Keep it simple, stupid’, a design principle adopted by the US Navy in the 1960s but now universally acknowledged as fundamental to sound engineering.

pages: 429 words: 114,726

The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise
by Nathan L. Ensmenger
Published 31 Jul 2010

Burton Swanson, “The Dimensions of Maintenance,” in ICSE ‘76: Proceedings of the 2nd International Conference on Software Engineering (San Francisco: IEEE Computer Society Press, 1976), 492–497. 11. Girish Parikh, “What Is Software Maintenance Really? What Is in a Name?” SIGSOFT Software Engineering Notes 9, no. 2 (1984): 114–116. 12. Frederick Brooks, The Mythical Man-Month: Essays on Software Engineering (New York: Addison-Wesley, 1975), 7. 13. Bjarne Stroustrup, “A History of C++,” in History of Programming Languages, ed. Thomas M. Bergin and R.G. Gibson (New York, ACM Press, 1996). 14. Michael Swaine, “Is Your Next Language COBOL?” Dr. Dobbs Journal (2008). 15. Andrew Pollack, “Year 2000 Problem Tests Professionalism of Programmers,” New York Times (May 3, 1999): C1; Mark Manion and William M.

pages: 556 words: 109,516

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
by Scott Meyers
Published 15 Mar 2014

Andrei Alexandrescu Ph.D., Research Scientist, Facebook, and author of Modern C++ Design As someone with over two decades of C++ experience, to get the most out of modern C++ (both best practices and pitfalls to avoid), I highly recommend getting this book, reading it thoroughly, and referring to it often! I’ve certainly learned new things going through it! Nevin Liber Senior Software Engineer, DRW Trading Group Bjarne Stroustrup—the creator of C++—said, “C++11 feels like a new language.” Effective Modern C++ makes us share this same feeling by clearly explaining how everyday programmers can benefit from new features and idioms of C++11 and C++14. Another great Scott Meyers book. Cassio Neri FX Quantitative Analyst, Lloyds Banking Group Scott has the knack of boiling technical complexity down to an understandable kernel.

pages: 566 words: 122,184

Code: The Hidden Language of Computer Hardware and Software
by Charles Petzold
Published 28 Sep 1999

The most popular object-oriented languages for small computers, however, are extensions of traditional ALGOL-like languages, such as C and Pascal. The most popular object-oriented extension of C is called C++. (As you might recall, two plus signs in C is an increment operator.) Largely the brainchild of Bjarne Stroustrup (born 1950) of Bell Telephone Laboratories, C++ was implemented first as a translator that converted a program written in C++ to one written in C (although very ugly and virtually unreadable C). The C program could then be compiled normally. Object-oriented languages can't do anything more than traditional languages can do, of course.

pages: 931 words: 79,142

Concepts, Techniques, and Models of Computer Programming
by Peter Van-Roy and Seif Haridi
Published 15 Feb 2004

The Art of Prolog: Advanced Programming Techniques. Series in Logic Programming. MIT Press, Cambridge, MA, 1986. Marc Stiegler. The E Language in a Walnut. 2000. Draft available at http://www.erights.org. [202] [203] Bjarne Stroustrup. A history of C++. ACM SIGPLAN Notices, 28(3):271–297, March 1993. Originally appeared in History of Programming Languages Conference (HOPL-II), 1993. [204] [205] Bjarne Stroustrup. The C++ Programming Language, 3rd edition. Addison-Wesley, 1997. Giancarlo Succi and Michele Marchesi. Extreme Programming Examined. Addison-Wesley, 2001. [206] Sun Microsystems. The Java Series. Sun Microsystems, Mountain View, CA, 1996.

pages: 1,758 words: 342,766

Code Complete (Developer Best Practices)
by Steve McConnell
Published 8 Jun 2004

Limitations on the Use of Macro Routines Modern languages like C++ provide numerous alternatives to the use of macros: const for declaring constant values inline for defining functions that will be compiled as inline code template for defining standard operations like min, max, and so on in a type-safe way enum for defining enumerated types typedef for defining simple type substitutions As Bjarne Stroustrup, designer of C++ points out, "Almost every macro demonstrates a flaw in the programming language, in the program, or in the programmer…. When you use macros, you should expect inferior service from tools such as debuggers, cross-reference tools, and profilers" (Stroustrup 1997). Macros are useful for supporting conditional compilation—see Debugging Aids—but careful programmers generally use a macro as an alternative to a routine only as a last resort.

Handling errors with exceptions just because your language provides exception handling is a classic example of programming in a language rather than programming into a language. (For details on that distinction, see Your Location on the Technology Wave, and Program into Your Language, Not in It. Finally, consider whether your program really needs to handle exceptions, period. As Bjarne Stroustrup points out, sometimes the best response to a serious run-time error is to release all acquired resources and abort. Let the user rerun the program with proper input (Stroustrup 1997). Barricade Your Program to Contain the Damage Caused by Errors Barricades are a damage-containment strategy.

pages: 499 words: 144,278

Coders: The Making of a New Tribe and the Remaking of the World
by Clive Thompson
Published 26 Mar 2019

That’s partly because the fewer lines of code that exist, the less likely one is to introduce a bug. A huge pile of “spaghetti code” is a bog in which bugs can easily hide. When the code is shorter and tighter, it’s easier to see precisely what it’s supposed to be doing and not doing. It’s a forest of spare birch trees; you can see right through it. Bjarne Stroustrup, the designer of the C++ programming language, has taught many young students. He told me that, much as first-year political science students lard their essays with jargon, the newbie programmers tend to write much longer, more convoluted code. “The average solution that the students come up with was between two and three times larger than my solution,” he says.

pages: 818 words: 153,952

C++ Concurrency in Action: Practical Multithreading
by Anthony Williams
Published 1 Jan 2009

Other new language features include static assertions, strongly typed enumerations, delegating constructors, Unicode support, template aliases, and a new uniform initialization sequence, along with a host of smaller changes. Describing all the new features in detail is outside the scope of this book; it would probably require a book in itself. The best overview of the entire set of changes to the standard at the time of writing is probably Bjarne Stroustrup’s C++11 FAQ,[1] though popular C++ reference books will be revised to cover it in due course. 1http://www.research.att.com/~bs/C++0xFAQ.html Hopefully the brief introduction to the new features covered in this appendix has provided enough depth to show how they relate to the Thread Library and to enable you to write and understand multithreaded code that uses these new features.

pages: 612 words: 187,431

The Art of UNIX Programming
by Eric S. Raymond
Published 22 Sep 2003

[Stevens92] W. Richard Stevens. Advanced Programming in the Unix Environment. 1992. ISBN 0-201-56317-7. Addison-Wesley. Stevens's comprehensive guide to the Unix API. A feast for the experienced programmer or the bright novice, and a worthy companion to Unix Network Programming. [Stroustrup] Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley. 1991. ISBN 0-201-53992-6. [Tanenbaum-VanRenesse] Andrew S. Tanenbaum and Robbert van Renesse. A Critique of the Remote Procedure Call Paradigm. EUTECO'88 Proceedings, Participants Edition. 1988. pp. 775-783. [Tidwell] Doug Tidwell. XSLT: Mastering XML Transformations.

pages: 821 words: 178,631

The Rust Programming Language
by Steve Klabnik and Carol Nichols
Published 14 Jun 2018

The point is this: iterators, although a high-level abstraction, get compiled down to roughly the same code as if you’d written the lower-level code yourself. Iterators are one of Rust’s zero-cost abstractions, by which we mean using the abstraction imposes no additional runtime overhead. This is analogous to how Bjarne Stroustrup, the original designer and implementor of C++, defines zero-overhead in “Foundations of C++” (2012): In general, C++ implementations obey the zero-overhead principle: What you don’t use, you don’t pay for. And further: What you do use, you couldn’t hand code any better. As another example, the following code is taken from an audio decoder.

pages: 648 words: 183,275

The Rust Programming Language, 2nd Edition
by Steve Klabnik and Carol Nichols
Published 27 Feb 2023

The point is this: iterators, although a high-level abstraction, get compiled down to roughly the same code as if you’d written the lower-level code yourself. Iterators are one of Rust’s zero-cost abstractions, by which we mean that using the abstraction imposes no additional runtime overhead. This is analogous to how Bjarne Stroustrup, the original designer and implementor of C++, defines zero-overhead in “Foundations of C++” (2012): In general, C++ implementations obey the zero-overhead principle: What you don’t use, you don’t pay for. And further: What you do use, you couldn’t hand code any better. As another example, the following code is taken from an audio decoder.

pages: 999 words: 194,942

Clojure Programming
by Chas Emerick , Brian Carper and Christophe Grand
Published 15 Aug 2011

* * * [437] The Eclipse Public License, which allows for free commercial use and redistribution: http://www.eclipse.org/legal/epl-v10.html. [438] In Clojure’s case, Rich Hickey, who has a role similar to Python’s Guido Van Rossum, Ruby’s Yukihiro Matsumoto, Perl’s Larry Wall, and C++’s Bjarne Stroustrup. [439] All recognized contributors are listed at http://clojure.org/contributing. [440] irc://irc.freenode.net/clojure or in your browser at http://webchat.freenode.net/?channels=#clojure. [441] One of us has run a community-wide survey for the past two years to gauge the origins, mood, and priorities of the Clojure community; full results of the last editing of that survey are available at http://cemerick.com/2011/07/11/results-of-the-2011-state-of-clojure-survey/.