Q:

Definition of paradigm, abstraction and metaphor

UNIX based operating systems uses the concept of paradigm to identify everything from files, folders, hard drives, networking interfaces as files.
Also it uses the concept of abstraction to reduce down hardware, network interfaces, etc. into files.
Please explain these concepts in details to me.
Also please explain what is metaphor?

A:

First, some definitions:

Paradigm noun
1.1 A world view underlying the theories and methodology of a particular scientific subject
- ODO
Abstraction
In software engineering and computer science, abstraction is a technique for managing complexity of computer systems. It works by establishing a level of complexity on which a person interacts with the system, suppressing the more complex details below the current level.
wikipedia
Metaphor
1.1 A thing regarded as representative or symbolic of something else
- ODO

In the case of UNIX, the paradigm refers to the philosophy underlying the design of the system:

The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development.
- wikipedia

Here, abstraction refers to use of a uniform interface to access all I/O (input/output) devices. The complexity regarding the differences between handling keyboards and hard drives is implemented at a lower layer, but they all appear as files to higher layers.
As Baard Kopperud notes, these 'files' aren't literal files. The term file is simply a convenient label that references something more familiar. In particular, the term refers to things ('real' files) that can be opened and closed, read from and written to, etc. Hence calling the abstractions files employs a figure of speech - in this case, a metaphor.

