Abstraction

A variable is an abstraction. In maths, it could represent an unknown, a to be calculated entity or a changing quantity. In programming, it could represent a number, a character/string, a function, an object, or the changing state of a part of a system. It's an interface to some hidden logic the details of which are irrelevant to the current context in which it is being used. God knows what behemoth of complexity it contains or how it has been implemented. Probably a complex data structure or some algorithm that you never cared to learn in college. 😉

Keywords in a programming language are abstractions. let, if, for, while, define, etc all have been designed keeping the English language is mind. Because our brains are wired to comprehend it well. You don't have to bother with the machine level instructions or how the electrons are flowing between the transistors on the motherboard to implement these logical constructs.

A function is an abstraction. Acts like a black box. Parameters in, data out. Doesn't matter what goes inside it. Even functions can come out of a function in some programming languages. That's an example of abstraction on steroids.

The files in your computer are an abstraction over the data stored in the magnetizable material of the hard disk drive. The programs running in your computer are an abstraction of the execution state of the CPU moving electrons between the hard disk drive and the RAM in a calculated and sophisticated manner.

The tabular structure and the SQL language of databases are abstractions over the block-based structure of the data provided by the hard disk drives. The connection to a database, a web service, or any other system is an abstraction. It's a bunch of variables and data structures maintained in the memory by the kernel to represent the state of the connection.

The web browser is an abstraction over the World Wide Web. You don't have to know the gory details of how the web page you are currently viewing travels across the oceans via large submarine communication cables to arrive at your computer. A set of separate highly specialized technologies working in tandem across different layers of abstraction( OSI layer/ TCP-IP layer) to reliably transfer data between different computers.

Networking protocols are abstractions over the messy implementations across different CPU architectures, operating systems, and programming languages.

Machine learning models are abstractions over complicated statistical, probabilistic, and whatnot mathematical calculations. Cloud computing is an abstraction over racks of insanely large and fast computers stored in data centers around the globe acting as a single computer for your photos, videos, and other files.

Language is an abstraction of your thoughts and emotions. No matter how hard you try, you can never accurately express what's going on in your mind. It's also an abstraction over consciousness. No matter how hard you try, you can never comprehend reality.😐

Money is an abstraction of trade, wealth, and economic activity. Banks are abstractions over concurrent monetary transactions, messy currency conversions, debt maintenance, and bookkeeping, etc. Stock prices are abstractions over the current value and the prospects of the publicly traded companies and the health of the overall economy.

A Limited Liability Company is an abstraction over tens of thousands of people, processes, goods, and services. A government is an abstraction over the processes of law-making, public, and privacy policy and administration. A country is an abstraction of its landmass, natural resources, and it's population.

The world is an abstraction of the physical, chemical, and biological phenomena. The universe is an abstraction of space, time, matter, and forces. Life is an abstraction of reality.

Abstraction is heaven. Abstraction is hell.

© TECHIMADIONS 2020