Das Niveau der technischen Kenntnisse, die zum Lesen des Artikels erforderlich sind: ⭐⭐⭐⭐⭐ (niedrig)
Vor 10.000 Jahren löste der Mensch das Problem, wie man eine scharfe Speerspitze herstellt, um ein Mammut zu besiegen. Das hat er geschafft. Jetzt, im digitalen Zeitalter, stehen wir vor der Herausforderung, wie wir das optimieren können, was wir in den letzten 10.000 Jahren gelernt haben. Und eines der besten Werkzeuge, um diese Aufgaben zu lösen, ist unserer Meinung nach die Programmierung!
Eine wahre Geschichte:
Der teuerste Bindestrich („-“) der Geschichte kostete 135.000.000 USD, als Mariner 1, die erste Raumsonde zur Erforschung der Venus, kurz nach dem Start abstürzte, weil in einer der Gleichungen ein Bindestrich fehlte.
Das Entwickeln und Debuggen von Programmen erfordert viel Zeit, Geduld, menschliche Energie und manchmal auch Nerven. Lassen wir uns zum Kern der Sache kommen: Was ist Programmieren?
Was ist Programmieren?
Wir Programmierer lieben Definitionen, also beginne ich mit der Definition von Programmieren: „Programmieren ist die Gesamtheit der Aktivitäten, die mit der Erstellung eines Programms für ein digitales Gerät verbunden sind.”
Wenn Sie etwa 5 Minuten Zeit haben, empfehlen wir Ihnen, die Wikipedia-Synopse zu lesen und sich das Khan Academy-Video anzusehen.
Um die Definition zu entschlüsseln: Programmieren ist die Gesamtheit der Aktivitäten, die sich mit der Erstellung von Anweisungen befassen, die von Computern wahrgenommen werden: Design, Entwicklung, Einsatz und Support (um sicherzustellen, dass alles funktioniert). Die während des Programmiervorgangs erzeugten Anweisungen werden Programme genannt. Programme sind sehr spezifisch und deterministisch und beschreiben, was der Computer tun muss und wann er es tun muss, um eine Aufgabe zu erfüllen. Es gibt vier (4) Grundtypen von Programmen:
- Systemprogramme, sie stellen grundlegende Funktionen wie Betriebssysteme, Festplattenverwaltung, Dienstprogramme, Hardwareverwaltung und andere betriebliche Anforderungen sicher;
- Programmierprogramme, die für Programmierer entwickelt wurde, bieten Tools wie Texteditoren, Compiler, Debugger und andere Werkzeuge zur Erstellung von Code;
- Anwendungen (allgemein bekannt als Webseiten, Websysteme, Apps, mobile Apps usw.), die Benutzern helfen, Aufgaben zu erledigen. Zum Beispiel: CRM-Software, Lagerverwaltungssoftware, Buchhaltungssoftware, Onlineshops. Facebook, WhatsApp, Spotify und Nachrichtenportale sind ebenfalls Apps – Tools, die im Alltag häufig verwendet werden;
- Maschinenprogramme, werden zur Steuerung von Maschinen und Geräten verwendet, die normalerweise nicht als Computer betrachtet werden – Telekommunikationsnetzwerke, Autos, Industrieroboter und vieles mehr. Diese Geräte und ihre Software können als Teil des Internet der Dinge (IoT) verbunden werden.
Was muss ein Programmierer wissen?
Ich habe bereits erwähnt, dass die Erstellung eines Programms ein zeitaufwändiger und überwältigender Prozess sein kann. Wir bei Mitigate sind der Meinung, dass ein Entwickler über Fähigkeiten in den folgenden Disziplinen verfügen muss, um sich im Softwareentwicklungsprozess nicht zu verlieren:
- Anforderungserfassung und -analyse: Für grundlegende Zwecke beschränkt sich die Anforderungserfassung meist auf einen kurzen Text, der in allgemeiner Form das zu lösende Problem, die einzugebenden oder auszugebenden Daten und die Daten, die sich aus der Lösung ergeben sollen, beschreibt.
- Architektur und Design: In realen Projekten kann dieser Teil eine Vision davon bedeuten, aus welchen Komponenten das System bestehen soll, oder er kann sogar eine umfangreiche Dokumentation und Skizzen darüber beinhalten, wie das System implementiert werden soll.
- Die Programmierung ist der Teil, in dem der Code erstellt wird. In dieser Phase wird die Lösung in einer Programmiersprache implementiert.
- Testen: Dieser Teil ist eine ganze Wissenschaft für sich. In Unternehmen wird dies von Spezialisten, den sogenannten Testern, durchgeführt, aber jeder Programmierer muss die Prinzipien des Testens verstehen und in der Lage sein, sein Programm auf einer grundlegenden Ebene zu testen.
- Debugging: Programmierer verwenden jeden Tag eine Vielzahl von Tools, um Fehler im Code zu finden. Dies gewährleistet die Qualität und Wirksamkeit des Programms.
- Betrieb: Programme brauchen die richtige Infrastruktur, um zu funktionieren. Wir hören von Programmierern oft Worte wie Service, Datenbank, Integration usw. Um Programme erfolgreich zu betreiben, brauchen sie eine stabile, sichere und zuverlässige Infrastruktur.
- Kommunikation - Vor allem in den letzten Jahren ist diese Qualität zu einer entscheidenden Komponente eines jeden Programms geworden. Missverständnisse, mangelnde Einsicht, nicht konstruktive Besprechungen sind immer häufiger die Ursache für schlechte Ergebnisse. Gegenseitiges Verständnis, konstruktive Dialoge und präzise Erklärungen sind die Grundlage, um das gewünschte Ziel zu erreichen.
Programmierer können sich auf verschiedene Technologien spezialisieren, z. B. arbeiten einige mehr mit Web-Systemen, andere mit Robotern, aber die oben genannten Praktiken sollten allen bekannt sein. Und je besser sie diese kennen, desto besser ist der Programmierer. Einiges von diesem Wissen kommt erst mit der Erfahrung.
Prozess der Programmentwicklung
Ein typischer Prozess der Programmentwicklung besteht aus mehreren Unterprozessen, wobei das Programmieren selbst, also das Schreiben von Computeranweisungen, nur einen Teil der Arbeit ausmacht. Oft sind auch andere qualifizierte Spezialisten an der Entwicklung von Programmen beteiligt, wie z. B.:
- Systemanalytiker,
- Architekten,
- Projektleiter,
- Designer,
- Tester,
- usw.
In einem anderen Blog-Beitrag werden wir Ihnen gerne mehr darüber erzählen.
Was ist das Programm und woraus besteht es?
Wenn Sie fragen: „Ist alles, absolut alles, wirklich 100 % alles in Nullen (0) und Einsen (1) gespeichert?“, dann lautet die Antwort: „Jawohl!“
Obwohl Programmierer bei ihrer täglichen Arbeit die Sprachen höherer Abstraktion (Programmiersprachen) verwenden, werden der gesamte geschriebene Code und die durch den Code verarbeiteten Daten in Binärcode ausgedrückt und gespeichert. In einem solchen Datensatz gibt es nur zwei Symbole: „0“ und „1“, die dazu dienen, Informationen in Form von Befehlen an den Computer weiterzugeben. Da nur 2 Informationen mit zwei Ziffern „0“ und „1“ übertragen werden können, kombiniert das Binärsystem diese Ziffern in Gruppen, um die Übermittlung von detailliertesten Mitteilungen zu ermöglichen (Wałaszek, 2018). Auf diese Weise kann der Computer dank einer Gruppe von binären Ziffern, die in einem kombinierten numerischen Symbol ausgedrückt werden, die erforderlichen Operationen durchführen. Die einzelnen Buchstaben des Alphabets werden zum Beispiel wie folgt ausgedrückt (BiMatrix, 2018):
- „a” –
01100001
- „b” –
01100010
Zum Beispiel wird das Wort „hallo“ wie folgt kodiert:
01001000 01100101 01101100 01101100 01101111
Jedes Programm hat sichtbare Teile und unsichtbare Teile. Sichtbar sind diejenigen, die vom Benutzer (dir – einem Menschen) gesehen und verwendet werden. Aber es gibt auch unsichtbare Teile und diese versteckten Teile erweisen sich oft als die interessantesten. Die Abbildung zeigt den „Eisberg“-Effekt eines klassischen Programms:
Verbreitete Mythen
- Eine Programmiersprache ist besser als andere
- Nein, Nej, No, いいえ. Wir können mit Sicherheit sagen, dass das nicht stimmt. Jede Programmiersprache hat ihre eigenen Merkmale. Andere werden mehr genutzt, andere weniger, aber jede hat ihren eigenen Zweck, Stil und Vorteile.
- Der Programmierer schreibt nur den Code
- Siehe den Abschnitt dieses Artikels Was muss ein Programmierer wissen?”.
- Ein Programmierprojekt wird erfolgreich sein, wenn das Team einem vorbereiteten Plan folgt
- Die Entwicklung eines Programms ist ein komplexer und kreativer Prozess, der im Gegensatz zu einem festen Plan Flexibilität erfordert. Die Planung muss sein, aber die Anforderungen können sich ändern und es können Situationen entstehen, die kreative Lösungen erfordern. Programmgestaltung und -entwicklung sind nicht immer linear und vorhersehbar. Die Planung eines echten Projekts muss in kleine Planungszyklen unterteilt werden.
- Die Fertigstellung des Programms ist das Ende des Projekts
- Mit der Fertigstellung des geplanten Programms wird nur der erste Schritt getan. Danach folgen Debuggen, Hinzufügen neuer Funktionen, Änderung dessen, was anders funktionieren sollte usw.
- Künstliche Intelligenz wird alle unsere IT-Probleme lösen
- Wir (Mitigate) könnten uns irren, aber wir glauben nicht, dass dies der Fall sein wird, denn es handelt sich immer noch um Code, der das tut, was ihm jemand aufgetragen hat, auch wenn er über komplexe Algorithmen verfügt, um zu „lernen“ und eigenständig Entscheidungen zu treffen.
- In der Regel gibt es nur einen richtigen Weg, um ein Problem beim Programmieren zu lösen
- Dieser Mythos wird durch eine konkrete und unwiderlegbare Tatsache in die Luft gesprengt: Wenn 10 Programmierer die gleiche Aufgabe erhalten, werden 10 verschiedene Programme entstehen. Der Code eines jeden Programmierers ist wie ein Fingerabdruck – absolut einzigartig.
Witze, die keine Witze sind
- Etwa ein Viertel der gesamten Programmierzeit wird damit verbracht, darüber nachzudenken, was der Benutzer falsch machen kann und wie man es beheben kann.
- Ein Programmierer ist kein Spezialist für Computerreparaturen. Da solche Stereotypen tief verwurzelt sind, gibt es ständig Anfragen, Computer und sogar Haushaltsgeräte zu reparieren.
- „Der Benutzer weiß nicht, was er will, bis er sieht, was er erhält.“ – E. Yodan
- Jedes Programm ist immer teurer und zeitaufwändiger als erwartet.
- Wenn man die Zahl der Programmierer erhöht, um ein Programm schneller fertigzustellen, wird der Prozess nur verlangsamt.
- Wenn das Programm erfolgreich und nützlich ist, muss es auf jeden Fall umgestaltet werden.
P.S.
Interessante Tatsache: Während ich diesen Artikel schrieb, habe ich mich kurz umgesehen und was ich sehe:
- Computer,
- Handy (Smartphone),
- Bluetooth-Musikbox,
- iPad,
- ARANET4 – Gerät zur Messung der Luftqualität in Räumen,
- Garmin-Uhr (Smartwatch).
Sechs (6) Geräte auf zwei (2) Quadratmeter. Und sie alle sind digitale Geräte, denn sie werden von Computersoftware gesteuert.