P languages. Design philosophies Four basic design philosophies are used for programming Component-based programming today: linear programming (LP), OOP, CBP, and AOP. CBP is a subtle extension of the OOP concept. In CBP, the concept of an object is constrained; instead of allowing any Linear programming arbitrary structure for the object, under CBP the basic unit LP is a methodology in which the developer follows a linear is now a component. This component comprises one or thought process for the development of the code. The more classes, and is completely defined by its interfaces process follows a logical flow, SO this type of programming and its functionality. Again extending the previous exam- is dominated by conditional flow control (such as "if-then" ple, the contents on the desktop can now be organized into constructs) and loops. Compartmentalized functionality is components. A component could be a computer, where maintained in functions, where execution of a function the computer component is defined as the collection of involves swapping out the stack, essentially changing the the keyboard, mouse, display, and the actual computer context of operation, performing the function's work, and case. This particular computer component has two input returning results to the calling function, which requires an interfaces (the keyboard and the mouse) and one output additional stack swap. An analogy of LP is creating a big box interface (the display). In future generations of this com- for all items on your desktop, such as the phone, keyboard, ponent, there could be additional interfaces, such as a set mouse, screen, headphone, can of soda, and picture of your of headphones as an output interface, but the component's attractive spouse, with no separation between these items. legacy interfaces are not affected by this new capability. Accessing any one item's functionality, such as drinking Using CBP, the nature of the computer is irrelevant to the a sip of soda, requires a process to identify the soda can, user as 