ADC Computer - bibanon/android-development-codex GitHub Wiki

What is a Computer?

Computers permeate every part of our lives, but many do not know the

Software

Software is defined as the programs, apps, and operating systems that make the computer work.

Software is divided into multiple levels

Binary Code

The computer can only work with binary code, which is made up of "ones" and "zeros".

This binary code is usually generated with assembly code, which is easier to work with for human programmers.

Binary code built for one processor platform is incompatible with another. For example, ARM binaries do not run on x86 processors.

Assembly Languages

Code that works with an assembler to create binary code. Assembly languages are unique to each processor.

High-level Languages

High-level languages, such as C, C++, and Pascal attempt to abstract away the quirks and specific design of each processor's assembly language. This allows programmers to write a program that can be compiled to work with any supported processor.

High-level languages (in theory) allow the programmer to worry more about universal logic than the unique quirks of each processor. Most programs are written in high-level languages.

Scripts/Interpreted Languages

Some languages work at an even higher level than high-level languages.

Interpreted languages, such as Java, Python, and C#, are designed to abstract away the quirks of operating system, allowing programmers to create programs that work on all platforms (in theory, anyway).

Unfortunately, abstraction often comes at the cost of speed and efficiency. Programs written in interpreted languages are notorious for memory leaks, slow speeds, and other issues, though most of these can be sidestepped by a good programmer.

The Von Neumann Architecture

The Processor

There are two types of processors used on the market. While each has it's pros and cons, and differences in design require incompatible assembly code, they both do the same job.

  • x86 - The Intel Processor. Usually used by desktops, laptops, and netbooks for it's raw power and compatibility with the past. This power comes at the cost of power usage, a major barrier to it's implementation in mobile devices (although the Atom family has attempted to rectify the issue). AMD also makes Intel processors.
  • ARM - The Acorn Processor. Used by mobile devices and small computer units for it's low power usage and simple design. The simple design makes calculations more roundabout and slower than x86 processors, but some types of ARM processors have attempted to sidestep that issue.

The Memory

Computer Memory is analogous to a

This is often confused with Computer Storage, which has a similar role, but stores data for a longer period of time.

The Storage

Storage

⚠️ **GitHub.com Fallback** ⚠️