Changes

Jump to navigation Jump to search

Source code

4,256 bytes added, 17:24, 4 February 2019
m
no edit summary
'''Source code''' is any a collection of text files containing instructions that a computer instructions either runs as-is (interpretation) or translates into an executable file beforehand (compilation / assembly). Source code is written using some [[a human-readable]] computer language. The source code is often transformed so that it can be translated by a [[compiler]] program into low-level [[machine code]] understood by the computer. Alternatively, or an [[interpreter (computing)|interpreter]] can be used . It's also possible to analyze and perform the outcomes of the source code program directly on the flydecompile an executable file, though decompilers aren't as common.
SoftwareThe language used changes how the source code is read, and just like emulation it too has its accompanying source code, typically falls within one of two licensing paradigms: [[open source]] own high and [[proprietary software]]low-level types. Software is ''open source'' if If a program were written in an assembly language (which often involves taking advantage of system-specific attributes), an assembler would write the source machine code is free to use"word for word, distribute" reflecting how the machine takes instructions. If a program were written in a low-level language, modify a compiler would read the code and studytranslate the equivalent in machine code. If a program were written in a high-level language, it would often work without requiring a compiler. Some compilers and interpreters also do error checking to make sure the programmer''proprietary'' if s code is either properly written or formatted. Many languages also check that the source code is kept secretwon't inherently cause bugs, or is privately owned and restrictedsuch as Rust.
[[Porting]] software Software can be ported to other computer platforms is usually prohibitively difficult types of computers but, without source code. Without the source code for a particular piece of software, portability is generally computationally expensiveit's often prohibitively difficult to do.{{Citation needed|date=October 2008}} Possible porting options Other ways to port software include [[binary translation]] and platform emulation of the original platform.
== Licensing Language levels==Software can be programmed in many different languages (even multiple in one program), and just like [[High/Low level emulation|high and low level emulation]], they have different levels of abstraction. Here are the different ones, from lowest to highest.
Emulator software may be open source or closed source===Assembly===Assembly is the closest representation of machine code without being machine code. There are many advantages basically no abstractions from the architecture, meaning everything is close to what the machine processes. This used to be ideal for platforms at a time when compilers weren't optimized enough to give equivalent performance to assembly, and as a result you'd find that early console emulators:games were programmed in assembly more often than higher level languages. Assembly is commonplace in [[dynamic recompilation]] as well because it allows developers to optimize code closer for an architecture than even a low-level language like C or C++. ===Low===A low-level language allows programmers to get closer to the system they work on, taking advantage of architecture or platform-specific quirks without having to learn the architecture like assembly. Low-level languages have the advantage that they're easier to port to other platforms by nature of being more abstract from the hardware. Examples of low-level languages include (but are in no way limited to) C and C++.
* Abandoned open source projects can ===Medium===Medium-level languages have attributes of both low and high-level paradigms like Rust (which is designed to be picked up by other dev teamsperformant and system-focused but also memory safe). Abandoned closed source projects cannot Some high-level languages can also be updated.* Easy forking and customization of projects* Allows lower than others to examine the source code and offer input, or to fix bugs.
Many ===High===High-level languages push away most system specific quirks in favor of the most successful emulation projects are ones that are open sourceinstructions intended to work on any platform. This was pioneered by Java, whose goal was for developers to "write once, run anywhere".
==Languages== In high-level languages, many of the same instructions can be run across different architectures and platforms. They may have a compiler, a compiler cache, a [[dynamic recompilation|dynamic recompiler]], and/or an interpreter.
===AssemblyEsoteric===Assembly[[wikipedia:Esoteric programming language|Esoteric languages]] are built around a specific idea or a joke, being tied as part of a challenge. These languages are intended to the be comedic, confusing, and/or thought-provoking. One example includes [[wikipedia:Brainfuck|Brainfuck]], a <abbr title="Meaning it can solve any problem a Turing machine, has can.">Turing-complete</abbr> programming language with only eight one-character commands (as opposed to the potential thousands of fastest codestandard languages and architectures) and one instruction pointer. HoweverAnother is [[wikipedia:Shakespeare Programming Language|Shakespeare]], Assembly a programming language is designed to resemble a Shakespearean play. There's also tied to machine code[https://github.com/dylanbeattie/rockstar Rockstar], making Assembly a language very difficult in programming. Also, due to its being tied to designed around "the machinelyrical conventions of 1980s hard rock and power ballads", Assembly code has meant to be recoded into another language if lampoon the programmer wants to software industry's use the emulator of "rockstar developers" in another machine, even if the operating system is the samerecruiting.
===Java=Version control==Java Version control refers to the management of data as it changes. A version control system is a high-level languageprogram that tracks changes in data. Code written in Java can be run anywhere due Its most common use is to the ubiquitousness of interpreters and is relatively easy allow programmers to collaborate on a source coderepository without accidentally ruining any components. HoweverThere are several version control systems, but the most ubiquitous by virtue of ties to the Java language Linux kernel is notoriously prone to security exploitsGit, so much so that a ton of services are built around Git, like GitHub and GitLab. Other systems include CVS (the very first of its kind), Subversion, sometimes day-1 exploitsand another developed alongside Git called Mercurial.
===C++=Licensing==C++ can be considered a compromise between Assembly and Java, despite C++ being older than (and Software is an antecedent to) Java. C++ compilers are ubiquitouscopyrightable, hence compiling C++ but the source code is a readily-can be made available taskto users however the author chooses. C++ A copyright license is also one of a legal document that tells people how the fastest 3rd generation languages. Also, most programmers already have a working knowledge of C++. However, to some programmers, writing in C++ is still quite complicated in coding. Also, opposed to Java, C++ code has to software can be explicitly complied before being able to work, lengthening turnaround timesused and what limitations come with using it.
== References == ;Public domain:There is no copyright (i.e. No Rights Reserved). Works enter the public domain when they:{{reflist}}:# were released before the current copyright expiry date. This is why old paintings, plays, and books are so commonly quoted and used in modern works, because they'd have to negotiate the rights with the author otherwise. Most software is not released this way because it is still covered by the current American copyright term.* :# are dedicated through a license like Creative Commons Zero or the Unlicense. This is the only option for modern works to be released into the public domain because, per the Berne Convention, copyright is seen as opt-out, not opt-in. If a public domain dedication can't be made (VEW04probably because the jurisdiction doesn't recognize the public domain) "Using , then the license grants users the equivalent freedoms.;Open-source:The program is released under a Decompiler copyright license that permits four freedoms: that it can be run at any time, studied and modified for Real-World Source Recovery"the user's own purposes, distributed to anyone, Mand improved for everyone else. Van Emmerik and TThis bypasses most of the issues encountered with public domain works. WaddingtonFor anything else copyrightable, the term "open content" often applies.:It''Working Conference on Reverse Engineering''s worth noting that open-source does not replace copyright. And likewise, the license cannot be removed after the work has been released under it. To see the various open-source licenses available, see [https://choosealicense.com/ choosealicense.com]. Also see [Delft]https://choosealicense.com/appendix/ the appendix]at the same website.;Source-available:The program is released under a copyright license more restrictive than an open-source license, but the source code is still publically available. The biggest example is [[NetherlandsSnes9x]], 9–12 November 2004which is released under a non-commercial license. This license makes it not open-source, as it restricts the users' commercial use. [http;Closed source / Proprietary://wwwThe program's source code isn't available.iteeOften because the ecosystem behind the platform is closed, sometimes by nature (like Windows and Android), or sometimes by force (like every modern console).uq:;Freeware:The source code isn't available but the program is still free.edu.au:;Shareware /~emmerik/experience_long.pdf Extended Trialware:A limited demo version of the paperprogram is free. This was common for [[Intel CPUs|DOS]]games.
== External links ==* {{cite web| title=Obligatory accreditation system for IT security products The more successful emulation projects are often open source (2008-09-22though you definitely will find exceptions), may start from May 2009, reported by Yomiuri on 2009-04-24.|url=http://www.metafilter.com/75061/Obligatory-accreditation-system-for-IT-security-products|publisher=MetaFilter.com|accessdate=2009-04-24}}* [http://rosettacode.org/wiki/Main_Page Same program written in multiple languages]
==See also==* [[Dynamic recompilation]]* [[ROM Hacking Resources]]<!--==References=={{reflist}}-->[[Category:Wikipedia copiesFAQs]]

Navigation menu