# The Philosophy Behind Programming Languages: A Case Study of JavaScript, Python and Solidity**
# **Introduction**
A programming language is a system of notation for writing computer programs while Programming is simply the act of writing computer programs. In our everyday life as programmers, we are faced with tasks that requires us to write computer codes or programs in order to enable us solve daily tasks. This piece of work is an attempt to briefly talk about design philosophies of some computer programming languages which are widely used in the world today.
The definition of programming is the process of setting instructions to a computer to tell it what to do or solve a particular problem. This process involves describing the problem in the form of a special code or algorithm so that computers solve the problem. The aim of this article is to give a quick grasp about the what programming is, it's origin and further
# **Brief History of Programming Language**
According to wikipedia, the history of programming languages streams from some documentation of the early known mechanical computers to what we have as the modern tools for software development. as a matter of fact, history has it that the early programming languages were highly specialized which made it rely mostly on mathematical notation and similarly obscure syntax. There were indications as noted that innthe entirety of the 20th century, concentrated research in compiler theory led to the accessible syntax to communicate instructions.
Early history has accredited Lady Ada Lovelace as the mother of programming language after she successfully translated the memoir of the Italian mathematician Luigi Menabrea about Charles Babbage's newest proposed machine, the Analytical Engine between the period of 1842-1849. She successfully supplemented the memoir with notes that that specified in detail a method for calculating Bernoulli numbers with the engine which was eventually recognized by reputable historians as the world's first published computer program.
# **The Significance of Design Philosopy of Programming Languages**
It is quite interesting to know that every programming language has a philosophy behind it and no known programming language exists without one. Before any new language is brought into existence, the programmer or team of programmers must be asking the important questions like "What problem(s) is this programming language going to solve ?" which speaks directly to the core principles, the kind of design decisions to be considered as to whether the key features should focus on memory safety or syntatic simplicity among others. Another aspect which can not be neglected is the fact that every programmer understands that their programming language is going to be used by humans and as such, they have to consider the community and ecosystem to know how the principles of their program translates to real world use.
# **Some Programming Languages and Their Design Philosophy**
**JAVASCRIPT**
---
This is the programming language that brings life to every known website. This programming language allows developers to implement complex features that enables a web page to do more than just sit there and display static information for you to look at, thereby making it display timely content updates, interactive ,maps, animated 2D/3D graphics, scrolling etc.
Inventor: Brendan Eich
Year of invention: 1995
Developed for: Netscape
---
**Design Philosophy**
---
The philosophy behind the design of JavaScript is that it lays a lot of emphasis on a clean, maintainable and efficient code. The developers aim for a solutions that standout and solve problems effecrtively. It is worthy to note that design patterns usually play a crucial role which is categorized into creational, stuctural and behavioural types types which provides structured approaches to common development challenges. The patterns mentioned above helps to promote code reusability, scalabilty and readability, which eventually contributes to the overall code quality.
---
**PYTHON**
---
Python is widely regarded to as a general purpose programming language. Is is an Object Orientated Programming (OOP) language. It is an interpreted object-orieted high level programming language with dynamic symantics. It is a simple and easy to learn syntax lays emphasis on its readability which helps to reduce the cost of program maintenance. Python supports modules and packages which encourages program modularity and code reuse
Inventor: Guido Van Rossum
Year of invention: 1991
Developed by: Python Software Foundation
---
**Design Philosophy**
---
Python's main design philosophy emphasizes on three key aspects which are readability, simplicity abd consistency. Being a general purpose programming language, it is designed to be open source so as to allow any developer to contribute to its development. Python is also suitable to everyday task as it is widely used in different fields of human endeavour which are but not limited to Data Science, machine learning, web development and data analytics etc.
---
**SOLIDITY**
---
Like other programming languages like python, solidity is also and object-oriented high-level language which is used for implementing smart contracts, which by themselves programs that govern the behaviour of accounts within the Ethereum state. Solidity is statistically typed, supports inheritance, libraries and complex user-defined types and many other features. It is a curly-bracket language designed to target the Ethereum virtual machine (EVM)
Inventor: Gavin Wood
Year of invention: 2014
---
**Design Philosophy:**
---
The philosophy behind this programming language is based on using standardized design patterns to create secure, efficient, and maintainable smart contracts. These design patterns are typically frameworks that aid developers in tackling common programming issues.
***Some examples of Solidity design patterns include:***
Access restriction: Limits function execution to specific conditions
***Pull-over-push***: Shifts the risk of Ether transfer from the contract to the users
Proxy delegate: Allows smart contracts to be upgraded without breaking their components
***Emergency stop***: Halts a contract by blocking calls to critical functions
***Eternal storage:*** Maintains the memory of an upgraded smart contract
---
**Other Design Considerations for Solidity include:
Upgradeability**
---
Consider whether the contract should be upgradeable in the future, but be aware that this can introduce complexity and security considerations
***Multi authorization:***
A transaction or function call may require the acknowledgement of multiple users
---
# **Summary**
As stated early, there is no solution without a problem and every programmer is a solution provider. While there are numerous programming languages and counting, none has existed or will ever exist with a philosophy behind it. A programmer must therefore ask the criticial questions like the kind of design features to implement in their program, the underlying solutions whether to tackle speed and security or scability or perhaps all of the above before venturing into the work itself. It is with those considerations that we have many programming languages with their similarities and differences.
---
# **LINKS TO RESOURCES**
1. Brief History of Programming Languages https://en.wikipedia.org/wiki/History_of_programming_languages
2. What is JavaScript? -MDN Web Docs - Mozilla
https://developer.mozilla.org
3. What is Python
https://www.coursera.org/articles/what-is-python-used-for-a-beginners-guide-to-using-python#:~:text=Python%20is%20a%20computer%20programming,most%2Dused%20programming%20languages%20today
4. Home|Solidity Programming Language
https://soliditylang.org/
5. Smart Contract Design Patterns Explained
https://metana.io/blog/smart-contract-design-patterns-in-solidity-explained/#:~:text=Design%20patterns%20provide%20a%20framework,function%20as%20intended%20without%20vulnerabilities
6. Study.com| programming Languages Defined
https://study.com/academy/lesson/what-is-programming-definition-introduction-for-beginning-programmers.html#:~:text=The%20definition%20of%20programming%20is,that%20computers%20solve%20the%20problem