Quellcode
Im Computer, Quellcode ist eine Sammlung von Code mit oder ohne Kommentare, geschrieben mit a für Menschen lesbar Programmiersprache, normalerweise als einfacher Text. Der Quellcode von a Programm ist speziell entwickelt, um die Arbeit von Computer zu erleichtern Programmierer, die die Aktionen angeben, die von einem Computer hauptsächlich durch das Schreiben von Quellcode ausgeführt werden sollen. Der Quellcode wird oft von einem transformiert Assembler oder Compiler hinein binär Maschinensprache Das kann vom Computer ausgeführt werden. Der Maschinencode kann dann für gespeichert werden für Hinrichtung zu einem späteren Zeitpunkt. Alternativ kann Quellcode sein interpretiert und so sofort ausgeführt.
Die meisten Anwendungssoftware wird in einem Formular verteilt, das nur enthält ausführbar Dateien. Wenn der Quellcode enthalten wäre, wäre er für a nützlich Benutzer, Programmierer oder a Systemadministrator, von denen möglicherweise das Programm studieren oder ändern möchte.
Definitionen
Stallman Definition, formuliert in seinem 1989 Samenlizenz, vorgeschlagener Quellcode als Formular, in dem Software geändert wird:
Der „Quellcode“ für eine Arbeit bedeutet die bevorzugte Form der Arbeit, um Änderungen daran vorzunehmen.[2]
Einige klassische Quellen definieren den Quellcode als Textform der Programmiersprachen, zum Beispiel:
Der Quellcode (auch als Quelle oder Code bezeichnet) ist die Version der Software, wie er ursprünglich von einem Menschen in einem Computer geschrieben wurde (d. H. In einen Computer eingegeben wurde) einfacher Text (d. H. Human lesbare alphanumerische Zeichen).[3]
Dies reagiert auf die Tatsache, dass wann Programmübersetzung Zuerst erschien die zeitgenössische Form der Softwareproduktion Textprogrammiersprachen, so dass Quellcode Textcode war, während Maschinensprache war Zielcode. Als Programmierpipelines jedoch mehr Zwischenformulare aufgenommen haben, einige in Sprachen wie JavaScript, die entweder Quelle oder Ziel sein könnten, war der Textcode nicht mehr als Synonym für Quellcode.
Stallmans Definition berücksichtigt somit JavaScript und HTMLs Quellziel-Ambivalenz sowie mögliche zukünftige Formen der Softwareproduktion wie visuelle Programmiersprachen oder Datensätze im maschinellen Lernen.[4][5]
Andere breitere Interpretationen betrachten den Quellcode jedoch als den Maschinencode zusammen mit allen hochstufigen Sprachen, die ihn produzieren, diese Definition die ursprüngliche Maschine/Textunterscheidung, indem Sie jeden Schritt in der Programmübersetzung als Quellcode berücksichtigen.
Für den Zweck der Klarheit wird "Quellcode" eine vollständig ausführbare Beschreibung eines Softwaresystems bedeuten. Es ist daher so ausgelegt, dass Maschinencode, Sprachen mit sehr hoher Ebene und ausführbare grafische Darstellungen von Systemen einbezogen werden.[6][7]
Dieser Ansatz ermöglicht einen viel flexibleren Ansatz für die Systemanalyse, das Designer an der Anforderung abgibt, eine bequeme Form für Verständnis und Änderung zu veröffentlichen. Es kann auch auf Szenarien angewendet werden, in denen ein Designer nicht wie DNA benötigt wird. Diese Analyseform betrachtet jedoch keine teurere Machung-zu-Maschinen-Codeanalyse als eine Analyse von Human-zu-Maschinen-Code.
Geschichte
Die frühesten Programme für Computerspeicherprogramme wurden in binär durch die eingetragen Frontblende Schalter des Computers. Dies Programmiersprache der ersten Generation hatte keine Unterscheidung zwischen Quellcode und Maschinensprache.
Als IBM zum ersten Mal Software für die Arbeit mit seinem Computer anbot, wurde der Quellcode ohne zusätzliche Gebühr bereitgestellt. Zu dieser Zeit wurden die Kosten für die Entwicklung und Unterstützung von Software in den Preis der Hardware einbezogen. Seit Jahrzehnten verteilte IBM bis 1983 mit seinen Softwareproduktlizenzen.[8]
Die meisten frühen Computermagazine veröffentlichten Quellcode als Geben Sie Programme ein.
Gelegentlich wird der gesamte Quellcode für ein großes Programm als Hardback -Buch veröffentlicht, wie z. Computer und Artensett, vol. B: Tex, das Programm durch Donald Knuth, PGP -Quellcode und Interna durch Philip Zimmermann, PC Speedscript durch Randy Thompson, und µC/OS, der Echtzeit-Kernel von Jean Labrosse.
Organisation
Der Quellcode, der a bildet a Programm wird normalerweise in einem oder mehreren gehalten Textdateien auf einem Computer gespeichert Festplatte; Normalerweise sind diese Dateien sorgfältig in a arrangiert Verzeichnisbaum, bekannt als a Quellbaum. Der Quellcode kann auch in einer Datenbank gespeichert werden (wie üblich für Gespeicherte Prozeduren) oder anderswo.
Der Quellcode für eine bestimmte Software kann in einer einzelnen Datei oder vielen Dateien enthalten sein. Obwohl die Praxis ungewöhnlich ist, kann der Quellcode eines Programms in verschiedenen Programmiersprachen geschrieben werden.[9] Zum Beispiel ein Programm, das hauptsächlich in der geschrieben wurde C Programmiersprache, könnten Teile geschrieben haben Montagesprache Für Optimierungszwecke. Es ist auch möglich, dass einige Komponenten einer Software in einer willkürlichen Programmiersprache separat geschrieben und kompiliert werden und später mit einer Technik genannt in die Software integriert werden Bibliotheksverknüpfung. In einigen Sprachen, wie z. JavaDies kann bei Laufzeit (Jede Klasse wird in eine separate Datei zusammengestellt, die zur Laufzeit vom Interpreter verknüpft ist).
Eine andere Methode besteht jedoch darin, das Hauptprogramm zu einem Dolmetscher für eine Programmiersprache zu machen, entweder speziell für die fragliche Anwendung oder für allgemeine Zwecke und schreiben dann den Großteil der tatsächlichen Benutzerfunktionalität als Makros oder andere Formen von Add-Ins in dieser Sprache, ein Ansatz, der zum Beispiel von der verfolgt wurde GNU EMACS Texteditor.
Das Codebasis von a Computerprogrammierung Projekt ist die größere Sammlung aller Quellcode aller Computerprogramme die das Projekt ausmachen. Es ist üblich geworden, Code -Stützpunkte in zu erhalten Versionskontrollsysteme. Die mäßig komplexe Software erfordert die Kompilierung oder Montage mehrerer, manchmal Dutzender oder sogar Hunderte verschiedener Quellcodedateien. In diesen Fällen Anweisungen für Zusammenstellungen wie a Makefile, sind im Quellcode enthalten. Diese beschreiben die Programmierverhältnisse zwischen den Quellcode -Dateien und enthalten Informationen darüber, wie sie zusammengestellt werden sollen.
Zwecke
Der Quellcode wird hauptsächlich als Eingabe für den Prozess verwendet, der ein ausführbares Programm erzeugt (d. H. Es ist es zusammengestellt oder interpretiert). Es wird auch als Kommunikationsmethode verwendet Algorithmen zwischen Menschen (z. B.,, Code Ausschnitte in Büchern).[10]
Computerprogrammierer Finden Sie es häufig hilfreich, den vorhandenen Quellcode zu überprüfen, um mehr über Programmierechniken zu erfahren.[10] Der Austausch des Quellcode zwischen Entwicklern wird häufig als Faktor für die Reifung ihrer Programmierfähigkeiten bezeichnet.[10] Einige Leute betrachten den Quellcode als ausdrucksstark künstlerisches Medium.[11]
Portierung Software zu anderen Computerplattformen ist normalerweise ohne Quellcode unerschwinglich schwierig. Ohne den Quellcode für eine bestimmte Software ist die Portabilität im Allgemeinen rechnerisch teuer. Mögliche Portierungsoptionen umfassen binäre Übersetzung und Emulation der ursprünglichen Plattform.
Dekompilierung Ein ausführbares Programm kann verwendet werden, um Quellcode zu generieren, entweder in Montagecode oder in a hochrangige Sprache.
Programmierer passen den Quellcode häufig von einer Software an, die in anderen Projekten verwendet werden kann, ein Konzept, das als bekannt ist Software -Wiederverwendbarkeit.
Legale Aspekte
Die Situation variiert weltweit, aber in den Vereinigten Staaten vor 1974 waren Software und ihr Quellcode nicht urheberrechtlich geschützt und deshalb immer Public -Domain -Software.[12]
1974 entschied die US -Kommission für neue technologische Verwendungszwecke von urheberrechtlich geschützten Werken (CONTU), dass "Computerprogramme in dem Maße, in dem sie die ursprüngliche Schöpfung eines Autors verkörpern, ein ordnungsgemäßes Thema des Urheberrechts sind".[13][14]
1983 im Fall des US -Gerichtshofs Apple v. Franklin Es wurde entschieden, dass dasselbe an gilt für Objektcode; und dass das Urheberrechtsgesetz Computerprogrammen den Urheberrechtsstatus von literarischen Werken gab.
1999 im Fall des US -Gerichtshofs Bernstein gegen Vereinigte Staaten Es wurde ferner entschieden, dass Quellcode als verfassungsrechtlich geschützte Form von angesehen werden kann frei sprechen. Befürworter der Redefreiheit argumentierten, dass der Quellcode Programmierer Informationen vermittelt, in einer Sprache geschrieben ist und verwendet werden kann, um Humor und andere künstlerische Aktivitäten zu teilen, eine geschützte Form der Kommunikation ist.[15][16][17]
Lizenzierung
Copyright [YJJ] [Name des Urheberrechtsbesitzers]
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz bei erhalten
- http://www.apache.org/licenses/license-2.0
Sofern nicht nach geltendem Recht oder schriftlich vereinbart, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Sbasis ohne Gewährleistungen oder Bedingungen jeglicher Art, entweder ausdrücklich oder impliziert, verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.
Ein Autor von a nicht triviale Arbeit Wie Software,[14] hat verschiedene exklusive Rechteunter ihnen das Urheberrecht für den Quellcode und Objektcode.[19] Der Autor hat das Recht und die Möglichkeit, Kunden und Benutzern seiner Software einige seiner exklusiven Rechte in Form von zu gewähren Software -Lizenzierung. Software und ihr dazugehöriger Quellcode können mit mehreren Lizenzparadigmen verbunden werden. Die wichtigste Unterscheidung ist gratis Software vs proprietäre Software. Dies geschieht durch Einbeziehung a Urheberrechtshinweis Das erklärt Lizenzbedingungen. Wenn keine Ankündigung gefunden wird, dann der Standard von von Alle Rechte vorbehalten ist impliziert.
Im Allgemeinen ist eine Software kostenlose Software, wenn ihre Benutzer sie frei verwenden können, um sie für jeden Zweck zu verwenden, ihren Quellcode zu ändern, ihre genauen Kopien zu geben oder zu verkaufen und ihre geänderten Kopien zu geben oder zu verkaufen. Software ist proprietär Wenn es verteilt ist, während der Quellcode geheim gehalten wird oder in Privatbesitz ist und eingeschränkt ist. Eine der ersten Softwarelizenzen, die veröffentlicht wurden und diese Freiheiten ausdrücklich gewähren, war die GNU Allgemeine öffentliche Lizenz 1989; das BSD -Lizenz ist ein weiteres frühes Beispiel von 1990.
Für proprietäre Software die Bestimmungen der verschiedenen Urheberrechtsgesetze, Geschäftsgeheimnis und Patente werden verwendet, um den Quellcode geschlossen zu halten. Zusätzlich viele Stücke von Einzelhandelssoftware Komm mit einem Endbenutzer-Lizenzvereinbarung (EULA), was typischerweise verbietet Dekompilierung, Reverse Engineering, Analyse, Modifikation oder Umgehung von Kopierschutz. Arten des Quellcodeschutzes - Beyond traditionell Zusammenstellung zu Objektcode- Inkuzierende Codeverschlüsselung, Code Verschleierung oder Code Morphing.
Qualität
Die Art und Weise, wie ein Programm geschrieben wird, kann wichtige Konsequenzen für seine Betreuer haben. Konventionen codierenwelcher Stress Lesbarkeit und einige sprachspezifische Konventionen zielen auf die Wartung des Software-Quellcodes ab, der beinhaltet Debuggen und Aktualisierung. Andere Prioritäten, wie die Geschwindigkeit der Ausführung des Programms oder die Fähigkeit, das Programm für mehrere Architekturen zu erstellen, machen die Code -Lesbarkeit häufig zu einer weniger wichtigen Überlegung, da Code Qualität Im Allgemeinen hängt er von seinem ab Zweck.
Siehe auch
- Bytecode
- Code als Daten
- Konventionen codieren
- Computercode
- Gratis Software
- Legacy -Code
- Maschinensprache
- Auszeichnungssprache
- Verschleierter Code
- Objektcode
- Quelloffene Software
- Paket (Paketverwaltungssystem)
- Programmiersprache
- Quellcode -Repository
- Satzstellung markieren
- Visuelle Programmiersprache
Verweise
- ^ "Programmierung in C: Ein Tutorial" (PDF). Archiviert von das Original (PDF) am 23. Februar 2015.
- ^ Richard Stallman - 1989 - Kündigte durch das GNU Bulletin und veröffentlicht mit GNU Software - https://www.gnu.org/licenses/gpl-3.0.html
- ^ Das Linux -Informationsprojekt. "Quellcode -Definition" Archiviert 3. Oktober 2017 bei der Wayback -Maschine
- ^ "gnu.org". www.gnu.org. Archiviert Aus dem Original am 3. Juli 2017. Abgerufen 12. Dezember 2015.
- ^ Stallman, Richard (15. November 2017). "Die JavaScript -Trap - GNU -Projekt - Free Software Foundation". Gnu.org. Abgerufen 20. Juli 2022.
- ^ Warum die Quellcodeanalyse und -manipulation immer wichtig sein werden durch Mark Harman, 10. IEEE International Working Conference zur Quellcodeanalyse und -manipulation (SCAM 2010). Timișoara, Rumänien, 12. bis 13. September 2010.
- ^ Betrugsarbeitskonferenz Archiviert 29. September 2017 bei der Wayback -Maschine, 2001–2010.
- ^ Martin Goetz (8. Februar 1988). "Nur Objektcode: spielt IBM fair?". Computerwelt. Vol. 22, nein. 6. p. 59.
1983 kehrte IBM seine 20-jährige Richtlinie zur Verteilung von Quellcode mit seinen Softwareproduktlizenzen um.
- ^ "Erweiterung und Einbettung des Python -Dolmetschers". docs.python.org. Archiviert Aus dem Original am 3. Oktober 2012. Abgerufen 17. August 2014.
- ^ a b c Spinellis, D: Code -Lesung: Die Open Source -Perspektive. Addison-Wesley Professional, 2003. ISBN0-201-79940-5
- ^ "Kunst- und Computerprogrammierung" Onlamp.com Archiviert 20. Februar 2018 bei der Wayback -Maschine, (2005)
- ^ P., Liu, Joseph; L., Dogan, Stacey (2005). "Urheberrechtsrecht und Fachspezifität: Der Fall der Computersoftware". Jährliche Umfrage des amerikanischen Rechts der New York University. 61 (2).
- ^ Apple Computer, Inc. gegen Franklin Computer Corporation bringt das Byte wieder in den Urheberrechtsschutz für Computerprogramme ein Archiviert 7. Mai 2017 bei der Wayback -Maschine In der Golden Gate University Law Review Band 14, Ausgabe 2, Artikel 3 von Jan L. Nussbaum (Januar 1984)
- ^ a b Lemley, Menell, Merges und Samuelson. Software und Internetgesetz, p. 34.
- ^ "Die Info" (PDF). cr.yp.to. Archiviert (PDF) Aus dem Original am 7. Juni 2011. Abgerufen 27. Dezember 2019.
- ^ Bernstein gegen US -Justizministerium Archiviert 4. April 2018 bei der Wayback -Maschine auf eff.org
- ^ EFF bei 25: Erinnern Sie sich an den Fall, der Code als Sprache festgelegt hat Archiviert 5. Januar 2018 bei der Wayback -Maschine auf eff.org von Alison Dame-Boyle (16. April 2015)
- ^ "Lizenz". www.apache.org. Archiviert Aus dem Original am 23. September 2015. Abgerufen 27. Dezember 2019.
- ^ Hancock, Terry (29. August 2008). "Was ist, wenn das Urheberrecht nicht für binäre ausführbare Ausführungen gelten würde?". Kostenloses Softwaremagazin. Archiviert von das Original am 25. Januar 2016. Abgerufen 25. Januar 2016.
Quellen
- (VEW04) "Verwenden eines Dekompilers für die reale Quelle", M. van Emmerik und T. Waddington, The Arbeitskonferenz über Reverse Engineering, Delft, Niederlande, 9. bis 12. November 2004. Erweiterte Version des Papiers.
Externe Links
- Quellcode -Definition durch das Linux Information Project (LINFO)
- "Obligatorisches Akkreditierungssystem für IT -Sicherheitsprodukte". Metafilter.com. 22. September 2008.
wird Regeln einführen, nach denen ausländische Unternehmen geheime Informationen über digitale Haushaltsgeräte und andere Produkte ab Mai nächsten Jahres offenlegen müssen, die Yomiuri Shimbun sagte, zitierte unbenannte Quellen. Wenn ein Unternehmen sich weigert, Informationen offenzulegen, würde China es verbieten, das Produkt auf den chinesischen Markt zu exportieren oder es in China zu produzieren oder zu verkaufen, heißt es in dem Papier.
- Gleiches Programm, das in mehreren Sprachen geschrieben wurde