From: W. Trevor King Date: Thu, 16 May 2013 01:05:09 +0000 (-0400) Subject: pyafm/main.tex: Explain 'stack' and why modularization is useful X-Git-Tag: v1.0~193 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c4ce88fc704a7fe994e677c237afb0c29ff06211;p=thesis.git pyafm/main.tex: Explain 'stack' and why modularization is useful --- diff --git a/src/pyafm/main.tex b/src/pyafm/main.tex index 964e0e7..c47f2b0 100644 --- a/src/pyafm/main.tex +++ b/src/pyafm/main.tex @@ -18,10 +18,31 @@ written in \citetalias{labview} and analysis software written in \citetalias{wavemetrics-igor}, both developed in-house. The existing software was not designed to control sample temperature or for easy extension, so I proceeded to write my own control and analysis stack -to add this capabilities. In this chapter, I will discuss the earlier -frameworks and some abortive attempts that lead me towards my current -architecture (\cref{sec:aio-frameworks,sec:pyafm:stack}). I will also -discuss some auxiliary packages I developed to support the main stack +to add this capabilities. + +For those of you thinking, ``Why is he calling this thing a stack?'', +software is rarely developed as a single monolithic program. Instead, +developers write a software as a series of modular components, with +each layer in the stack using lower level features from the layers +below it to supply higher level features to the layers above it +(\cref{fig:pyafm:stack}). New high-level programs will contain logic +for the new idea (perform velocity-clamp unfolding experiments) and +leverage pre-existing packages for all the old ideas that you need to +get the job done (open a file, Fourier transform an array, \ldots). A +well structured suite of software breaks the task at hand up into many +sub-components, with a distinct package handling each component. + +\citet{whitehead11} introduces his claim about civilization and +subconscious operations to motivate the utility of symbolism in +subconcious reasoning. By encapsulating already established ideas in +a compact form, we can focus on the crux of an issue +(\cref{fig:unfold-protein:unfolder}) without being distracted by the +peripheral boilerplate (\cref{fig:labview}). + +In this chapter, I will discuss the earlier frameworks and abortive +attempts that lead me towards my current architecture +(\cref{sec:aio-frameworks,sec:pyafm:stack}). I will also discuss some +auxiliary packages I developed to support the main stack (\cref{sec:pyafm:auxiliary}). I'll wrap up by comparing my stack with Prof.~Yang's earlier framework and summarizing lessons I've learned along the way (\cref{sec:pyafm:discussion,sec:pyafm:conclusions}).