A programming language is nothing but a set of instructions written in a logical sequence to perform a task. The word task might be repetitive, very much similar, or partially similar. Modern Programming languages are so sophisticated that a code that would take some hundreds of pages can be achieved in a few lines. Simply put, condensing a program with inbuilt functions and libraries is called abstraction. It is not a novel concept or exclusive to the programming world. It exists in pretty much every domain. E.g., a car driver may know what it is like to drive a car using the steering wheel, gears, clutches, etc. but it is not necessary to understand how exactly the motor works or a smart lamp designer need not know the program that runs the lamp. Developers need not know how the human language kind of commands they type gets translated into a language of bits and bytes that the computer understands. Essentially, this is because programming has evolved to higher levels from the earlier assembly language, containing only 0s and 1s, which is not devoid of abstraction either!
• CPU – hardware system,
• Firmware – controls the hardware of the system
• Operating system – This is the level at which the API developers use to develop
• Programs, applications, services, etc.
Though abstraction might sound like something that is taken for granted, for quite a few reasons, it proves to be critical. Programmers who understand the importance of clean code know-how abstractions help them and how difficult it is to use the right abstractions. But resorting to too much abstraction might land the programmer in a complex maze of code, therefore it is necessary to find the sweet spot, between abstraction and detailing. And also, the programmers cannot depend on abstractions alone because they only define the implementation, which should be provided by the programmers elsewhere. It is like going to the page where you know what is written, using a bookmark.
• Simplifies representation of the domain models
• Hides irrelevant details found in the code
• Helps programmers partition the program into independent concepts
• Offers flexibility when implementing ADT objects in different situations
"Managing complexity is the most important technical topic in software development. In my view, it's so important that Software's Primary Technical Imperative has to be managing complexity. Complexity is not a new feature of software development." Steve McConnell, Code Complete.
Join our WhatsApp Channel to get the latest news, exclusives and videos on WhatsApp
_____________
Disclaimer: Analytics Insight does not provide financial advice or guidance. Also note that the cryptocurrencies mentioned/listed on the website could potentially be scams, i.e. designed to induce you to invest financial resources that may be lost forever and not be recoverable once investments are made. You are responsible for conducting your own research (DYOR) before making any investments. Read more here.