# Tech(computer technology)

One trendy buzz word on the internet in recent times is “**Tech**”. It has become so ubiquitous that one can hardly miss it in our daily interactions on the internet and quite often in real life as well. As a novice, you might be wondering what it’s all about but that’s about to change as this article will give an explicit but concise and simplified explanation of what **tech** is all about.

To state simply, **tech** is short for **technology**, which refers to the various methods, systems, and devices which are the result of scientific knowledge being used for practical purposes.

**Tech** in itself is a very wide field of knowledge. In most higher institutions, they have faculties that major in this prolific area of knowledge to study the different branches it entails. However, the trendy buzz word that you come across very often on the internet is mainly referring to **computer technology**. So,

### What is computer technology?

***Computer technology*** *is the activity of designing, constructing and programming computers.*

Let me intimate the reader that I’ll be focusing on the **programming** aspect of **computer technology** in this article, which is where **web development** falls. Before I delve fully into what **web development** is, I’ll like to also notify the reader that this article will be in two folds as I’d like them to have some fundamental understanding of what a **computer** is in the first place, and how it functions before I transition to **web development** which is the focal point of this article.

### **What is a computer?**

*A* ***computer*** *is an electronic device which manipulates stored data or information. The stored data can either be processed or just be kept in its raw form which can be retrieved at any point in time as decided by the end-user. E.g laptop, smart phones*

The **computer system** consists of 3 major components. For optimal functionality, all these components have to work together with synergy. The **computer system** components include:

* **Software**
    
* **Hardware**
    
* **Humanware(end-user)**
    

The **hardware** component consists of the physical and palpable - internal and external - parts of the **computer**. E.g  screen, Keyboard(external) speaker, motherboard(internal).

The **software** components aren’t visible and can’t be touched (mostly written instructions given to the **computer**, including the ones the **hardware components** run on).

**Humanware** component refers to the persons who design, program, and operate the **computer**.

The **computer** is a versatile device that serves various purposes and therefore needs to be given a variety of instructions to achieve each purpose. If we could recall, I said I’ll be focusing on the **programming** part of **computer technology** in this article, and having been acquainted with what a **computer** is, it is essential that we also understand how it functions with regards to **programming**.

### **What is programming ?**

***computer programming*** *is simply the activity of writing instructions for the* ***computer*** *to carry out or execute.*

It can also be referred to as the **software component** of the **computer system** which generally involves writing of **programs**, **softwares** and **applications**, and **scripts**, each of which will be explained below..

*A* ***program*** *also known as* ***code*** *is a set of instructions given to a* ***computer*** *to carry out or execute a specific task. It is basically telling the computer what to do while,*

*a* ***script*** *is a* ***program*** *written specifically for other programs to execute rather than the computer itself.*

*A* ***software*** *is a set or group of* ***programs***. It can be categorized into two major parts such as;

* **Application Software**
    
* **System Software**
    

*An* ***application*** *software or an* ***app*** *for short is a set of* ***programs*** *designed to carry out a specific task or a set of tasks, typically to be used by* the ***end-user*** (humanware). E.g calendar app, calculator app, music player app.

***System*** ***software*** *is a set of* ***programs*** *that serves as an interface between the computer and the hardware components, and also facilitates the operation of other softwares(typically apps).* E.g OS(Operating System), hardware drivers.

***Take note of the correlation amongst the definitions above. While they are logically the same, what differentiates them is the distinct purposes they serve.***

Going by the definition of **programming** being instructions giving to a **computer**, it implies that the **computer** needs to understand what it’s being told to do otherwise it won’t be able to execute the instructions. However, the **computer** and the **end-user** (humanware) are two different entities. The **computer** being a lifeless machine while the **end-user** being a lively entity, naturally can’t communicate with each other. This becomes a dilemma and begs the question; how will the instructions get passed to the **computer**?

To answer this critical question, I’d like to use we humans as an analogy. As humans, we have deviced means of communication amongst ourselves which comprises of sounds, signs and symbols, and we call the combination of these(written and oral) a “**language**”. On the other hand, The **computer** being an electronic device only understands “**machine code**”; basically in binary made up of zeros(0s) and ones(1s). This becomes an existential communication gap and therefore becomes crucial to build a bridge that connects these two distinct entities. Consequently, **programming languages** were created to bridge the gap and just like the human “**language**” facilitates human to human communication, **programming languages** facilitate human to **computer** communication while a **script language** on the other hand facilitates program to program communication. Like humans, who have different languages such as Swahili, English, etc.. there are several several **programming languages;** categorized primarily in to:

* **High level programming languages** e.g C, C++, Java
    
* **Low level programming languages** e.g assembly
    

**Machine code**  is also regarded as a **low level programming language** while **script languages** are regarded as **high level languages**. However, All levels of programming languages serve the same purpose but high level languages are much closer to what humans can read and understand(almost in plain human language) while assembly languages are written in **mnemonics** which are relatively close as well, especially when compared to **machine code**.

Below are some illustrations showing a program that displays “Hello Word!” written in different levels of **programming languages.**

1. **Machine Code(binary)**
    
    ```plaintext
    01001000 01100101 01101100 01101100 01101111 
    
    01010111 01101111 01110010 01101100 01100100 00100001
    ```
    
2. **Assembly language (mnemonics)**
    
    ```plaintext
    section	.text
       global _start     ;must be declared for linker (ld)
    	
    _start:	            ;tells linker entry point
       mov	edx,len     ;message length
       mov	ecx,msg     ;message to write
       mov	ebx,1       ;file descriptor (stdout)
       mov	eax,4       ;system call number (sys_write)
       int	0x80        ;call kernel
    	
       mov	eax,1       ;system call number (sys_exit)
       int	0x80        ;call kernel
    
    section	.data
    msg db 'Hello, world!', 0xa  ;string to be printed
    len equ $ - msg     ;length of the string
    ```
    
3. **High level programming language (JavaScript)**
    
    ```javascript
    console.log(‘Hello World!’)
    ```
    

Now that a means of communication has been esbtablished, there’s a need for some type of mechanism that translates these languages to what the **computer** understands. In the case of humans, those who speak different languages make use of “**interpreters”,** they are other humans who understand both or more languages of different peoples and help in translating the speeches of one party to the other parties in the language they understand. This kind of mechanism exists for computers to humans as well, and interestingly they’re also called “**interpreters”**.

In the case of **high level programming languages**, they are called **compilers** while low level languages such as assembly language are interpreted by an **assembler**. Both the **compiler** and **assembler** are translators  just like the human **interpreters**, they’re programs that translate the instructions written in **programming languages** that are readable for humans, to **machine code** that’s understood by the **computer**.

**Scripts** on the other hand are interpreted directly without need for compilation nor assemblage. **Compilation** and **assemblage** essentially involves translation of the whole source code at once but an **interpreter** translates the code one line after the other.

Yeh! Here we are, this is where I’m going to drop the pen for now. If you would recall, I said this article would be in two folds, so watch out for the concluding part coming up very soon. I hope you enjoyed the time spent. Cheers!
