Haupt >> Computerprogrammierung >> Computerprogrammierung

Computerprogrammierung

Die Ausgabe aus dem Prozess von Computerprogrammierung (oft abgekürzt zu Programmierung oder Kodierung ) ist Quellcode, geschrieben in a Programmiersprache . Dieser Code kann eine Modifikation des vorhandenen Quellcodes oder etwas völlig Neues sein. Der Prozess des Schreibens von Quellcode erfordert Fachwissen in vielen verschiedenen Bereichen, einschließlich Kenntnisse der Anwendungsdomäne und Algorithmen das gewünschte Verhalten umzusetzen.

Innerhalb der Softwareentwicklung ist die Programmierung (die Implementierung ) wird als eine Phase in einem Softwareentwicklungsprozess betrachtet.

Es gibt eine anhaltende Debatte darüber, inwieweit das Schreiben von Programmen eine Kunst- oder eine Ingenieurdisziplin ist.



Eine weitere anhaltende Debatte ist das Ausmaß, in dem die beim Schreiben von Programmen verwendete Programmiersprache die Form beeinflusst, die das endgültige Programm annimmt. Diese Debatte ist analog zu der um die Sapir-Whorf-Hypothese in Linguistik .

Programmiersprachen

Verschiedene Programmiersprachen unterstützen verschiedene Programmierstile (sog Programmierparadigmen ). Die Wahl der verwendeten Sprache kann eine individuelle Entscheidung sein oder durch die Unternehmensrichtlinie vorgeschrieben werden. Idealerweise wird die für die Aufgabenstellung am besten geeignete Programmiersprache ausgewählt. Kompromisse von diesem Ideal beinhalten die Suche nach genügend Programmierern, die die Sprache kennen, um ein Team aufzubauen, die Verfügbarkeit von Compilern für diese Sprache und die Effizienz, mit der Programme, die in einer bestimmten Sprache geschrieben sind, ausgeführt werden.

Geschichte der Programmierung

  Verdrahtete Steckplatine für eine IBM 402 Accounting Machine.   Vergrößern Verdrahtete Steckplatine für eine IBM 402 Accounting Machine.

Die früheste programmierbare Maschine (d. h. eine Maschine, die ihre Fähigkeiten basierend auf der Änderung ihres 'Programms' anpassen kann) kann als Jacquard Loom bezeichnet werden, der 1801 entwickelt wurde. Die Maschine verwendete eine Reihe von Pappkarten mit eingestanzten Löchern Sie. Das Lochmuster stellte das Muster dar, dem der Webstuhl beim Weben von Stoff folgen musste. Der Webstuhl konnte mit verschiedenen Kartensätzen völlig unterschiedliche Bindungen herstellen. Diese Innovation wurde später von Herman Hollerith von IBM bei der Entwicklung der berühmten IBM-Lochkarte verfeinert. Diese wurden mit einer Vielzahl von Maschinen verwendet, die als Einheitsaufzeichnungsgeräte bezeichnet wurden, um Datenverarbeitungsaufgaben auszuführen. Die Einheitsaufzeichnungsgeräte wurden durch Ändern der Verdrahtung von Steckbrettern programmiert. Frühe Computer verwendeten ähnliche Programmiermethoden.

  Lochkartenschachtel mit mehreren Programmstapeln.   Vergrößern Eine Schachtel Lochkarten mit mehreren Programmstapeln.

Die Erfindung der Von-Neumann-Architektur ermöglichte das Speichern von Programmen im Computerspeicher. Frühe Programme mussten mühsam unter Verwendung der Anweisungen der jeweiligen Maschine erstellt werden, oft in binärer Notation. Jedes Computermodell würde wahrscheinlich unterschiedliche Anweisungen benötigen, um dieselbe Aufgabe auszuführen. Später wurden Assemblersprachen entwickelt, die es dem Programmierer ermöglichten, jede Anweisung in einem Textformat anzugeben, Abkürzungen für jeden Operationscode anstelle einer Zahl einzugeben und Adressen in symbolischer Form anzugeben (z. B. ADD X, TOTAL). 1954 wurde Fortran, die erste höhere Programmiersprache, erfunden. Dadurch konnten Programmierer Berechnungen spezifizieren, indem sie direkt eine Formel eingaben (z. B. Y = X*2 + 5*X + 9). Der Programmtext bzw Quelle , wurde mit einem speziellen Programm namens Compiler in Maschinenanweisungen umgewandelt. Viele andere Sprachen wurden entwickelt, darunter auch solche für die kommerzielle Programmierung, wie COBOL. Programme wurden meist noch mit Lochkarten oder Lochstreifen eingegeben. Siehe Computerprogrammierung im Lochkartenzeitalter. Mitte der 1970er Jahre wurden Massenspeichergeräte und Computerterminals so preiswert, dass Programme durch direktes Eintippen in die Computer erstellt werden konnten. Es wurden Texteditoren entwickelt, mit denen Änderungen und Korrekturen wesentlich einfacher vorgenommen werden konnten als mit Lochkarten.

Im Laufe der Zeit haben Computer im Bereich der Rechenleistung riesige Sprünge gemacht. Dies hat neuere Programmiersprachen hervorgebracht, die stärker von der zugrunde liegenden Hardware abstrahiert sind. Obwohl diese stärker abstrahierten Sprachen zusätzlichen Aufwand erfordern, hat die enorme Geschwindigkeitssteigerung moderner Computer in den meisten Fällen im Vergleich zu früheren Gegenstücken nur eine geringe Leistungsminderung bewirkt. Die Vorteile dieser abstrakteren Sprachen bestehen darin, dass sie sowohl eine einfachere Lernkurve für Personen ermöglichen, die mit den älteren Programmiersprachen auf niedrigerer Ebene weniger vertraut sind, als auch einem erfahreneren Programmierer ermöglichen, einfache Anwendungen schnell zu entwickeln. Trotz dieser Vorteile erfordern große, komplizierte Programme und Programme, die stärker von der Geschwindigkeit abhängig sind, immer noch die schnelleren und relativ niedrigeren Sprachen mit der heutigen Hardware. (Die gleichen Bedenken wurden in Bezug auf die ursprüngliche Fortran-Sprache geäußert.)

Während der zweiten Hälfte des zwanzigsten Jahrhunderts war Programmieren in den meisten entwickelten Ländern eine attraktive Karriere. Einige Formen der Programmierung unterliegen zunehmend dem Offshore-Outsourcing (Import von Software und Dienstleistungen aus anderen Ländern, in der Regel zu einem niedrigeren Lohn), was die Karriereentscheidungen für Programmierer in entwickelten Ländern komplizierter macht und gleichzeitig die wirtschaftlichen Möglichkeiten in weniger entwickelten Gebieten erhöht. Es ist unklar, wie weit sich dieser Trend fortsetzen wird und wie tief er sich auf die Löhne und Möglichkeiten der Programmierer auswirken wird.

Beispiele für Computerprogrammiersprachen

In einer fast evolutionären Reihenfolge:

  • FORTRAN ist eine universelle, prozedurale, imperative Programmiersprache, die sich besonders für numerische Berechnungen und wissenschaftliche Berechnungen eignet. Ursprünglich von John Backus von der International Business Machines Corporation (IBM) in den 1950er Jahren für wissenschaftliche und technische Anwendungen entwickelt.
  • C ist eine kompilierte prozedurale, imperative Programmiersprache, die als Grundlage von populär gemacht wurde Unix .
  • Shell-Scripting, insbesondere die Verwendung einer Variante der Bourne-Shell oder der C-Shell, ist bei UNIX-Hackern beliebt. Obwohl die genaue Implementierung zwischen den verschiedenen Shells variiert, bleiben die Kernprinzipien intakt: nur Einrichtungen für den Programmfluss bereitzustellen (auch in C zu sehen), während der Schwerpunkt auf der Verwendung externer Programme liegt, obwohl die meisten Shells einige andere interne Funktionen haben, die als Builtins bekannt sind. Shell-Scripting wird hauptsächlich in der Systemadministration verwendet, insbesondere dort, wo Aufgaben automatisiert und zu bestimmten Zeiten ausgeführt werden müssen (Backups, Überwachung, Wartung des Dateisystems usw.). Es wird auch als Werkzeug für schnelles Prototyping verwendet, wenn das genaue Design eines Programms noch nicht klar genug für eine vollständige Implementierung ist, oft in einer kompilierten Sprache wie C. Während die meisten Shell-Skripte relativ einfach sind, ist es möglich, komplexe und leistungsfähige zu erstellen Programme in vielen Implementierungen.
  • SMALLTALK wurde 1971 erfunden und war die wichtigste Grundlage für die objektorientierte Programmierung. Es begann ein neues Programmierparadigma, das die gesamte Kunst des Programmierens maßgeblich beeinflusst hat. Smalltalk ist eine reine objektorientierte (OO) Sprache mit minimalistischer Syntax. Dies ist möglich, da fast alles innerhalb der Klassenbibliothek erledigt wird. Auch Standardkontrollstrukturen sind in der Klassenbibliothek implementiert. Außer Objekten existiert nichts. Wenige OO-Sprachen haben diese Klarheit und Einfachheit.
  • Pascal ist eine strukturierte Allzwecksprache, die nach dem berühmten Mathematiker und Philosophen benannt ist Blaise Paskal . Es war in den 80er und 90er Jahren sehr beliebt. Während die Popularität von Pascal selbst nachgelassen hat (seine hauptsächliche Verwendung liegt im Programmierunterricht), werden davon abgeleitete Sprachen (wie Object Pascal) immer noch verwendet.
  • BASIC (Beginner's All Purpose Symbolic Instruction Code) wurde von John Kemeny und Thomas Kurtz vom Dartmouth College erfunden. Es wurde zur am weitesten verbreiteten Sprache, als Mikrocomputer in den 70er und 80er Jahren zum ersten Mal auf den Markt kamen. Viele Dialekte von BASIC wurden produziert. Da frühen Dialekten wichtige Merkmale wie starke Datentypisierung, Prozeduren und Funktionen fehlten, wurde BASIC in der Regel eher als Sprache zum Erlernen von Programmierung und Prototyping als für die Unternehmensentwicklung angesehen. Dies ist heute nicht mehr der Fall, da viele BASIC-Compiler alle Vorteile der strukturierten Programmierung wie andere Sprachen bieten.
  • Visual Basic ist Microsofts Implementierung von BASIC als integrierte Entwicklungsumgebung.
  • Objective-C ist ein reflektierendes, objektorientiertes Programmiersprache Dies fügt C Messaging im Smalltalk-Stil hinzu. Heute wird es hauptsächlich auf Mac OS X und GNUstep verwendet, zwei Umgebungen, die auf dem OpenStep-Standard basieren, und ist die primäre Sprache, die für die Anwendungsframeworks NeXTSTEP, OPENSTEP und Cocoa verwendet wird. Generische Objective-C-Programme, die diese Bibliotheken nicht verwenden, können auch für jedes von gcc unterstützte System kompiliert werden, das einen Objective-C-Compiler enthält.
  • C++ ist eine auf C basierende kompilierte Programmiersprache mit Unterstützung für objektorientierte Programmierung. Es ist eine der derzeit am weitesten verbreiteten Programmiersprachen. Es wird oft als Industriestandardsprache für die Spieleentwicklung angesehen, wird aber auch sehr oft zum Schreiben anderer Arten von Computersoftwareanwendungen verwendet. C++ wurde von Bjarne Stroustrup entwickelt und basierte auf der Programmiersprache C. C++ behält die Syntax und viele vertraute Funktionen von C bei, fügt aber auch verschiedene Konzepte hinzu, die mit anderen Programmierparadigmen verbunden sind, wie z. B. Klassen.
  • C# ist objektorientiert Programmiersprache entwickelt von Microsoft als Teil ihrer .NET-Initiative. C# basiert auf einer prozeduralen, objektorientierten Syntax C++ das beinhaltet Aspekte mehrerer anderer Programmiersprachen (insbesondere Delphi, Visual Basic und Java) mit besonderem Schwerpunkt auf Vereinfachung (weniger symbolische Anforderungen als C++, weniger dekorative Anforderungen als Java). Obwohl entwickelt von Microsoft , C# ist von der ECMA und der International Standards Organization standardisiert.
  • Java ist eine objektorientierte interpretierte Programmiersprache. Es hat in den letzten Jahren an Popularität gewonnen, da es auf vielen Plattformen ausgeführt werden kann, einschließlich Solaris, Linux , Microsoft Windows , Mac OS und andere Systeme. Es wurde von Sun Microsystems entwickelt.
  • Lisp ist eine Familie funktionaler, manchmal geskripteter Programmiersprachen, die häufig in der KI verwendet werden.
  • Object Pascal ist ein objektorientiertes Derivat von Pascal. In den 1980er Jahren von Apple Computer entwickelt, ist sie heute vor allem als Sprache von Borland Delphi bekannt. Es wird auch mit Kylix, Chrome und verschiedenen Open-Source-Object-Pascal-Implementierungen wie FreePascal verwendet.
  • Die Delphi-Sprache ist der Name des Object Pascal-Derivats, das die primäre Sprache späterer Versionen der integrierten Entwicklungsumgebung Delphi Studio von Borland ist.
  • Perl, eine der ersten weit verbreiteten, plattformübergreifenden, interpretierten Sprachen, verdankt einen Großteil seiner Syntax und Semantik C und den Unix Hülse.
  • Python ist eine interpretierte, dynamisch typisierte, objektorientierte Sprache, die einige einzigartige Syntaxmerkmale aufweist (wie die Bedeutung von Einrückungen). Obwohl es streng genommen eine interpretierte Sprache ist, folgt seine Verwendungsdomäne der von Java und C#.
  • Ruby ist Python sehr ähnlich, obwohl es einige Konstrukte enthält, die enger mit denen in Perl und Lisp verwandt sind. Es ist auch die Grundlage eines sehr beliebten Webanwendungs-Frameworks namens Ruby on Rails.
  • PHP ist eine neuere Programmiersprache mit Fokus auf Webdesign. Es hat eine C-ähnliche Syntax.

Software-Entwicklung

Software ist ein Massennomen für Computerprogramme und Daten. Die begleitende Dokumentation und die Softwarelizenz gelten ebenfalls als wesentlicher Bestandteil der Software, obwohl sie keine eigentliche Codierung beinhalten.

Das Erstellen von Software umfasst:

  • Anforderungsanalyse
  • Spezifikation
  • Softwarearchitektur
  • Kodierung
  • Zusammenstellung
  • Softwaretest
  • Dokumentation
  • Integration
  • Wartung