Computerprogrammierung

Computerprogrammierung ist der Prozess der Ausführung eines bestimmten Berechnung (oder allgemeiner, um eine bestimmte zu erreichen Computer Ergebnis), normalerweise durch Entwerfen und Bauen eines ausführbar Computer Programm. Die Programmierung beinhaltet Aufgaben wie Analyse, Generierung Algorithmen, Profilerstellung Genauigkeit und Ressourcenverbrauch der Algorithmen sowie die Implementierung von Algorithmen (normalerweise in einem Auserwählten Programmiersprache, allgemein bezeichnet als Codierung).[1][2] Das Quellcode eines Programms ist in einer oder mehreren Sprachen geschrieben, die verständlich sind Programmierer, statt Maschinensprache, was direkt von der ausgeführt wird Zentrale Verarbeitungseinheit. Der Zweck der Programmierung besteht darin, eine Folge von Anweisungen zu finden, die die Leistung einer Aufgabe automatisieren (die so komplex sein kann wie als Betriebssystem) auf einen Computeroft zur Lösung eines bestimmten Problems. Kompetentes Programmieren erfordert somit in der Regel Fachwissen in mehreren verschiedenen Themen, einschließlich Kenntnis der Kenntnisse der Anwendungsbereich, spezialisierte Algorithmen und formal Logik.

Aufgaben, die begleitet und mit der Programmierung bezogen werden testen, Debuggen, Quellcode Wartung, Implementierung von Systeme bauen, und Management von abgeleiteten Artefakte, so wie die Maschinensprache von Computerprogramme. Diese können als Teil des Programmierungsprozesses angesehen werden, aber oft der Begriff Software-Entwicklung wird für diesen größeren Prozess mit dem Begriff verwendet Programmierung, Implementierung, oder Codierung reserviert für das tatsächliche Schreiben von Code. Softwareentwicklung Kombinieren Ingenieurwesen Techniken mit Software-Entwicklung Praktiken Methoden Ausübungen. Reverse engineering ist ein verwandter Prozess, der von Designern, Analysten und Programmierern verwendet wird, um zu verstehen und neu zu erstellen/neu zu implementieren.[3]

Geschichte

Ada Lovelace, deren Notizen zum Ende von hinzugefügt wurden Luigi MenabreaDas Papier enthielt das erste Algorithmus entwickelt für die Verarbeitung durch eine Analytischer Motor. Sie wird oft als erster Computerprogrammierer der Geschichte anerkannt.

Programmierbare Geräte haben seit Jahrhunderten existiert. Bereits im 9. Jahrhundert ein programmierbares Musiksequenzer wurde vom Perser erfunden Banu Musa Brüder, die eine automatisierte Mechanik beschrieben haben Flöte Spieler in der Buch mit genialen Geräten.[4][5] 1206 der arabische Ingenieur Al-Jazari erfand ein programmierbar Trommelmaschine wo ein musikalischer Mechanik Automat könnte dazu gebracht werden, verschiedene Rhythmen und Drum -Muster über Stifte und Cams.[6][7] Im Jahr 1801 die Jacquard Loom könnte völlig unterschiedliche Gewebe produzieren, indem sie das "Programm" ändern - eine Reihe von Pappe Karten mit Löchern, die in sie geschlagen wurden.

Code knacken Es gibt auch seit Jahrhunderten Algorithmen. Im 9. Jahrhundert die Arabischer Mathematiker Al-kindi beschrieben a kryptografisch Algorithmus zur Entschlüsselung verschlüsselter Code in Ein Manuskript zur Entschlüsselung kryptografischer Botschaften. Er gab die erste Beschreibung von Kryptanalyse durch Frequenzanalyse, der früheste Code-brüchige Algorithmus.[8]

Der Erste Computer Programm ist im Allgemeinen auf 1843 datiert, wenn Mathematiker Ada Lovelace veröffentlicht an Algorithmus um eine Sequenz von zu berechnen Bernoulli -Zahlen, beabsichtigt, von durchzuführen Charles Babbage's Analytischer Motor.[9]

Daten und Anweisungen wurden einst extern gespeichert geschlagene Karten, die in Ordnung gehalten und in Programmdecks arrangiert wurden.

In den 1880er Jahren Herman Hollerith erfand das Konzept der Aufbewahrung Daten in maschinenlesbarer Form.[10] Später a Schalttafel (Plug -Board) Zu seinem Tabulator vom Typ I 1906 wurde er zulässt, dass es für verschiedene Jobs programmiert werden konnte, und Ende der 1940er Jahre, Einheitsaufzeichnungsausrüstung so wie die IBM 602 und IBM 604wurden durch Kontrollpaneele auf ähnliche Weise programmiert wie die ersten elektronische Computer. Jedoch mit dem Konzept der Computerprotokollcomputer Einführung im Jahr 1949 wurden sowohl Programme als auch Daten auf die gleiche Weise gespeichert und manipuliert Computerspeicher.[11]

Maschinensprache

Maschinensprache war die Sprache der frühen Programme, geschrieben in der Befehlssatz der jeweiligen Maschine, oft in binär Notation. Assemblersprachen wurden bald entwickelt, dass der Programmierer die Anweisung in einem Textformat (z. B. X, Gesamt hinzuzufügen) mit Abkürzungen für jeden Operationscode und aussagekräftige Namen für die Angabe von Adressen angeben. Da jedoch eine Montagesprache für eine Maschinensprache kaum mehr als eine andere Notation ist, zwei Maschinen mit Verschiedene Anweisungssätze haben auch unterschiedliche Versammlungssprachen.

Verdrahtet Schalttafel für ein IBM 402 Buchhaltungsmaschine. Drähte verbinden Impulsströme vom Kartenleser mit Zählern und anderen internen Logik und letztendlich mit dem Drucker.

Compilersprachen

Hochrangige Sprachen machte den Prozess der Entwicklung eines Programms einfacher und verständlicher und weniger an die zugrunde liegenden Hardware-. Das erste mit Compiler bezogene Werkzeug, das A-0-Systemwurde 1952 entwickelt[12] durch Grace Hopper, der auch den Begriff "Compiler" geprägt hat.[13][14] ForranDie erste weit verbreitete hochrangige Sprache, die eine funktionale Implementierung hat, erschien 1957.[15] und viele andere Sprachen wurden bald entwickelt - insbesondere - Cobol auf kommerzielle Datenverarbeitung abzielen und Lispeln Für Computerforschung.

Diese kompilierten Sprachen ermöglichen es dem Programmierer, Programme in syntaktisch reicheren und fähigen zu schreiben Zusammenfassung Der Code erleichtert es einfach, für unterschiedliche Maschinenanweisungssätze über Kompilierungserklärungen und Heuristiken zu zielen. Compiler nutzten die Leistung von Computern, um die Programmierung zu erleichtern[15] Durch die Ermöglichung der Programmierer können Berechnungen angeben, indem eine Formel verwendet wird Infixnotation.

Quellcodeeintrag

Die Programme wurden größtenteils mit Stanzkarten eingegeben oder Papier Klebeband. In den späten 1960er Jahren, Datenspeichergeräte und Computerterminals wurde kostengünstig genug, dass Programme erstellt werden konnten, indem direkt in die Computer eingegeben wird. Textredakteure Es wurden auch entwickelt, die es ermöglichten, Änderungen und Korrekturen viel leichter zu machen als mit geschlagene Karten.

Moderne Programmierung

Qualitätsanforderungen

Was auch immer der Ansatz zur Entwicklung sein mag, das endgültige Programm muss einige grundlegende Eigenschaften erfüllen. Die folgenden Eigenschaften gehören zu den wichtigsten:[16] [17]

  • Verlässlichkeit: Wie oft sind die Ergebnisse eines Programms korrekt. Dies hängt von der konzeptionellen Korrektheit von Algorithmen und der Minimierung von Programmierfehlern wie Fehlern im Ressourcenmanagement ab (z. B., Pufferüberläufe und Rennbedingungen) und logische Fehler (z. B. Aufteilung durch Null oder Auslösende Fehler).
  • Robustheit: Wie gut erwartet ein Programm Probleme aufgrund von Fehlern (keine Fehler). Dies umfasst Situationen wie falsche, unangemessene oder beschädigte Daten, die Nichtverfügbarkeit der erforderlichen Ressourcen wie Speicher, Betriebssystemdienste und Netzwerkverbindungen, Benutzerfehler und unerwartete Leistungsausfälle.
  • Benutzerfreundlichkeit: das Ergonomie eines Programms: Die Leichtigkeit, mit der eine Person das Programm für ihren beabsichtigten Zweck oder in einigen Fällen sogar unerwartete Zwecke nutzen kann. Solche Probleme können unabhängig von anderen Themen auch seinen Erfolg machen oder brechen. Dies beinhaltet eine breite Palette von textuellen, grafischen und manchmal Hardware -Elementen, die die Klarheit, Intuitivität, Kohärsivität und Vollständigkeit der Benutzeroberfläche eines Programms verbessern.
  • Portabilität: der Bereich von Computerhardware und Betriebssystem Plattformen, auf denen der Quellcode eines Programms sein kann zusammengestellt/interpretiert und Renn. Dies hängt von Unterschieden in den Programmiereinrichtungen der verschiedenen Plattformen ab, einschließlich Hardware- und Betriebssystemressourcen, erwartetem Verhalten des Hardware- und Betriebssystems und der Verfügbarkeit plattformspezifischer Compiler (und manchmal auch Bibliotheken) für die Sprache des Quellcode.
  • Wartbarkeit: Die Leichtigkeit, mit der ein Programm von seinen gegenwärtigen oder zukünftigen Entwicklern geändert werden kann, um Verbesserungen vorzunehmen oder sich anzupassen, fixieren Käfer und Sicherheitslücken, oder passen Sie es an neue Umgebungen an. Gute Praktiken[18] Während der ersten Entwicklung machen diesbezüglich den Unterschied. Diese Qualität ist für den Endbenutzer möglicherweise nicht direkt zu erkennen, kann jedoch das Schicksal eines Programms langfristig erheblich beeinflussen.
  • Effizienz/Leistung: Maß für Systemressourcen Ein Programm verbraucht (Prozessorzeit, Speicherplatz, langsame Geräte wie Datenträger, Netzwerkbandbreite und in gewissem Maße sogar Benutzerinteraktion): Je weniger, desto besser. Dies beinhaltet auch eine sorgfältige Verwaltung von Ressourcen, beispielsweise die Reinigung temporäre Dateien und eliminieren Speicherlecks. Dies wird oft unter dem Schatten einer ausgewählten Programmiersprache besprochen. Obwohl die Sprache die Leistung sicherlich beeinflusst, sogar langsamere Sprachen, wie z. Python, kann Programme sofort aus menschlicher Sicht ausführen. Geschwindigkeit, Ressourcenverbrauch und Leistung sind wichtig für Programme, die Engpass Das System, aber eine effiziente Verwendung der Programmierzeit ist ebenfalls wichtig und hängt mit den Kosten zusammen: mehr Hardware kann billiger sein.

Lesbarkeit des Quellcode

In Computerprogrammierung, Lesbarkeit bezieht sich auf die Leichtigkeit, mit der ein menschlicher Leser den Zweck verstehen kann, Steuerflussund Betrieb von Quellcode. Es wirkt sich auf die oben genannten Qualität der Qualität aus, einschließlich Portabilität, Benutzerfreundlichkeit und vor allem Wartbarkeit.

Die Lesbarkeit ist wichtig, da Programmierer den größten Teil ihrer Zeit damit verbringen, vorhandenen Quellcode zu verstehen, wiederzuverwenden und zu ändern, anstatt neuen Quellcode zu schreiben. Unleserlicher Code führt häufig zu Fehlern, Ineffizienzen und Duplizierter Code. Eine Studie ergab, dass ein paar einfache Lesbarkeitstransformationen den Code kürzer und drastisch die Zeit reduzierten, um sie zu verstehen.[19]

Nach einem konsequenten Programmierstil Hilft oft die Lesbarkeit. Die Lesbarkeit ist jedoch mehr als nur den Programmierstil. Viele Faktoren, die wenig oder gar nichts mit der Fähigkeit des Computers zu tun haben, den Code effizient zu kompilieren und auszuführen, tragen zur Lesbarkeit bei.[20] Einige dieser Faktoren umfassen:

Das Präsentation Aspekte davon (z. Quellcode -EditorAber die Inhaltsaspekte spiegeln das Talent und die Fähigkeiten des Programmierers wider.

Verschiedene visuelle Programmiersprachen wurden auch mit der Absicht entwickelt, die Lesbarkeitsprobleme durch die Annahme nicht traditioneller Ansätze zur Codestruktur und der Anzeige zu beheben. Integrierte Entwicklungsumgebungen (I.d.es) zielen darauf ab, alle dieser Hilfe zu integrieren. Techniken wie Code Refactoring kann die Lesbarkeit verbessern.

Algorithmische Komplexität

Das akademische Bereich und die technische Praxis der Computerprogrammierung sind beide weitgehend mit der Entdeckung und Implementierung der effizientesten Algorithmen für eine bestimmte Klasse von Problemen befasst. Zu diesem Zweck werden Algorithmen in eingeteilt Aufträge Verwenden von sogenannten Big O Notation, die Ressourcenverbrauch wie Ausführungszeit oder Speicherverbrauch in Bezug auf die Größe einer Eingabe ausdrückt. Expertenprogrammierer sind mit einer Vielzahl gut etablierter Algorithmen und ihrer jeweiligen Komplexität vertraut und nutzen dieses Wissen, um Algorithmen auszuwählen, die am besten zu den Umständen geeignet sind.

Schachalgorithmen als Beispiel

"Programmieren eines Computers zum Schachspiel" war ein Papier von 1950, das einen "Minimax" bewertete Algorithmus Das ist Teil der Geschichte der algorithmischen Komplexität; Ein Kurs auf IBMs Tiefblau (Schachcomputer) ist Teil des Curriculums für Informatik bei Universität in Stanford.[21]

Methoden

Der erste Schritt in den meisten formalen Softwareentwicklungsprozessen ist Anforderungsanalyse, gefolgt von Tests zur Bestimmung der Wertmodellierung, Implementierung und Ausfälle des Versagens (Debugging). Für jede dieser Aufgaben gibt es viele verschiedene Ansätze. Ein Ansatz, der für die Anforderungen an die Analyse beliebt ist, ist Anwendungsfall Analyse. Viele Programmierer verwenden Formen von Agile Software Entwicklung Wo die verschiedenen Phasen der formalen Softwareentwicklung stärker in kurze Zyklen integriert sind, die einige Wochen anstelle von Jahren dauern. Es gibt viele Ansätze für den Softwareentwicklungsprozess.

Beliebte Modellierungstechniken umfassen objektorientierte Analyse und Design (Design (Ooad) und modellgetriebene Architektur (MDA). Die einheitliche Modellierungssprache (Uml) ist eine Notation, die sowohl für Ooad als auch für MDA verwendet wird.

Eine ähnliche Technik, die für die Datenbankdesign verwendet wirdER -Modellierung).

Implementierungstechniken umfassen imperative Sprachen (objektorientierter oder prozedural), Funktionssprachen, und Logiksprachen.

Messung der Sprachgebrauch

Es ist sehr schwierig zu bestimmen, was die beliebtesten modernen Programmiersprachen sind. Methoden zur Messung der Popularität der Programmiersprache umfassen: Zählen der Anzahl der Stellenanzeigen, die die Sprache erwähnen,[22] Die Anzahl der verkauften Bücher und Kurse, die die Sprache lehren (dies überschätzt die Bedeutung neuerer Sprachen) und Schätzungen der Anzahl der in der Sprache geschriebenen Codezeilen (dies unterschätzt die Anzahl der Benutzer von Geschäftssprachen wie COBOL).

Einige Sprachen sind für bestimmte Arten von Anwendungen sehr beliebt, während einige Sprachen regelmäßig verwendet werden, um viele verschiedene Arten von Anwendungen zu schreiben. Zum Beispiel, Cobol ist in Unternehmens Rechenzentren immer noch stark[23] oft auf groß Mainframe -Computer, Forran In technischen Anwendungen, Skriptsprachen in Netz Entwicklung und C in eingebettete Software. Viele Anwendungen verwenden eine Mischung aus mehreren Sprachen in ihrer Konstruktion und Verwendung. Neue Sprachen sind im Allgemeinen um die Syntax einer früheren Sprache mit neuer Funktionalität (zum Beispiel hinzugefügt C ++ fügt Objektorientierung zu C hinzu, und Java fügt Speicherverwaltung hinzu und Bytecode an c ++, aber infolgedessen verliert die Effizienz und die Fähigkeit zur Manipulation auf niedriger Ebene).

Debuggen

Der erste bekannte tatsächliche Fehler, der ein Problem in einem Computer verursacht, war eine Motte, die in einem Harvard -Mainframe eingeschlossen war und in einem Logbucheintrag vom 9. September 1947 aufgezeichnet wurde.[24] "Bug" war bereits ein häufiger Begriff für einen Softwarefehler, als dieses Insekt gefunden wurde.

Das Debugging ist eine sehr wichtige Aufgabe im Softwareentwicklungsprozess, da sich Fehler in einem Programm für seine Benutzer erheblich ausführen können. Einige Sprachen sind anfälliger für einige Arten von Fehlern, da für ihre Spezifikation keine Compiler so viel Überprüfungen durchführen müssen wie andere Sprachen. Verwendung von a Statische Codeanalyse Tool kann dazu beitragen, einige mögliche Probleme zu erkennen. Normalerweise besteht der erste Schritt beim Debuggen darin, zu versuchen, das Problem zu reproduzieren. Dies kann eine nicht triviale Aufgabe sein, beispielsweise wie bei parallelen Prozessen oder einigen ungewöhnlichen Software-Fehler. Außerdem kann die spezifische Benutzerumgebung und der Nutzungsverlauf schwierig sein, das Problem zu reproduzieren.

Nachdem der Fehler reproduziert wurde, muss die Eingabe des Programms möglicherweise vereinfacht werden, um das Debuggen zu erleichtern. Zum Beispiel, wenn ein Fehler in einem Compiler ihn zum Absturz bringen kann, wenn Parsing Eine große Quelldatei, eine Vereinfachung des Testfalls, der nur wenige Zeilen aus der ursprünglichen Quelldatei führt, kann ausreichen, um denselben Absturz zu reproduzieren. Es ist Test- und Erreger-/Divide-and-Conquer-Versuch erforderlich: Der Programmierer versucht, einige Teile des ursprünglichen Testfalls zu entfernen und zu überprüfen, ob das Problem noch vorhanden ist. Beim Debuggen des Problems in einer GUI kann der Programmierer versuchen, eine Benutzerinteraktion aus der ursprünglichen Problembeschreibung zu überspringen und zu überprüfen, ob die verbleibenden Aktionen ausreichen, damit Fehler angezeigt werden. Skripten und Breakpinsint ist auch Teil dieses Prozesses.

Debugging erfolgt oft mit Ides. Eigenständige Debugger mögen GDB werden auch verwendet, und diese bieten häufig weniger visuelle Umgebung, normalerweise verwenden ein Befehlszeile. Einige Textredakteure wie EMACs Lassen Sie GDB durch sie aufgerufen und eine visuelle Umgebung bereitstellen.

Programmiersprachen

Verschiedene Programmiersprachen unterstützen verschiedene Programmstile (genannt Programmierparadigmen). Die verwendete Sprachauswahl unterliegt vielen Überlegungen wie Unternehmensrichtlinien, Eignung für die Aufgabe, der Verfügbarkeit von Paketen von Drittanbietern oder individuelle Präferenz. Im Idealfall wird die Programmiersprache für die anstehende Aufgabe am besten geeignet. Kompromisse mit diesem Ideal umfassen genügend Programmierer, die die Sprache kennen, um ein Team aufzubauen, die Verfügbarkeit von Compilern für diese Sprache und die Effizienz, mit der Programme in einer bestimmten Sprache geschrieben wurden. Sprachen bilden ein ungefähres Spektrum von "niedriger Ebene" bis "hochrangiger"; "Low-Level" -sprachen sind in der Regel maschinenorientierter und schneller auszuführen, während "hochrangige" Sprachen abstrakter und einfacher zu bedienen sind, aber weniger schnell ausführen. In der Regel ist es einfacher, in "hochrangigen" Sprachen zu codieren als in "niedrigen". Programmiersprachen sind für die Softwareentwicklung unerlässlich. Sie sind die Bausteine ​​für alle Software, von den einfachsten Anwendungen bis hin zu den anspruchsvollsten.

Allen Downeyin seinem Buch Wie man wie ein Informatiker denkt, schreibt:

Die Details sehen in verschiedenen Sprachen anders aus, aber in nahezu jeder Sprache werden einige grundlegende Anweisungen angezeigt:
  • Eingabe: Sammeln Sie Daten von der Tastatur, einer Datei oder einem anderen Gerät.
  • Ausgabe: Zeigen Sie Daten auf dem Bildschirm an oder senden Sie Daten an eine Datei oder ein anderes Gerät.
  • Arithmetik: Führen Sie grundlegende arithmetische Operationen wie Addition und Multiplikation durch.
  • Bedingte Ausführung: Überprüfen Sie bestimmte Bedingungen und führen Sie die entsprechende Abfolge von Aussagen aus.
  • Wiederholung: Führen Sie wiederholt einige Aktionen durch, normalerweise mit einigen Variationen.

Viele Computersprachen bieten einen Mechanismus, um Funktionen aufzurufen, die von zur Verfügung gestellt werden können gemeinsame Bibliotheken. Stellen Sie die Funktionen in einer Bibliothek vor, folgen Sie den entsprechenden Laufzeitkonventionen (z. B. Methode des Übergangs Argumente), dann können diese Funktionen in jeder anderen Sprache geschrieben werden.

Programmierer

Computerprogrammierer sind diejenigen, die Computersoftware schreiben. Ihre Jobs beinhalten normalerweise:

Obwohl Programmierung in den Medien als etwas mathematisches Thema präsentiert wurde, zeigen einige Untersuchungen, dass gute Programmierer in natürlichen menschlichen Sprachen starke Fähigkeiten haben und dass das Lernen des Codes dem Lernen ähnelt ist Fremdsprache.[25]

Siehe auch

Verweise

  1. ^ Bebbington, Shaun (2014). "Was ist codieren". Tumblr. Archiviert vom Original am 29. April 2020. Abgerufen 3. März, 2014.
  2. ^ Bebbington, Shaun (2014). "Was ist Programmierung". Tumblr. Archiviert vom Original am 29. April 2020. Abgerufen 3. März, 2014.
  3. ^ Eliam, Eldad (2005). Umkehrung: Geheimnisse der Reverse Engineering. Wiley. p. 3. ISBN 978-0-7645-7481-8.
  4. ^ Koetsier, Teun (2001), "Über die Vorgeschichte programmierbarer Maschinen: Musikalische Automaten, Webstühle, Taschenrechner", Mechanismus und MaschinentheorieElsevier, 36 (5): 589–603, doi:10.1016/s0094-114x (01) 00005-2.
  5. ^ Kapur, Ajay; Carnegie, Dale; Murphy, Jim; Long, Jason (2017). "Lautsprecher optional: Eine Geschichte der nicht löschsprechenden elektroakustischen Musik". Organisierter Klang. Cambridge University Press. 22 (2): 195–205. doi:10.1017/s1355771817000103. ISSN 1355-7718.
  6. ^ Fowler, Charles B. (Oktober 1967). "Das Museum für Musik: Eine Geschichte mechanischer Instrumente". Music Educators Journal. 54 (2): 45–49. doi:10.2307/3391092. JStor 3391092. S2CID 190524140.
  7. ^ Noel Sharkey (2007), Ein programmierbarer Roboter aus dem 13. Jahrhundert, Universität von Sheffield
  8. ^ Dooley, John F. (2013). Eine kurze Geschichte der Kryptologie und kryptografischen Algorithmen. Springer Science & Business Media. S. 12–3. ISBN 9783319016283.
  9. ^ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage und die Schaffung der 'Notizen von 1843' '". IEEE Annals of the History of Computing. 25 (4): 16. doi:10.1109/mahc.2003.1253887.
  10. ^ Da Cruz, Frank (10. März 2020). "Columbia University Computing History - Herman Hollerith". Universität von Columbia. Columbia.edu. Archiviert vom Original am 29. April 2020. Abgerufen 25. April, 2010.
  11. ^ "Speicher & Speicher | Zeitleiste der Computergeschichte | Computergeschichte Museum". www.computerHistory.org. Abgerufen 3. Juni, 2021.
  12. ^ Ridgway, Richard (1952). "Routinen zusammenstellen". Verfahren ACM '52 Proceedings des ACM National Meeting von 1952 (Toronto). ACM '52: 1–5. doi:10.1145/800259.808980. ISBN 9781450379250. S2CID 14878552.
  13. ^ Maurice V. Wilkes. 1968. Computer damals und heute. Journal of the Association for Computing Machinery, 15 (1): 1–7, Januar. p. 3 (Ein Kommentar in Brackets wurde vom Herausgeber hinzugefügt): "(Ich glaube nicht, dass der Begriff Compiler damals [1953] im Allgemeinen verwendet wurde, obwohl er tatsächlich von Grace Hopper eingeführt wurde.)"
  14. ^ [1] Die ersten Cobol -Compiler der Welt Archiviert 13. Oktober 2011 bei der Wayback -Maschine
  15. ^ a b Bergstein, Brian (20. März 2007). "Der Schöpfer von Forran John Backus stirbt". NBC News. Archiviert vom Original am 29. April 2020. Abgerufen 25. April, 2010.
  16. ^ "NIST, um Cloud Roadmap zu entwickeln". Informationswoche. 5. November 2010. Die Computerinitiative versucht, Hindernisse für die Einführung der Cloud -Einführung in Sicherheit, Interoperabilität, Portabilität und Zuverlässigkeit zu entfernen.
  17. ^ "Worauf basiert es". Computerwelt. 9. April 1984. p. 13. Basiert es auf ... Zuverlässigkeitsportabilität. Kompatibilität
  18. ^ "Programmieren 101: Tipps zum guten Programmierer - Weisheit Geek". Weisheit Geek. 19. Mai 2016. Abgerufen 23. Mai, 2016.
  19. ^ Elshoff, James L.; Marcotty, Michael (1982). "Verbesserung der Lesbarkeit des Computerprogramms zur Änderung der Änderung". Kommunikation der ACM. 25 (8): 512–521. doi:10.1145/358589.358596. S2CID 30026641.
  20. ^ Multiple (Wiki). "Lesbarkeit". Docforge. Archiviert vom Original am 29. April 2020. Abgerufen 30. Januar, 2010.
  21. ^ Piech, Chris. "Tiefes Blau". 1950 veröffentlichte Claude Shannon ... "Programmieren eines Computers zum Schachspiel", ... "Minimax" -Algorithmus
  22. ^ Enticknap, Nicholas (11. September 2007). "SSL/Computer Weekly IT -Gehaltsumfrage: Finanzboom fährt IT -Beschäftigungswachstum".
  23. ^ Mitchell, Robert (21. Mai 2012). "Der Cobol -Brain -Abfluss". Computerwelt. Abgerufen 9. Mai, 2015.
  24. ^ "Foto mit freundlicher Genehmigung von Naval Surface Warfare Center, Dahlgren, Virginia, aus National Geographic Sept. 1947". 15. Juli 2020.
  25. ^ Prat, Chantel S.; Madhyastha, Tara M.; Mottarella, Malayka J.; Kuo, Chu-Hsuan (2. März 2020). "Die Eignung der natürlichen Sprache auf individuelle Unterschiede beim Lernen von Programmiersprachen". Wissenschaftliche Berichte. 10 (1): 3817. Bibcode:2020natsr..10.3817p. doi:10.1038/s41598-020-60661-8. ISSN 2045-2322. PMC 7051953. PMID 32123206.

Quellen

Weitere Lektüre

  • A.k. Hartmann, Praktischer Leitfaden für Computersimulationen, Singapur: Welt wissenschaftlich (2009)
  • A. Hunt, D. Thomas und W. Cunningham, Der pragmatische Programmierer. Vom Gesellen zum Meister, 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)
  • Edsger W. Dijkstra, Eine Disziplin der Programmierung, Prentice-Hall (1976)
  • O.-J. Dahl, E.W.Dijkstra, WAGEN. Hoare, Strukturierte Programmierung, Academic Press (1972)
  • David Gries, Die Wissenschaft der Programmierung, Springer-Verlag (1981)

Externe Links

  • Medien im Zusammenhang mit Computerprogrammen bei Wikimedia Commons
  • Zitate im Zusammenhang mit der Programmierung bei Wikiquote
  • Softwareentwicklung bei Curlie