Download 6 Things About Programming That Every Computer Programmer Should Know - Vincent North PDF

Title6 Things About Programming That Every Computer Programmer Should Know - Vincent North
File Size442.8 KB
Total Pages25
Table of Contents
                            Introduction: Just Call It “A Career’s Experience, Condensed Into Six Key Topics”
And So, And Without Further Ado: “Here Are The Six”
	The List
One: Internal Memory Management and Data Structures:
Two: Objects
Three: SQL Queries and Concepts
Four: Precise Specification, Strategy, and Implementation
Five: “Front-End / Back-End.” User Interfaces and Frameworks.
Six: Pragmatic Debugging Skills
In Closing:
Footnotes
                        
Document Text Contents
Page 12

release any storage that they are no longer using. Most modern programming
languages take care of this chore through some mechanism which detects
automatically when a particular storage block is no longer being referenced,
but so-called “leaks” can occur when, for instance, a series of storage-blocks
all contain references to one another, but there remain no other references
elsewhere to any of those blocks. (Since all of the blocks are still
“referenced,” they never get released.) Heap exhaustion can also be caused
by inefficient program design.

4. Failure to detect when a storage-allocation request could not be satisfied:
When a request cannot, for whatever reason, obtain the amount of
storage requested, it will typically return “zero” – a special value also known
as NULL. Programs should be detect if this occurs, and respond accordingly,
but they rarely do.

5. Exhaustion of fixed-size storage arrays: Some early programming
languages do not allow storage to be dynamically allocated from the heap.
Instead, the programmer must specify a for the structure. Programs
are supposed to determine if the space within these fixed structures has been
exhausted, but they rarely do. Programming languages also usually do not
detect that a reference has been attempted which lies outside of the proscribed
boundaries of the structure. The usual consequence is stack or heap
corruption.



Memory issues are a common source of problems in software that is in the process of
being developed, but they are much less common in programs that are in production.

Page 24

In Closing:
Well then, there you have it. “My six.” And, along the rambling way, my pragmatic

recommendations. Most if not all of the topics that I have quickly described in this little
book will call for further exploration on your part, and I hope that I have succeeded in
setting the stage of understanding for you to do so.

Computer programming has changed enormously over the past sixty years and
counting, but in many ways it has changed not-at-all. We’re still writing instructions for
electronic machines to (unthinkingly) carry out, and the process requires a lot of human
thought. “Capturing the big picture, in spite of the myriad details,” is something that can
easily become lost in the shuffle. I hope that these words have helped you in some small
way, and welcome your comments, reviews and feedback.

Page 25

1 The observation, attributed to Dr. Gordon Moore, that semiconductors would double in speed and density every two
year.

2 A term most-likely originally coined by Charlotte Brontë in her book, Jane Eyre: “Gentle Reader, may you never feel
what I then felt! May your eyes never shed such stormy, scalding, heart-wrung tears as poured from mine …” Oh yes,
Ms. Brontë had quite the way with words.

3 Wikipedia defines “craft” as: “a pastime or a profession that requires particular skills and knowledge of skilled work.”

4 Hey, I’m the Author here. I can do that. Please, read on …

5 All right, all right. I have no pragmatic choice, at this point, but to impose an important technical term: “process,”
where previously I said, “executing program.” On almost any computer today, you can run more-than-one copy of ‘the
same’ program at the same time, just as easily as you can run ‘different programs.’ Operating systems routinely call
“each distinct instance of ‘<any program>, running here’” … “a ‘process.’”

6 The “operating system” is the foundational layer of software which governs the operation of the entire computer
system. Unix®, Linux®, OS/X®, Z-OS®, etc. are all examples of this. These create and manage the operating
environment under which all processes ultimately operate, and define and implement the entire world that is available to
them.

7 A “thread” is an independent thread of execution running within the auspices of a single process. For our purposes
now, simply think of it as having “its own ‘stack.’”

8 ISBN: 978-0-13-022418-7.

9 This characteristic is sometimes called, “late binding.”

10 Not every SQL database system supports transactions. Most do, but some “have strings attached.” For instance, the
ever-popular MySQL database only supports transactions if the “InnoDB” physical file-format is used.

11 North, Vincent P., Managing the Mechanism: Why Software Projects Aren’t Like Any Other Project You’ve Ever Tried
to Manage (And How To Do It Successfully). Published 2012. ISBN: 978-0-715-74383-7.

Similer Documents