Allzweckprogrammiersprache
Im Computer Software, a Allzweckprogrammiersprache (GPL) ist ein Programmiersprache Entwickelt, um zum Gebäude verwendet zu werden Software in einer Vielzahl von Anwendungen Domänen, über eine Vielzahl von Hardwarekonfigurationen und Betriebssystemen. Theoretisch kann ein GPL -Programm in einem einzigen Prozessor oder in einem Netzwerk gleichmäßig ausgeführt werden. Das Gegenteil einer allgemeinen Programmiersprache ist a Domänenspezifische Programmiersprache, die zum Beispiel in einem bestimmten Bereich verwendet werden soll, Abfragedatenbanken. Zum Beispiel wurde SQL für für Abfragedatenbanken.
Geschichte
Frühe Programmiersprachen wurden entweder für wissenschaftliche Computing (numerische Berechnungen) oder für die Verarbeitung von kommerziellen Daten entwickelt, ebenso wie Computerhardware. Wissenschaftliche Sprachen wie z. Forran und Algol Unterstützte Floating-Punkt-Berechnungen und mehrdimensionale Arrays, während Geschäftssprachen wie z. Cobol unterstützte Fixierfeld-Dateiformate und Datensätze. Viel weniger weit verbreitet waren spezialisierte Sprachen wie IPL-V und LISPELN zum Symbolische Listenverarbeitung; Comit für String Manipulation; GEEIGNET zum Numerisch kontrollierte Maschinen. Systemprogrammierung erforderlich Zeigermanipulation wurde normalerweise in Montagesprache, obwohl Fröhlich wurde für einige militärische Anwendungen verwendet.[1]
IBM's System/360, angekündigt 1964, wurde als einheitliche Hardware -Architektur entwickelt, die sowohl wissenschaftliche als auch kommerzielle Anwendungen unterstützt, und IBM entwickelt Pl/i dafür als eine einzelne, allgemeine Sprache, die wissenschaftliche, kommerzielle und Systemprogramme unterstützte. In der Tat wurde PL/ich als Standardsystemprogrammiersprache für die verwendet Mehrheit Betriebssystem.
Da PL/I die Unterscheidung zwischen wissenschaftlichen und kommerziellen Programmiersprachen abgenommen hat, unterstützt die meisten Sprachen die von beiden erforderlichen Grundfunktionen und ein Groß Datenbankmanagementsystem.
Ab den 1960er Jahren wurden auch viele spezialisierte Sprachen entwickelt: GPSS und Simula für diskrete Ereignissimulation; WÜTEND, BASIC, Logo, und Pascal zum Lehrprogrammierung; C für Systemprogramme; Joss und Apl \ 360 Für interaktive Programmierung.[1]
GPL vs. DSL
Die Unterscheidung zwischen Allzweck -Programmiersprachen und domänenspezifischen Programmiersprachen ist nicht immer klar.[2] Für eine bestimmte Aufgabe kann eine Programmiersprache erstellt werden, die jedoch über diese ursprüngliche Domäne hinaus verwendet und daher als Programmiersprache für allgemeine Zwecke angesehen wird. Zum Beispiel Cobol, Forran, und Lispeln wurden als DSLs erstellt (jeweils für Geschäftsverarbeitung, numerische Berechnung bzw. symbolische Verarbeitung), wurde aber im Laufe der Zeit GPL. Umgekehrt kann eine Sprache für den allgemeinen Gebrauch ausgelegt sein, aber nur in einem bestimmten Bereich in der Praxis angewendet werden.[3] Eine Programmiersprache, die gut für ein Problem geeignet ist, sei es allgemeiner Sprache oder DSL, sollte das Detailniveau minimieren, das erforderlich ist und gleichzeitig in der Problemdomäne ausdrücklich genug ist.[4] Wie der Name schon sagt, ist die allgemeine Sprache insofern „allgemein“, da sie keine domänenspezifische Notation unterstützen kann, während DSLs in verschiedenen Problembereichen ausgelegt werden kann, um dieses Problem zu lösen.[4] Die allgemeine Sprache wird anstelle von DSLs bevorzugt, insbesondere wenn eine Anwendungsdomäne nicht gut genug ist, um eine eigene Sprache zu rechtfertigen. In diesem Fall kann stattdessen eine allgemeine Sprache mit einer geeigneten Bibliothek von Datentypen und Funktionen für die Domäne verwendet werden.[5] Während DSLs normalerweise kleiner als GPL sind, da sie eine kleinere Spektrum von Abstraktionen anbieten, enthält einige DSLs tatsächlich eine ganze GPL als Sublanguage. In diesen Fällen können die DSLs domänenspezifische Ausdruckskraft zusammen mit der ausdrucksstarken Kraft von GPL anbieten.[6]
Allzweck -Programmiersprachen sind alle Turing vollständig, was bedeutet, dass sie jedes Rechenproblem theoretisch lösen können. Domänenspezifische Sprachen sind oft in ähnlicher Weise vollständig, aber nicht ausschließlich.
Vorteile und Nachteile
Allzweck -Programmiersprachen werden häufiger von Programmierern verwendet. Laut einer Studie, C, Python, und Java waren die am häufigsten verwendeten Programmiersprachen im Jahr 2021.[7]Ein Argument für die Verwendung von Allzweck -Programmiersprachen über domänenspezifische Sprachen ist, dass mehr Menschen mit diesen Sprachen vertraut sind und die Notwendigkeit überwinden, eine neue Sprache zu lernen.
Darüber hinaus gibt es für viele Aufgaben (d. H. Statistische Analyse, maschinelles Lernen usw.) Bibliotheken, die ausführlich getestet und optimiert werden. Theoretisch sollte das Vorhandensein dieser Bibliotheken die Lücke zwischen allgemeinem Zweck und domänenspezifischen Sprachen schließen.[4]
Eine empirische Studie im Jahr 2010 bemühte sich, die Problemlösung und Produktivität zwischen GPLs und CSLs zu messen, indem sie Benutzern Probleme geben, die mit der GPL vertraut waren (C#) und unbekannt mit der DSL (Xaml). Letztendlich haben die Benutzer dieser spezifischen domänenspezifischen Sprache um einen Faktor von 15%besser abgewickelt, obwohl sie mit GPL besser vertraut waren, was weitere Forschungsergebnisse rechtfertigte.[4]
Beispiele
C
Der Vorgänger zu C, Bwurde größtenteils für einen bestimmten Zweck entwickelt: Systemprogrammierung.[8] Im Gegensatz dazu hat C in einer Vielzahl von Computerdomänen verwendet, wie z. Betriebssysteme, Gerätetreiber, Anwendungssoftware, und eingebettete Systeme.
C ist aufgrund seiner Allgemeinheit für eine Vielzahl von Bereichen geeignet. Es bietet Economy of Expression, Flow Control, Datenstrukturen und eine Reihe von Betreibern, beschränkt seine Benutzer jedoch nicht, es in einem Kontext zu verwenden.[9] Infolge Unix Betriebssystem,[10] Es wurde leicht für die Verwendung in Anwendungsentwicklung, eingebettete Systeme (z. B. Mikroprozessorprogrammierung), Videospiele (z. B., Untergang), usw. Heute bleibt C eine der beliebtesten und am häufigsten verwendeten Programmiersprachen.[11]
C ++
Als Erweiterung an konzipiert C, C ++ eingeführt objektorientierter Funktionen sowie andere Annehmlichkeiten wie Referenzen, Überladung des Bedieners und Standardargumente. Wie C, C ++ 's Die Allgemeinheit ermöglichte es in einer Vielzahl von Bereichen. Während es ist C ++Der Kernbereich der Anwendung liegt in der Systemprogrammierung (wegen von C ++Fähigkeit, Zugang zu Architektur auf niedriger Ebene zu gewähren),[12] Es wurde ausgiebig verwendet, um Desktop -Anwendungen, Videospiele, Datenbanken, Finanzsysteme und vieles mehr zu erstellen.[13] Große Software- und Finanzunternehmen wie z. Microsoft, Apfel, Bloomberg, und Morgan StanleyVerwenden Sie C ++ immer noch in ihren internen und externen Anwendungen.[13]
Python
Python wurde als eine Sprache konzipiert, die die Lesbarkeit und Erweiterbarkeit der Code betonte.[14][15] Die ersteren erlaubten Nicht-Software-Ingenieuren, Computerprogramme einfach zu lernen und zu schreiben, während letztere Domänenspezialisten erlaubten, einfach Bibliotheken zu erstellen, die für ihre eigenen Anwendungsfälle geeignet sind. Aus diesen Gründen wurde Python in einer Vielzahl von Domänen verwendet.
Im Folgenden finden Sie einige Bereiche, in denen Python verwendet wird:[16]
- Web Entwicklung: Frameworks wie Django und Flasche haben Webentwicklern es ermöglicht, robuste Webserver zu erstellen, die auch das breitere Python -Ökosystem nutzen können.
- Wissenschaft und Wissenschaft: Wissenschaftliche und Datenbibliotheken wie Scipy und Pandas, haben Pythons Verwendung in der wissenschaftlichen Forschung ermöglicht.[17]
- Maschinelles Lernen: Bibliotheken mögen Scikit-Learn und Tensorflow haben die Zugänglichkeit des maschinellen Lernens für Entwickler erhöht.[18]
- Allgemeine Softwareentwicklung: Entwicklung von Benutzeranwendungen, Web -Scraping -Programmen, Spielen und anderer allgemeiner Software.
Aufführen
Das Folgende sind einige allgemeine Programmiersprachen:
Anmerkungen
- ^ a b Jean E. Sammet, "Programmiersprachen: Geschichte und Zukunft", Kommunikation der ACM 15: 7: 601-610 (Juli 1972) doi:10.1145/361454.361485
- ^ "Domänenspezifische Sprachen: Eine kommentierte Bibliographie*". webcache.googleusercontent.com. Abgerufen 2022-06-03.
- ^ Berry, Gerard (Mai 2006). "Echtzeitprogrammierung: Spezielle Zwecke oder Allzwecksprachen". Hal offener Wissenschaft.
- ^ a b c d Kosar, Tomaz (Mai 2010). "Vergleich allgemeiner und domänenspezifischer Sprachen: Eine empirische Studie" (PDF). Informatik- und Informationssysteme. 7 (2): 247–264. doi:10.2298/cSIS1002247K.
- ^ Van Deursen, Arie (Dezember 1998). "Kleine Sprachen: kleine Wartung?". Journal of Software -Wartung: Forschung und Praxis. 10 (2): 75–92. doi:10.1002/(SICI) 1096-908X (199803/04) 10: 2 <75 :: Aid-smr168> 3.0.co; 2-5.
- ^ Van Deursen, Arie; Klint, Paul; Visser, Joost (Juni 2000). "Domänenspezifische Sprachen: eine kommentierte Bibliographie". ACM Sigplan nennt. 35 (6): 26–36. doi:10.1145/352029.352035. ISSN 0362-1340. S2CID 1049872.
- ^ "Die beliebtesten Programmiersprachen - 1965/2021 - Neues Update - Statistik und Daten". StatisticsandData.org. Abgerufen 2022-06-03.
- ^ "Wayback -Maschine" (PDF). Archiviert von das Original (PDF) Am 2015-06-11. Abgerufen 2022-06-03.
- ^ W., Kernighan, Brian (2016). Die C -Programmiersprache. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413.
- ^ Ritchie, Dennis (April 1993). "Die Entwicklung der C -Sprache" (PDF). ACM Sigplan nennt. 28 (3): 201–208. doi:10.1145/155360.155580.
- ^ "Tiobe Index". Tiobe. Abgerufen 2022-06-03.
- ^ Stroustrup, Bjarne (1995). Die C ++ - Programmiersprache. Addison-Wesley.
- ^ a b "C ++ Anwendungen". www.strustrup.com. Abgerufen 2022-06-03.
- ^ "Artima - die Herstellung von Python". www.artima.com. Abgerufen 2022-06-03.
- ^ "General Python FAQ - Python 3.10.4 Dokumentation". docs.python.org. Abgerufen 2022-06-03.
- ^ "Anwendungen für Python". Python.org. Abgerufen 2022-06-03.
- ^ "Programmiersprachen Popularität in 12.086 Forschungsarbeiten - Quantifizierung der Gesundheit". Abgerufen 2022-06-03.
- ^ Pedregosa, Fabian (2011). "Scikit-Learn: maschinelles Lernen in Python" (PDF). Das Journal of Machine Learning Research. Arxiv:1201.0490.