Zusammenfassung
Programmieren im Sinne der Informatik heißt, ein Lösungsverfahren für eine Aufgabe so zu formulieren, dass es von einem Computer ausgeführt werden kann. Der Programmierer muss dazu verschiedene Lösungsverfahren (Algorithmen) und Datenstrukturen kennen, mit denen sich die Lösung am günstigsten beschreiben lässt, und er muss eine Programmiersprache beherrschen. Notwendige Algorithmen arbeiten mit Daten, die in verschiedener Form vorliegen können (z. B. als Zahlen, Zeichen, Listen, Tabellen). Einfache Daten können zu komplexeren Datenstrukturen gruppiert werden. Die Wahl der für eine Problemlösung am besten geeigneten Datenstrukturen ist ebenso wichtig wie die Wahl der am besten geeigneten Algorithmen. Beide hängen also eng zusammen und müssen auch so betrachtet werden.
Darauf aufbauend gestatten Programmiersprachen die Beschreibung von Algorithmen und Datenstrukturen in einer so präzisen Weise, dass die Algorithmen von einer Maschine ausgeführt werden können. Sie sind damit das wichtigste Verbindungsglied zwischen Mensch und Maschine. Bei niederen Programmiersprachen bestehen die Programme aus den Befehlen einer bestimmten Maschine. Die hier behandelten höheren oder „problemorientierten“ Programmiersprachen bestehen aus maschinenunabhängigen Anweisungen und müssen vor der Ausführung von einem Übersetzer (Compiler) in die Maschinensprache übersetzt werden. Je größer die Programme werden, umso mehr spielen zusätzlich Methoden der Projektplanung, Projektorganisation, Qualitätssicherung und Dokumentation eine Rolle, die man unter dem Begriff Softwaretechnik zusammenfasst.
Literatur
ACM Sigplan Notices 27 (1992) 5 (Das ganze Heft ist der Sprache Haskell gewidmet, mit Sprachdefinition)
Backus JW et al (1963) Revised report on the algorithmic language ALGOL 60. Numer Mathematik 4:420–453
Bae S (2019) Big-O notation. In: Bae S (Hrsg) JavaScript data structures and algorithms: an introduction to understanding and implementing core data structure and algorithm fundamentals. Apress, Berkeley, S 1–11
Beck K (2000) Extreme programming explained. Addison-Wesley, Boston
Beck K (2004) JUnit pocket guide. O’Reilly, Sebastopol
Berg M de, Cheong O, van Kreveld M, Overmars M (2008) Computational geometry: algorithms and applications, 3. Aufl. Springer, New York
Blaschek G (2011) Die Algorithmenbeschreibungssprache Jana. http://ssw.jku.at/Teaching/Lectures/Algo/Jana.pdf
Blaschek G, Pomberger G, Ritzinger F (1990) Einführung in die Programmierung mit Modula-2. Springer, Berlin
Boehm B (1988) A spiral model of software development and enhancement. IEEE Comput 21(5):61–72
Böszörményi L, Weich C (1995) Programmieren mit Modula-3. Springer, Berlin
Bratko I (2000) Prolog programming for artificial intelligence, 3. Aufl. Addison-Wesley, Boston
Buchberger B (1985) Editorial. J Symbol Comput 1:1–6
Buchberger B (2006) Symbolisches Rechnen. In: Rechenberg P, Pomberger G (Hrsg) Informatik-Handbuch, 4. Aufl. Hanser, München
Burkhart H (2006) Parallele Programmierung. In: Rechenberg P, Pomberger G (Hrsg) Informatik-Handbuch, 4. Aufl. Hanser, München
Clocksin WF, Mellish CS (2003) Programming in prolog, 5. Aufl. Springer, Berlin
Dijkstra EW (1968) Go to statement considered harmful. Commun ACM 11:147–148
Foley JD et al (1993) Introduction to computer graphics. Addison-Wesley, Reading
Gibson RG, Bergin TJ (1996) History of programming languages II. Addison-Wesley, Boston
Gilb T, Graham D (1993) Software inspection. Addison-Wesley, Boston
Goldberg A, Robson D (1995) Smalltalk-80. Addison-Wesley, Reading
Gosling J et al (2005) The Java language specification, 3. Aufl. Addison-Wesley, Reading
Gries D (1989) The science of programming. Springer, Berlin
Harrison J (2009) Handbook of practical logic and automated reasoning. Cambridge University Press, Cambridge
Hejlsberg A, Torgersen M, Wiltamuth S, Golde P (2010) The C# programming language, 4. Aufl. Addison-Wesley Professional, Boston
Henrici P (1973) Elemente der numerischen Analysis, Bde. 2 (1972). Bibliogr. Inst., Mannheim
Herrtwich RG, Hommel G (1994) Nebenläufige Programme, 2. Aufl. Springer, Berlin
Hinze R (1992) Einführung in die funktionale Programmierung mit Miranda. Teubner, Stuttgart
Huber TC (2010) Silverlight 4: Das umfassende Handbuch. Galileo Computing, Bonn
Jensen K, Wirth N (1991) Pascal user manual and report (revised for the ISO Pascal standard), 4. Aufl. Springer, New York
Kappel G, Hitz M, Retschitzegger W, Kapsammer E (2005) UML@work. dpunkt, Heidelberg
Kernighan BW, Ritchie DM (1990) Programmieren in C, 2. Aufl. Hanser, München
Knuth DE (1997a) The art of computer programming, Bd 1: Fundamental algorithms, 3. Aufl. Addison-Wesley, Boston
Knuth DE (1997b) The art of computer programming, Bd 2: Seminumerical algorithms, 3. Aufl. Addison-Wesley, Boston
Koch S (2011) JavaScript: Einführung, Programmierung und Referenz, 6. Aufl. dpunktverlag, Heidelberg
Koepf W et al (1993) Mathematik mit DERIVE. Vieweg, Braunschweig
Lerdorf R, Bergmann S, Hicking G (2006) PHP kurz und gut, 3. Aufl. O’Reilly, Sebastopol
Manna Z (1993) Mathematical theory of computation. Dover Publications, Mineola
McCabe T (1976) A complexity measure. IEEE Trans Softw Eng SE-2:308–320
Melzer I (2010) Service-orientierte Architekturen mit Web Services, 4. Aufl. Spektrum Akademischer Verlag, Heidelberg
Metcalf M, Reid J, Cohen M (2004) Fortran 95/2003 explained. Oxford University Press, Oxford
Mössenböck H (1998) Objektorientierte Programmierung in Oberon-2, 3. Aufl. Springer, Berlin
Mössenböck H (2009) Kompaktkurs C# 4.0, 3. Aufl. dpunkt, Heidelberg
Mössenböck H (2011) Sprechen Sie Java? 4. Aufl. dpunkt, Heidelberg
Myers GJ, Sandler C, Badgett T, Thomas TM (2004) The art of software testing, 2. Aufl. Wiley, Hoboken
O’sullivan B, Goerzen J, Stewart D (2008) Real world Haskell. O’Reilly, Sebastopol
Parnas DL (1972) On the criteria to be used in decomposing systems into modules. Commun ACM 15:1053–1058
Perrot RH, Zarea-Aliabadi A (1986) Supercomputer languages. Comput Surv 18:5–22
Pomberger G, Bischofberger W (1992) Prototyping-oriented software development. Springer, Berlin
Pomberger G, Pree W (2004) Software Engineering. In: Architektur-Design und Prozessorientierung, 3. Aufl. Hanser, München
Proakis JG, Manolakis DK (2006) Digital signal processing, 4. Aufl. Prentice Hall, London
Reiser M, Wirth N (1997) Programmieren in Oberon. Korr. Nachdr. Addison-Wesley/Longman, Bonn
Schwaber K, Beedle M (2002) Agile software development with scrum. Prentice Hall, London
Schwichtenberg H (2011) Microsoft ASP.NET 4.0 mit Visual C# 2010. Microsoft Press, London
Sedgewick R, Wayne K (2011) Algorithms, 4. Aufl. Addison-Wesley Professional, Boston
Shirley P, Ashikhmin M, Marschner S (2009) Fundamentals of computer graphics, 3. Aufl. A K Peters, Natick
Shneiderman B, Plaisant C, Cohen M, Jacobs S (2009) Designing the user interface, 5. Aufl. Addison-Wesley, Boston
Spillner A, Linz T (2005) Basiswissen Softwaretest, 3. Aufl. dpunkt, Heidelberg
Steele GL (1990) Common LISP, 2. Aufl. Digital Pr, Bedford
Stetter HJ (1990) Numerik für Informatiker. Oldenbourg, München
Stoyan H, Görz G (1986) LISP. 1. korr. Nachdruck. Springer, Berlin
Stroustrup B (2000) The C++ programming language, 3. Aufl. Addison-Wesley Professional, Amsterdam
Überhuber C (1995) Computer-Numerik (2 Bde.). Springer, Berlin
Wexelblat RL (Hrsg) (1981) History of programming languages. Academic, New York
Wirth N (1971) Program development by stepwise refinement. Commun ACM 14:221–227
Wirth N (1974) On the composition of well-structured programs. Comput Surv 6:247–259
Wirth N (1991) Programmieren in Modula-2, 2. Aufl. Springer, Berlin
Wißmann D (2009) JavaServer Pages: Dynamische Websites mit JSP erstellen, 2. Aufl. W3L GmbH, Dortmund
Wolfram S (1999) The mathematica book, 4. Aufl. Cambridge University Press, Cambridge
Allgemeine Literatur
Ada 95 Reference Manual (1997) Springer, Berlin
Aho AV et al (1983) Data structures and algorithms. Addison-Wesley, Boston
Cormen TH et al (2009) Introduction to algorithms, 3. Aufl. MIT Press, Cambridge
DIN 66028: Programmiersprache COBOL
DIN EN 27185: Informationstechnik; Programmiersprachen; Pascal
DIN EN 29899: Programmiersprachen; C
DIN ISO/IEC 8652: Informationstechnik; Programmiersprachen; Ada
Goos G (2006) Programmiersprachen. In: Rechenberg P, Pomberger G (Hrsg) Informatik-Handbuch, 4. Aufl. Hanser, München
HTML-Spezifikation: http://dev.w3.org/html5/spec/spec.html
IMSL-Bibliothek: http://www.roguewave.com/products/imsl-numerical-libraries.aspx
IISO/IEC 1539-1:2004; Information technology; Programming languages; Fortran
ISO/IEC 10514-1 Informationstechnik; Programmiersprachen; Modula-2
ISO/IEC 13211-1 Informationstechnik; Programmiersprachen; Prolog
ISO/IEC 14882 Informationstechnik; Programmiersprachen; C++
Ludewig J, Lichter H (2007) Software Engineering, Grundlagen, Menschen, Prozesse, Techniken. dpunkt, Heidelberg
Maple. http://www.maplesoft.com
MATLAB. http://www.mathworks.com
NAG-Bibliothek. http://www.nag.com
Netlib Bibliotheken für numerische Mathematik. http://www.netlib.org
Ottmann T, Widmayer P (2012) Algorithmen und Datenstrukturen, 5. Aufl. Spektrum, Heidelberg
Pomberger G, Pree W (2004) Software Engineering. In: Architektur-Design und Prozessorientierung, 3. Aufl. Hanser, München
Pratt TW (2001) Programming languages, 4. Aufl. Prentice-Hall, London
Reduce. http://www.reduce-algebra.com
Sedgewick R, Wayne K (2011) Algorithms, 4. Aufl. Addison-Wesley Professional, Boston
Sommerville I (2010) Software engineering, 9. Aufl. Addison-Wesley Longman, Amsterdam
Wirth N (1996) Algorithmen und Datenstrukturen mit Modula-2, 5. Aufl. Teubner, Stuttgart
Weiterführende Literatur
Bühler P, Schlaich P, Sinner D (2018) Webtechnologien: JavaScript – PHP – Datenbank. Springer Vieweg, Wiesbaden
Freeman A (2020) Pro Angular 9: build powerful and dynamic web apps. Apress, New York
Kleuker S (2016) Grundkurs Datenbankentwicklung: Von der Anforderungsanalyse zur komplexen Datenbankanfrage. Springer Vieweg, Wiesbaden
Mardan A (2018) Practical Node.js: building real-world scalable web apps. Apress, New York
Northwood C (2018) The full stack developer: your essential guide to the everyday skills expected of a modern full stack web developer. Apress, New York
Panhale M (2016) Beginning hybrid mobile application development. Apress, New York
Randhawa T (2021) Mobile applications: design, development and optimization. Springer International Publishing, Cham
Simons M (2018) Spring Boot 2: Moderne Softwareentwicklung mit Spring 5. dpunktverlag, Heidelberg
Steyer R (2019) Webanwendungen erstellen mit Vue.js: MVVM-Muster für konventionelle und Single-Page-Webseiten. Springer Vieweg, Wiesbaden
Subramanian V (2019) Pro MERN stack: full stack web app development with Mongo, Express, React, and Node. Apress, New York
Wieruch R (2020) The road to react: your journey to master plain yet pragmatic React.js. Self-published, Berlin
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Section Editor information
Rights and permissions
Copyright information
© 2021 Springer-Verlag GmbH Deutschland, ein Teil von Springer Nature
About this entry
Cite this entry
Theilig, MM., Rechenberg, P., Mössenböck, H. (2021). Programmierung. In: Hennecke, M., Skrotzki, B. (eds) HÜTTE – Das Ingenieurwissen. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-57492-8_68-1
Download citation
DOI: https://doi.org/10.1007/978-3-662-57492-8_68-1
Received:
Accepted:
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-57492-8
Online ISBN: 978-3-662-57492-8
eBook Packages: Springer Referenz Technik und Informatik