Skip to main content

Too much abstraction

Abstraction refers to the method of 'hiding' implementation details in the process of software development. This technique is useful to prevent code duplication in a computer application.
Usually, this is achieved by the use of libraries, packages or modules contained in the programming language core library or from external sources.

So what is the issue here.......
Too much of anything is umm... bad for you!

  • Most new programmers grow up with little information concerning how most libraries work in the background
  • Cloud computing eliminates the need for  hardware set up and low level machine configurations
  • Modern programmers are mostly concerned with integrating several "black boxes" to create innovative and disruptive solutions - GREAT!
  • "Essentially, we're progressing into an age where no one knows how to operate a manual transmission vehicles" - SAD!

Potential issues

  • What happens when the background code in the abstraction "falls apart"? Do we still have developers who take time to understand the implementation details of the most loved "black boxes" e.g. Blue screen of death in Microsoft windows
  • Potential opportunities for performance improvement may be missed - Most developers don't understand the code behind hardware drivers
  • Mistakes in abstraction implementation become difficult to detect

Conclusion

Abstraction is great for innovation and seamless solutions development, but we need to consider the effects of too much abstraction on the future generation of software developers. What do you think? We'd love to hear from you,  leave you comment on the comment section  below?

Comments

Popular posts from this blog

Gunicorn vs NGINX Explained

Web applications typically disseminate information via three server layers: Web server   - First layer: Receives request from client(web browser) Application server - 2nd layer: Receives requests from web server if the client is requesting dynamic content Database - 3rd layer: Receives database queries from web framework's request handler methods In this example , nginx is the web server, gunicorn is the application server (interface between nginx and web framwork request handling function) and the database can be assumed to be a lightweight sqlite3 database. Example: Django architecture Alternatives to nginx : Cherokee Apache HTTP server Alternatives for gunicorn: Apache Mongoose

How to install python 3 in Ubuntu 16.04 / LIve USB

The following guide will help you get started with installing python3 and pip3 on your linux( Ubuntu 16.04 ) live USB.  1. First install python 3 from the "deadsnakes" repository from the Python Package Accesories ( PPA ) $ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt-get update $ sudo apt-get install python3.6 This will install both python 3.5.2 and python 2.7.2 on your machine. Verify the installation by running python3 --version or python --version on the linux command line.  2. Next up, install pip3 package manager that will allow you to install other useful python libraries such as numpy,seabon ,pandas etc. $ sudo apt-get update $ sudo apt-get install python3-setuptools $ sudo easy_install3 pip  Once again, verify the installation by running pip3 --version on the command line. 3. You can now use pip3 to install non-core python libraries as follows   $ sudo pip3 install jupyter  $ sudo pip3 numpy etc.

Python packages

A python package is a collection of python module s. These modules are python scripts with *.py file extension. Typically, these scripts will contain python functions, classes, custom data types etc. Looking at the figure above, the Game package consist of an _init_.py file together with 3 other sub-packages Sound, Image and Level respectively. The _init_.py file must be included inside a directory for it to be considered a python package.In addition, the directory must be defined inside sys.path. Example usage: 1. import Game.Level.Start Suppose the start.py module consists of a function called mince() Inside your python application, you would need to call it as follows 2. Game.Level.Start.mince(<input_params>) Alternatively, you can reference it as follows 3. from Game. Level import Start     // recommended approach 4. Start.mince(<input_params>) A less common method is calling the function as if it was defined inside your curr...