Was ist Computerprogrammierung? Softwareentwicklung definieren.

Mein fünfjähriger Sohn Ramy kam eines Tages auf mich zu, als ich von zu Hause aus arbeitete, und fragte: "Was machst du, Mama?"

"Ich arbeite", antwortete ich.

Er schaute auf meinen Laptop-Bildschirm und fragte erneut: "Aber was machst du ?"

Ich machte eine Pause und begann darüber nachzudenken. Ich bin ein Webentwickler und programmiere in JavaScript. Wie erkläre ich das einem Fünfjährigen?

„Ich schreibe Anweisungen für den Computer und der Computer tut, was ich ihm sage. Das nennt man Programmierung “, erklärte ich. Ramy sah verwirrt aus.

Ich fuhr fort: "Zum Beispiel kann ich dem Computer Anweisungen zum Hinzufügen von zwei Zahlen geben, und es gibt mir die Antwort." Ich schrieb eine Funktion, die 2 + 2 hinzufügte und ihm die Antwort auf meinem Bildschirm zeigte. Seine Augen leuchteten auf.

Von diesem Punkt an begann ich zu überlegen, was Programmierung ist . Was passiert eigentlich unter der Haube? Als ich 2017 anfing, das Codieren auf freeCodeCamp zu lernen, verwendete ich den eingebauten Code-Editor auf der Website und sah die Ergebnisse. Ich verstand jedoch nicht wirklich die Magie, die sich hinter den Kulissen abspielte.

Ich habe angefangen zu recherchieren und dies waren einige der Begriffe, nach denen ich gesucht habe: „Was ist Computerprogrammierung? Was ist Software? " Bei Google gibt es über 600 Millionen Suchergebnisse für "Was ist Computerprogrammierung?". Es ist ein bisschen wie ein Kaninchenbau - es kann kompliziert und überwältigend sein.

Ich wollte eine umfassende Einführung in die Computerprogrammierung und Softwareentwicklung für Anfänger zusammenstellen. Ich werde mit der Computerprogrammierung beginnen und mich dann mit Computerprogrammiersprachen befassen. Dann werde ich über Software und Softwareentwicklung sprechen. Abschließend werde ich auf die aktuellen Trends und die Zukunft der Computerprogrammierung eingehen.

Wenn Sie über einen Übergang in die Welt des Programmierens nachdenken oder nur das Erlernen des Codierens interessieren, erhalten Sie einen allgemeinen Überblick ohne (zu viel!) Fachjargon.

Nur eines ist zu beachten: Sie können die Wörter "Entwickler" und "Programmierer" verwenden, um jemanden zu bezeichnen, der Code schreibt.

Was ist Computerprogrammierung?

In Wikipedia lautet die Definition von „Computerprogrammierung“:

"Computerprogrammierung ist der Prozess des Entwerfens und Erstellens eines ausführbaren Computerprogramms, um ein bestimmtes Computerergebnis zu erzielen."

Aber was heißt das?

Ein Computer selbst ist nicht schlau. Ja, sie sind mächtig und haben das Potenzial, Aufgaben viel schneller als ein Mensch auszuführen. Aber Computer brauchen einen Menschen, der Anweisungen schreibt und ihnen sagt, was sie tun sollen.

Daher ist das Programmieren der Prozess des Schreibens dieser Anweisungen. Wir verwenden dazu eine Programmiersprache. Diese Anweisungen werden in ein lesbares Format übersetzt, das ein Computer verstehen kann. Die Anweisungen werden dann vom Computer ausgeführt.

Programmieren, wie man eine Tasse Tee macht

Nehmen wir als Beispiel eine Tasse Tee. Wenn Sie Anweisungen zur Zubereitung einer Tasse Tee geben würden, würde dies folgendermaßen aussehen:

  1. Kochen Sie etwas Wasser
  2. Gießen Sie heißes Wasser in eine Tasse mit einem Teebeutel
  3. Lass den Tee aufbrühen
  4. Entfernen Sie den Teebeutel
  5. Milch und / oder Zucker hinzufügen (falls gewünscht)

Einfach, richtig?

Was wir für selbstverständlich halten, ist, dass die Kommunikation mit einem Menschen anders ist als die Kommunikation mit einem Computer. Ein Mensch hat Vorkenntnisse und Lebenserfahrung - er weiß möglicherweise, wo er den Tee findet. Wir gehen davon aus, dass sie wissen, dass Milch im Kühlschrank aufbewahrt wird.

Menschen haben auch Intuition. Wenn Sie keine Tasse finden können, durchsuchen Sie stattdessen die Schränke. Es gibt auch das Lesen von nonverbalen Hinweisen wie Körpersprache.

Wenn es um Programmierung geht, muss man sehr spezifisch sein. Wenn Sie mit der Zubereitung einer Tasse Tee fortfahren, können Sie Anweisungen in Pseudocode wie folgt schreiben:

  1. Geh in die Küche
  2. Suchen Sie den Wasserkocher
  3. Öffnen Sie den Deckel des Wasserkochers
  4. Füllen Sie den Wasserkocher mit Wasser
  5. Schalten Sie den Wasserkocher ein
  6. Warten Sie, bis es auf 100 Grad Celsius gekocht hat
  7. Finde eine Tasse

Und so weiter.

Was ist, wenn Anweisungen wie die oben genannten nicht ausreichen? Möglicherweise müssen Sie eine Logik hinzufügen , um alle Szenarien zu berücksichtigen. Zum Beispiel: 2) Suchen Sie den Wasserkocher. Ist es ein Wasserkocher oder ein Wasserkocher, den Sie auf ein Kochfeld stellen? Sie müssen eine Bedingung hinzufügen, dass, wenn es sich um einen Wasserkocher handelt, Sie xyz ausführen. Andernfalls machen Sie xyz für einen Wasserkocher, den Sie auf ein Kochfeld stellen.

Selbst wenn Sie der Meinung sind, dass Sie alle möglichen Zustände berücksichtigt und sehr spezifische Anweisungen gegeben haben, gibt es Dinge, die Sie möglicherweise nicht vorhersehen. Du machst deine Tasse Tee und etwas geht schief. Ach nein! Ihr Wasserkocher funktioniert nicht mehr, nachdem Sie ihn gekocht haben.

Was ist passiert? Es gibt einen Fehler in Ihrem Code! Ein Fehler ist ein Fehler in Ihrem Code, der zu unerwarteten Ergebnissen führen kann. Um Ihren Code zu reparieren, durchlaufen Sie einen „Debugging-Prozess“, bei dem Sie die Probleme in Ihrem Code finden und die Probleme beheben.

In diesem Fall enthielten Ihre Anweisungen nicht das Auffüllen Ihres Wasserkochers auf 0,8 Liter, um das Heizelement abzudecken. Aus Sicherheitsgründen schaltet sich der Wasserkocher aus.

Um zu verhindern, dass nach dem Ausführen Ihres Programms Fehler auftreten, führen Entwickler Tests und Unit-Tests für ihre Programme durch. Beim Unit-Test schreiben Sie Tests für Teile Ihres Codes. Die Tests schlagen entweder fehl oder bestehen.

Sie schreiben beispielsweise eine Funktion, die zwei Zahlen hinzufügt: 1 + 1. Anschließend schreiben Sie einen Komponententest, bei dem die erwartete Ausgabe 2 beträgt. Alle Antworten schlagen fehl, es sei denn, es ist 2.

Sie gehen Ihren Code durch, bis alles ohne unerwartete Probleme ausgeführt wird. Die Programmierung ist daher ein detaillierter und iterativer Prozess, bei dem Sie das, was Sie zuvor geschrieben haben, kontinuierlich verbessern.

Wie versteht Ihr Computer Ihren Code?

Was die meisten Programmierer als „Code“ schreiben, ist eine Programmiersprache auf hohem Niveau. Es ist von Natur aus abstrakt. Abstraktion bedeutet in diesem Zusammenhang, dass wir uns weiter vom Maschinencode entfernen und Programmiersprachen näher an gesprochenen Sprachen sind.

Ein Computer kann jedoch keinen textbasierten Code verstehen. Es muss in Maschinencode kompiliert (übersetzt) ​​werden. Maschinencode ist eine Reihe von Anweisungen, die von der Zentraleinheit (CPU) eines Computers verstanden werden können. Stellen Sie sich die CPU als das Gehirn eines Computers vor. Maschinencode besteht aus Einsen und Nullen. Dies nennt man binär.

So würden Sie beispielsweise "Hello World" binär schreiben:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Wie Sie sehen können, ist Binärdateien für Menschen nicht leicht lesbar, daher vermeiden wir die Programmierung im Maschinencode!

Was genau ist eine Programmiersprache?

Programmiersprachen fallen sowohl in das Spektrum von Low-Level-Sprachen wie Assembly als auch von High-Level-Programmiersprachen wie JavaScript.

Aber was genau ist eine Programmiersprache? Die beste Analogie, die ich mir vorstellen kann, sind die gesprochenen Sprachen, die wir heute verwenden. Alle Sprachen drücken dieselbe Idee aus, jedoch auf unterschiedliche Weise für eine andere Person:

Deutsch: Hallo

Französisch: Bonjour

Spanisch: Hola

Programmiersprachen sind verschiedene Arten, dieselbe Idee auszudrücken, jedoch stattdessen auf einem Computer. Im Folgenden wird "Hallo" in drei verschiedenen Programmiersprachen ausgedruckt:

JavaScript: alert(“Hello”);

Python: print(“Hello”)

Perl: print "Hello";

Jede Programmiersprache hat ihre eigene Syntax. Auf Englisch haben wir Grammatik. Gleiches gilt für Programmiersprachen - sie haben jeweils ihre eigenen Regeln.

Woher wissen Sie, ob eine Programmiersprache eine Programmiersprache ist?

Dies scheint eine seltsame Frage zu sein. Ist der gesamte Code in einer Programmiersprache geschrieben? Technisch gesehen nein. Beispielsweise gibt es ein Missverständnis, dass HTML (HyperText Markup Language) eine Programmiersprache ist. Es ist in der Tat eine "deklarative" Sprache, die laut Wikipedia lautet:

"... ein Stil zum Aufbau der Struktur und der Elemente von Computerprogrammen - der die Logik der Berechnung zum Ausdruck bringt, ohne den Kontrollfluss zu beschreiben."

Mit anderen Worten, HTML stellt die Struktur einer Webseite bereit, steuert jedoch nicht das Verhalten oder die Funktion der Website.

Sie können feststellen, ob eine Sprache eine Programmiersprache ist, indem Sie festlegen, ob sie vollständig ist. Die Turing-Maschine ist eine hypothetische Maschine, die 1936 von Alan Turing beschrieben wurde. Damit eine Programmiersprache Turing vollständig ist, benötigt sie:

  1. Bedingte Verzweigung (die ich unten untersuche).
  2. Die Fähigkeit, auf einem unendlichen Papierband zu lesen und zu schreiben. Dies bedeutet im Wesentlichen, Daten im Speicher speichern zu können.

Ich werde dieses Thema nicht eingehend untersuchen, aber wenn Sie interessiert sind, ist dieses Video eine hilfreiche Einführung.

Was sind die Grundlagen einer Programmiersprache?

Es gibt einige grundlegende Elemente, die häufig vorgestellt werden. Dies umfasst Variablen, Schleifen, bedingte Anweisungen, Datenstrukturen und Algorithmen. Dies sind die Bausteine ​​der meisten Programmiersprachen.

Was ist eine 'for-Schleife'?

For-Schleifen sind nützlich, wenn Sie eine Reihe von Anweisungen wiederholt ausführen müssen. Zum Beispiel haben Sie Nachmittagstee und müssen fünf Tassen Tee für Ihre Gäste machen. Um eine Tasse Tee zuzubereiten, müssen Sie eine Reihe von Anweisungen befolgen, wie in meinem früheren Beispiel.

Anstatt die Anweisungen fünfmal zu schreiben, können Sie den Computer anweisen, dieselben Anweisungen fünfmal zu durchlaufen. Dadurch können Sie skalieren.

Unten finden Sie ein Beispiel für eine Basisschleife for:

for (let i = 0; i < 5; i++) { console.log("Make Tea!"); } //expected output: "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" 

Was ist eine bedingte Aussage?

In JavaScript haben wir if...elsebedingte Anweisungen. Diese werden verwendet, wenn Sie basierend auf einer Bedingung verschiedene Aktionen ausführen möchten.

Wenn Sie zu meinem früheren Beispiel zurückkehren, fragen Sie den Benutzer, ob er Milch in seinem Tee haben möchte. Wenn sie Milch wollen, dann fügen Sie Milch zum Tee hinzu, sonst tun Sie nichts.

Hier ist ein Beispiel für eine if...elseAnweisung in JavaScript:

if(milk == true) { // add milk } else { // don't add milk } 

Was sind Datenstrukturen?

"Eine Datenstruktur ist eine Möglichkeit, Daten so zu organisieren, dass sie effektiv genutzt werden können. Sie sind wesentliche Bestandteile bei der Erstellung schneller und leistungsfähiger Algorithmen."

(Datenstrukturen Leicht bis Fortgeschrittenenkurs, William Fiset)

Häufige Datenstrukturen, die Sie in vielen Programmiersprachen finden, sind Arrays, Objekte, Tupel und Gewerkschaften. Ich werde Arrays als Beispiel nehmen.

In JavaScript kann ein Array eine Reihe von Daten wie Zahlen und Zeichenfolgen (Text) speichern. Ich liebe Kekse mit meinem Tee, deshalb werde ich sie in meinem Sortiment aufbewahren:

biscuits = [“shortbread”, “digestive”, “ginger nut”]; 

Diese Kekse werden im Speicher des Computers gespeichert, und Sie als Entwickler können auf einen bestimmten Keks zugreifen, indem Sie auf dessen Index verweisen. Sie beginnen mit dem Zählen des Index ab 0. Der Index entspricht der Position des Kekses in einer Keksdose. Sie referenzieren es mit der eckigen Klammer.

biscuits[0]; // “shortbread” biscuits[1]; // “digestive” biscuits[2]; // “ginger nut” 

Wenn Sie einen Verdauungskeks erhalten möchten, können Sie auf dessen Indexposition zugreifen : biscuits[1]. Ich kann es leicht finden, weil ich weiß, wo es gespeichert ist.

Denken Sie daran, dass das erste Element des Arrays Index 0 ist. Wenn Sie sich also auf Index 1 beziehen, ist es tatsächlich das zweite Element des Arrays.

Datenstrukturen sind daher eine Möglichkeit, Daten zu verwalten. Dies umfasst das Speichern und Abrufen von Daten. Es ist effizienter, Algorithmen auszuführen, wenn Daten in einer Datenstruktur organisiert sind.

Was ist ein Algorithmus?

Ein Algorithmus ist ein spezifischer Befehlssatz, der ein Problem löst. Es ist ein abstraktes Konzept. Hier ist ein Link zu einem kurzen Video von TED zum Thema "Was ist ein Algorithmus?".

Erinnerst du dich, als wir früher Anweisungen geschrieben haben, wie man eine Tasse Tee macht? Das ist im Wesentlichen ein Algorithmus: eine Reihe von sequentiellen Anweisungen.

Als ich meine erste Funktion in JavaScript schrieb, habe ich tatsächlich meinen ersten Algorithmus erstellt, ohne zu wissen, dass es sich um einen Algorithmus handelt! Eine Funktion ist eine Implementierung eines Algorithmus.

Genau wie im wirklichen Leben gibt es oft mehrere Lösungen für ein Codierungsproblem. Angenommen, Sie planen, in ein Café zu gehen, in dem Sie noch nie zuvor waren. Es gibt verschiedene Möglichkeiten, um an Ihr Ziel zu gelangen. Einige Routen dauern länger als andere, aber letztendlich bringen Sie alle zum selben Ort. Idealerweise möchten Sie die schnellste, effizienteste und einfachste Route auswählen.

Das gleiche Prinzip kann auf die Programmierung angewendet werden. Es gibt normalerweise einige Möglichkeiten, ein Codierungsproblem zu lösen, und Programmierer bemühen sich, die eleganteste und effizienteste Lösung zu finden.

Entwickler machen es oft nicht gleich beim ersten Versuch richtig! So wie ich einen ersten Entwurf für einen Artikel schreiben würde, ist es auch beim Codieren so. Ich habe einen Artikel mehrmals neu entworfen, um die Struktur zu ändern, Abschnitte zu bearbeiten, neu zu schreiben und unnötige Sätze auszuschneiden. Bei der Programmierung durchlaufen wir einen ähnlichen Prozess und nennen dies Refactoring unseres Codes.

Was sind die wichtigsten Programmiersprachen, die heute verwendet werden? Wie viele sind es?

Es scheint eine Debatte über die Gesamtzahl der Programmiersprachen im Internet zu geben. Einige Websites wie Wikipedia listen ungefähr 700 „aller bemerkenswerten“ aktuellen und historischen Programmiersprachen auf. Andere Websites wie Tiobe verfolgen und überwachen 250 der „beliebtesten“ Sprachen.

Auf Github war JavaScript die beliebteste Programmiersprache des Jahres 2019:

Warum gibt es so viele Programmiersprachen? Wie haben sich Programmiersprachen entwickelt?

Verschiedene Programmiersprachen werden entwickelt, um unterschiedliche Anforderungen zu erfüllen. Dies wird in der gesamten Geschichte der Programmiersprachen demonstriert. Bitte beziehen Sie sich auf dieses Diagramm von O'Reilly, das die Geschichte der Programmiersprachen von den 1950er bis 2004 darstellt.

Mitte der 1950er Jahre wurde FORTRAN (Formula Translation) entwickelt, um komplexe mathematische, statistische und wissenschaftliche Probleme zu lösen. COBOL („Common Business Oriented Language“) wurde 1959 gegründet, um Unternehmen die Verwendung von Code zu erleichtern. Es gibt einige Sprachen, die für statistische Analysen besser geeignet sind, wie R (1976).

Ab den 1970er Jahren entstanden Allzweck-Programmiersprachen wie C, C ++, C # und Java. Wie Sie in der obigen Tabelle sehen können, dominieren Allzwecksprachen die 10 beliebtesten Sprachen.

JavaScript wurde 1995 erstellt und ist eine beliebte Sprache für das Web. Es gibt Websites ihre Interaktivität und ihr Leben.

In jüngerer Zeit wurden neue Sprachen wie Go von Google geboren, mit denen große Softwaresysteme effizienter gewartet werden sollten. Wir werden wahrscheinlich in Zukunft noch mehr Programmiersprachen sehen.

Kompilierte oder interpretierte Programmiersprachen

Wenn Sie sich mit Programmiersprachen vertraut machen, werden Sie auf kompilierte und interpretierte Programmiersprachen stoßen. Was ist der Unterschied?

Was ist eine kompilierte Sprache?

Programmiersprachen wie C, C ++ und Java haben einen "Build" -Prozess, bei dem Ihr Code in ein besser lesbares Format (Maschinensprache) für den Computer kompiliert wird.

Es könnte einfacher sein, an zwei Personen zu denken, die nicht dieselbe Sprache sprechen, aber zusammenarbeiten müssen. John spricht Englisch und Chloe spricht Französisch. Chloe schreibt eine Reihe von Anweisungen, wie man ein Schokoladensoufflé auf Französisch macht, aber John kann es nicht verstehen. Sie brauchen einen Übersetzer, der sowohl Englisch als auch Französisch spricht. Es ist einfacher, wenn der Übersetzer Chloes Anweisungen im Voraus übersetzen kann, bevor sie zusammen kochen.

Stattdessen „sprechen“ Entwickler eine Programmiersprache wie Java oder Python. Sie müssen ihren Code kompilieren (in die Maschinensprache übersetzen), bevor ein Programm ausgeführt werden kann, damit der Computer es verstehen kann.

Programme, die aus einer kompilierten Sprache erstellt wurden, sind für einen Computer leichter zu verstehen und werden daher sehr schnell ausgeführt.

Was ist eine interpretierte Sprache?

JavaScript, PHP und Python sind Beispiele für interpretierte Programmiersprachen. Es gibt keinen Erstellungsprozess und der Code muss nicht kompiliert werden. Ihr Code wird beim Ausführen des Programms zeilenweise interpretiert oder gelesen.

Zurück zu meiner Analogie von Chloe und John. John schreibt eine Reihe von Anweisungen auf, wie man einen Hirtenkuchen macht. Der Übersetzer übersetzt Johns Anweisungen nicht im Voraus, sondern begleitet sie zum Kochen. Der Übersetzer übersetzt jede Zeile von Johns Anweisungen vom Englischen ins Französische, während Chloe kocht. Aus diesem Grund dauert es länger, bis Chloe das Essen zubereitet und kocht.

Daher sind interpretierte Sprachen langsamer als kompilierte Sprachen. Sie müssen im laufenden Betrieb übersetzt werden, damit der Computer sie verstehen kann.

Mit Just-in-Time-Compilern (JIT) werden interpretierte Sprachen jedoch schneller und effizienter.

Welche Programmiersprache (n) soll ich lernen?

Programmiersprachen machen so ziemlich das Gleiche, aber sie sind nur verschiedene Möglichkeiten, die gleichen Anweisungen auf einem Computer auszudrücken. Sobald Sie die Konzepte und Grundlagen einer Programmiersprache verstanden haben, wird die Lernkurve zum Erlernen einer anderen Sprache nicht mehr so ​​steil sein.

Die Programmiersprache, die Sie zuerst lernen sollten, hängt von einer Reihe von Faktoren ab. Zum Beispiel wollte ich Webentwickler werden, deshalb habe ich JavaScript als meine primäre Programmiersprache gewählt. Andere Sprachen für das Web, die Sie lernen können, sind PHP und Ruby on Rails.

Wenn Sie Datenwissenschaftler werden möchten, ist Python möglicherweise eine Option. Python gilt als eines der besten datenwissenschaftlichen Tools zur Analyse von Big Data. Ich habe bereits R erwähnt, eine andere Sprache, die unter Datenwissenschaftlern und Statistikern weit verbreitet ist.

Python ist eine universelle Programmiersprache und auch nützlich, um zu lernen, wenn Sie in das Gebiet des maschinellen Lernens und der künstlichen Intelligenz einsteigen möchten.

Wenn Sie Software Engineer werden möchten, ist Java möglicherweise eine Option. Java ist eine der beliebtesten und gefragtesten Sprachen der Welt. Es ist eine vielseitige Sprache, die für die Entwicklung kleiner bis großer Unternehmenssoftware verwendet werden kann.

Überlegen Sie sich also, welche Rolle in der Technologie Sie möchten und für welche Art von Unternehmen Sie arbeiten möchten.

Die Auswahl einer Programmiersprache hängt auch davon ab, welche Software Sie erstellen möchten. Dies führt uns schön zu unserem nächsten Abschnitt.

Was ist Software?

Wie oft interagieren Sie an einem bestimmten Tag mit Software?

Software ist überall. Es ist als eingebettetes System in alltägliche Geräte wie Mikrowelle, Waschmaschinen, Autos, Fernseher, Kinderspielzeug und Fernbedienungen integriert. Dann gibt es offensichtlichere Computergeräte mit Anwendungs- und / oder Systemsoftware wie Tablets, Smartphones, Laptops, Desktop-Computer und Heimassistenten wie Alexa.

Die durchschnittliche Person interagiert wahrscheinlich ein paar Dutzend Mal am Tag mit Software, wenn nicht mehr. Es ist Teil unseres täglichen Lebens.

Die gesamte Software wird von einem Entwickler programmiert. Software ist von Natur aus agil und kann ständig iterieren. Software und Hardware sind miteinander verflochten. Stellen Sie sich Ihr Telefon ohne Apps und Betriebssystem vor. Das Telefon wäre im Wesentlichen ein teurer Stein! Daher gibt Software der Hardware Leben und Hardware ist die Art und Weise, wie wir mit Software interagieren.

Der Großteil der von Programmierern erstellten Software ist in einer höheren Programmiersprache geschrieben.

Was ist Softwareentwicklung?

Softwareentwicklung ist alles von der Konzeption einer Idee bis zur Entwicklung und Bereitstellung. Dieser Prozess, von der Konzeption einer Idee bis zur Bereitstellung von Software, wird auch als Software-Lebenszyklus bezeichnet.

Es gibt mehrere Phasen des Software-Lebenszyklus: Ermittlung, Entwurf, Programmierung / Erstellung, Test und Bereitstellung / Ausführung. Es enthält auch alles andere im Softwareentwicklungs-Ökosystem, wie Wartung, Dokumentation und Fehlerbehebungen.

Ich werde hier nicht ins Detail gehen, da das Thema Softwareentwicklung einen eigenen Artikel rechtfertigt.

Aktuelle Trends in der Softwareentwicklung und Computerprogrammierung

Künstliche Intelligenz und maschinelles Lernen

In den letzten Jahren haben Sie wahrscheinlich von Begriffen wie künstliche Intelligenz und maschinelles Lernen gehört. Manchmal werden sie synonym verwendet, aber sind sie gleich?

Nein, sie sind nicht ganz dasselbe. Beim maschinellen Lernen lernt eine Maschine durch Erfahrung. Während künstliche Intelligenz eine umfassendere Idee ist, dass Maschinen Aufgaben intelligent ausführen können. Maschinelles Lernen ist eine Teilmenge der künstlichen Intelligenz.

Was ist künstliche Intelligenz?

Ich habe beschrieben, wie Programmiersprachen funktionieren - der Programmierer schreibt eine Reihe von Anweisungen, die der Computer ausführen soll. Künstliche Intelligenz (KI) ist ein umfassenderes Konzept, bei dem Computer die Funktionsweise eines Gehirns nachahmen können. Es trainiert eine Maschine, um wie ein Mensch zu „denken“.

Die große Frage ist: Können Sie die menschliche Intelligenz in einer Maschine replizieren? Können Sie die Art und Weise nachahmen, wie ein Mensch lernt, begründet und wahrnimmt? Alan Turing stellte diese Frage 1950 in seinem Artikel:

"Können Maschinen denken?"

(Computing Machinery and Intelligence, 1950 von Alan Turing)

In Turings Artikel schlug er den „Turing-Test“ vor, bei dem eine Maschine als „intelligent“ eingestuft würde, wenn eine Person den Unterschied zwischen den Reaktionen eines Menschen und der künstlich intelligenten Maschine nicht erkennen könnte.

Nach 70 Jahren versuchen KI-Entwickler, Akademiker, Wissenschaftler und Forscher immer noch, diese Frage zu beantworten und eine künstlich intelligente Maschine zu schaffen. Ich glaube wir sind noch nicht da. Haben Sie versucht, ein Gespräch mit Siri oder Alexa zu führen? Gespräche mit diesen beiden Geräten sind noch grundlegend. Ich bin mir jedoch sicher, dass es nur eine Frage der Zeit ist, bis sich die Technologie verbessert.

Unternehmen wie DeepMind untersuchen dieses Konzept und ob Maschinen intelligent sind. Das AlphaGo-Programm von DeepMind sorgte für Schlagzeilen, als es einen professionellen Spieler bei Go besiegte. Dies war ein großer Meilenstein für AI.

Was ist maschinelles Lernen?

Maschinelles Lernen (ML) ist eine Teilmenge der künstlichen Intelligenz. ML ist eine andere Art der Programmierung. Es ist die Idee, dass der Computer die Fähigkeit hat zu lernen, ohne explizit programmiert zu werden. Arthur Samuel kam 1959 in seiner Arbeit auf die Idee des maschinellen Lernens:

"Das Programmieren von Computern, um aus Erfahrungen zu lernen, sollte letztendlich die Notwendigkeit eines Großteils dieses detaillierten Programmieraufwands beseitigen."

Als ich meinem Sohn beibrachte, wie man eine Katze erkennt, zeigte ich ihm Bilder von Katzen. Ich tat dies wiederholt, bis er eine Katze erkennen konnte, ohne dass ich ihn dazu aufforderte.

Maschinelles Lernen ist ähnlich. Sie geben Ihrem Computer hundert Bilder (Eingabe) von Katzen. Anschließend lernt es die Muster in den Daten und baut durch Wiederholung ein Klassifizierungssystem auf. Wenn Sie Ihrem Computer mehr Bilder von Katzen und anderen Tieren geben, sollte er erkennen können, ob das Tier auf dem Bild eine Katze ist oder nicht. Es hat im Wesentlichen gelernt, wie eine Katze aussehen sollte.

ML gibt Ihren Computern Daten und Beispiele und kann im Gegenzug selbst lernen, wie es Babys und Kleinkinder tun. Anstatt dass Entwickler die Anweisungen an einen Computer weitergeben, erstellt der Computer eigene Anweisungen, die befolgt werden müssen - Algorithmen für maschinelles Lernen. Algorithmen für maschinelles Lernen sind eine Teilmenge von ML, einem Konzept, das als „Deep Learning“ bekannt ist.

„KI ist eines der tiefgreifendsten Dinge, an denen wir als Mensch arbeiten. Es ist tiefer als Feuer oder Elektrizität ... "

(Sundar Pichai, Weltwirtschaftsforum, Januar 2020)

Das Zitat von Sundar Pichai, dem CEO von Alphabet Inc, fasst die Bedeutung von AI und ML zusammen.

Was ist die Zukunft der Computerprogrammierung?

Dieser letzte Abschnitt wird meine Vorhersagen über die Zukunft der Computerprogrammierung sein.

Entwickler werden weiterhin neue Programmiersprachen erstellen. Programmiersprachen werden abstrakter und daher für Personen zugänglich, die das Codieren lernen.

Ich glaube, dass der Kodierungs- und Programmierunterricht in den Lehrplänen der Grund- und Sekundarschulen eine größere Bedeutung beigemessen wird. Die Nachfrage nach Entwicklern und Programmierern wird nur zunehmen, wenn Technologie und Software immer mehr in unser tägliches Leben integriert werden. Die Programmierung wird allgegenwärtig.

Wir werden den kontinuierlichen Anstieg und die Popularität von ML und AI sehen, um Entwickler beim Softwareentwicklungsprozess zu unterstützen. Dies umfasst die Automatisierung von Tests sowie das Erkennen und Verhindern von Schwachstellen und Fehlern.

KI wird alle Aspekte unserer Gesellschaft revolutionieren, nicht nur in der Programmierung und Softwareentwicklung. Zum Beispiel haben wir große Fortschritte im Bereich KI und selbstfahrende Autos gesehen.

Eines der weltweit führenden Unternehmen, das selbstfahrende Autos entwickelt, ist Tesla, das von Elon Musk gegründet wurde. Unter der Aufsicht eines menschlichen Fahrers kann ein Tesla-Auto jetzt automatisch die Spur wechseln, autonom auf Autobahnen mit beschränktem Zugang navigieren und der Besitzer kann das Auto zu und von einer Garage oder einem Parkplatz rufen. Teslas Ziel ist es, ein vollautomatisches, selbstfahrendes Auto ohne menschliche Aufsicht zu schaffen.

Wenn Maschinen intelligenter werden, können wir zu einem Punkt kommen, an dem Maschinen die Intelligenz von Menschen übertreffen. Dies wird als Singularität bezeichnet. Es mag im Moment wie eine vollständige Science-Fiction erscheinen! Bemerkenswerte Zahlen wie Ray Kurzweil sagen jedoch voraus, dass Maschinen mit menschlicher Intelligenz in den nächsten 20 Jahren verfügbar sein werden. Kurzweil ist bekannt für seine genauen Vorhersagen über den Fortschritt der Technologien. Er schrieb ein Buch darüber: Das Zeitalter der spirituellen Maschinen.

Wie wird sich unsere Gesellschaft durch superintelligente Maschinen verändern?

Letzte Worte

Technologieeinflüsse und Code berühren fast jeden Teil unseres Lebens. Von unserer Auswahl an Unterhaltung (Online-Spiele, Streaming) und wie wir einkaufen, bis hin zur Auswahl, was wir essen und sogar wie wir uns verabreden! Code ist wichtig und mehr Arbeitsplätze werden sich verschieben und erfordern, dass die Leute zumindest ein grundlegendes Verständnis der Programmierung haben.

Laut der Global Developer Population and Demographic-Studie 2019 gibt es weltweit nur etwa 23,9 Millionen Entwickler. Um dies ins rechte Licht zu rücken, wissen nur 0,3% der Weltbevölkerung, wie man programmiert. Wie ich bereits erwähnt habe, nimmt unsere Abhängigkeit von Software und Technologie zu. Laut der Statistik des US Bureau of Labour wird die Nachfrage nach Software-Ingenieuren von 2018 bis 2028 voraussichtlich um 21% steigen. Daher müssen wir die Anzahl der Entwickler erhöhen.

Wenn Sie daran denken, Entwickler zu werden, beginnen Sie noch heute. Es ist eine unglaublich aufregende Zeit dafür! Es gibt viele Online-Ressourcen zum Codieren. Es gibt Plattformen wie selfCodeCamp. Es gibt auch einen großartigen Beitrag von Laurence Bradford, der die besten Ressourcen zusammenstellt, um das kostenlose Codieren zu lernen. Recherchieren Sie und finden Sie heraus, welche Ressource zu Ihrem Lernstil passt.

Wenn Sie Fragen haben oder einfach nur Hallo sagen möchten, finden Sie mich auf Twitter @PhoebeVF.

Ein besonderer Dank geht an Katerina Limpitsouni von Undraw für die Erstellung der Illustrationen für diesen Artikel.