Before jumping into computer programming specifically, a few terms are worthy of definition. 'Architecture' describes the hardware on which a computer program is designed to run. More specifically, this term is used to describe the actual processor. 'Platform' is the term used to define the combination of operating system and architecture. An example of two different platforms... Windows XP on an x86 based PC is one platform and BSD Unix on the same x86 system is another; two distinctly different platforms but both share the same architecture. Software is usually designed to execute on a specific platform, though programs do exist that use portable code, that enables them to run cross-platform and on dissimilar architectures.
A 'library' is a set of reusable sections of code that is called from one or many places within a program . Libraries mean that a programmer doesn't have to retype common portions of programming code, this makes the code more compact and thus more efficient. There are also public libraries of code available that a programmer for common and complex functions - this means that the programmer does not have to reinvent the wheel for specific algorithms and functions. Libraries can either be dynamically or statically linked. With a dynamic library, the library code is only run at run-time and only when/if it is required. Dynamic libraries are not part of the actual main program, they are seperate. A static library becomes part of the main program at either the time it is compiled or at a run-time. Once compiled in to executable code, programs with static libraries are larger in size than those with dynamic libraries.
Computer programmers write, maintain and test the detailed instructions, called programs, that computers have to follow to order to perform specific functions. Programmers also design, and test logical structures for solving problems by computer. Over the past decade we have seen many technical innovations in the computer programming field through advancement in computing technologies, programming tools and sophisticated new programming languages.