Programming
and databases

Joern Ploennigs

Software Architecture

Midjourney: Soft Architecture

Recap: In-class Question¶

What is 'computer science'?

No description has been provided for this image
"Computer science is no more about computers than astronomy is about telescopes." — Edsger W. Dijkstra

Review: Definition - Computer Science¶

📘 Definition: Computer Science

Computer science is the science of the systematic processing of information.

Origin: Mathematics (logic, algorithms) + Electrical Engineering (hardware)

Review: Lecture Hall Question¶

What hardware makes up a computer?

No description has been provided for this image
DALL-E 2: Early designs of the iPhone by Leonardo da Vinci

Recap: Computer Hardware¶

Image

Recap: In-Class Question¶

What are binary numbers?

No description has been provided for this image
DALL·E 2: River of data flowing between computers in matrix style

Binary Numbers¶

  • Computers store, process, and communicate data as binary numbers, because transistors in a logic gate can only perform logical operations.

  • binarius – twofold, double

  • The smallest possible (useful) character set

  • Possible representations of binary code:

    • 0 / 1
    • False / True
    • Off / On

Process¶

Monolithic, machine-oriented software before 1950¶

  • The first programs were written directly in binary machine code.
  • The software was monolithic, i.e., there was no separation of functionalities.
  • The software was tightly bound to the hardware.
  • Problem: Changes to the hardware often required a complete reprogramming.
Monolithic software

Division into operating systems and monolithic software since 1960¶

  • Operating systems were introduced to abstract the hardware.
  • Operating systems abstract standard tasks (e.g., file management).
  • Hardware is abstracted by drivers.
  • Changes to hardware require only new drivers.
  • Problem: Programs are still hard to write because they are very low-level and require a deep understanding of hardware functions.
Operating systems

Introduction of higher programming languages in 1970¶

  • To simplify programming, higher-level programming languages were introduced.
  • Higher-level programming languages must be translated into machine code by compilers.
  • Higher-level programming languages are usually closer to natural language.
  • Problem: Switching between operating systems requires at least a recompilation, usually a rewrite.
Higher-level programming languages

Virtualization of Monolithic Software since 1995¶

  • Virtual runtime environments abstract away the operating systems.
  • Virtual runtime environments compile code in real time (Java) or interpret it (Python).
  • Problem: With the Internet, the demand to access content on mobile devices emerged.
Virtualization

Distributed, Virtualized Software on the Internet Since 2000¶

  • Backend web servers make the web pages available
  • Separate database servers manage the long-term data
  • Frontend apps visualize the content
  • Frontend apps interact with users
  • Frontend apps perform only lightweight computations
  • Problem: On the Internet, a large number of users often access the same servers (pages) simultaneously. To avoid overloading them, ways were needed to rapidly replicate them on demand.
Distributed software

Distributed, Virtualized Apps and Cloud Software since the 2010s¶

  • Operating systems and applications are packaged into images.
  • Images can be rapidly distributed across servers.
  • As a result, servers can be quickly brought up on demand to handle traffic surges.
  • Apps and websites completely replace traditional monolithic applications.
  • As a result, data rarely reside on a single machine.
  • Problem: On the Internet, many users often access the same servers (pages) simultaneously. To avoid overloading them, ways to quickly duplicate them on demand were needed.
Images and cloud software

Classification of Programming Languages by Historical Usage¶

Programming languages have evolved over time in line with architectures. Consequently, the popular programming languages have changed over the years.

Classification of Programming Languages

Questions?

programmierung
und datenbanken