Content deleted Content added
mNo edit summary |
m →Lessons: replaced: recursively-defined → recursively defined |
||
(33 intermediate revisions by 24 users not shown) | |||
Line 1:
{{Short description|1978 book by Brian W. Kernighan and P. J. Plauger}}
{{third-party|date=February 2015}}
{{Infobox book
| italic title = <!--(see above)-->
| name =
| image = The Elements of Programming Style.jpg
| image_size =
| border =
| alt =
| caption = Cover of the second edition
| author = [[Brian W. Kernighan]] and [[P. J. Plauger]]
| audio_read_by =
| title_orig =
| orig_lang_code =
| title_working =
| translator =
| illustrator =
| cover_artist =
| country =
| language =
| series =
| release_number =
| subject =
| genre =
| set_in =
| publisher =
| publisher2 =
| pub_date = 1978
| english_pub_date =
| published = McGraw-Hill
| media_type =
| pages = 168 pages
| awards =
| isbn = 978-0070342071
| isbn_note =
| oclc =
| dewey =
| congress =
| preceded_by =
| followed_by =
| native_wikisource =
| wikisource =
| notes =
| exclude_cover =
| website =
}}
'''''The Elements of Programming Style''''', by [[Brian W. Kernighan]] and [[P. J. Plauger]], is a study of [[programming style]], advocating the notion that computer programs should be written not only to satisfy the compiler or personal programming "style", but also for "readability" by humans, specifically [[software maintenance]] engineers, [[programmers]] and [[technical writers]]. It was originally published in 1974.
The book pays explicit homage, in title and tone, to ''[[The Elements of Style]]'', by [[William Strunk Jr.|Strunk]] & [[E. B. White|White]] and is considered a practical template promoting [[Edsger Dijkstra|Edsger Dijkstra's]] [[structured programming]] discussions. It has been influential and has spawned a series of similar texts tailored to individual languages, such as ''The Elements of C Programming Style'', ''The Elements of C# Style'', ''The Elements of Java(TM) Style'', ''The Elements of MATLAB Style'', etc.
The book is built on short examples from actual, published programs in programming textbooks.
==Lessons==
Its lessons are summarized at the end of each section in [[Aphorism|pithy maxims]], such as "Let the machine do the dirty work":
# Write clearly – don't be too clever.
# Say what you mean, simply and directly.
# Use library functions whenever feasible.
# Avoid too many temporary variables.
# Write clearly – don't sacrifice clarity for efficiency.
# Let the machine do the dirty work.
# Replace repetitive expressions by calls to common functions.
# Parenthesize to avoid ambiguity.
# Choose variable names that won't be confused.
# Avoid unnecessary branches.
# If a logical expression is hard to understand, try transforming it.
# Choose a data representation that makes the program simple.
# Write first in easy-to-understand pseudo language; then translate into whatever language you have to use.
# Modularize. Use procedures and functions.
# Avoid gotos completely if you can keep the program readable.
# Don't patch bad code – rewrite it.
# Write and test a big program in small pieces.
# Use recursive procedures for recursively defined data structures.
# Test input for plausibility and validity.
# Make sure input doesn't violate the limits of the program.
# Terminate input by end-of-file marker, not by count.
# Identify bad input; recover if possible.
# Make input easy to prepare and output self-explanatory.
# Use uniform input formats.
# Make input easy to proofread.
# Use self-identifying input. Allow defaults. Echo both on output.
# Make sure all variables are initialized before use.
# Don't stop at one bug.
# Use debugging compilers.
# Watch out for off-by-one errors.
# Take care to branch the right way on equality.
# Be careful if a loop exits to the same place from the middle and the bottom.
# Make sure your code does "nothing" gracefully.
# Test programs at their boundary values.
# Check some answers by hand.
# 10.0 times 0.1 is hardly ever 1.0.
# 7/8 is zero while 7.0/8.0 is not zero.
# Don't compare floating point numbers solely for equality.
# Make it right before you make it faster.
# Make it fail-safe before you make it faster.
# Make it clear before you make it faster.
# Don't sacrifice clarity for small gains in efficiency.
# Let your compiler do the simple optimizations.
# Don't strain to re-use code; reorganize instead.
# Make sure special cases are truly special.
# Keep it simple to make it faster.
# Don't diddle code to make it faster – find a better algorithm.
# Instrument your programs. Measure before making efficiency changes.
# Make sure comments and code agree.
# Don't just echo the code with comments – make every comment count.
# Don't comment bad code – rewrite it.
# Use variable names that mean something.
# Use statement labels that mean something.
# Format a program to help the reader understand it.
# Document your data layouts.
# Don't over-comment.
Modern readers may find it a shortcoming that its examples use older [[procedural programming languages]] ([[Fortran]] and [[PL/I]])
==Reception==
''[[Kilobaud Microcomputing]]'' stated that "If you intend to write programs to be used by other people, then you should read this book. If you expect to become a professional programmer, this book is mandatory reading".<ref name="reeves198001">{{cite news | url=https://archive.org/stream/kilobaudmagazine-1980-01/Kilobaud_Microcomputing_1980_January#page/n7/mode/2up | title=The Elements of Programming Style | work=Kilobaud Microcomputing | date=January 1980 | accessdate=23 June 2014 | author=Reeves, Jack W. | pages=9}}</ref>
==References==
{{reflist}}
*B. W. Kernighan and P. J. Plauger, ''The Elements of Programming Style'', McGraw-Hill, New York, 1974. {{ISBN|0-07-034199-0}}
*B. W. Kernighan and P. J. Plauger, ''The Elements of Programming Style 2nd Edition'', McGraw Hill, New York, 1978. {{ISBN|0-07-034207-5}}
==External links==
*[http://www.softwarequotes.com/showquotes.aspx?id=574&name=P. J. Plauger selected quotes from ''The Elements of Programming Style'']
*{{YouTube|id=8SUkrR7ZfTA|title=Elements of Programming Style – 2009 Brian Kernighan talk at Princeton}}
{{DEFAULTSORT:Elements Of Programming Style, The}}
[[Category:1974 non-fiction books]]
[[Category:Computer programming books]]
[[Category:
[[Category:McGraw-Hill books]]
|