This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:s_cli:05_contents:01_prt:02_basics:03_paradigim:start [2021/05/01 19:14] nick |
dido:public:s_cli:05_contents:01_prt:02_basics:03_paradigim:start [2021/10/30 14:51] (current) nick |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 2.1.3 Programming Paradigm ====== | + | ====== 2.3 Programming Paradigm ====== |
| - | [[dido:public:s_cli:05_contents:02_basics:start| Return to DIDO CLI Background]] | + | [[dido:public:s_cli:05_contents:01_prt:02_basics:start| Return to DIDO CLI Background]] |
| - | Programming paradigms are a way to classify programming languages based on their features and characteristics. For example, is the language imperative or declarative in nature. | + | 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 goal. These statements are said to change the state of the program as each one is executed in turn. (( | + | * //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, | user2102654, | ||
| Stackoverflow, | Stackoverflow, | ||
| Line 11: | Line 11: | ||
| [[https://stackoverflow.com/questions/17826380/what-is-difference-between-functional-and-imperative-programming-languages]] | [[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 procedural languages described so far.(( | + | * //**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, | Encyclopedia Britannica, | ||
| Accessed: 12 April 2021, | Accessed: 12 April 2021, | ||
| Line 19: | Line 19: | ||
| 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. | 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 syntax and grammar. | + | 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(( | There are many kinds of Programming Paradigms(( | ||
| Line 30: | Line 30: | ||
| * Procedural Programming | * Procedural Programming | ||
| * Object Oriented Programming | * Object Oriented Programming | ||
| - | * Functional Programming | + | * [[dido:public:ra:xapend:xapend.a_glossary:f:functionalprogramming|Functional Programming]] |
| The DIDO-CLI is expected to be a hybrid of these paradigms. | The DIDO-CLI is expected to be a hybrid of these paradigms. | ||
| - | * [[dido:public:s_cli:05_contents:02_basics:03_paradigim:ProcPro]] | + | <nspages dido:public:s_cli:05_contents:01_prt:02_basics:03_paradigim -tree -r -exclude -subns -pagesInNs -h1 -textNs="Paradigm Details"> |
| - | * [[dido:public:s_cli:05_contents:02_basics:03_paradigim:oopPro]] | + | |
| - | * [[dido:public:s_cli:05_contents:02_basics:03_paradigim:FuncPro]] | + | |
| - | * [[dido:public:s_cli:05_contents:02_basics:03_paradigim:HiBrPro]] | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ===== 2.1.1.1 Hybrid of Functional and Procedural Languages ===== | + | |
| - | [[dido:public:s_cli:05_contents:02_basics:03_paradigim:start| Return to Top]] | + | |
| - | + | ||
| - | : //All programming paradigms have their benefits to both education and ability. Functional languages historically have been very notable in the world of scientific computing. Of course, taking a list of the most popular languages for scientific computing today, **__it would be obvious that they are all multi-paradigm__**. Object-oriented languages also have their fair share of great applications. Software development, game development, and graphics programming are all great examples of where object-oriented programming is a great approach to take.// | + | |
| - | + | ||
| - | : //The biggest note one can take from all of this information is that the future of software and programming language is multi-paradigm. It is unlikely that anyone will be creating a purely functional or object-oriented programming language anytime soon. If you ask me, this isn’t such a bad thing, as there are weaknesses and strengths to every programming approach that you take, and a lot of true optimization is performing tests to see which methodology is more efficient or better than the other overall. This also puts a bigger thumbtack into the idea that everyone should know multiple languages from multiple paradigms. With the paradigms merging using the power of generics, it is never known when one might run into a programming concept from an entirely different programming language!//(( | + | |
| - | Emmett Boudreau, | + | |
| - | __What Is A Programming Paradigm?__, | + | |
| - | 16 October 2020, | + | |
| - | TowardsDataScience, | + | |
| - | Accessed 15 April 2021, | + | |
| - | [[https://towardsdatascience.com/what-is-a-programming-paradigm-1259362673c2]] | + | |
| - | )) | + | |
| - | + | ||
| - | In keeping with Boundreau conclusion, //"it would be obvious that they are all multi-paradigm"//, the DIDO-CLI is best served using a hybrid programming paradigm approach. Where a Functional Paradigm makes sense, it should be used and followed. Afterall, two very successful [[dido:public:ra:xapend:xapend.a_glossary:c:cli | CLIs]], i.e., [[dido:public:ra:xapend:xapend.a_glossary:p:posix | POSIX]] and [[dido:public:ra:xapend:xapend.a_glossary:s:sql]], have demonstrated quite a bit of success using a Functional approach. However, both of these languages also have embraced the Procedural Paradigm also: | + | |
| - | + | ||
| - | * SQL has Stored Procedures and triggers | + | |
| - | * POSIX has adopted the use of scripts | + | |
| - | + | ||
| - | In addition, Oracle RDBMS, PostgreSQL and MySQL have included support of Object Oriented Programming(( | + | |
| - | TutorialsPoint, | + | |
| - | __PL/SQL - Object Oriented__, | + | |
| - | Accessed: 15 April 2021, | + | |
| - | [[https://www.tutorialspoint.com/plsql/plsql_object_oriented.htm#:~:text=PL%2FSQL%20allows%20defining%20an,and%20methods%20for%20operating%20it.]] | + | |
| - | ))(( | + | |
| - | tapoueh.org, | + | |
| - | __Object Relational Database Management System__, | + | |
| - | 22 March 2018, | + | |
| - | Accessed: 15 April 2021, | + | |
| - | [[https://tapoueh.org/blog/2018/03/object-relational-database-management-system/]] | + | |
| - | ))(( | + | |
| - | Nick Long, | + | |
| - | __Does MYSQL Support Object Oriented Database?__, | + | |
| - | StackOverflow, | + | |
| - | 21 August 2013, | + | |
| - | Accessed: 15 April 2021, | + | |
| - | [[https://stackoverflow.com/questions/7901907/does-mysql-support-object-oriented-database]] | + | |
| - | )). | + | |
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||