Computerprogrammierung

Computerprogrammierung (häufig verkürzt zur Programmierung oder dem Codieren) ist der Prozess von Entwerfen, Schreiben, Prüfung, Beseitigen und Aufrechterhalten des Quellcodes von Computerprogrammen. Dieser Quellcode wird auf einer oder mehr Programmiersprachen geschrieben. Der Zweck zu programmieren ist, eine Reihe von Instruktionen dass Computergebrauch zu schaffen, um spezifische Operationen durchzuführen oder gewünschte Handlungsweisen auszustellen. Der Prozess, Quellcode zu schreiben, verlangt häufig Gutachten in vielen verschiedenen Themen, einschließlich Kenntnisse des Anwendungsgebiets, der spezialisierten Algorithmen und der formalen Logik.

Übersicht

Innerhalb der Softwaretechnik, (die Durchführung) programmierend, wird betrachtet, weil man einen Softwareentwicklungsprozess stufenweise einführt.

Es gibt eine andauernde Debatte über das Ausmaß, in dem das Schreiben von Programmen eine Kunstform, ein Handwerk oder eine Technikdisziplin ist. Im Allgemeinen, wie man betrachtet, ist gute Programmierung die gemessene Anwendung aller drei mit der Absicht, eine effiziente und evolvable Softwarelösung zu erzeugen (die Kriterien für "den effizienten", und "evolvable" ändern sich beträchtlich). Die Disziplin unterscheidet sich von vielen anderen technischen Berufen darin Programmierer brauchen im Allgemeinen nicht lizenziert zu werden oder passieren irgendwelchem standardisiert (oder Regierungs-geregelt) Zertifikat-Tests, um sich "Programmierer" oder sogar "Softwareingenieure zu nennen." Weil die Disziplin viele Gebiete bedeckt, die können oder kritische Anwendungen nicht einschließen können, ist es diskutabel, ob das Genehmigen für den Beruf als Ganzes erforderlich ist. In den meisten Fällen ist die Disziplin durch die Entitäten autonom, die die Programmierung verlangen, und manchmal sehr strenge Umgebungen (z.B USA-Luftwaffengebrauch von AdaCore und Sicherheitsabfertigung) definiert werden. Jedoch sich weil vertretend, ist ein "Berufssoftwareingenieur" ohne eine Lizenz von einer akkreditierten Einrichtung in vielen Teilen der Welt ungesetzlich.

Eine andere andauernde Debatte ist das Ausmaß, in dem die im Schreiben von Computerprogrammen verwendete Programmiersprache die Form betrifft, die das Endprogramm annimmt. Diese Debatte ist dieser Umgebung der Sapir-Whorf Hypothese in der Linguistik und Erkenntnistheorie analog, die verlangt, dass eine Natur einer besonderen Sprache den gewohnheitsmäßigen Gedanken an seinen Sprechern beeinflusst. Verschiedene Sprachmuster geben verschiedene Muster des Gedankens nach. Diese Idee fordert die Möglichkeit heraus, die Welt vollkommen mit der Sprache zu vertreten, weil es zugibt, dass die Mechanismen jeder Sprache die Gedanken an seiner Sprecher-Gemeinschaft bedingen.

Geschichte

Der Antikythera Mechanismus vom alten Griechenland war eine Rechenmaschine, die Getriebe verschiedener Größen und Konfiguration verwertet, um seine Operation zu bestimmen, die den metonic Zyklus verfolgt hat, der noch in Mond-Zu-Sonnen--Kalendern verwendet ist, und die entspricht, für die Daten der Olympiaden zu berechnen. Al-Jazari hat programmierbare Automaten 1206 gebaut. Ein in diesen Geräten verwendetes System war der Gebrauch von Haken und Nocken, die in eine Holztrommel an spezifischen Positionen gelegt sind, die Hebel folgend auslösen würden, die der Reihe nach Schlagzeug-Instrumente bedient haben. Die Produktion dieses Geräts war ein kleiner Drummer, der verschiedene Rhythmen und Trommel-Muster spielt. Der Webstuhl von Jacquard, den Joseph Marie Jacquard 1801 entwickelt hat, verwendet eine Reihe von Pappe-Karten mit in ihnen geschlagenen Löchern. Das Loch-Muster hat das Muster vertreten, dem der Webstuhl in webendem Stoff folgen musste. Der Webstuhl konnte völlig verschieden erzeugen webt verwendende verschiedene Sätze von Karten. Charles Babbage hat den Gebrauch von geschlagenen Karten 1830 angenommen, um seinen Analytischen Motor zu kontrollieren. Das erste Computerprogramm wurde für den Analytischen Motor vom Mathematiker Ada Lovelace geschrieben, um eine Folge von Zahlen von Bernoulli zu berechnen. Die Synthese der numerischen Berechnung, vorher bestimmter Operation und Produktion, zusammen mit einer Weise, für Menschen gewissermaßen relativ leichte Instruktionen sich zu organisieren und einzugeben, zu empfangen und zu erzeugen, hat zur modernen Entwicklung der Computerprogrammierung geführt. Die Entwicklung der Computerprogrammierung hat sich durch die Industrielle Revolution beschleunigt.

Gegen Ende der 1880er Jahre hat Herman Hollerith die Aufnahme von Daten auf einem Medium erfunden, das dann durch eine Maschine gelesen werden konnte. Der vorherige Gebrauch von maschinenlesbaren Medien war oben für die Kontrolle, nicht Daten gewesen. "Nach einigen anfänglichen Proben mit dem Lochstreifen hat er sich auf geschlagenen Karten niedergelassen..." Um diese geschlagenen Karten zu bearbeiten, die zuerst als "Hollerithkarten" bekannt sind, hat er den Tabellarisierer und die Handlocher-Maschinen erfunden. Diese drei Erfindungen waren das Fundament der modernen Informationsverarbeitungsindustrie. 1896 hat er Tabulating Machine Company gegründet (der später der Kern von IBM geworden ist). Die Hinzufügung eines Bedienungsfeldes (plugboard) zu seinem 1906-Tabellarisierer des Typs I hat ihm erlaubt, verschiedene Jobs zu tun, ohne physisch wieder aufgebaut werden zu müssen. Bis zum Ende der 1940er Jahre gab es eine Vielfalt des Bedienungsfeldes programmierbare Maschinen, genannt Einheitsrekordausrüstung, um Datenverarbeitungsaufgaben durchzuführen.

Die Erfindung der Architektur von von Neumann hat Computerprogrammen erlaubt, im Computergedächtnis versorgt zu werden. Frühe Programme mussten mit den Instruktionen (elementare Operationen) der besonderen Maschine häufig in der binären Notation sorgfältig gefertigt werden. Jedes Modell des Computers würde wahrscheinlich verschiedene Instruktionen (Maschinensprache) verwenden, um dieselbe Aufgabe zu erledigen. Später wurden Zusammenbau-Sprachen entwickelt, die den Programmierer angeben lassen, dass jede Instruktion in einem Textformat, in Abkürzungen für jeden Operationscode statt einer Zahl eingehend und Adressen in der symbolischen Form (z.B angebend, X, GANZ BEITRAGEN). Das Eingehen in ein Programm auf der Zusammenbau-Sprache ist gewöhnlich schneller günstiger, und für den menschlichen Fehler weniger anfällig als das Verwenden der Maschinensprache, aber weil eine Zusammenbau-Sprache ein wenig mehr als eine verschiedene Notation für eine Maschinensprache ist, haben irgendwelche zwei Maschinen mit verschiedenen Befehlssätzen auch verschiedene Zusammenbau-Sprachen.

1954 wurde FORTRAN erfunden; es war die erste hohe Programmiersprache, um eine funktionelle Durchführung im Vergleich mit gerade einem Design auf Papier zu haben. (Eine höhere Programmiersprache, ist in sehr allgemeinen Begriffen, jede Programmiersprache, die dem Programmierer erlaubt, Programme in Begriffen zu schreiben, die abstrakter sind als Zusammenbau-Sprachinstruktionen, d. h. an einem Niveau der Abstraktion "höher" als diese einer Zusammenbau-Sprache.) Es hat Programmierern erlaubt, Berechnungen durch das Eingehen in eine Formel direkt (z.B) anzugeben. . Der Programm-Text oder Quelle, wird in Maschineninstruktionen mit einem speziellen Programm genannt einen Bearbeiter umgewandelt, der das FORTRAN Programm in die Maschinensprache übersetzt. Tatsächlich tritt der Name FORTRAN "für Formel-Übersetzung" ein. Viele andere Sprachen, wurden einschließlich einiger für die kommerzielle Programmierung wie COBOL entwickelt. In Programme wurde größtenteils noch mit geschlagenen Karten oder Lochstreifen eingegangen. (Sieh Computer im Schlag-Karte-Zeitalter programmieren). Bis zum Ende der 1960er Jahre sind Datenspeichergeräte und Computerterminals billig genug geworden, den Programme durch das Schreiben direkt in die Computer geschaffen werden konnten. Textaufbereiter wurden entwickelt, der Änderungen und Korrekturen erlaubt hat, viel leichter gemacht zu werden, als mit geschlagenen Karten. (Gewöhnlich hat ein Fehler im Lochen einer Karte bedeutet, dass die Karte verworfen werden musste und ein neuer geschlagen hat, um es zu ersetzen.)

Als Zeit fortgeschritten ist, haben Computer riesige Sprünge im Gebiet der in einer Prozession gehenden Macht gemacht. Das hat neuere Programmiersprachen verursacht, die von der zu Grunde liegenden Hardware mehr abstrahiert werden. Obwohl diese höheren Programmiersprachen gewöhnlich größer oberirdisch übernehmen, hat die Zunahme in der Geschwindigkeit von modernen Computern den Gebrauch dieser Sprachen viel praktischer gemacht als in der Vergangenheit. Diese zunehmend abstrahierten Sprachen sind normalerweise leichter, zu erfahren und dem Programmierer zu erlauben, Anwendungen viel effizienter und mit weniger Quellcode zu entwickeln. Jedoch sind höhere Programmiersprachen noch für einige Programme, wie diejenigen unpraktisch, wo auf niedriger Stufe Hardware-Kontrolle notwendig ist, oder wo maximale in einer Prozession gehende Geschwindigkeit lebenswichtig ist.

Im Laufe der zweiten Hälfte des zwanzigsten Jahrhunderts war Programmierung eine attraktive Karriere in am meisten entwickelten Ländern. Einige Formen der Programmierung sind dem Auslandsausgliedern immer mehr unterworfen gewesen (Software und Dienstleistungen aus anderen Ländern, gewöhnlich an einem niedrigeren Lohn importierend), Programmierung von Karriere-Entscheidungen in entwickelten Ländern mehr kompliziert treffend, während sie Wirtschaftsgelegenheiten in weniger entwickelten Gebieten vergrößern. Es ist unklar, wie weit diese Tendenz weitergehen wird, und wie tief es Programmierer-Löhne und Gelegenheiten zusammenpressen wird.

Moderne Programmierung

Qualitätsvoraussetzungen

Was auch immer die Annäherung an die Softwareentwicklung sein kann, muss das Endprogramm einige grundsätzliche Eigenschaften befriedigen. Die folgenden Eigenschaften sind unter dem relevantesten:

  • Zuverlässigkeit: Wie oft die Ergebnisse eines Programms richtig sind. Das hängt von Begriffsgenauigkeit von Algorithmen und Minimierung ab, Fehler, wie Fehler im Quellenmanagement (z.B, Pufferüberschwemmungen und Rasse-Bedingungen) und Logikfehler (wie Abteilung durch die Null oder off-one Fehler) zu programmieren.
  • Robustheit: Wie gut ein Programm Probleme nicht wegen des Programmierer-Fehlers voraussieht. Das schließt Situationen wie falsche, unpassende oder korrupte Daten, Nichtverfügbarkeit von erforderlichen Mitteln wie Gedächtnis, Betriebssystemdienstleistungen und Netzverbindungen und Benutzerfehler ein.
  • Brauchbarkeit: die Ergonomie eines Programms: Die Bequemlichkeit, mit der eine Person das Programm zu seinem beabsichtigten Zweck, oder in einigen Fällen sogar unvorausgesehenen Zwecken verwenden kann. Solche Probleme können machen oder seinen Erfolg sogar unabhängig von anderen Problemen brechen. Das schließt eine breite Reihe von textlichen, grafischen und manchmal Hardware-Elementen ein, die die Klarheit, Intuitivkeit, Zusammenhaltendkeit und Vollständigkeit einer Benutzerschnittstelle eines Programms verbessern.
  • Beweglichkeit: Die Reihe der Computerhardware und Betriebssystemplattformen, auf denen der Quellcode eines Programms kompiliert/interpretiert und geführt werden kann. Das hängt von Unterschieden in den Programmiermöglichkeiten ab, die durch die verschiedenen Plattformen, einschließlich der Hardware und der Betriebssystemmittel, des erwarteten Verhaltens der Hardware und des Betriebssystems und der Verfügbarkeit der Plattform spezifische Bearbeiter (und manchmal Bibliotheken) für die Sprache des Quellcodes zur Verfügung gestellt sind.
  • Haltbarkeit: Die Bequemlichkeit, mit der ein Programm von seinen gegenwärtigen oder zukünftigen Entwicklern modifiziert werden kann, um Verbesserungen oder Anpassungen zu bilden, Programmfehler und Sicherheitslöcher zu bestechen, oder es an neue Umgebungen anzupassen. Gute Methoden während der anfänglichen Entwicklung machen den Unterschied in dieser Beziehung. Diese Qualität kann für den Endbenutzer nicht direkt offenbar sein, aber sie kann das Schicksal eines Programms über die lange Sicht bedeutsam betreffen.
  • Leistungsfähigkeit/Leistung: Der Betrag von Systemmitteln ein Programm verzehrt sich (Verarbeiter-Zeit, Speicherraum, langsame Geräte wie Platten, Netzbandbreite und einigermaßen sogar Benutzerwechselwirkung): je weniger, desto besser. Das schließt auch richtige Verfügung von einigen Mitteln, wie das Aufräumen vorläufiger Dateien ein, und fehlen Sie Speicherleckstellen.

Lesbarkeit des Quellcodes

In der Computerprogrammierung bezieht sich Lesbarkeit auf die Bequemlichkeit, mit der ein menschlicher Leser den Zweck, den Kontrollfluss und die Operation des Quellcodes umfassen kann. Es betrifft die Aspekte der Qualität oben, einschließlich der Beweglichkeit, Brauchbarkeit und am wichtigsten Haltbarkeit.

Lesbarkeit ist wichtig, weil Programmierer die Mehrheit ihrer Zeit ausgeben, lesend, versuchend, zu verstehen und vorhandenen Quellcode modifizierend, anstatt neuen Quellcode zu schreiben. Unlesbarer Code führt häufig zu Programmfehlern, Wirkungslosigkeit und kopiertem Code. Eine Studie hat gefunden, dass einige einfache Lesbarkeitstransformationen gemachter Code kürzer und drastisch die Zeit reduziert haben, um es zu verstehen.

Im Anschluss an einen konsequenten Programmierstil hilft häufig Lesbarkeit. Jedoch programmiert Lesbarkeit mehr als gerade Stil. Viele Faktoren, wenig oder nichts habend, um mit der Fähigkeit des Computers zu tun, den Code effizient zu kompilieren und durchzuführen, tragen zu Lesbarkeit bei. Einige dieser Faktoren schließen ein:

  • Verschiedene Einrückungsstile (whitespace)
  • Anmerkungen
  • Zergliederung
  • Vereinbarung für Gegenstände (wie Variablen, Klassen, Verfahren, usw.) nennend

Algorithmische Kompliziertheit

Das akademische Feld und die Technikpraxis der Computerprogrammierung werden mit dem Entdecken und Einführen der effizientesten Algorithmen für eine gegebene Klasse des Problems sowohl größtenteils betroffen. Für diesen Zweck werden Algorithmen in Ordnungen mit der so genannten Großen O Notation eingeteilt, die Quellengebrauch, wie Ausführungszeit oder Speicherverbrauch in Bezug auf die Größe eines Eingangs ausdrückt. Erfahrene Programmierer sind mit einer Vielfalt von festen Algorithmen und ihren jeweiligen Kompliziertheiten vertraut und verwenden diese Kenntnisse, um Algorithmen zu wählen, denen am besten den Verhältnissen angepasst wird.

Methodiken

Der erste Schritt in den meisten formellen Softwareentwicklungsprozessen ist Bedarfsanalyse, die durch die Prüfung gefolgt ist, um das Wertmodellieren, die Durchführung und die Misserfolg-Beseitigung (das Beseitigen) zu bestimmen.

Dort bestehen Sie viele sich unterscheidende Annäherungen für jede jener Aufgaben. Eine für die Bedarfsanalyse populäre Annäherung ist Gebrauch-Fall-Analyse. Heutzutage verwenden viele Programmierer Formen der Flinken Softwareentwicklung, wo die verschiedenen Stufen der formellen Softwareentwicklung zusammen in kurze Zyklen mehr integriert werden, die ein paar Wochen aber nicht Jahre nehmen. Es gibt viele Annäherungen an den Softwareentwicklungsprozess.

Populäre modellierende Techniken schließen Objektorientierte Analyse und Design (OOAD) und Model-Driven Architecture (MDA) ein. Unified Modeling Language (UML) ist eine Notation, die sowohl für den OOAD als auch für MDA verwendet ist.

Eine ähnliche für das Datenbankdesign verwendete Technik ist das Entitätsbeziehungsmodellieren (ER, der Modelliert).

Durchführungstechniken schließen befehlende Sprachen (objektorientiert oder verfahrensrechtlich), funktionelle Sprachen und Logiksprachen ein.

Das Messen des Sprachgebrauchs

Es ist sehr schwierig zu bestimmen, was von modernen Programmiersprachen am populärsten ist. Einige Sprachen sind für besondere Arten von Anwendungen sehr populär (z.B, COBOL ist noch im korporativen Datenzentrum, häufig auf großen Großrechnern, FORTRAN in Technikanwendungen, scripting Sprachen in der Webentwicklung und C in eingebetteten Anwendungen stark), während einige Sprachen regelmäßig verwendet werden, um viele verschiedene Arten von Anwendungen zu schreiben. Auch viele Anwendungen verwenden eine Mischung von mehreren Sprachen in ihrem Aufbau und Gebrauch. Neue Sprachen werden allgemein um die Syntax einer vorherigen Sprache mit der neuen hinzugefügten Funktionalität entworfen (zum Beispiel C ++ trägt die Objektorientiertkeit zu C bei, und Java fügt Speichermanagement und bytecode zu C ++ hinzu).

Methoden, Programmiersprache-Beliebtheit zu messen, schließen ein: Die Zahl von Job-Anzeigen aufzählend, die die Sprache, die Zahl von Büchern erwähnen, die Sprache unterrichtend, die verkauft werden (überschätzt das die Wichtigkeit von neueren Sprachen), und Schätzungen der Zahl von vorhandenen Linien des auf der Sprache geschriebenen Codes (unterschätzt das die Zahl von Benutzern von Geschäftssprachen wie COBOL).

Das Beseitigen

Das Beseitigen ist eine sehr wichtige Aufgabe im Softwareentwicklungsprozess, weil ein falsches Programm bedeutende Folgen für seine Benutzer haben kann. Einige Sprachen sind für einige Arten von Schulden anfälliger, weil ihre Spezifizierung nicht verlangt, dass Bearbeiter so viel Überprüfung durchführen wie andere Sprachen. Der Gebrauch eines statischen Codeanalyse-Werkzeugs kann helfen, einige mögliche Probleme zu entdecken.

Das Beseitigen wird häufig mit IDEN wie Eklipse, Kdevelop, NetBeans, und Sehstudio getan. Eigenständige Testhilfeprogramme wie gdb werden auch verwendet, und diese stellen häufig weniger von einer Sehumgebung gewöhnlich mit einer Befehl-Linie zur Verfügung.

Programmiersprachen

Verschiedene Programmiersprachen unterstützen verschiedene Stile, (genannt Programmierung von Paradigmen) zu programmieren. Die Wahl der verwendeten Sprache ist vielen Rücksichten, wie Firmenpolitik, Eignung zur Aufgabe, Verfügbarkeit von Drittpaketen oder individuellen Vorliebe unterworfen. Ideal wird die Programmiersprache, die am besten für die Aufgabe in der Nähe angepasst ist, ausgewählt. Umtausche von diesem Ideal sind mit Entdeckung von genug Programmierern verbunden, die die Sprache wissen, eine Mannschaft, die Verfügbarkeit von Bearbeitern für diese Sprache und die Leistungsfähigkeit zu bauen, mit der auf einer gegebenen Sprache geschriebene Programme durchführen. Sprachen bilden ein ungefähres Spektrum vom "auf niedriger Stufe" bis "auf höchster Ebene"; "auf niedriger Stufe" Sprachen werden normalerweise mehr maschinenorientiert und schneller durchzuführen, wohingegen Sprachen "auf höchster Ebene" abstrakter und leichter sind, zu verwenden, aber weniger schnell durchzuführen. Es ist gewöhnlich leichter, auf Sprachen "auf höchster Ebene" zu codieren, als in "auf niedriger Stufe".

Allen Downey, in seinem Buch, Wie man Wie Ein Computerwissenschaftler Denkt, schreibt:

:The-Details sehen verschieden auf verschiedenen Sprachen aus, aber einige Grundbefehle erscheinen auf so etwa jeder Sprache:

:*input: Bekommen Sie Daten von der Tastatur, einer Datei oder einem anderen Gerät.

:*output: Anzeigedaten auf dem Schirm oder senden Daten an eine Datei oder anderes Gerät.

:*arithmetic: Führen Sie grundlegende arithmetische Operationen wie Hinzufügung und Multiplikation durch.

:*conditional-Ausführung: Überprüfen Sie für bestimmte Bedingungen und führen Sie die passende Folge von Behauptungen durch.

:*repetition: Führen Sie etwas Handlung wiederholt gewöhnlich mit etwas Schwankung durch.

Viele Computersprachen stellen einen Mechanismus zur Verfügung, Funktionen zur Verfügung gestellt von Bibliotheken solcher als in einem.so zu nennen. Vorausgesetzt dass die Funktionen in einer Bibliothek der passenden Durchlaufzeit-Vereinbarung folgen (z.B, Methode, Argumente zu passieren), dann können diese Funktionen auf jeder anderen Sprache geschrieben werden.

Programmierer

Computerprogrammierer sind diejenigen, die Computersoftware schreiben. Ihre Jobs sind gewöhnlich verbunden:

Siehe auch

Weiterführende Literatur

  • A.K. Hartmann, praktisches Handbuch zu Computersimulationen, Singapur: Welt wissenschaftlich (2009)
  • A. Jagd, D. Thomas, und W. Cunningham, der pragmatische Programmierer. Von der Handwerksgeselle dem Master, Amsterdam: Addison-Wesley Longman (1999)
  • Brian W. Kernighan, die Praxis der Programmierung, Pearson (1999)
  • Weinberg, Gerald M., die Psychologie der Computerprogrammierung, New York: Van Nostrand Reinhold (1971)

Links


Source is a modification of the Wikipedia article Computer programming, licensed under CC-BY-SA. Full list of contributors here.
Personalcomputerhardware / Tröstung der Philosophie
Impressum & Datenschutz