Algorithmen in der Software Entwicklung

Algorithmen treffen wir tagtäglich in unserem Leben, denn Sie sind Anleitungen zur zielgerichteten Lösung von Problemen. Erstmals beschrieben hat dies der choresmische Gelehrte Al-Chwarizmi im 9. Jahrhundert. Er lebte in Bagdad, Iran.

Statue of al-Khwarizmi in front of the Faculty of Mathematics of Amirkabir University of Technology in Tehran,]IRAN
Al-Chwarizmi, vor der Universität in Teheran von M. Tomczak

Verfeinert wurde der Begriff im 20. Jahrhundert durch den in Großbritannien diffamierten  Mathematiker Alan Touring.

Definition eines Algorithmus

  • Das Verfahren muss zum richtigen Ergebnis führen
  • Der Verfahren muss mit einem endlichen Text die Anforderungen ganz erfüllen
  • Das Verfahren besteht aus Arbeitsschritten, die zielgerichtet zur Lösung führen
  • Jeder einzelne Schritt muss ein eindeutiges Ergebnis besitzen
  • Gleiche Eingabewerte müssen immer zum gleichen Ergebnis führen
  • Das Verfahren muss auf alle zulässigen Daten fehlerfrei anwendbar, also Allgemeingültig sein

Hochwertige Programme erfüllen diese Anforderungen. Denn die Definition von Qualität lautet:

Qualität ist die Erfüllung der Kundenanforderungen

 

Farbmodelle bei Monitoren, Druckern und weiteren Geräten

Computermonitore aus der Frühzeit der EDV waren monochrom. Es gab grün- und bernstein-farbene anzeigende Geräte. Als Mitte der 80er Jahre die Farbmonitore auf den Markt kamen, hat die Bildbearbeitung mit dem Computer begonnen. 1985 wurde mit Deluxe Paint eine leistungsfähige Bildbearbeitung mit dem Commodore Amiga präsentiert. Photoshop kam 1990 auf den Markt.

Amiga 1000 mit Deluxe-Paint
Original photo by Kaiiv

Die Monitore veränderten sich zu Flachbildschirmen und die Anforderungen an die Bildqualität dieser Geräte stiegen in den folgenden Jahrzehnten. Druckereien waren auf Farbtreue während des ganzen Produktionsprozesses angewiesen. Schließlich sollte eine fotografierte, rote Tomate in der gedruckten Zeitschrift ebenso aussehen wie das Original. So war die Standardisierung des Farbraumes notwendig. Dazu wurden verschiedene Farbmodelle entwickelt, von denen ich zwei Modelle vorstelle.

Betrachten wir zuerst die Grundlagen der Farbmischung. Um eine große Menge an unterschiedlichen Farben darzustellen, werden aus drei Grundfarben viele unterschiedliche Farben gemischt.  Auf dieser Basis gibt es eine additive Farbmischung und eine subtraktive Farbmischung. Der darstellbare Bereich von Farben wird Gamut genannt.

Additive Farbmischung

Diese Farbmischung basiert auf selbstleuchtenden Farben. Von Schwarz (Keinerlei Farbe) wird durch die drei grundlegenden Farben Rot, Grün und Blau (RGB).

Additive Farbmischung

Ein Abbild vieler Farben ist so möglich. Nach diesem Prinzip arbeiten die Computer Monitore.

Subtraktive Farbmischung

Bei der subtraktiven Farbmischung werden die Farben durch eine Lichtquelle beleuchtet. Das reflektierte Licht fällt in unsere Augen und wir können die Farben sehen. Wenn das weiße Licht auf die Farben fällt, dann werden Lichtanteile verschluckt. Durch die reflektierten Lichtanteile sehen wir die Farbe. Die drei Grundfarben der subtraktiven Farbmischung sind Cyan, Magenta und Gelb.

Subtraktive Farbmischung

Nach diesem Prinzip arbeiten Drucker und Farben, die wir im täglichen Leben benutzen. Allerdings wird bei Farbdrucken im Regelfall kein perfektes Schwarz erreicht. Daher gibt es Fotodrucker die noch weitere Farben wie Schwarz, Grau oder ein helles Gelb verwenden.

Das RGB Farbmodell

Das RGB Farbmodell basiert auf additiver Farbmischung. Es wird daher bei Farbdisplays, Fernsehern, Beamern und ähnlichen Geräten genutzt. Aus den 3 Grundfarben Rot, Grün und Blau werden die dargestellten Farben gemischt. Die Werte der einzelnen Farben können zwischen 0 und 100% liegen. Im Internet werden Farbtiefen von 24 Bit (= 8 Bit Rot, 8 Bit Grün und 8 Bit Blau) genutzt. Dadurch ergibt sich ein Wertebereich von 256 Stufen bei jeder Grundfarbe und eine Farbanzahl von 16.777.216 Farben. Sehr gute Monitore können eine Farbtiefe von 10 Bit pro Grundfarbe abbilden. Also insgesamt 30 Bit Farbtiefe und damit 230 oder mehr als 10 Milliarden Farben. Viele Grafikkarten können bis 232 Bit Farben darstellen. Dazu die RGB Farbraum Darstellung von Torre Anders. Der RGB Farbraum liegt innerhalb des schwarzen Dreiecks.

RGB Farbraum

Das CMYK Farbmodell

Auf subtraktiver Farbmischung basiert das CMYK Farbmodell. Es basiert auf den Grundfarben Cyan, Magnet, Gelb und einem Schwarz-Anteil, der auch „Key“ genannt wird. Da es bei der Umsetzung dieses Farbmodells keine passend tiefes Schwarz gibt, wird Schwarz als 4. Faktor hinzugefügt. Dieses Farbmodell wird seit 1843 im Druckbereich beim 4-Farben Druck eingesetzt. Geräte dafür sind der Tintenstrahl Drucker, Farblaser Drucker, 4-Farben Druckmaschinen für Bücher, Zeitschriften und weitere Druckerzeugnisse.

CYMK Farbtest

Original photo by Kaiiv

Tipp

Wer gerne mehr über IT Technologien kennenlernen möchte, kann das Computer History Museum in Mountain View, Kalifornien besuchen.

Computer History Museum in Mountain View, Kalifornien

Dort gibt es seit 1996 die größte Ausstellung über die IT Geschichte.

 

Webseiten mit HTML Editor Brackets erstellen

Heute stelle ich den Webseiten Editor Brackets von Adobe vor. HTML Seiten lassen sich mit jedem Editor erstellen. Der Unterschied bei den Editoren liegt in der Unterstützung bei der Erstellung des Webseiten Kodes. Hier leistet der Open Source Editor Brackets gute Unterstützung.

HTML Editor Brackets

Funktionen von Brackets

  • Horizontales und vertikales Aufteilen des Editorfensters mit „Split View“
  • Umfangreiche Funktionsergänzung durch viele Erweiterungen
  • Auswahl verschiedener Themen und dadurch „Dark Mode“ möglich
  • Aufruf von Quick Edit (CTRL+E)
    • zum schnellen Bearbeiten von Klassen und Ids
    • Auswahl von Farben
    • Erstellen von CSS Regeln
    • Aufruf von Javascript Funktionen
    • Unterstützung von LESS, SCSS und CSS
  • Umfangreicher Quellcode kann gefaltet werden
  • Eine Mehrfachauswahl und mehrfacher Cursor erleichtern das Schreiben des gleichen Textes an verschiedenen Stellen
  • Eine Suche von Text in geschlossenen Dateien ist möglich
  • Mit CTRL+Leertaste werden Code Vorschläge angezeigt

Dazu gibt es noch viel weitere Funktionalität die zeigen, warum dieser Quellcode Editor so beliebt ist.

 

Web Entwicklungsumgebung XAMPP installieren

Web Entwickler brauchen für die Erstellung von Webseiten, CMS, Blogs und weiteren internet-affinen Systemen eine Entwicklungsumgebung. Hier bietet seit vielen Jahren die Open Source Entwicklungsumgebung XAMPP eine tragende Rolle.

XAMPP Installation

Im nachfolgenden Video wird die Installation von XAMPP gezeigt. Mit dabei sind Tipps und Tricks.

Web Entwicklungsumgebung XAMPP installieren from Karl Högerl on Vimeo.

Fazit

XAMPP ist eine häufig genutzte Entwicklungsumgebung mit viel Potential. Es gibt Unterstützung von HTML, CSS, PHP, MySQL DB, JSP und dem Tomcat Server.

Den Raspberry Pi als Multimedia Gerät einsetzen

Der Raspberry Pi kam 2012 auf den Markt hat seitdem durch seine vielfältige Nutzung und den günstigen Preis große Erfolge verzeichnet. Bis 2018  wurden mehr als 22 Millionen Geräte weltweit verkauft.

Aktuell hat der neuste Raspberry Pi 4 Model B verschiedene Ausbaustufen mit 1, 2, 4 oder 8 GB RAM. Dazu gibt jede Menge Erweiterungsmöglichkeiten wie Sensoren, Bildschirme, Kamerasensoren und Erweiterungsplatinen.

 

Multimedia mit den Raspberry Pi

In meinem einfachen Beispiel wird der Raspberry Pi zur Multimedia Station. Dazu wird ein Raspberry Pi 3 Model B+ oder höher benötigt. Wer 4k Filme und -Fernsehen nutzen möchte, braucht mindestens einen Pi 4 Model B mit 4 GB RAM. Mit LibreElec wird ein Linux Betriebssystem installiert. Dieses kann über das Internet auf den Zugriff der TV Kanäle konfiguriert werden. Zudem lassen sich weitere Datenträger vom USB Stick bis zum NAS System einbinden und als Datenträger für Videos , Fotoshows und Musik nutzen. Über HDMI kann ein Fernseher mit Anynet Schnittstelle den Raspberry Pi über die Fernbedienung des Fernsehers steuern.

Fazit

Eine lehrreiche Möglichkeit, die Zusammenarbeit von Computern und Medien zu entdecken.

Linux Mint nach der Installation einrichten

Linux Mint ist ein einfach zu erlernende Distribution, die sich durch sehr gute  Kompatibilität mit Debian und Ubuntu auszeichnet. Dadurch lassen sich viele zusätzliche Programme einfach hinzufügen und verwalten.

In den vorherigen 2 Beiträgen wurde die Konfiguration von Linux Mint für die VirtualBox beschrieben und die Installation von Linux Mint. Jetzt folgt die Inbetriebnahme durch das einmalige Einrichten von Linux Mint.

Linux Mint einrichten from Karl Högerl on Vimeo.

 

Linux Mint für die VirtualBox konfigurieren

Linux Mint ist eine beliebte Distribution und eignet sich sehr gut, um das Betriebssystem Linux kennenzulernen. Denn die Bedienung der Benutzeroberfläche ist der Windows Benutzeroberfläche sehr ähnlich. Im Zuge der Digitalisierung werden virtuelle Maschinen und Remote Verbindungen eine immer größere Rolle spielen. Anwendungsentwickler benötigen Testsysteme mit unterschiedlichen Betriebssystemen. Da gibt es die Wahl zwischen Cloud Lösungen und der Virtualisierung von IT Geräten.

Möglichkeiten der Virtualisierung für den PC

Für die meisten Betriebssysteme gibt es Software zur Virtualisierung. Bei Windows und Linux werden häufig die Virtualbox von Oracle oder der VMware Player eingesetzt. Bei Apple gibt es zusätzlich zu diesen noch eine interessante Virtualisierungsumgebung, den Parallels Desktop.

Ich zeige im Video die Konfiguration von Linux Mint Cinnamon in der VirtualBox.

Linux Mint in VirtualBox konfigurieren from Karl Högerl on Vimeo.

 

Was ist ein Algorithmus?

In unserem täglichen Leben benutzen wir immer wieder Algorithmen. Aber wenn wir erklären sollen, was ein Algorithmus ist, dann wird es schwierig.

Ein Algorithmus ist eine Anleitung, mit bestimmten Eingabedaten bestimmte Ausgabedaten zu produzieren und auszugeben. Mit anderen Worten:

Es ist eine Handlungsvorschrift, um ein Problem schrittweise zu lösen

Anforderung an Algorithmen in der Programmierung

  • Der Algorithmus muss vollständig beschreibbar sein
  • Das Rechenverfahren muss aus einzelnen Arbeitsschritten bestehen, die zur Lösung des Problems führen
  • Jeder Schritt davon muss zu einem eindeutigen Ergebnis führen
  • Bei gleichen Eingaben erhält man immer das gleiche Ergebnis
  • Das Verfahren muss zu einem Ergebnis führen
  • Der Algorithmus muss universell und auf alle Daten anwendbar sein

Wie wird ein Algorithmus notiert oder aufgeschrieben?

Insgesamt kann dieser in einer Sprache wie zum Beispiel in Deutsch aufgeschrieben werden. Allerdings kann ein Computer den Algorithmus im Regelfall nicht verstehen.

Wie kann ein Computer mit Algorithmen arbeiten?

Damit der Computer den Algorithmus versteht, werden Programmiersprachen eingesetzt. Dabei wird zwischen strukturierter und objektorientierter Programmierung unterschieden. Die meisten Programmiersprachen bieten ähnliche Möglichkeiten die Lösung einer Problemstellung zu beschreiben oder wie der Programmierer sagt, zu implementieren.

Wie kann ein Algorithmus dokumentiert werden?

Dazu kann die Unified Modeling Language UML eingesetzt werden. Hier können Algorithmen grafisch dargestellt werden. Dies stellt eine praktische Ergänzung zur textuellen Beschreibung dar.

 

NOT Logik, auch Inverter genannt

Eine Verneinung kommt im Leben häufig vor und wir denken daher beim Einsatz kaum darüber nach. Dieses Element gibt es auch in der Logik und nennt sich NOT Logik oder Inverter.

Bei Logik gibt es zwei Zustände Wahr und Nicht-Wahr. Wahr kann auch true, 1 oder Ein sein und Nicht-Wahr kann false, 0 oder Aus sein. Ein Inverter dreht die Logik Zustände. So wird aus true der Zustand false. Bei false wird das Ausgangssignal true.

NOT Logikgatter

Der Schaltplan ist hier nur mit einem Taster ausgestattet.

NOT Logikgatter

Schalter A als Taster Lampe Q
nicht gedrückt = 0 Leuchtet = 1
gedrückt = 1 Leuchtet nicht = 0

Das Signal am Ausgang Q ist immer entgegengesetzt dem Signal am Eingang A.

Q = ¬A

OR Logik

Logische Verknüpfungen werden unterbewußt von jedem täglich eingesetzt. Anwendungsentwickler und Systemintegratoren brauchen diese Logik bei ihrer täglichen Arbeit.

Logik kennt zwei Zustände: Wahr (true) und Falsch (false). Für true wird auch die 1 verwendet und für false auch die 0.

OR Logikgatter

Der Schaltplan zeigt die Funktionsweise dieser Logik auf.

Oder Schaltung

Schalter A Schalter B Lampe Q
0 0 0
0 1 1
1 0 1
1 1 1

Wenn Schalter A oder Schalter B oder wenn beide Schalter geschlossen sind, dann leuchtet die Lampe Q. Die Logikformel lautet

Q = A ∨ B

AND Logik

Logische Verknüpfungen können unterschiedlich eingesetzt werden. Da gibt es die täglichen Arbeiten, bei denen Logik eine wichtige Rolle spielt. Anwendungsentwickler, die Programmlogiken erstellen. Systemintegratoren, die Netzwerke und Datensicherheit herstellen und Systemelektroniker, die bei Fehlern den Ursachen auf den Grund gehen.

Daher ist es für verschiedene Berufsgruppen interessant, die Hintergründe von Logik und deren technische Standardisierung zu kennen.

Bei Logik gibt es zwei Zustände Wahr und Nicht-Wahr. Wahr kann auch true, 1 oder Ein sein und Nicht-Wahr kann false, 0 oder Aus sein.

AND Logikgatter

Am einfachsten ist die AND Logik mit diesem Schaltplan zu verstehen.

AND Schaltung

Schalter A Schalter B Lampe Q
0 0 0
0 1 0
1 0 0
1 1 1

Wenn Schalter A und Schalter B geschlossen sind, dann leuchtet die Lampe Q. So lautet die Logikformel

Q = A ∧ B

Marktanteile der Computer Betriebssysteme

Computer, Smartphones und Tablets spielen in der heutigen Zeit eine große Rolle. Denn sie sind der Ersatz für Papier und schonen die Umweltressourcen. Eine Übersicht der Marktanteile der im März 2020 eingesetzten Betriebssysteme. Dies ist ein interessanter Aspekt bei der Entwicklung von Software.

blank

Ist Kodierung gleich Codierung?

Computer arbeiten Binär, also mit zwei Zuständen. Aber Computer sollen in der Lage sein, jegliche Form von Daten verarbeiten zu können. Dazu wird Kodierung eingesetzt. Dadurch lassen sich komplexere Informationen wie Texte, Gleitkommazahlen, Bilder und Videodaten auf dem Computer verarbeiten.

Binäre Darstellung von ganzen Zahlen

Damit die verschiedenen Zahlensysteme unterschieden werden können, werden nachfolgend Kennzeichen eingesetzt.

Zahlensystem Suffix Kennzeichen Beispiel Präfix Kennzeichen Beispiel 
Dezimal d 68 d 0d68
Binär b 1011 b 0b 0b1011
Oktal o 34 o 0o 0o34
Hexadezimal h 2F h 0x 0x2F

Ein Byte besteht aus 8 Bit und kann daher einen Wertebereich von 0 bis 255 darstellen.

Dezimal Binärzahl
Beispiel 27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
9 0 0 0 0 1 0 0 1
100 0 1 1 0 0 1 0 0

Kodierung von Zeichen mit dem ASCII Code

Computer können durch Kodierung Zeichen einfach verarbeiten. Häufig wird dazu der ASCII Code verwendet. Der ASCII Code entwickelte sich aus dem Morse Code und der Fernschreiber Technologie. Das American Standard Code for Information Interchange standardisierte einen 7-Bit Zeichencode, der später auf 8 Bit erweitert wurde. „Ist Kodierung gleich Codierung?“ weiterlesen

Software Entwicklung mit dem agilen Manifest

Scrum basiert auf agile Methoden wird sehr häufig bei der Software Entwicklung eingesetzt. Agile Methoden der Software Entwicklung werden inzwischen häufig eingesetzt.

Ziele agiler Entwicklungsmethoden

  • Eine schlanke, flexible Softwareentwicklung ist umsetzbar
  • Abbau bürokratischer Hemmnisse
  • Regelbasierte Tätigkeiten in Rollen werden eingesetzt
  • Die Entwicklung, die Dokumentation und der Test sollen eine Einheit bilden
  • „Qualität ist die Erfüllung der Kundenanforderung“ – diese Qualität ist zu erreichen
  • Agile Entwicklung ist dort einzusetzen, wo es Vorteile bringt

Das agile Manifest

Dazu werden die beschriebenen Werte eingesetzt.

  • Individuen und Interaktionen mehr als Prozesse und Werkzeuge
  • Funktionierende Software mehr als umfassende Dokumentation
  • Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
  • Reagieren auf Veränderung mehr als das Befolgen eines Plans

Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.

Entwickelt wurde diese Vorgehensweise von Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas

Werkzeuge für die Webseiten Entwicklung mit HTML

Für die Entwicklung von Webseiten mit HTML, CSS, Javascript und PHP kann ein einfacher Texteditor genutzt werden. Aber es gibt Editoren, die das Entwickeln erleichtern und viele Zusatzfunktionen bieten. Dazu zeige ich Ihnen hier eine Auswahl an guter Software für die Webentwicklung.

Notepad++

Notepad++ EditorNotepad++ ist ein kostenloser und vielseitiger Editor für Windows, der sich auch für die Erstellung von Webseiten und zur Programmierung in verschiedenen Programmiersprachen wie z. B. für Java, Javascript eignet.

PSPad

PsPadPSPad ist ein Freeware Editor und kann mit Hilfe des Internet Explorers die aktuell entwickelten Webseiten in einem Fenster anzeigen. Auch mit diesem Editor lassen sich verschiedene Programmiersprachen schreiben und mit Syntax Highlighting anzeigen.

Brackets

Brackets EditorEin kostenloser Editor von Adobe speziell für die Entwicklung von Webseiten mit HTML, CSS, Javascript und PHP. Er unterstützt die Präprozessoren LESS und SCSS. Diese vereinfachen die Nutzung von CSS. Mit Hilfe eines installierten Chrome Browsers kann eine Live Vorschau aktiviert werden.

Eclipse IDE

Eclipse-EditorDie Entwicklungsumgebung Eclipse eignet sich nicht nur für die Erstellung von Webseiten, sondern auch für die Programmierung mit Java und C++. Der Editor ist kostenlos zu nutzen und bietet einen breiten Funktionsumfang.

Netbeans

Netbeans-IDEApache Netbeans ist, ähnlich wie Eclipse, eine kostenlose Entwicklungs-umgebung. Es kann für HTML, CSS, Javascript, PHP und für Java eingesetzt werden. Es lässt sich mit den Betriebssystemen Windows, Linux, Apple OSX und BSD einsetzen. Netbeans bietet Assistenten, die die Entwicklung vereinfachen.

Fazit:

Der hier gezeigte Auswahl an Software für die Entwicklung von Webseiten ist nur ein kleiner Teil der verfügbaren Software Tools. Diese zeichnen sich durch großen Funktionsumfang aus. Die Anforderungen von Entwicklern sind unterschiedlich und daher ist die Empfehlung: Probieren Sie die Tools aus.

 

Barrierefreiheit