Tech(computer technology)

Tech(computer technology)

Intro to web development 1

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)

     01001000 01100101 01101100 01101100 01101111 
    
     01010111 01101111 01110010 01101100 01100100 00100001
    
  2. Assembly language (mnemonics)

     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)

     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!