Programming in General

Computer Motherboards Explained (Simple)

Motherboard with Colors

Programmers should have a basic understanding of the different computer components. The motherboard is an important components as its name implies. In this article we explain what a motherboard is, its basic uses and how it can relate to programming.

Backbone of a Computer

A motherboard is often described as the backbone of a computer. This description is on the spot in my opinion, because it holds and connects all the basic components of a computer together, just like a backbone. Motherboards have different sockets to plug in the different components of a computer. Some of the important components are:

  • A CPU (Central Processing Unit)
  • A graphics card
  • Memory

There are many other components which I left out in order to focus on the most important ones to develop a basic understanding of the functioning of a computer.

CPU

While the main purpose of a motherboard is to connect components of a computer together, the main purpose of the Central Processing Unit (CPU) is to constantly process data. A motherboard doesn’t have processing power of its own. The CPU processes the data resulting from commands that are constantly given by the user and running programs. As a result it produces a lot of heat, that’s why a fan is often close to it. The CPU is located in a protective socket on the motherboard that works like a lock.

Graphics Card

A graphics card processes the data necessary to produce a visible image on the screen. The graphics card contains a Graphics Processing Unit (GPU), which is its most important component. The GPU does graphical computation and without it you can’t see anything on the screen. Sometimes the GPU is integrated with the CPU without the computer having a formal graphics card. The graphics card often has a slot close to the CPU.

Memory

Memory (in different kinds) is necessary to store data and access data. Two types of memory are pointed out here (there are many more). The first one is Random Access Memory (RAM). This is a kind of temporary memory. It is very fast and works very closely with the CPU. RAM is attached to different slots on the motherboard. A motherboard often has some unused empty slots intended for expanding the RAM.

A second kind of memory I wanted to mention, is the hard drive memory. It is a more permanent type of memory. If you save something, most of the time it goes in here. It is readily available, because it’s cheap but on the other hand much slower than RAM. The hard disk drive takes a significant amount of space and is not directly attached to the motherboard, instead they are connected through cables.

BIOS

A motherboard often has a small memory chip containing what is called the BIOS (Basic Input Output System). This is special software to control the booting process and basic hardware configurations. It also has other functions like testing the condition of the hardware. The BIOS is the very first software executed when the computer is powered on.

The BIOS is a type of firmware, software specifically designed and connected to specific hardware. Firmware is known to be not very secure against hacking, because it’s updated rarely. Threats are hard to detect, because firmware operates kind of independently.

UEFI

To address many of the issues in a BIOS type of firmware, UEFI (Unified Extensible Firmware Interface) is developed as a replacement. UEFI has some advantages and extra functionalities. Advantages are that it’s generally speaking more secure and the booting process is faster. Unlike BIOS, UEFI has network capabilities as an additional feature.

UEFI has actually become more of a standard than BIOS. It is still often referred to as BIOS while it is in fact UEFI. An indication to recognize you’re actually dealing with UEFI is a graphical user interface (GUI) and a mouse cursor. However, this doesn’t necessarily have to be the case, because manufacturers often choose a design like a traditional BIOS.

Despite UEFI being a clear improvement compared to BIOS, different vulnerabilities and problems have been pointed out over the past years by critics.

BIOS or UEFI Programming

The BIOS or UEFI is particularly interesting for programmers, as it is software that can be adjusted and programmed. BIOS or UEFI programming can be a useful skill for programmers, because it can be used to repair computers. However, messing with firmware can lead to serious problems. You have to know what you’re doing before actually applying it to a computer of real value.

What languages are used to program BIOS and UEFI? As firmware is very close to hardware it is typically done in assembly language (BIOS) or a very low level programming language like C (UEFI). Read this article for more in depth explanation about the different types of programming languages.

4 Important Questions Asked by a Beginner Programmer

This article is meant for people who are interested in programming and want to learn this online or are in the process of doing so. In this “beginner phase” of a programmer, some important questions pop up. We go through some of these questions and possible answers from my point of view. By reading this article beginner programmers might make smarter decisions during their learning process and possibly save time, effort, and money.

A Beginner Programmer Has a Lot of Questions
Continue reading…

Programming: A First Impression

Introduction

The purpose of this article is to give a basic definition of programming, to explain some terms often used in articles and to explore the goal of programming, which is to write a program.

What Is Programming?

Programming involves everything that lets a computer perform commands. It is actually translating natural human language to computer language. You might have heard before that a computer only understands the language of ones and zeros (binary code). Writing commands in ones and zeros is very inconvenient for human beings. It is very inefficient and mistakes can be made very easily. That is why programming languages have been developed. These make it easier to come up with the ones and zeros needed for a computer to perform a command. So programming is ultimately just putting together ones and zeros.

Some Important Distinctions

This part addresses some terms that might be interesting for someone who is new to programming.

Front/Back End Programming

A distinction that you come across regularly is the distinction between front end and back end programming. Front end programming refers to the part of programming that is most visible to a user or client. Applied to web development, this can mean that a front end programmer develops code to adjust the look of a website. Back end programming is the part of programming not directly visible to the user of the end product. A typical example is the programming of a database behind a website.

High/Low Level Programming Languages

As mentioned before a programming language is needed to express certain commands you want the computer to perform in an efficient way. A distinction can be made between low level and high level programming languages. Simply put, low level languages are closer to the hardware of a computer. More direct and percise commands can be written. High level languages are in contrast closer to human natural language. While they have been designed to feel more intuative for human beings, a lot of technical aspects have been preconfigured. This means that the programmer has less options in terms of controlling hardware.

Syntax and Semantics

A programming language has a syntax and semantics behind it. The syntax is the formal code, the apparent lines of code. While semantics refer to the meaning behind the code. This distinction is similar to every day spoken natural language. To form a correct sentence you have to adhere to certain rules of grammar (syntax) and the sentence has to have a logical meaning (semantics). The same applies to writing sentences or lines of code with a programming language. If one of these two elements is lacking, the overall result will also likely be lacking.

The Purpose of Programming

The purpose of programming is to write a program. Programs can vary from a simple couple of lines of code to very sophisticated applications. Programs are actually written to solve a problem. This can be an attempt to solve a simple individual problem, like writing a program that you can use to plan your daily activities. A more complex problem can lead to a whole package of programs, like managing the processes of a company.

An example of a very simple program is to write text in the console (simple black screen). An example of code written in the C# language to do this, is shown below:

Console.WriteLine("This is a test !");

When the code is executed it looks like this:

As you get more used to the basic concepts of programming, you can try to develop more complex programs.