====== 2.3 Programming Paradigm ====== [[dido:public:s_cli:05_contents:01_prt:02_basics:start| Return to DIDO CLI Background]] Programming paradigms are a way to classify [[dido:public:ra:xapend:xapend.a_glossary:p:programlang|programming languages]] based on their features and characteristics. For example, is the language [[dido:public:ra:xapend:xapend.a_glossary:i:imperative | Imperative]] or [[dido:public:ra:xapend:xapend.a_glossary:d:declarative | Declarative]] in nature. * //An **Imperative Language** uses a sequence of statements to determine how to reach a certain [[dido:public:ra:xapend:xapend.a_glossary:g:goal|goal]]. These statements are said to change the state of the program as each one is executed in turn. (( user2102654, Stackoverflow, __What is difference between functional and imperative programming languages?__, 24 July 2013, Accessed 12 April 2021, [[https://stackoverflow.com/questions/17826380/what-is-difference-between-functional-and-imperative-programming-languages]] ))// * //**Declarative languages**, also called **Non-Procedural** or very high level, are programming languages in which (ideally) a program specifies what is to be done rather than how to do it. In such languages there is less difference between the specification of a program and its implementation than in the [[dido:public:ra:xapend:xapend.a_glossary:p:procedurallanguage|procedural languages]] described so far.(( Encyclopedia Britannica, Accessed: 12 April 2021, [[https://www.britannica.com/technology/computer-programming-language/Visual-Basic#ref849838]] ))// An import aspect of any programming language is to determine the programming paradigm(s) features needed to properly and meet the requirements of the language. The DIDO-CLI is no exception. In order to discuss the programming paradigm for DIDO-CLI, a brief overview of the kinds of (i.e., classification) of some of the most common paradigms is presented. Some paradigms are place a lot of emphasis on the implications for the execution model of the language, such as allowing side effects, or whether the sequence of operations is defined by the execution model. Other paradigms are concerned mainly with the way that code is organized, such as grouping a code into units along with the state that is modified by the code. Yet others are concerned mainly with the style of [[dido:public:ra:xapend:xapend.a_glossary:s:syntax|syntax]] and grammar. There are many kinds of Programming Paradigms(( GeeksForGeeks, __Difference between Procedural and Non-Procedural language__, Accessed: 15 April 2021, [[https://www.geeksforgeeks.org/difference-between-procedural-and-non-procedural-language/]] )). Only those that are considered relevant to the DIDO-CLI are reviewed here. * Procedural Programming * Object Oriented Programming * [[dido:public:ra:xapend:xapend.a_glossary:f:functionalprogramming|Functional Programming]] The DIDO-CLI is expected to be a hybrid of these paradigms. /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~