![](/pic/1/4/8/5/7/1//soft.jpg)
For example, consider the “hello world” program, a common first program for people learning C, which (when compiled and executed) prints “Hello World!” on the screen.[1]
int main(){ printf('Hello World!'); return 0; }
In the Java programming language the same program would be written like this:
public class hello { public static void main(String args[]) { System.out.println('Hello World!'); } }
However, in machine language, a small section of it may look similar to this:
1100011110111010100101001001001010101110 0110101010011000001111001011010101111101 0100111111111110010110110000000010100100 0100100001100101011011000110110001101111 0010000001010111011011110111001001101100 0110010000100001010000100110111101101111
The above form of machine language is the most basic representation known as binary. All data in computers is made up of a series of 0-or-1 values, but a person would have much difficulty understanding the data. To make a simple change to the binary, one would have to have an intimate knowledge of how a particular computer interprets the machine language. This could be feasible for small programs like the above examples, but any interesting program would involve an exhausting effort to make simple changes.
As an example, imagine that we wanted to make a change to our “Hello World” program written in C so that instead of printing “Hello World” in English it prints it in French. The change would be simple; here is the new program:
int main() { printf('Bonjour, monde!'); return 0; }
It is safe to say that one can easily infer how to change the program written in the Java programming language in the same way. However, even many programmers would not know where to begin if they wanted to change the binary representation. When we say “source code,” we do not mean machine language that only computers can understand—we are speaking of higher-level languages such as C and Java. A few other popular programming languages are C++, Perl, and Python. Some are harder than others to understand and program in, but they are all much easier to work with compared to the intricate machine language they get turned into after the programs are compiled and assembled.
Another important concept is understanding what an
It is important to understand that even if
This note was originally published in 2002, in the first edition. This version is part of
Verbatim copying and distribution of this entire chapter are permitted worldwide, without royalty, in any medium, provided this notice is preserved.
Appendix B: Translations of the Term “Free Software”
The following is a list of recommended unambiguous translations of the term “free software” into various languages:
• Afrikaans: vrye sagteware
• Albanian: software i lire
• Arabic: ??????? ??? (barmagiyat ?orrah)
• Armenian: ???? ??????/??????? (azat tsragir/tsragrer)
• Belarusian: свабоднае праграмнае забесьпячэньне (svabodnae pragramnae zabes'pjachen'ne)
• Bulgarian: свободен софтуер (svoboden softuer)
• Catalan: programari lliure
• Chinese(Simplified): ???? (zi-you ruan-jian)
• Chinese(Traditional): ???? (zih-yo)
• Czech: svobodny software
• Croatian/Serbian: slobodni softver
• Danish: fri software OR frit programmel
• Dutch: vrije software
• Esperanto: libera programaro / programo
• Estonian: vaba tarkvara