1000001800010@unknown@formal@none@1@S@⌊δCross-platformδ⌋@@@@1@1@@oe@26-8-2013 1000001800020@unknown@formal@none@1@S@⌊∗Cross-platform∗⌋ (also known as ⌊∗multi-platform∗⌋) is a term used in computing to refer to ⌊>computer program>⌋s, ⌊>operating system>⌋s, ⌊>computer language>⌋s, ⌊>programming language>⌋s, or other ⌊>computer software>⌋ and their implementations which can be made to work on multiple ⌊>computer platform>⌋s.@@@@1@39@@oe@26-8-2013 1000001800030@unknown@formal@none@1@S@“Cross-platform” and “multi-platform” both refer to the idea that a given piece of computer software is able to be run on more than one computer platform.@@@@1@26@@oe@26-8-2013 1000001800040@unknown@formal@none@1@S@There are two major types of cross-platform software; one requires building for each platform that it supports (e.g., is written in a compiled language, such as ⌊>Pascal>⌋), and the other one can be directly run on any platform which supports it (e.g., software written in an ⌊>interpreted language>⌋ such as ⌊>Perl>⌋, ⌊>Python>⌋, or ⌊>shell script>⌋) or software written in a language which compiles to ⌊>bytecode>⌋ and the bytecode is redistributed (such as is the case with ⌊>Java>⌋ and languages used in the ⌊>.NET Framework>⌋) such as ⌊>Chrome>⌋.@@@@1@87@@oe@26-8-2013 1000001800050@unknown@formal@none@1@S@For example, a cross-platform ⌊>application>⌋ may run on ⌊>Microsoft Windows>⌋ on the ⌊>x86 architecture>⌋, ⌊>Linux>⌋ on the ⌊>x86 architecture>⌋ and ⌊>Mac OS X>⌋ on either the ⌊>PowerPC>⌋ or ⌊>x86>⌋ based ⌊>Apple Macintosh>⌋ systems.@@@@1@33@@oe@26-8-2013 1000001800060@unknown@formal@none@1@S@A cross-platform ⌊>application>⌋ may run on as many as all existing platforms, or on as few as two platforms.@@@@1@19@@oe@26-8-2013 1000001800070@unknown@formal@none@1@S@⌊=Platforms¦2=⌋@@@@1@1@@oe@26-8-2013 1000001800080@unknown@formal@none@1@S@A platform is a combination of hardware and software used to run software applications.@@@@1@14@@oe@26-8-2013 1000001800090@unknown@formal@none@1@S@A platform can be described simply as an operating system or computer architecture, or it could be the combination of both.@@@@1@21@@oe@26-8-2013 1000001800100@unknown@formal@none@1@S@Probably the most familiar platform is ⌊>Microsoft Windows>⌋ running on the ⌊>x86 architecture>⌋.@@@@1@13@@oe@26-8-2013 1000001800110@unknown@formal@none@1@S@Other well-known desktop computer platforms include ⌊>Linux>⌋ and ⌊>Mac OS X>⌋ (both of which are themselves cross-platform).@@@@1@17@@oe@26-8-2013 1000001800120@unknown@formal@none@1@S@There are, however, many devices such as ⌊>cellular telephones>⌋ that are also effectively computer platforms but less commonly thought about in that way.@@@@1@23@@oe@26-8-2013 1000001800130@unknown@formal@none@1@S@⌊>Application software>⌋ can be written to depend on the features of a particular platform—either the hardware, operating system, or virtual machine it runs on.@@@@1@24@@oe@26-8-2013 1000001800140@unknown@formal@none@1@S@The ⌊>Java platform>⌋ is a ⌊>virtual machine>⌋ platform which runs on many operating systems and hardware types, and is a common platform for software to be written for.@@@@1@28@@oe@26-8-2013 1000001800150@unknown@formal@none@1@S@⌊=Hardware platforms¦3=⌋@@@@1@2@@oe@26-8-2013 1000001800160@unknown@formal@none@1@S@A ⌊∗hardware platform∗⌋ can refer to a computer’s ⌊>architecture>⌋ or ⌊>processor architecture>⌋.@@@@1@12@@oe@26-8-2013 1000001800170@unknown@formal@none@1@S@For example, the ⌊>x86>⌋ and ⌊>x86-64>⌋ ⌊>CPU>⌋s make up one of the most common ⌊>computer architecture>⌋s in use in home machines today.@@@@1@22@@oe@26-8-2013 1000001800180@unknown@formal@none@1@S@These machines commonly run ⌊>Microsoft Windows>⌋, though they can run other ⌊>operating system>⌋s as well, including ⌊>Linux>⌋, ⌊>OpenBSD>⌋, ⌊>NetBSD>⌋, ⌊>Mac OS X>⌋ and ⌊>FreeBSD>⌋.@@@@1@24@@oe@26-8-2013 1000001800190@unknown@formal@none@1@S@⌊=Software platforms¦3=⌋@@@@1@2@@oe@26-8-2013 1000001800200@unknown@formal@none@1@S@Software platforms can either be an ⌊>operating system>⌋ or programming environment, though more commonly it is a combination of both.@@@@1@20@@oe@26-8-2013 1000001800210@unknown@formal@none@1@S@A notable exception to this is ⌊>Java>⌋, which uses an ⌊>operating system>⌋ independent ⌊>virtual machine>⌋ for its ⌊>compiled>⌋ code, known in the world of Java as ⌊>bytecode>⌋.@@@@1@27@@oe@26-8-2013 1000001800220@unknown@formal@none@1@S@Examples of software platforms include:@@@@1@5@@oe@26-8-2013 1000001800230@unknown@formal@none@1@S@⌊•⌊#⌊>MS-DOS>⌋ (⌊>x86>⌋), ⌊>DR-DOS>⌋ (⌊>x86>⌋), ⌊>FreeDOS>⌋ (⌊>x86>⌋) etc.#⌋@@@@1@7@@oe@26-8-2013 1000001800240@unknown@formal@none@1@S@⌊#⌊>Microsoft Windows>⌋ (⌊>x86>⌋, ⌊>x64>⌋)#⌋@@@@1@4@@oe@26-8-2013 1000001800250@unknown@formal@none@1@S@⌊#⌊>Linux>⌋ (x86, x64, ⌊>PowerPC>⌋, various other architectures)#⌋@@@@1@7@@oe@26-8-2013 1000001800260@unknown@formal@none@1@S@⌊#⌊>Mac OS X>⌋ (PowerPC, x86)#⌋@@@@1@5@@oe@26-8-2013 1000001800270@unknown@formal@none@1@S@⌊#⌊>OS/2>⌋, ⌊>eComStation>⌋#⌋@@@@1@2@@oe@26-8-2013 1000001800280@unknown@formal@none@1@S@⌊#⌊>AmigaOS>⌋ (⌊>m68k>⌋), ⌊>AROS>⌋ (x86, PowerPC, m68k), ⌊>MorphOS>⌋ (PowerPC)#⌋@@@@1@8@@oe@26-8-2013 1000001800290@unknown@formal@none@1@S@⌊#⌊>Java>⌋#⌋•⌋@@@@1@1@@oe@26-8-2013 1000001800300@unknown@formal@none@1@S@⌊=Java platform¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800310@unknown@formal@none@1@S@As previously noted, the ⌊>Java platform>⌋ is an exception to the general rule that an ⌊>operating system>⌋ is a software platform.@@@@1@21@@oe@26-8-2013 1000001800320@unknown@formal@none@1@S@The Java language provides a ⌊>virtual machine>⌋, or a “virtual CPU” which runs all of the code that is written for the language.@@@@1@23@@oe@26-8-2013 1000001800330@unknown@formal@none@1@S@This enables the same ⌊>executable>⌋ ⌊>binary>⌋ to run on all systems which support the Java software, through the ⌊>Java Virtual Machine>⌋.@@@@1@21@@oe@26-8-2013 1000001800340@unknown@formal@none@1@S@Java ⌊>executable>⌋s do not run directly on the ⌊>operating system>⌋; that is, neither ⌊>Windows>⌋ nor ⌊>Linux>⌋ execute Java programs directly.@@@@1@20@@oe@26-8-2013 1000001800350@unknown@formal@none@1@S@Because of this, however, Java is limited in that it does not directly support system-specific functionality.@@@@1@16@@oe@26-8-2013 1000001800360@unknown@formal@none@1@S@⌊>JNI>⌋ can be used to access system specific functions, but then the code is likely no longer portable.@@@@1@18@@oe@26-8-2013 1000001800370@unknown@formal@none@1@S@Java programs can run on at least the ⌊>Microsoft Windows>⌋, ⌊>Mac OS X>⌋, ⌊>Linux>⌋, and ⌊>Solaris>⌋ operating systems, and so the language is limited to functionality that exists on all these systems.@@@@1@32@@oe@26-8-2013 1000001800380@unknown@formal@none@1@S@This includes things such as ⌊>computer networking>⌋, ⌊>Internet socket>⌋s, but not necessarily raw hardware ⌊>input/output>⌋.@@@@1@15@@oe@26-8-2013 1000001800390@unknown@formal@none@1@S@⌊=Cross-platform software¦2=⌋@@@@1@2@@oe@26-8-2013 1000001800400@unknown@formal@none@1@S@In order for software to be considered ⌊∗cross-platform∗⌋, it must be able to function on more than one ⌊>computer architecture>⌋ or ⌊>operating system>⌋.@@@@1@23@@oe@26-8-2013 1000001800410@unknown@formal@none@1@S@This can be a time-consuming task given that different ⌊>operating system>⌋s have different ⌊>application programming interface>⌋s or ⌊>API>⌋s (for example, ⌊>Linux>⌋ uses a different ⌊>API>⌋ for ⌊>application software>⌋ than ⌊>Windows>⌋ does).@@@@1@31@@oe@26-8-2013 1000001800420@unknown@formal@none@1@S@Just because a particular ⌊>operating system>⌋ may run on different ⌊>computer architecture>⌋s, that does not mean that the software written for that operating system will automatically work on all ⌊>architecture>⌋s that the operating system supports.@@@@1@35@@oe@26-8-2013 1000001800430@unknown@formal@none@1@S@One example as of August, 2006 was ⌊>OpenOffice.org>⌋, which did not natively run on the ⌊>AMD64>⌋ or ⌊>EM64T>⌋ lines of processors implementing the ⌊>x86-64>⌋ ⌊>64-bit>⌋ standards for computers; this has since been changed, and the OpenOffice.org suite of software is “mostly” ported to these 64-bit systems.@@@@1@46@@oe@26-8-2013 1000001800440@unknown@formal@none@1@S@This also means that just because a program is written in a popular programming language such as ⌊>C>⌋ or ⌊>C++>⌋, it does not mean it will run on all ⌊>operating systems>⌋ that support that ⌊>programming language>⌋.@@@@1@36@@oe@26-8-2013 1000001800450@unknown@formal@none@1@S@⌊=Web applications¦3=⌋@@@@1@2@@oe@26-8-2013 1000001800460@unknown@formal@none@1@S@⌊>Web application>⌋s are typically described as cross-platform because, ideally, they are accessible from any of various ⌊>web browser>⌋s within different operating systems.@@@@1@22@@oe@26-8-2013 1000001800470@unknown@formal@none@1@S@Such applications generally employ a ⌊>client-server>⌋ system architecture, and vary widely in complexity and functionality.@@@@1@15@@oe@26-8-2013 1000001800480@unknown@formal@none@1@S@This wide variability significantly complicates the goal of cross-platform capability, which is routinely at odds with the goal of advanced functionality.@@@@1@21@@oe@26-8-2013 1000001800490@unknown@formal@none@1@S@⌊=Basic applications¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800500@unknown@formal@none@1@S@Basic web applications perform all or most processing from a ⌊>stateless>⌋ ⌊>web server>⌋, and pass the result to the client web browser.@@@@1@22@@oe@26-8-2013 1000001800510@unknown@formal@none@1@S@All user interaction with the application consists of simple exchanges of data requests and server responses.@@@@1@16@@oe@26-8-2013 1000001800520@unknown@formal@none@1@S@These types of applications were the norm in the early phases of ⌊>World Wide Web>⌋ application development.@@@@1@17@@oe@26-8-2013 1000001800530@unknown@formal@none@1@S@Such applications follow a simple ⌊>transaction>⌋ model, identical to that of serving ⌊>static web page>⌋s.@@@@1@15@@oe@26-8-2013 1000001800540@unknown@formal@none@1@S@Today, they are still relatively common, especially where cross-platform compatibility and simplicity are deemed more critical than advanced functionality.@@@@1@19@@oe@26-8-2013 1000001800550@unknown@formal@none@1@S@⌊=Advanced applications¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800560@unknown@formal@none@1@S@Prominent examples of advanced web applications include the Web interface to ⌊>Gmail>⌋, ⌊>A9.com>⌋, and the maps.live.com section of ⌊>Live Search>⌋.@@@@1@20@@oe@26-8-2013 1000001800570@unknown@formal@none@1@S@Such advanced applications routinely depend on additional features found only in the more recent versions of popular web browsers.@@@@1@19@@oe@26-8-2013 1000001800580@unknown@formal@none@1@S@These dependencies include ⌊>Ajax>⌋, ⌊>JavaScript>⌋, ⌊>“Dynamic” HTML>⌋, ⌊>SVG>⌋, and other components of ⌊>rich internet application>⌋s.@@@@1@15@@oe@26-8-2013 1000001800590@unknown@formal@none@1@S@Older versions of popular browsers tend to lack support for certain features.@@@@1@12@@oe@26-8-2013 1000001800600@unknown@formal@none@1@S@⌊=Design strategies¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800610@unknown@formal@none@1@S@Because of the competing interests of cross-platform compatibility and advanced functionality, numerous alternative web application design strategies have emerged.@@@@1@19@@oe@26-8-2013 1000001800620@unknown@formal@none@1@S@Such strategies include:@@@@1@3@@oe@26-8-2013 1000001800630@unknown@formal@none@1@S@⌊=Graceful degradation¦5=⌋@@@@1@2@@oe@26-8-2013 1000001800640@unknown@formal@none@1@S@Graceful degradation attempts to provide the same or similar functionality to all users and platforms, while diminishing that functionality to a ‘least common denominator’ for more limited client browsers.@@@@1@29@@oe@26-8-2013 1000001800650@unknown@formal@none@1@S@For example, a user attempting to use a limited-feature browser to access Gmail may notice that Gmail switches to “Basic Mode,” with reduced functionality.@@@@1@24@@oe@26-8-2013 1000001800660@unknown@formal@none@1@S@Some view this strategy as a lesser form of cross-platform capability.@@@@1@11@@oe@26-8-2013 1000001800670@unknown@formal@none@1@S@⌊=Separation of functionality¦5=⌋@@@@1@3@@oe@26-8-2013 1000001800680@unknown@formal@none@1@S@Separation of functionality attempts to simply omit those subsets of functionality that are not capable from within certain client browsers or operating systems, while still delivering a ‘complete’ application to the user. (see also ⌊>Separation of concerns>⌋).@@@@1@37@@oe@26-8-2013 1000001800690@unknown@formal@none@1@S@⌊=Multiple codebase¦5=⌋@@@@1@2@@oe@26-8-2013 1000001800700@unknown@formal@none@1@S@Multiple codebase applications present different versions of an application depending on the specific client in use.@@@@1@16@@oe@26-8-2013 1000001800710@unknown@formal@none@1@S@This strategy is arguably the most complicated and expensive way to fulfill cross-platform capability, since even different versions of the same client browser (within the same operating system) can differ dramatically between each other.@@@@1@34@@oe@26-8-2013 1000001800720@unknown@formal@none@1@S@This is further complicated by the support for “plugins” which may or may not be present for any given installation of a particular browser version.@@@@1@25@@oe@26-8-2013 1000001800730@unknown@formal@none@1@S@⌊=Third party libraries¦5=⌋@@@@1@3@@oe@26-8-2013 1000001800740@unknown@formal@none@1@S@Third party libraries attempt to simplify cross-platform capability by ‘hiding’ the complexities of client differentiation behind a single, unified API.@@@@1@20@@oe@26-8-2013 1000001800750@unknown@formal@none@1@S@⌊=Testing strategies¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800760@unknown@formal@none@1@S@One complicated aspect of cross-platform web application design is the need for ⌊>software testing>⌋.@@@@1@14@@oe@26-8-2013 1000001800770@unknown@formal@none@1@S@In addition to the complications mentioned previously, there is the additional restriction that some browsers prohibit installation of different versions of the same browser on the same operating system.@@@@1@29@@oe@26-8-2013 1000001800780@unknown@formal@none@1@S@Techniques such as ⌊>full virtualization>⌋ are sometimes used as a workaround for this problem.@@@@1@14@@oe@26-8-2013 1000001800790@unknown@formal@none@1@S@⌊=Traditional applications¦3=⌋@@@@1@2@@oe@26-8-2013 1000001800800@unknown@formal@none@1@S@Although web applications are becoming increasingly popular, many computer users still use traditional ⌊>application software>⌋ which does not rely on a client/web-server architecture.@@@@1@23@@oe@26-8-2013 1000001800810@unknown@formal@none@1@S@The distinction between “traditional” and “web” applications is not always unambiguous, however, because applications have many different features, installation methods and architectures; and some of these can overlap and occur in ways that blur the distinction.@@@@1@36@@oe@26-8-2013 1000001800820@unknown@formal@none@1@S@Nevertheless, this simplifying distinction is a common and useful generalization.@@@@1@10@@oe@26-8-2013 1000001800830@unknown@formal@none@1@S@⌊=Binary software¦4=⌋@@@@1@2@@oe@26-8-2013 1000001800840@unknown@formal@none@1@S@Traditionally in modern computing, application software has been distributed to end-users as ⌊∗binary images∗⌋, which are stored in ⌊>executable>⌋s, a specific type of ⌊>binary file>⌋.@@@@1@25@@oe@26-8-2013 1000001800850@unknown@formal@none@1@S@Such ⌊>executable>⌋s only support the ⌊>operating system>⌋ and ⌊>computer architecture>⌋ that they were built for—which means that making a “cross-platform executable” would be something of a massive task, and is generally not done.@@@@1@33@@oe@26-8-2013 1000001800860@unknown@formal@none@1@S@For software that is distributed as a ⌊>binary>⌋ ⌊>executable>⌋, such as software written in ⌊>C>⌋ or ⌊>C++>⌋, the programmer must ⌊>build the software>⌋ for each different ⌊>operating system>⌋ and ⌊>computer architecture>⌋.@@@@1@31@@oe@26-8-2013 1000001800870@unknown@formal@none@1@S@For example, ⌊>Mozilla>⌋ ⌊>Firefox>⌋, an open-source web browser, is available on ⌊>Microsoft Windows>⌋, ⌊>Mac OS X>⌋ (both ⌊>PowerPC>⌋ and ⌊>x86>⌋ through something Apple calls a ⌊∗⌊>Universal binary>⌋∗⌋), and ⌊>Linux>⌋ on multiple computer architectures.@@@@1@33@@oe@26-8-2013 1000001800880@unknown@formal@none@1@S@The three platforms (in this case, ⌊>Windows>⌋, ⌊>Mac OS X>⌋, and ⌊>Linux>⌋) are separate ⌊>executable>⌋ distributions, although they come from the same ⌊>source code>⌋.@@@@1@24@@oe@26-8-2013 1000001800890@unknown@formal@none@1@S@In the context of binary software, cross-platform programs are written in the source code and then “translated” to each system that it runs on through compiling it on different platforms.@@@@1@30@@oe@26-8-2013 1000001800900@unknown@formal@none@1@S@Also, software can be ⌊>ported>⌋ to a new ⌊>computer architecture>⌋ or ⌊>operating system>⌋ so that the program becomes more cross-platform than it already is.@@@@1@24@@oe@26-8-2013 1000001800910@unknown@formal@none@1@S@For example, a program such as Firefox, which already runs on Windows on the x86 family, can be modified and re-built to run on Linux on the x86 (and potentially other architectures) as well.@@@@1@34@@oe@26-8-2013 1000001800920@unknown@formal@none@1@S@As an alternative to porting, cross-platform virtualization allows applications compiled for one CPU and operating system to run on a system with a different CPU and/or operating system, without modification to the source code or binaries.@@@@1@36@@oe@26-8-2013 1000001800930@unknown@formal@none@1@S@As an example, ⌊>Apple's>⌋ ⌊>Rosetta>⌋ software, which is built into ⌊>Intel>⌋-based Apple Macintosh computers, runs applications compiled for the previous generation of Macs that used ⌊>PowerPC>⌋ CPUs.@@@@1@27@@oe@26-8-2013 1000001800940@unknown@formal@none@1@S@Another example is IBM PowerVM Lx86, which allows Linux/x86 applications to run unmodified on the Linux/Power operating system.@@@@1@18@@oe@26-8-2013 1000001800950@unknown@formal@none@1@S@⌊=Scripts and ⌊>interpreted language>⌋s¦4=⌋@@@@1@4@@oe@26-8-2013 1000001800960@unknown@formal@none@1@S@A script can be considered to be cross-platform if the ⌊>scripting language>⌋ is available on multiple platforms and the script only uses the facilities provided by the language.@@@@1@28@@oe@26-8-2013 1000001800970@unknown@formal@none@1@S@That is, a script written in ⌊>Python>⌋ for a ⌊>Unix-like>⌋ system will likely run with little or no modification on ⌊>Windows>⌋, because Python also runs on ⌊>Windows>⌋; there is also more than one implementation of Python that will run the same scripts (e.g., ⌊>IronPython>⌋ for ⌊>.NET>⌋).@@@@1@46@@oe@26-8-2013 1000001800980@unknown@formal@none@1@S@The same goes for many of the ⌊>open source>⌋ ⌊>programming language>⌋s that are available and are ⌊>scripting language>⌋s.@@@@1@18@@oe@26-8-2013 1000001800990@unknown@formal@none@1@S@Unlike ⌊>binary>⌋ ⌊>executable>⌋s, the same script can be used on all computers that have software to interpret the script.@@@@1@19@@oe@26-8-2013 1000001801000@unknown@formal@none@1@S@This is because the script is generally stored in ⌊>plain text>⌋ in a ⌊>text file>⌋.@@@@1@15@@oe@26-8-2013 1000001801010@unknown@formal@none@1@S@There may be some issues, however, such as the type of ⌊>new line character>⌋ that sits between the lines.@@@@1@19@@oe@26-8-2013 1000001801020@unknown@formal@none@1@S@Generally, however, little or no work has to be done to make a script written for one system, run on another.@@@@1@21@@oe@26-8-2013 1000001801030@unknown@formal@none@1@S@Some quite popular cross-platform scripting or ⌊>interpreted language>⌋s are:@@@@1@9@@oe@26-8-2013 1000001801040@unknown@formal@none@1@S@⌊•⌊#⌊>bash>⌋—A ⌊>Unix shell>⌋ commonly run on ⌊>Linux>⌋ and other modern ⌊>Unix-like>⌋ systems, as well as on ⌊>Windows>⌋ via the ⌊>Cygwin>⌋ ⌊>POSIX>⌋ compatibility layer.#⌋@@@@1@23@@oe@26-8-2013 1000001801050@unknown@formal@none@1@S@⌊#⌊>Python>⌋—A modern ⌊>scripting language>⌋ where the focus is on ⌊>rapid application development>⌋ and ease-of-writing, instead of program run-time efficiency.#⌋@@@@1@19@@oe@26-8-2013 1000001801060@unknown@formal@none@1@S@⌊#⌊>Perl>⌋—A scripting language first released in 1987.@@@@1@7@@oe@26-8-2013 1000001801070@unknown@formal@none@1@S@Used for ⌊>CGI>⌋ ⌊>WWW>⌋ programming, small ⌊>system administration>⌋ tasks, and more.#⌋@@@@1@11@@oe@26-8-2013 1000001801080@unknown@formal@none@1@S@⌊#⌊>PHP>⌋—A ⌊>scripting language>⌋ most popular in use on the ⌊>WWW>⌋ for ⌊>web application>⌋s.#⌋@@@@1@13@@oe@26-8-2013 1000001801090@unknown@formal@none@1@S@⌊#⌊>Ruby>⌋—A scripting language who's purpose is to be object-oriented and easy to read.@@@@1@13@@oe@26-8-2013 1000001801100@unknown@formal@none@1@S@Can also be used on the web through ⌊>Ruby on Rails>⌋.#⌋@@@@1@11@@oe@26-8-2013 1000001801110@unknown@formal@none@1@S@⌊#⌊>Tcl>⌋ - A dynamic programming language, suitable for a wide range of uses, including web and desktop applications, networking, administration, testing and many more.#⌋•⌋@@@@1@24@@oe@26-8-2013 1000001801120@unknown@formal@none@1@S@⌊=Video games¦4=⌋@@@@1@2@@oe@26-8-2013 1000001801130@unknown@formal@none@1@S@Cross-platform is a term that can also apply to ⌊>video game>⌋s.@@@@1@11@@oe@26-8-2013 1000001801140@unknown@formal@none@1@S@Such games are released on a range of ⌊>video game console>⌋s and ⌊>handheld game console>⌋s, which are specialized ⌊>computer>⌋s dedicated to the task of playing games (and thus, are a platform as any other computer).@@@@1@35@@oe@26-8-2013 1000001801150@unknown@formal@none@1@S@Examples of these games include:@@@@1@5@@oe@26-8-2013 1000001801160@unknown@formal@none@1@S@⌊•⌊#⌊>Miner 2049er>⌋, the first major multiplatform game#⌋@@@@1@7@@oe@26-8-2013 1000001801170@unknown@formal@none@1@S@⌊#⌊>Phantasy Star Online>⌋@@@@1@3@@oe@26-8-2013 1000001801180@unknown@formal@none@1@S@⌊>Lara Croft Tomb Raider: Legend>⌋@@@@1@5@@oe@26-8-2013 1000001801190@unknown@formal@none@1@S@⌊>FIFA Series>⌋@@@@1@2@@oe@26-8-2013 1000001801200@unknown@formal@none@1@S@⌊>Shadow of Legend>⌋#⌋•⌋@@@@1@3@@oe@26-8-2013 1000001801210@unknown@formal@none@1@S@… which are spread across a variety of platforms, such as the ⌊>Nintendo GameCube>⌋, ⌊>PlayStation 2>⌋, ⌊>Xbox>⌋, ⌊>PC>⌋, and ⌊>mobile devices>⌋.@@@@1@21@@oe@26-8-2013 1000001801220@unknown@formal@none@1@S@In some cases, depending on the hardware of a particular system it may take longer than expected to create a video game across multiple platforms.@@@@1@25@@oe@26-8-2013 1000001801230@unknown@formal@none@1@S@So, a video game may only get released on a few platforms and then later released on the remaining platforms.@@@@1@20@@oe@26-8-2013 1000001801240@unknown@formal@none@1@S@Typically, this is what occurs when a new system is released, because the ⌊>developer>⌋s of the video game need to become acquainted with the hardware and software associated with the new console.@@@@1@32@@oe@26-8-2013 1000001801250@unknown@formal@none@1@S@Some games may not become cross-platform because of licensing agreements between the ⌊>developer>⌋s and the maker of the ⌊>video game console>⌋ which state that the game will only be made for one particular console.@@@@1@34@@oe@26-8-2013 1000001801260@unknown@formal@none@1@S@As an example, ⌊>Disney>⌋ could create a new game and wish to release it on the latest ⌊>Nintendo>⌋ and ⌊>Sony>⌋ game consoles.@@@@1@22@@oe@26-8-2013 1000001801270@unknown@formal@none@1@S@If ⌊>Disney>⌋ licenses the game with ⌊>Sony>⌋ first, ⌊>Disney>⌋ may be required to only release the game on ⌊>Sony’s>⌋ console for a short time, or indefinitely—effectively prohibiting the game from cross-platform at least for a period of time.@@@@1@38@@oe@26-8-2013 1000001801280@unknown@formal@none@1@S@Several developers have developed ways to play games online while using different platforms.@@@@1@13@@oe@26-8-2013 1000001801290@unknown@formal@none@1@S@Epic Games, Microsoft and Valve Software all have this technology, that allows Xbox 360 gamers and PS3 gamers to play with PC gamers, allowing gamers to finally decide which platform is the best for a game.@@@@1@36@@oe@26-8-2013 1000001801300@unknown@formal@none@1@S@The first game released to allow this interactivity between PC and Console games was ⌊>Quake 3>⌋.@@@@1@16@@oe@26-8-2013 1000001801310@unknown@formal@none@1@S@Games that feature cross-platform online play include:@@@@1@7@@oe@26-8-2013 1000001801320@unknown@formal@none@1@S@⌊•⌊#⌊>Champions Online>⌋@@@@1@2@@oe@26-8-2013 1000001801330@unknown@formal@none@1@S@⌊>Lost Planet: Colonies>⌋@@@@1@3@@oe@26-8-2013 1000001801340@unknown@formal@none@1@S@⌊>Phantasy Star Online>⌋#⌋@@@@1@3@@oe@26-8-2013 1000001801350@unknown@formal@none@1@S@⌊#⌊>Shadowrun>⌋#⌋@@@@1@1@@oe@26-8-2013 1000001801360@unknown@formal@none@1@S@⌊#⌊>UNO>⌋#⌋@@@@1@1@@oe@26-8-2013 1000001801370@unknown@formal@none@1@S@⌊#⌊>Final Fantasy XI Online>⌋#⌋•⌋@@@@1@4@@oe@26-8-2013 1000001801380@unknown@formal@none@1@S@⌊=Platform independent software¦2=⌋@@@@1@3@@oe@26-8-2013 1000001801390@unknown@formal@none@1@S@Software that is platform independent does not rely on any special features of any single platform, or, if it does, handles those special features such that it can deal with multiple platforms.@@@@1@32@@oe@26-8-2013 1000001801400@unknown@formal@none@1@S@All ⌊>algorithm>⌋s, such as the ⌊>quicksort>⌋ algorithm, are able to be implemented on different platforms.@@@@1@15@@oe@26-8-2013 1000001801410@unknown@formal@none@1@S@⌊=Cross-platform programming¦2=⌋@@@@1@2@@oe@26-8-2013 1000001801420@unknown@formal@none@1@S@Cross-platform programming is the practice of actively writing software that will work on more than one platform.@@@@1@17@@oe@26-8-2013 1000001801430@unknown@formal@none@1@S@⌊=Approaches to cross-platform programming¦3=⌋@@@@1@4@@oe@26-8-2013 1000001801440@unknown@formal@none@1@S@There are different ways of approaching the problem of writing a cross-platform application program.@@@@1@14@@oe@26-8-2013 1000001801450@unknown@formal@none@1@S@One such approach is simply to create multiple versions of the same program in different ⌊/source trees/⌋—in other words, the ⌊>Windows>⌋ version of a program might have one set of source code files and the ⌊>Macintosh>⌋ version might have another, while a FOSS *nix system might have another.@@@@1@48@@oe@26-8-2013 1000001801460@unknown@formal@none@1@S@While this is a straightforward approach to the problem, it has the potential to be considerably more expensive in development cost, development time, or both, especially for the corporate entities.@@@@1@30@@oe@26-8-2013 1000001801470@unknown@formal@none@1@S@The idea behind this is to create more than two different programs that have the ability to behave similarly to each other.@@@@1@22@@oe@26-8-2013 1000001801480@unknown@formal@none@1@S@It is also possible that this means of developing a cross-platform application will result in more problems with bug tracking and fixing, because the two different ⌊/source trees/⌋ would have different programmers, and thus different defects in each version.@@@@1@39@@oe@26-8-2013 1000001801490@unknown@formal@none@1@S@The smaller the programming team, the quicker the bug fixes tend to be.@@@@1@13@@oe@26-8-2013 1000001801500@unknown@formal@none@1@S@Another approach that is used is to depend on pre-existing software that hides the differences between the platforms—called ⌊>abstraction>⌋ of the platform—such that the program itself is unaware of the platform it is running on.@@@@1@35@@oe@26-8-2013 1000001801510@unknown@formal@none@1@S@It could be said that such programs are ⌊/platform agnostic/⌋.@@@@1@10@@oe@26-8-2013 1000001801520@unknown@formal@none@1@S@Programs that run on the ⌊>Java>⌋ ⌊>Virtual Machine>⌋ (⌊>JVM>⌋) are built in this fashion.@@@@1@14@@oe@26-8-2013 1000001801530@unknown@formal@none@1@S@Some applications mix various methods of cross-platform programming to create the final application.@@@@1@13@@oe@26-8-2013 1000001801540@unknown@formal@none@1@S@An example of this is the ⌊>Firefox>⌋ ⌊>web browser>⌋, which uses ⌊>abstraction>⌋ to build some of the lower-level components, separate source subtrees for implementing platform specific features (like the GUI), and the implementation of more than one ⌊>scripting language>⌋ to help facilitate ease of portability.@@@@1@45@@oe@26-8-2013 1000001801550@unknown@formal@none@1@S@⌊>Firefox>⌋ implements ⌊>XUL>⌋, ⌊>CSS>⌋ and ⌊>JavaScript>⌋ for extending the browser, in addition to classic ⌊>Netscape>⌋-style browser plugins.@@@@1@17@@oe@26-8-2013 1000001801560@unknown@formal@none@1@S@Much of the browser itself is written in XUL, CSS, and JavaScript, as well.@@@@1@14@@oe@26-8-2013 1000001801570@unknown@formal@none@1@S@⌊=Cross-platform programming toolkits¦3=⌋@@@@1@3@@oe@26-8-2013 1000001801580@unknown@formal@none@1@S@There are a number of tools which are available to help facilitate the process of cross-platform programming:@@@@1@17@@oe@26-8-2013 1000001801590@unknown@formal@none@1@S@⌊•⌊#⌊>Simple DirectMedia Layer>⌋—An ⌊>open source>⌋ cross-platform multimedia library written in C that creates an abstraction over various platforms’ graphics, sound, and input ⌊>API>⌋s.@@@@1@23@@oe@26-8-2013 1000001801600@unknown@formal@none@1@S@It runs on many operating systems including Linux, Windows and Mac OS X and is aimed at games and multimedia applications.#⌋@@@@1@21@@oe@26-8-2013 1000001801610@unknown@formal@none@1@S@⌊#⌊>Cairo>⌋−A ⌊>free software>⌋ library used to provide a vector graphics-based, device-independent API.@@@@1@12@@oe@26-8-2013 1000001801620@unknown@formal@none@1@S@It is designed to provide primitives for 2-dimensional drawing across a number of different backends.@@@@1@15@@oe@26-8-2013 1000001801630@unknown@formal@none@1@S@Cairo is written in C and has bindings for many programming languages.#⌋@@@@1@12@@oe@26-8-2013 1000001801640@unknown@formal@none@1@S@⌊#⌊/ParaGUI/⌋—ParaGUI is a cross-platform high-level application framework and GUI library.@@@@1@10@@oe@26-8-2013 1000001801650@unknown@formal@none@1@S@It can be compiled on various platforms(Linux, Win32, BeOS, Mac OS, ...).@@@@1@12@@oe@26-8-2013 1000001801660@unknown@formal@none@1@S@ParaGUI is based on the Simple DirectMedia Layer (SDL).@@@@1@9@@oe@26-8-2013 1000001801670@unknown@formal@none@1@S@ParaGUI is targeted on crossplatform multimedia applications and embedded devices operating on framebuffer displays.#⌋@@@@1@14@@oe@26-8-2013 1000001801680@unknown@formal@none@1@S@⌊#⌊>wxWidgets>⌋—An open source widget toolkit that is also an ⌊>application framework>⌋.@@@@1@11@@oe@26-8-2013 1000001801690@unknown@formal@none@1@S@It runs on ⌊>Unix-like>⌋ systems with ⌊>X11>⌋, Microsoft Windows and Mac OS X.@@@@1@44@@oe@26-8-2013 1000001801695@unknown@formal@none@1@S@It permits applications written to use it to run on all of the systems that it supports, if the application does not use any ⌊>operating system>⌋-specific programming in addition to it.#⌋@@@@1@44@@oe@26-8-2013 1000001801700@unknown@formal@none@1@S@⌊#⌊>Qt>⌋—An application framework and ⌊>widget toolkit>⌋ for ⌊>Unix-like>⌋ systems with ⌊>X11>⌋, Microsoft Windows, Mac OS X, and other systems—available under both ⌊>open source>⌋ and commercial licenses.#⌋@@@@1@26@@oe@26-8-2013 1000001801710@unknown@formal@none@1@S@⌊#⌊>GTK+>⌋—An open source widget toolkit for Unix-like systems with X11 and Microsoft Windows.#⌋@@@@1@13@@oe@26-8-2013 1000001801720@unknown@formal@none@1@S@⌊#⌊>FLTK>⌋—Another open source cross platform toolkit, but more light weight because it restricts itself to the GUI.#⌋@@@@1@17@@oe@26-8-2013 1000001801730@unknown@formal@none@1@S@⌊#⌊>Mozilla>⌋—An open source platform for building Mac, Windows and Linux applications.#⌋@@@@1@11@@oe@26-8-2013 1000001801740@unknown@formal@none@1@S@⌊#⌊>Mono>⌋ (and more specifically, ⌊>Microsoft .NET>⌋)—A cross-platform framework for applications and programming languages.#⌋@@@@1@13@@oe@26-8-2013 1000001801750@unknown@formal@none@1@S@⌊#⌊/molib/⌋—A robust commercial application toolkit library that abstracts the system calls through C++ objects (such as the file system, database system and thread implementation.).@@@@1@24@@oe@26-8-2013 1000001801760@unknown@formal@none@1@S@This allows for the creation of applications that compile and run under Microsoft Windows, Mac OS X, GNU/Linux, and other uses (Sun OS, AIX, HP-UX, 32/64 bit, SMP).@@@@1@28@@oe@26-8-2013 1000001801770@unknown@formal@none@1@S@Use in concert with ⌊/the sandbox/⌋ to create GUI-based applications.#⌋@@@@1@10@@oe@26-8-2013 1000001801780@unknown@formal@none@1@S@⌊#⌊>fpGUI>⌋ - An open source widget toolkit that is completely implemented in Object Pascal.@@@@1@14@@oe@26-8-2013 1000001801790@unknown@formal@none@1@S@It currently supports Linux, Windows and a bit of Windows CE.@@@@1@11@@oe@26-8-2013 1000001801800@unknown@formal@none@1@S@fpGUI does not rely on any large libraries, instead it talks directly to Xlib (Linux) or GDI (Windows).@@@@1@18@@oe@26-8-2013 1000001801810@unknown@formal@none@1@S@The framework is compiled with the Free Pascal compiler.@@@@1@9@@oe@26-8-2013 1000001801820@unknown@formal@none@1@S@Mac OS support is also in the works.#⌋@@@@1@8@@oe@26-8-2013 1000001801830@unknown@formal@none@1@S@⌊#⌊>Tcl/Tk>⌋ - Tcl (Tool Command Language) is a dynamic programming language, suitable for a wide range of uses, including web and desktop applications, networking, administration, testing and many more.@@@@1@29@@oe@26-8-2013 1000001801840@unknown@formal@none@1@S@Open source and business-friendly, Tcl is a mature yet evolving language that is truly cross platform, easily deployed and highly extensible.@@@@1@21@@oe@26-8-2013 1000001801850@unknown@formal@none@1@S@Tk is a graphical user interface toolkit that takes developing desktop applications to a higher level than conventional approaches.@@@@1@19@@oe@26-8-2013 1000001801860@unknown@formal@none@1@S@Tk is the standard GUI not only for Tcl, but for many other dynamic languages, and can produce rich, native applications that run unchanged across Windows, Mac OS X, Linux and more.@@@@1@32@@oe@26-8-2013 1000001801870@unknown@formal@none@1@S@The combination of Tcl and the Tk GUI toolkit is referred to as Tcl/Tk.#⌋@@@@1@14@@oe@26-8-2013 1000001801880@unknown@formal@none@1@S@⌊#⌊>XVT>⌋ is a cross-platform toolkit for creating enterprise and desktop applications in C/C++ on Windows, Linux and Unix (Solaris, HPUX, AIX), and Mac.@@@@1@23@@oe@26-8-2013 1000001801890@unknown@formal@none@1@S@Most recent release is 5.8, in April 2007#⌋•⌋@@@@1@8@@oe@26-8-2013 1000001801900@unknown@formal@none@1@S@⌊=Cross-platform development environments¦3=⌋@@@@1@3@@oe@26-8-2013 1000001801910@unknown@formal@none@1@S@Cross-platform applications can also be built using proprietary ⌊>IDE>⌋s, or so-called ⌊>Rapid Application Development>⌋ tools.@@@@1@15@@oe@26-8-2013 1000001801920@unknown@formal@none@1@S@There are a number of development environments which allow developers to build and deploy applications across multiple platforms:@@@@1@18@@oe@26-8-2013 1000001801930@unknown@formal@none@1@S@⌊•⌊#⌊>Eclipse>⌋—An Open source ⌊>software framework>⌋ and ⌊>IDE>⌋ extendable through plug-ins including the C++ Development Toolkit.@@@@1@15@@oe@26-8-2013 1000001801940@unknown@formal@none@1@S@Eclipse is available on any operating system with a modern Java virtual machine (including Windows, Linux, and Mac OS X, Sun, HP-UX, and other systems).#⌋@@@@1@25@@oe@26-8-2013 1000001801950@unknown@formal@none@1@S@⌊#⌊>IntelliJ IDEA>⌋—A proprietary ⌊>IDE>⌋#⌋@@@@1@4@@oe@26-8-2013 1000001801960@unknown@formal@none@1@S@⌊#⌊>NetBeans>⌋—An Open source ⌊>software framework>⌋ and ⌊>IDE>⌋ extendable through plug-ins.@@@@1@10@@oe@26-8-2013 1000001801970@unknown@formal@none@1@S@NetBeans is available on any operating system with a modern Java virtual machine (including Windows, Linux, and Mac OS X, Sun, HP-UX, and other systems).@@@@1@25@@oe@26-8-2013 1000001801980@unknown@formal@none@1@S@Similar to Eclipse in features and functionality.@@@@1@7@@oe@26-8-2013 1000001801990@unknown@formal@none@1@S@Promoted by ⌊>Sun Microsystems>⌋#⌋@@@@1@4@@oe@26-8-2013 1000001802000@unknown@formal@none@1@S@⌊#⌊>Omnis Studio>⌋—A proprietary ⌊>IDE>⌋ or Rapid Application Development tool for creating enterprise and web applications for Windows, Linux, and Mac OS X.#⌋@@@@1@22@@oe@26-8-2013 1000001802010@unknown@formal@none@1@S@⌊#⌊>Runtime Revolution>⌋—a proprietary ⌊>IDE>⌋, compiler engine and CGI builder that ⌊>cross compile>⌋s to ⌊>Windows>⌋, ⌊>Mac OS X>⌋ (⌊>PPC>⌋, ⌊>Intel>⌋), ⌊>Linux>⌋, ⌊>Solaris>⌋, ⌊>BSD>⌋, and ⌊>Irix>⌋.#⌋@@@@1@24@@oe@26-8-2013 1000001802020@unknown@formal@none@1@S@⌊#⌊>Code::Blocks>⌋—A free/open source, cross platform IDE.@@@@1@6@@oe@26-8-2013 1000001802030@unknown@formal@none@1@S@It is developed in C++ using wxWidgets.@@@@1@7@@oe@26-8-2013 1000001802040@unknown@formal@none@1@S@Using a plugin architecture, its capabilities and features are defined by the provided plugins.#⌋@@@@1@14@@oe@26-8-2013 1000001802050@unknown@formal@none@1@S@⌊#⌊>Lazarus (software)>⌋—Lazarus is a cross platform Visual IDE developed for and supported by the open source Free Pascal compiler.@@@@1@19@@oe@26-8-2013 1000001802060@unknown@formal@none@1@S@It aims to provide a Rapid Application Development Delphi Clone for Pascal and Object Pascal developers.#⌋@@@@1@16@@oe@26-8-2013 1000001802070@unknown@formal@none@1@S@⌊#⌊>REALbasic>⌋—REALbasic (RB) is an object-oriented dialect of the BASIC programming language developed and commercially marketed by REAL Software, Inc in Austin, Texas for Mac OS X, Microsoft Windows, and Linux.#⌋•⌋@@@@1@30@@oe@26-8-2013 1000001802080@unknown@formal@none@1@S@⌊=Criticisms of cross-platform development¦2=⌋@@@@1@4@@oe@26-8-2013 1000001802090@unknown@formal@none@1@S@There are certain issues associated with cross-platform development.@@@@1@8@@oe@26-8-2013 1000001802100@unknown@formal@none@1@S@Some of these include:@@@@1@4@@oe@26-8-2013 1000001802110@unknown@formal@none@1@S@⌊•⌊#Testing cross-platform applications may also be considerably more complicated, since different platforms can exhibit slightly different behaviors or subtle bugs.@@@@1@20@@oe@26-8-2013 1000001802120@unknown@formal@none@1@S@This problem has led some developers to deride cross-platform development as “Write Once, Debug Everywhere”, a take on Sun’s ⌊>“Write Once, Run Anywhere”>⌋ marketing slogan.#⌋@@@@1@25@@oe@26-8-2013 1000001802130@unknown@formal@none@1@S@⌊#Developers are often restricted to using the ⌊>lowest common denominator>⌋ subset of features which are available on all platforms.@@@@1@19@@oe@26-8-2013 1000001802140@unknown@formal@none@1@S@This may hinder the application's performance or prohibit developers from using platforms’ most advanced features.#⌋@@@@1@15@@oe@26-8-2013 1000001802150@unknown@formal@none@1@S@⌊#Different platforms often have different user interface conventions, which cross-platform applications do not always accommodate.@@@@1@15@@oe@26-8-2013 1000001802160@unknown@formal@none@1@S@For example, applications developed for Mac OS X and ⌊>GNOME>⌋ are supposed to place the most important button on the right-hand side of windows and dialogs, whereas Microsoft Windows and ⌊>KDE>⌋ have the opposite convention.@@@@1@35@@oe@26-8-2013 1000001802170@unknown@formal@none@1@S@Though many of these differences are subtle, a cross-platform application which does not conform appropriately to these conventions may feel clunky or alien to the user.@@@@1@26@@oe@26-8-2013 1000001802180@unknown@formal@none@1@S@When working quickly, such opposing conventions may even result in ⌊>data loss>⌋, such as in a ⌊>dialog box>⌋ confirming whether the user wants to save or discard changes to a file.#⌋@@@@1@31@@oe@26-8-2013 1000001802190@unknown@formal@none@1@S@⌊#Scripting languages and virtual machines must be translated into native executable code each time the application is executed, imposing a performance penalty.@@@@1@22@@oe@26-8-2013 1000001802200@unknown@formal@none@1@S@This performance hit can be alleviated using advanced techniques like ⌊>just-in-time compilation>⌋; but even using such techniques, some performance overhead may be unavoidable.#⌋•⌋@@@@1@23@@oe@26-8-2013 1000001900010@unknown@formal@none@1@S@⌊δDataδ⌋@@@@1@1@@oe@26-8-2013 1000001900020@unknown@formal@none@1@S@⌊∗Data∗⌋ (singular: ⌊∗datum∗⌋) are collected of natural phenomena descriptors including the results of ⌊>experience>⌋, ⌊>observation>⌋ or ⌊>experiment>⌋, or a set of ⌊>premise>⌋s.@@@@1@22@@oe@26-8-2013 1000001900030@unknown@formal@none@1@S@This may consist of ⌊>number>⌋s, ⌊>word>⌋s, or ⌊>image>⌋s, particularly as ⌊>measurement>⌋s or observations of a set of ⌊>variable>⌋s.@@@@1@18@@oe@26-8-2013 1000001900040@unknown@formal@none@1@S@⌊=Etymology¦2=⌋@@@@1@1@@oe@26-8-2013 1000001900050@unknown@formal@none@1@S@The word ⌊/data /⌋is the plural of ⌊>Latin>⌋ ⌊/⌊>datum>⌋/⌋, ⌊>neuter>⌋ past ⌊>participle>⌋ of ⌊/dare/⌋, "to give", hence "something given".@@@@1@19@@oe@26-8-2013 1000001900060@unknown@formal@none@1@S@The ⌊>past participle>⌋ of "to give" has been used for millennia, in the sense of a statement accepted at face value; one of the works of ⌊>Euclid>⌋, circa 300 BC, was the ⌊/Dedomena/⌋ (in Latin, ⌊/Data/⌋).@@@@1@36@@oe@26-8-2013 1000001900070@unknown@formal@none@1@S@In discussions of problems in ⌊>geometry>⌋, ⌊>mathematics>⌋, ⌊>engineering>⌋, and so on, the terms ⌊/givens/⌋ and ⌊/data/⌋ are used interchangeably.@@@@1@19@@oe@26-8-2013 1000001900080@unknown@formal@none@1@S@Such usage is the origin of ⌊/data/⌋ as a concept in ⌊>computer science>⌋:dataare numbers, words, images, etc., accepted as they stand.@@@@1@21@@oe@26-8-2013 1000001900090@unknown@formal@none@1@S@Pronounced dey-tuh, dat-uh, or dah-tuh.@@@@1@5@@oe@26-8-2013 1000001900100@unknown@formal@none@1@S@⌊>Experimental data>⌋ are data generated within the context of a scientific investigation.@@@@1@12@@oe@26-8-2013 1000001900110@unknown@formal@none@1@S@Mathematically, data can be grouped in many ways.@@@@1@8@@oe@26-8-2013 1000001900120@unknown@formal@none@1@S@⌊=Usage in English¦2=⌋@@@@1@3@@oe@26-8-2013 1000001900130@unknown@formal@none@1@S@In ⌊>English>⌋, the word ⌊/datum/⌋ is still used in the general sense of "something given", and more specifically in ⌊>cartography>⌋, ⌊>geography>⌋, ⌊>geology>⌋, ⌊>NMR>⌋ and ⌊>drafting>⌋ to mean a reference point, reference line, or reference surface.@@@@1@35@@oe@26-8-2013 1000001900140@unknown@formal@none@1@S@More generally speaking, any measurement or result can be called a (single) ⌊/datum/⌋, but ⌊/data point/⌋ is more common.@@@@1@19@@oe@26-8-2013 1000001900150@unknown@formal@none@1@S@Both ⌊/datums/⌋ (see usage in ⌊>datum>⌋ article) and the originally Latin plural ⌊/data/⌋ are used as the plural of ⌊/datum/⌋ in English, but ⌊/data/⌋ is more commonly treated as a ⌊>mass noun>⌋ and used in the ⌊>singular>⌋, especially in day-to-day usage.@@@@1@41@@oe@26-8-2013 1000001900160@unknown@formal@none@1@S@For example, "This is all the data from the experiment".@@@@1@10@@oe@26-8-2013 1000001900170@unknown@formal@none@1@S@This usage is inconsistent with the rules of Latin grammar and traditional English, which would instead suggest "These are all the data from the experiment".@@@@1@25@@oe@26-8-2013 1000001900180@unknown@formal@none@1@S@Some British and UN academic, scientific, and professional ⌊>style guides>⌋ (e.g., see page 43 of the ⌊> World Health Organization Style Guide>⌋) request that authors treat ⌊/data/⌋ as a plural noun.@@@@1@31@@oe@26-8-2013 1000001900190@unknown@formal@none@1@S@Other international organization, such as the IEEE computing society , allow its usage as either a mass noun or plural based on author preference.@@@@1@24@@oe@26-8-2013 1000001900200@unknown@formal@none@1@S@It is now usually treated as a singular mass noun in informal usage, but usage in scientific publications shows a strong UK/U.S divide.@@@@1@23@@oe@26-8-2013 1000001900210@unknown@formal@none@1@S@U.S. usage tends to treat ⌊/data/⌋ in the singular, including in serious and academic publishing, although some major newspapers (such as the ⌊>New York Times>⌋) regularly use it in the plural.@@@@1@31@@oe@26-8-2013 1000001900220@unknown@formal@none@1@S@"The plural usage is still common, as this headline from the New York Times attests: “Data Are Elusive on the Homeless.”@@@@1@21@@oe@26-8-2013 1000001900230@unknown@formal@none@1@S@Sometimes scientists think of data as plural, as in ⌊/These data do not support the conclusions./⌋@@@@1@16@@oe@26-8-2013 1000001900240@unknown@formal@none@1@S@But more often scientists and researchers think of data as a singular mass entity like information, and most people now follow this in general usage.@@@@1@25@@oe@26-8-2013 1000001900250@unknown@formal@none@1@S@" UK usage now widely accepts treating ⌊/data/⌋ as singular in standard English, including everyday newspaper usage at least in non-scientific use.@@@@1@22@@oe@26-8-2013 1000001900260@unknown@formal@none@1@S@UK scientific publishing usually still prefers treating it as a plural..@@@@1@11@@oe@26-8-2013 1000001900270@unknown@formal@none@1@S@Some UK university style guides recommend using ⌊/data/⌋ for both singular and plural use and some recommend treating it only as a singular in connection with computers.@@@@1@27@@oe@26-8-2013 1000001900280@unknown@formal@none@1@S@⌊=Uses of ⌊/data/⌋ in science and computing¦2=⌋@@@@1@7@@oe@26-8-2013 1000001900290@unknown@formal@none@1@S@⌊/Raw data/⌋ are ⌊>number>⌋s, ⌊>characters>⌋, ⌊>image>⌋s or other outputs from devices to convert physical quantities into symbols, in a very broad sense.@@@@1@22@@oe@26-8-2013 1000001900300@unknown@formal@none@1@S@Such data are typically further ⌊>processed>⌋ by a human or ⌊>input>⌋ into a ⌊>computer>⌋, ⌊>stored>⌋ and processed there, or transmitted (⌊>output>⌋) to another human or computer.@@@@1@26@@oe@26-8-2013 1000001900310@unknown@formal@none@1@S@⌊/Raw data/⌋ is a relative term; data processing commonly occurs by stages, and the "processed data" from one stage may be considered the "raw data" of the next.@@@@1@28@@oe@26-8-2013 1000001900320@unknown@formal@none@1@S@Mechanical computing devices are classified according to the means by which they represent data.@@@@1@14@@oe@26-8-2013 1000001900330@unknown@formal@none@1@S@An ⌊>analog computer>⌋ represents a datum as a voltage, distance, position, or other physical quantity.@@@@1@15@@oe@26-8-2013 1000001900340@unknown@formal@none@1@S@A ⌊>digital computer>⌋ represents a datum as a sequence of symbols drawn from a fixed ⌊>alphabet>⌋.@@@@1@16@@oe@26-8-2013 1000001900350@unknown@formal@none@1@S@The most common digital computers use a binary alphabet, that is, an alphabet of two characters, typically denoted "0" and "1".@@@@1@21@@oe@26-8-2013 1000001900360@unknown@formal@none@1@S@More familiar representations, such as numbers or letters, are then constructed from the binary alphabet.@@@@1@15@@oe@26-8-2013 1000001900370@unknown@formal@none@1@S@Some special forms of data are distinguished.@@@@1@7@@oe@26-8-2013 1000001900380@unknown@formal@none@1@S@A ⌊>computer program>⌋ is a collection of data, which can be interpreted as instructions.@@@@1@14@@oe@26-8-2013 1000001900390@unknown@formal@none@1@S@Most computer languages make a distinction between programs and the other data on which programs operate, but in some languages, notably ⌊>Lisp>⌋ and similar languages, programs are essentially indistinguishable from other data.@@@@1@32@@oe@26-8-2013 1000001900400@unknown@formal@none@1@S@It is also useful to distinguish ⌊>metadata>⌋, that is, a description of other data.@@@@1@14@@oe@26-8-2013 1000001900410@unknown@formal@none@1@S@A similar yet earlier term for metadata is "ancillary data."@@@@1@10@@oe@26-8-2013 1000001900420@unknown@formal@none@1@S@The prototypical example of metadata is the library catalog, which is a description of the contents of books.@@@@1@18@@oe@26-8-2013 1000001900430@unknown@formal@none@1@S@⌊=Meaning of data, information and knowledge¦2=⌋@@@@1@6@@oe@26-8-2013 1000001900440@unknown@formal@none@1@S@The terms ⌊>information>⌋ and ⌊>knowledge>⌋ are frequently used for overlapping concepts.@@@@1@11@@oe@26-8-2013 1000001900450@unknown@formal@none@1@S@The main difference is in the level of ⌊>abstraction>⌋ being considered.@@@@1@11@@oe@26-8-2013 1000001900460@unknown@formal@none@1@S@Data is the lowest level of abstraction, information is the next level, and finally, knowledge is the highest level among all three.@@@@1@22@@oe@26-8-2013 1000001900470@unknown@formal@none@1@S@For example, the height of Mt. Everest is generally considered as "data", a book on Mt. Everest geological characteristics may be considered as "information", and a report containing practical information on the best way to reach Mt. Everest's peak may be considered as "knowledge".@@@@1@44@@oe@26-8-2013 1000001900480@unknown@formal@none@1@S@Information as a concept bears a diversity of meanings, from everyday usage to technical settings.@@@@1@15@@oe@26-8-2013 1000001900490@unknown@formal@none@1@S@Generally speaking, the concept of information is closely related to notions of constraint, communication, control, data, form, instruction, knowledge, meaning, mental stimulus, pattern, perception, and representation.@@@@1@26@@oe@26-8-2013 1000001900500@unknown@formal@none@1@S@Beynon-Davies uses the concept of a ⌊>sign>⌋ to distinguish between ⌊>data>⌋ and ⌊>information>⌋.@@@@1@13@@oe@26-8-2013 1000001900510@unknown@formal@none@1@S@Data are symbols.@@@@1@3@@oe@26-8-2013 1000001900520@unknown@formal@none@1@S@Information occurs when symbols are used to refer to something.@@@@1@10@@oe@26-8-2013 1000002000010@unknown@formal@none@1@S@⌊δData analysisδ⌋@@@@1@2@@oe@26-8-2013 1000002000020@unknown@formal@none@1@S@⌊∗Data analysis∗⌋ is the process of looking at and summarizing ⌊∗⌊>data>⌋∗⌋ with the intent to extract useful ⌊>information>⌋ and develop conclusions.@@@@1@21@@oe@26-8-2013 1000002000030@unknown@formal@none@1@S@Data analysis is closely related to ⌊>data mining>⌋, but data mining tends to focus on larger data sets, with less emphasis on making ⌊>inference>⌋, and often uses data that was originally collected for a different purpose.@@@@1@36@@oe@26-8-2013 1000002000040@unknown@formal@none@1@S@In ⌊>statistical applications>⌋, some people divide data analysis into ⌊>descriptive statistics>⌋, ⌊>exploratory data analysis>⌋ and ⌊>confirmatory data analysis>⌋, where the EDA focuses on discovering new features in the data, and CDA on confirming or falsifying existing hypotheses.@@@@1@37@@oe@26-8-2013 1000002000050@unknown@formal@none@1@S@Data analysis assumes different aspects, and possibly different names, in different fields.@@@@1@12@@oe@26-8-2013 1000002000060@unknown@formal@none@1@S@The term ⌊/data analysis/⌋ is also used as a synonym for ⌊>data modeling>⌋, which is unrelated to the subject of this article.@@@@1@22@@oe@26-8-2013 1000002000070@unknown@formal@none@1@S@⌊=Nuclear and particle physics¦2=⌋@@@@1@4@@oe@26-8-2013 1000002000080@unknown@formal@none@1@S@In ⌊>nuclear>⌋ and ⌊>particle physics>⌋ the data usually originate from the ⌊>experimental apparatus>⌋ via a ⌊>data acquisition>⌋ system.@@@@1@18@@oe@26-8-2013 1000002000090@unknown@formal@none@1@S@It is then processed, in a step usually called ⌊/data reduction/⌋, to apply calibrations and to extract physically significant information.@@@@1@20@@oe@26-8-2013 1000002000100@unknown@formal@none@1@S@Data reduction is most often, especially in large particle physics experiments, an automatic, batch-mode operation carried out by software written ad-hoc.@@@@1@21@@oe@26-8-2013 1000002000110@unknown@formal@none@1@S@The resulting data ⌊/n-tuples/⌋ are then scrutinized by the physicists, using specialized software tools like ⌊>ROOT>⌋ or ⌊>PAW>⌋, comparing the results of the experiment with theory.@@@@1@26@@oe@26-8-2013 1000002000120@unknown@formal@none@1@S@The theoretical models are often difficult to compare directly with the results of the experiments, so they are used instead as input for ⌊>Monte Carlo simulation>⌋ software like ⌊>Geant4>⌋ that predict the response of the detector to a given theoretical event, producing ⌊∗simulated events∗⌋ which are then compared to experimental data.@@@@1@51@@oe@26-8-2013 1000002000130@unknown@formal@none@1@S@See also: ⌊>Computational physics>⌋.@@@@1@4@@oe@26-8-2013 1000002000140@unknown@formal@none@1@S@⌊=Social sciences¦2=⌋@@@@1@2@@oe@26-8-2013 1000002000150@unknown@formal@none@1@S@⌊>Qualitative data analysis>⌋ (QDA) or ⌊>qualitative research>⌋ is the analysis of non-numerical data, for example words, photographs, observations, etc..@@@@1@19@@oe@26-8-2013 1000002000160@unknown@formal@none@1@S@⌊=Information technology¦2=⌋@@@@1@2@@oe@26-8-2013 1000002000170@unknown@formal@none@1@S@A special case is the ⌊>data analysis in information technology audits>⌋.@@@@1@11@@oe@26-8-2013 1000002100010@unknown@formal@none@1@S@⌊δData miningδ⌋@@@@1@2@@oe@26-8-2013 1000002100020@unknown@formal@none@1@S@⌊∗Data mining∗⌋ is the process of ⌊>sorting>⌋ through large amounts of data and picking out relevant information.@@@@1@17@@oe@26-8-2013 1000002100030@unknown@formal@none@1@S@It is usually used by ⌊>business intelligence>⌋ organizations, and ⌊>financial analyst>⌋s, but is increasingly being used in the sciences to extract information from the enormous ⌊>data set>⌋s generated by modern experimental and observational methods.@@@@1@34@@oe@26-8-2013 1000002100040@unknown@formal@none@1@S@It has been described as "the nontrivial extraction of implicit, previously unknown, and potentially useful ⌊>information>⌋ from ⌊>data>⌋" and "the science of extracting useful information from large ⌊>data set>⌋s or ⌊>database>⌋s."@@@@1@31@@oe@26-8-2013 1000002100050@unknown@formal@none@1@S@Data mining in relation to ⌊>enterprise resource planning>⌋ is the statistical and logical analysis of large sets of transaction data, looking for patterns that can aid decision making.@@@@1@28@@oe@26-8-2013 1000002100060@unknown@formal@none@1@S@⌊=Background¦2=⌋@@@@1@1@@oe@26-8-2013 1000002100070@unknown@formal@none@1@S@Traditionally, business analysts have performed the task of extracting useful ⌊>information>⌋ from recorded ⌊>data>⌋, but the increasing volume of data in modern business and science calls for computer-based approaches.@@@@1@29@@oe@26-8-2013 1000002100080@unknown@formal@none@1@S@As ⌊>data set>⌋s have grown in size and complexity, there has been a shift away from direct hands-on data analysis toward indirect, automatic data analysis using more complex and sophisticated tools.@@@@1@31@@oe@26-8-2013 1000002100090@unknown@formal@none@1@S@The modern technologies of ⌊>computers>⌋, ⌊>networks>⌋, and ⌊>sensors>⌋ have made ⌊>data collection>⌋ and organization much easier.@@@@1@16@@oe@26-8-2013 1000002100100@unknown@formal@none@1@S@However, the captured data needs to be converted into ⌊>information>⌋ and ⌊>knowledge>⌋ to become useful.@@@@1@15@@oe@26-8-2013 1000002100110@unknown@formal@none@1@S@Data mining is the entire process of applying computer-based ⌊>methodology>⌋, including new techniques for ⌊>knowledge discovery>⌋, to data.@@@@1@18@@oe@26-8-2013 1000002100120@unknown@formal@none@1@S@Data mining identifies trends within data that go beyond simple analysis.@@@@1@11@@oe@26-8-2013 1000002100130@unknown@formal@none@1@S@Through the use of sophisticated algorithms, non-statistician users have the opportunity to identify key attributes of business processes and target opportunities.@@@@1@21@@oe@26-8-2013 1000002100140@unknown@formal@none@1@S@However, abdicating control of this process from the statistician to the machine may result in false-positives or no useful results at all.@@@@1@22@@oe@26-8-2013 1000002100150@unknown@formal@none@1@S@Although data mining is a relatively new term, the technology is not.@@@@1@12@@oe@26-8-2013 1000002100160@unknown@formal@none@1@S@For many years, businesses have used powerful computers to sift through volumes of data such as supermarket scanner data to produce market research reports (although reporting is not considered to be data mining).@@@@1@33@@oe@26-8-2013 1000002100170@unknown@formal@none@1@S@Continuous innovations in computer processing power, disk storage, and statistical software are dramatically increasing the accuracy and usefulness of data analysis.@@@@1@21@@oe@26-8-2013 1000002100180@unknown@formal@none@1@S@Web 2.0 technologies have generated a colossal amount of user-generated data and media, making it hard to aggregate and consume information in a meaningful way without getting overloaded.@@@@1@28@@oe@26-8-2013 1000002100190@unknown@formal@none@1@S@Given the size of the data on the Internet, and the difficulty in contextualizing it, it is unclear whether the traditional approach to data mining is computationally viable.@@@@1@28@@oe@26-8-2013 1000002100200@unknown@formal@none@1@S@The term data mining is often used to apply to the two separate processes of knowledge discovery and ⌊>prediction>⌋.@@@@1@19@@oe@26-8-2013 1000002100210@unknown@formal@none@1@S@Knowledge discovery provides explicit information that has a readable form and can be understood by a user.@@@@1@17@@oe@26-8-2013 1000002100220@unknown@formal@none@1@S@⌊>Forecasting>⌋, or ⌊>predictive modeling>⌋ provides predictions of future events and may be transparent and readable in some approaches (e.g., rule-based systems) and opaque in others such as ⌊>neural network>⌋s.@@@@1@29@@oe@26-8-2013 1000002100230@unknown@formal@none@1@S@Moreover, some data-mining systems such as neural networks are inherently geared towards prediction and pattern recognition, rather than knowledge discovery.@@@@1@20@@oe@26-8-2013 1000002100240@unknown@formal@none@1@S@⌊>Metadata>⌋, or data about a given data set, are often expressed in a condensed ⌊/data-minable/⌋ format, or one that facilitates the practice of data mining.@@@@1@25@@oe@26-8-2013 1000002100250@unknown@formal@none@1@S@Common examples include executive summaries and scientific abstracts.@@@@1@8@@oe@26-8-2013 1000002100260@unknown@formal@none@1@S@Data mining relies on the use of real world data.@@@@1@10@@oe@26-8-2013 1000002100270@unknown@formal@none@1@S@This data is extremely vulnerable to ⌊>collinearity>⌋ precisely because data from the real world may have unknown interrelations.@@@@1@18@@oe@26-8-2013 1000002100280@unknown@formal@none@1@S@An unavoidable weakness of data mining is that the critical data that may expose any relationship might have never been observed.@@@@1@21@@oe@26-8-2013 1000002100290@unknown@formal@none@1@S@Alternative approaches using an experiment-based approach such as ⌊>Choice Modelling>⌋ for human-generated data may be used.@@@@1@16@@oe@26-8-2013 1000002100300@unknown@formal@none@1@S@Inherent correlations are either controlled for or removed altogether through the construction of an ⌊>experimental design>⌋.@@@@1@16@@oe@26-8-2013 1000002100310@unknown@formal@none@1@S@Recently, there were some efforts to define a standard for data mining, for example the ⌊>CRISP-DM>⌋ standard for analysis processes or the ⌊>Java Data-Mining>⌋ Standard.@@@@1@25@@oe@26-8-2013 1000002100320@unknown@formal@none@1@S@Independent of these standardization efforts, freely available open-source software systems like ⌊>RapidMiner>⌋ and ⌊> Weka>⌋ have become an informal standard for defining data-mining processes.@@@@1@24@@oe@26-8-2013 1000002100330@unknown@formal@none@1@S@⌊=Privacy concerns¦2=⌋@@@@1@2@@oe@26-8-2013 1000002100340@unknown@formal@none@1@S@There are also ⌊>privacy>⌋ and ⌊>human rights>⌋ concerns associated with data mining, specifically regarding the source of the data analyzed.@@@@1@20@@oe@26-8-2013 1000002100350@unknown@formal@none@1@S@Data mining provides information that may be difficult to obtain otherwise.@@@@1@11@@oe@26-8-2013 1000002100360@unknown@formal@none@1@S@When the data collected involves individual people, there are many questions concerning privacy, legality, and ethics.@@@@1@16@@oe@26-8-2013 1000002100370@unknown@formal@none@1@S@In particular, data mining government or commercial data sets for national security or law enforcement purposes has raised privacy concerns.@@@@1@20@@oe@26-8-2013 1000002100380@unknown@formal@none@1@S@⌊=Notable uses of data mining¦2=⌋@@@@1@5@@oe@26-8-2013 1000002100390@unknown@formal@none@1@S@⌊=Combatting Terrorism¦3=⌋@@@@1@2@@oe@26-8-2013 1000002100400@unknown@formal@none@1@S@Data mining has been cited as the method by which the U.S. Army unit ⌊>Able Danger>⌋ had identified the ⌊>September 11, 2001 attacks>⌋ leader, ⌊>Mohamed Atta>⌋, and three other 9/11 hijackers as possible members of an ⌊>Al Qaeda>⌋ cell operating in the U.S. more than a year before the attack.@@@@1@50@@oe@26-8-2013 1000002100410@unknown@formal@none@1@S@It has been suggested that both the ⌊>Central Intelligence Agency>⌋ and the ⌊>Canadian Security Intelligence Service>⌋ have employed this method.@@@@1@20@@oe@26-8-2013 1000002100420@unknown@formal@none@1@S@Previous data mining to stop terrorist programs under the US government include the Terrorism Information Awareness (TIA) program, Computer-Assisted Passenger Prescreening System (CAPPS II), Analysis, Dissemination, Visualization, Insight, and Semantic Enhancement (ADVISE), Multistate Anti-Terrorism Information Exchange (MATRIX), and the Secure Flight program ⌊> Security-MSNBC>⌋.@@@@1@44@@oe@26-8-2013 1000002100430@unknown@formal@none@1@S@These programs have been discontinued due to controversy over whether they violate the US Constitution's 4th amendment.@@@@1@17@@oe@26-8-2013 1000002100440@unknown@formal@none@1@S@⌊=Games¦3=⌋@@@@1@1@@oe@26-8-2013 1000002100450@unknown@formal@none@1@S@Since the early 1960s, with the availability of ⌊>oracle>⌋s for certain ⌊>combinatorial game>⌋s, also called ⌊>tablebase>⌋s (e.g. for 3x3-chess) with any beginning configuration, small-board ⌊>dots-and-boxes>⌋, small-board-hex, and certain endgames in chess, dots-and-boxes, and hex; a new area for data mining has been opened up.@@@@1@44@@oe@26-8-2013 1000002100460@unknown@formal@none@1@S@This is the extraction of human-usable strategies from these oracles.@@@@1@10@@oe@26-8-2013 1000002100470@unknown@formal@none@1@S@Current pattern recognition approaches do not seem to fully have the required high level of abstraction in order to be applied successfully.@@@@1@22@@oe@26-8-2013 1000002100480@unknown@formal@none@1@S@Instead, extensive experimentation with the tablebases, combined with an intensive study of tablebase-answers to well designed problems and with knowledge of prior art, i.e. pre-tablebase knowledge, is used to yield insightful patterns.@@@@1@32@@oe@26-8-2013 1000002100490@unknown@formal@none@1@S@⌊>Berlekamp>⌋ in dots-and-boxes etc. and ⌊>John Nunn>⌋ in ⌊>chess>⌋ ⌊>endgames>⌋ are notable examples of researchers doing this work, though they were not and are not involved in tablebase generation.@@@@1@29@@oe@26-8-2013 1000002100500@unknown@formal@none@1@S@⌊=Business¦3=⌋@@@@1@1@@oe@26-8-2013 1000002100510@unknown@formal@none@1@S@Data mining in ⌊>customer relationship management>⌋ applications can contribute significantly to the bottom line.@@@@1@14@@oe@26-8-2013 1000002100520@unknown@formal@none@1@S@Rather than contacting a prospect or customer through a call center or sending mail, only prospects that are predicted to have a high likelihood of responding to an offer are contacted.@@@@1@31@@oe@26-8-2013 1000002100530@unknown@formal@none@1@S@More sophisticated methods may be used to optimize across campaigns so that we can predict which channel and which offer an individual is most likely to respond to - across all potential offers.@@@@1@33@@oe@26-8-2013 1000002100540@unknown@formal@none@1@S@Finally, in cases where many people will take an action without an offer, uplift modeling can be used to determine which people will have the greatest increase in responding if given an offer.@@@@1@33@@oe@26-8-2013 1000002100550@unknown@formal@none@1@S@⌊>Data clustering>⌋ can also be used to automatically discover the segments or groups within a customer data set.@@@@1@18@@oe@26-8-2013 1000002100560@unknown@formal@none@1@S@Businesses employing data mining quickly see a return on investment, but also they recognize that the number of predictive models can quickly become very large.@@@@1@25@@oe@26-8-2013 1000002100570@unknown@formal@none@1@S@Rather than one model to predict which customers will ⌊>churn>⌋, a business could build a separate model for each region and customer type.@@@@1@23@@oe@26-8-2013 1000002100580@unknown@formal@none@1@S@Then instead of sending an offer to all people that are likely to churn, it may only want to send offers to customers that will likely take to offer.@@@@1@29@@oe@26-8-2013 1000002100590@unknown@formal@none@1@S@And finally, it may also want to determine which customers are going to be profitable over a window of time and only send the offers to those that are likely to be profitable.@@@@1@33@@oe@26-8-2013 1000002100600@unknown@formal@none@1@S@In order to maintain this quantity of models, they need to manage model versions and move to ⌊/automated data mining/⌋.@@@@1@20@@oe@26-8-2013 1000002100610@unknown@formal@none@1@S@Data mining can also be helpful to human-resources departments in identifying the characteristics of their most successful employees.@@@@1@18@@oe@26-8-2013 1000002100620@unknown@formal@none@1@S@Information obtained, such as universities attended by highly successful employees, can help HR focus recruiting efforts accordingly.@@@@1@17@@oe@26-8-2013 1000002100630@unknown@formal@none@1@S@Additionally, Strategic Enterprise Management applications help a company translate corporate-level goals, such as profit and margin share targets, into operational decisions, such as production plans and workforce levels.@@@@1@28@@oe@26-8-2013 1000002100640@unknown@formal@none@1@S@Another example of data mining, often called the ⌊>market basket analysis>⌋, relates to its use in retail sales.@@@@1@18@@oe@26-8-2013 1000002100650@unknown@formal@none@1@S@If a clothing store records the purchases of customers, a data-mining system could identify those customers who favour silk shirts over cotton ones.@@@@1@23@@oe@26-8-2013 1000002100660@unknown@formal@none@1@S@Although some explanations of relationships may be difficult, taking advantage of it is easier.@@@@1@14@@oe@26-8-2013 1000002100670@unknown@formal@none@1@S@The example deals with ⌊>association rule>⌋s within transaction-based data.@@@@1@9@@oe@26-8-2013 1000002100680@unknown@formal@none@1@S@Not all data are transaction based and logical or inexact ⌊>rule>⌋s may also be present within a ⌊>database>⌋.@@@@1@18@@oe@26-8-2013 1000002100690@unknown@formal@none@1@S@In a manufacturing application, an inexact rule may state that 73% of products which have a specific defect or problem will develop a secondary problem within the next six months.@@@@1@30@@oe@26-8-2013 1000002100700@unknown@formal@none@1@S@Related to an integrated-circuit production line, an example of data mining is described in the paper "Mining IC Test Data to Optimize VLSI Testing."@@@@1@24@@oe@26-8-2013 1000002100710@unknown@formal@none@1@S@In this paper the application of data mining and decision analysis to the problem of die-level functional test is described.@@@@1@20@@oe@26-8-2013 1000002100720@unknown@formal@none@1@S@Experiments mentioned in this paper demonstrate the ability of applying a system of mining historical die-test data to create a probabilistic model of patterns of die failure which are then utilized to decide in real time which die to test next and when to stop testing.@@@@1@46@@oe@26-8-2013 1000002100730@unknown@formal@none@1@S@This system has been shown, based on experiments with historical test data, to have the potential to improve profits on mature IC products.@@@@1@23@@oe@26-8-2013 1000002100740@unknown@formal@none@1@S@⌊=Science and engineering¦3=⌋@@@@1@3@@oe@26-8-2013 1000002100750@unknown@formal@none@1@S@In recent years, data mining has been widely used in area of science and engineering, such as ⌊>bioinformatic>⌋s, ⌊>genetic>⌋s, ⌊>medicine>⌋, ⌊>education>⌋, and ⌊>electrical power>⌋ engineering.@@@@1@25@@oe@26-8-2013 1000002100760@unknown@formal@none@1@S@In the area of study on human genetics, the important goal is to understand the mapping relationship between the inter-individual variation in human ⌊>DNA>⌋ sequences and variability in disease susceptibility.@@@@1@30@@oe@26-8-2013 1000002100770@unknown@formal@none@1@S@In lay terms, it is to find out how the changes in an individual's DNA sequence affect the risk of developing common diseases such as ⌊>cancer>⌋.@@@@1@26@@oe@26-8-2013 1000002100780@unknown@formal@none@1@S@This is very important to help improve the diagnosis, prevention and treatment of the diseases.@@@@1@15@@oe@26-8-2013 1000002100790@unknown@formal@none@1@S@The data mining technique that is used to perform this task is known as ⌊>multifactor dimensionality reduction>⌋.@@@@1@17@@oe@26-8-2013 1000002100800@unknown@formal@none@1@S@In the area of electrical power engineering, data mining techniques have been widely used for ⌊>condition monitoring>⌋ of high voltage electrical equipment.@@@@1@22@@oe@26-8-2013 1000002100810@unknown@formal@none@1@S@The purpose of condition monitoring is to obtain valuable information on the ⌊>insulation>⌋'s health status of the equipment.@@@@1@18@@oe@26-8-2013 1000002100820@unknown@formal@none@1@S@⌊>Data clustering>⌋ such as ⌊>self-organizing map>⌋ (SOM) has been applied on the vibration monitoring and analysis of transformer on-load tap-changers(OLTCS).@@@@1@20@@oe@26-8-2013 1000002100830@unknown@formal@none@1@S@Using vibration monitoring, it can be observed that each tap change operation generates a signal that contains information about the condition of the tap changer contacts and the drive mechanisms.@@@@1@30@@oe@26-8-2013 1000002100840@unknown@formal@none@1@S@Obviously, different tap positions will generate different signals.@@@@1@8@@oe@26-8-2013 1000002100850@unknown@formal@none@1@S@However, there was considerable variability amongst normal condition signals for the exact same tap position.@@@@1@15@@oe@26-8-2013 1000002100860@unknown@formal@none@1@S@SOM has been applied to detect abnormal conditions and to estimate the nature of the abnormalities.@@@@1@16@@oe@26-8-2013 1000002100870@unknown@formal@none@1@S@Data mining techniques have also been applied for ⌊>dissolved gas analysis>⌋ (DGA) on ⌊>power transformer>⌋s.@@@@1@15@@oe@26-8-2013 1000002100880@unknown@formal@none@1@S@DGA, as a diagnostics for power transformer, has been available for centuries.@@@@1@12@@oe@26-8-2013 1000002100890@unknown@formal@none@1@S@Data mining techniques such as SOM has been applied to analyse data and to determine trends which are not obvious to the standard DGA ratio techniques such as Duval Triangle.@@@@1@30@@oe@26-8-2013 1000002100900@unknown@formal@none@1@S@A fourth area of application for data mining in science/engineering is within educational research, where data mining has been used to study the factors leading students to choose to engage in behaviors which reduce their learning and to understand the factors influencing university student retention.@@@@1@45@@oe@26-8-2013 1000002100910@unknown@formal@none@1@S@Other examples of applying data mining technique applications are ⌊>biomedical>⌋ data facilitated by domain ontologies, mining clinical trial data, ⌊>traffic analysis>⌋ using SOM, et cetera.@@@@1@25@@oe@26-8-2013 1000002200010@unknown@formal@none@1@S@⌊δData setδ⌋@@@@1@2@@oe@26-8-2013 1000002200020@unknown@formal@none@1@S@A ⌊∗data set∗⌋ (or ⌊∗dataset∗⌋) is a collection of ⌊>data>⌋, usually presented in tabular form.@@@@1@15@@oe@26-8-2013 1000002200030@unknown@formal@none@1@S@Each column represents a particular variable.@@@@1@6@@oe@26-8-2013 1000002200040@unknown@formal@none@1@S@Each row corresponds to a given member of the data set in question.@@@@1@13@@oe@26-8-2013 1000002200050@unknown@formal@none@1@S@It lists values for each of the variables, such as height and weight of an object or values of random numbers.@@@@1@21@@oe@26-8-2013 1000002200060@unknown@formal@none@1@S@Each value is known as a ⌊>datum>⌋.@@@@1@7@@oe@26-8-2013 1000002200070@unknown@formal@none@1@S@The data set may comprise data for one or more members, corresponding to the number of rows.@@@@1@17@@oe@26-8-2013 1000002200080@unknown@formal@none@1@S@Historically, the term originated in the ⌊>mainframe field>⌋, where it had a ⌊>well-defined meaning>⌋, very close to contemporary ⌊/⌊>computer file>⌋/⌋.@@@@1@20@@oe@26-8-2013 1000002200090@unknown@formal@none@1@S@This topic is not covered here.@@@@1@6@@oe@26-8-2013 1000002200100@unknown@formal@none@1@S@In the simplest case, there is only one variable, and then the data set consists of a single column of values, often represented as a list.@@@@1@26@@oe@26-8-2013 1000002200110@unknown@formal@none@1@S@The values may be numbers, such as ⌊>real number>⌋s or ⌊>integer>⌋s, for example representing a person's height in centimeters, but may also be ⌊>nominal data>⌋ (i.e., not consisting of ⌊>numerical>⌋ values), for example representing a person's ethnicity.@@@@1@37@@oe@26-8-2013 1000002200120@unknown@formal@none@1@S@More generally, values may be of any of the kinds described as a ⌊>level of measurement>⌋.@@@@1@16@@oe@26-8-2013 1000002200130@unknown@formal@none@1@S@For each variable, the values will normally all be of the same kind.@@@@1@13@@oe@26-8-2013 1000002200140@unknown@formal@none@1@S@However, there may also be "⌊>missing values>⌋", which need to be indicated in some way.@@@@1@15@@oe@26-8-2013 1000002200150@unknown@formal@none@1@S@In ⌊>statistics>⌋ data sets usually come from actual observations obtained by ⌊>sampling>⌋ a ⌊>statistical population>⌋, and each row corresponds to the observations on one element of that population.@@@@1@28@@oe@26-8-2013 1000002200160@unknown@formal@none@1@S@Data sets may further be generated by ⌊>algorithms>⌋ for the purpose of testing certain kinds of ⌊>software>⌋.@@@@1@17@@oe@26-8-2013 1000002200170@unknown@formal@none@1@S@Some modern statistical analysis software such as ⌊>PSPP>⌋ still present their data in the classical dataset fashion.@@@@1@17@@oe@26-8-2013 1000002300010@unknown@formal@none@1@S@⌊δDatabaseδ⌋@@@@1@1@@oe@26-8-2013 1000002300020@unknown@formal@none@1@S@A ⌊∗database∗⌋ is a ⌊>structure>⌋d collection of records or ⌊>data>⌋.@@@@1@10@@oe@26-8-2013 1000002300030@unknown@formal@none@1@S@A ⌊>computer>⌋ database relies upon ⌊>software>⌋ to organize the storage of data.@@@@1@12@@oe@26-8-2013 1000002300040@unknown@formal@none@1@S@The software models the database structure in what are known as ⌊>database model>⌋s.@@@@1@13@@oe@26-8-2013 1000002300050@unknown@formal@none@1@S@The model in most common use today is the ⌊>relational model>⌋.@@@@1@11@@oe@26-8-2013 1000002300060@unknown@formal@none@1@S@Other models such as the ⌊>hierarchical model>⌋ and the ⌊>network model>⌋ use a more explicit representation of relationships (see below for explanation of the various database models).@@@@1@27@@oe@26-8-2013 1000002300070@unknown@formal@none@1@S@Database management systems (DBMS) are the software used to organize and maintain the database.@@@@1@14@@oe@26-8-2013 1000002300080@unknown@formal@none@1@S@These are categorized according to the ⌊>database model>⌋ that they support.@@@@1@11@@oe@26-8-2013 1000002300090@unknown@formal@none@1@S@The model tends to determine the query languages that are available to access the database.@@@@1@15@@oe@26-8-2013 1000002300100@unknown@formal@none@1@S@A great deal of the internal engineering of a DBMS, however, is independent of the data model, and is concerned with managing factors such as performance, concurrency, integrity, and recovery from ⌊>hardware failure>⌋s.@@@@1@33@@oe@26-8-2013 1000002300110@unknown@formal@none@1@S@In these areas there are large differences between products.@@@@1@9@@oe@26-8-2013 1000002300120@unknown@formal@none@1@S@⌊=History¦2=⌋@@@@1@1@@oe@26-8-2013 1000002300130@unknown@formal@none@1@S@The earliest known use of the term ⌊∗⌊/data base/⌋∗⌋ was in November 1963, when the ⌊>System Development Corporation>⌋ sponsored a symposium under the title ⌊/Development and Management of a Computer-centered Data Base/⌋.@@@@1@32@@oe@26-8-2013 1000002300140@unknown@formal@none@1@S@⌊∗Database∗⌋ as a single word became common in Europe in the early 1970s and by the end of the decade it was being used in major American newspapers.@@@@1@28@@oe@26-8-2013 1000002300150@unknown@formal@none@1@S@(The abbreviation DB, however, survives.)@@@@1@5@@oe@26-8-2013 1000002300160@unknown@formal@none@1@S@The first database management systems were developed in the 1960s.@@@@1@10@@oe@26-8-2013 1000002300170@unknown@formal@none@1@S@A pioneer in the field was ⌊>Charles Bachman>⌋.@@@@1@8@@oe@26-8-2013 1000002300180@unknown@formal@none@1@S@Bachman's early papers show that his aim was to make more effective use of the new direct access storage devices becoming available: until then, data processing had been based on ⌊>punched cards>⌋ and ⌊>magnetic tape>⌋, so that serial processing was the dominant activity.@@@@1@43@@oe@26-8-2013 1000002300190@unknown@formal@none@1@S@Two key ⌊>data model>⌋s arose at this time: ⌊>CODASYL>⌋ developed the ⌊>network model>⌋ based on Bachman's ideas, and (apparently independently) the ⌊>hierarchical model>⌋ was used in a system developed by ⌊>North American Rockwell>⌋ later adopted by ⌊>IBM>⌋ as the cornerstone of their ⌊>IMS>⌋ product.@@@@1@44@@oe@26-8-2013 1000002300200@unknown@formal@none@1@S@While IMS along with the CODASYL ⌊>IDMS>⌋ were the big, high visibility databases developed in the 1960s, several others were also born in that decade, some of which have a significant installed base today.@@@@1@34@@oe@26-8-2013 1000002300210@unknown@formal@none@1@S@Two worthy of mention are the ⌊>PICK>⌋ and ⌊>MUMPS>⌋ databases, with the former developed originally as an operating system with an embedded database and the latter as a programming language and database for the development of healthcare systems.@@@@1@38@@oe@26-8-2013 1000002300220@unknown@formal@none@1@S@The ⌊>relational model>⌋ was proposed by ⌊>E. F. Codd>⌋ in 1970.@@@@1@11@@oe@26-8-2013 1000002300230@unknown@formal@none@1@S@He criticized existing models for confusing the abstract description of information structure with descriptions of physical access mechanisms.@@@@1@18@@oe@26-8-2013 1000002300240@unknown@formal@none@1@S@For a long while, however, the relational model remained of academic interest only.@@@@1@13@@oe@26-8-2013 1000002300250@unknown@formal@none@1@S@While CODASYL products (IDMS) and network model products (IMS) were conceived as practical engineering solutions taking account of the technology as it existed at the time, the relational model took a much more theoretical perspective, arguing (correctly) that hardware and software technology would catch up in time.@@@@1@47@@oe@26-8-2013 1000002300260@unknown@formal@none@1@S@Among the first implementations were ⌊>Michael Stonebraker>⌋'s ⌊>Ingres>⌋ at ⌊>Berkeley>⌋, and the ⌊>System R>⌋ project at IBM.@@@@1@17@@oe@26-8-2013 1000002300270@unknown@formal@none@1@S@Both of these were research prototypes, announced during 1976.@@@@1@9@@oe@26-8-2013 1000002300280@unknown@formal@none@1@S@The first commercial products, ⌊>Oracle>⌋ and ⌊>DB2>⌋, did not appear until around 1980.@@@@1@13@@oe@26-8-2013 1000002300290@unknown@formal@none@1@S@The first successful database product for microcomputers was ⌊>dBASE>⌋ for the ⌊>CP/M>⌋ and ⌊>PC-DOS>⌋/⌊>MS-DOS>⌋ operating systems.@@@@1@16@@oe@26-8-2013 1000002300300@unknown@formal@none@1@S@During the 1980s, research activity focused on ⌊>distributed database>⌋ systems and ⌊>database machine>⌋s.@@@@1@13@@oe@26-8-2013 1000002300310@unknown@formal@none@1@S@Another important theoretical idea was the ⌊>Functional Data Model>⌋, but apart from some specialized applications in genetics, molecular biology, and fraud investigation, the world took little notice.@@@@1@27@@oe@26-8-2013 1000002300320@unknown@formal@none@1@S@In the 1990s, attention shifted to ⌊>object-oriented databases>⌋.@@@@1@8@@oe@26-8-2013 1000002300330@unknown@formal@none@1@S@These had some success in fields where it was necessary to handle more complex data than relational systems could easily cope with, such as ⌊>spatial database>⌋s, engineering data (including software ⌊>repositories>⌋), and multimedia data.@@@@1@34@@oe@26-8-2013 1000002300340@unknown@formal@none@1@S@Some of these ideas were adopted by the relational vendors, who integrated new features into their products as a result.@@@@1@20@@oe@26-8-2013 1000002300350@unknown@formal@none@1@S@The 1990s also saw the spread of ⌊>Open Source>⌋ databases, such as ⌊>PostgreSQL>⌋ and ⌊>MySQL>⌋.@@@@1@15@@oe@26-8-2013 1000002300360@unknown@formal@none@1@S@In the 2000s, the fashionable area for innovation is the ⌊>XML database>⌋.@@@@1@12@@oe@26-8-2013 1000002300370@unknown@formal@none@1@S@As with object databases, this has spawned a new collection of start-up companies, but at the same time the key ideas are being integrated into the established relational products.@@@@1@29@@oe@26-8-2013 1000002300380@unknown@formal@none@1@S@⌊>XML databases>⌋ aim to remove the traditional divide between documents and data, allowing all of an organization's information resources to be held in one place, whether they are highly structured or not.@@@@1@32@@oe@26-8-2013 1000002300390@unknown@formal@none@1@S@⌊=Database models¦2=⌋@@@@1@2@@oe@26-8-2013 1000002300400@unknown@formal@none@1@S@Various techniques are used to model data structure.@@@@1@8@@oe@26-8-2013 1000002300410@unknown@formal@none@1@S@Most database systems are built around one particular data model, although it is increasingly common for products to offer support for more than one model.@@@@1@25@@oe@26-8-2013 1000002300420@unknown@formal@none@1@S@For any one ⌊>logical model>⌋ various physical implementations may be possible, and most products will offer the user some level of control in tuning the ⌊>physical implementation>⌋, since the choices that are made have a significant effect on performance.@@@@1@39@@oe@26-8-2013 1000002300430@unknown@formal@none@1@S@Here are three examples:@@@@1@4@@oe@26-8-2013 1000002300440@unknown@formal@none@1@S@⌊=Hierarchical model¦3=⌋@@@@1@2@@oe@26-8-2013 1000002300450@unknown@formal@none@1@S@In a ⌊>hierarchical model>⌋, data is organized into an inverted tree-like structure, implying a multiple downward link in each node to describe the nesting, and a sort field to keep the records in a particular order in each same-level list.@@@@1@40@@oe@26-8-2013 1000002300460@unknown@formal@none@1@S@This structure arranges the various data elements in a hierarchy and helps to establish logical relationships among data elements of multiple files.@@@@1@22@@oe@26-8-2013 1000002300470@unknown@formal@none@1@S@Each unit in the model is a record which is also known as a node.@@@@1@15@@oe@26-8-2013 1000002300480@unknown@formal@none@1@S@In such a model, each record on one level can be related to multiple records on the next lower level.@@@@1@20@@oe@26-8-2013 1000002300490@unknown@formal@none@1@S@A record that has subsidiary records is called a parent and the subsidiary records are called children.@@@@1@17@@oe@26-8-2013 1000002300500@unknown@formal@none@1@S@Data elements in this model are well suited for one-to-many relationships with other data elements in the database.@@@@1@18@@oe@26-8-2013 1000002300510@unknown@formal@none@1@S@This model is advantageous when the data elements are inherently hierarchical.@@@@1@11@@oe@26-8-2013 1000002300520@unknown@formal@none@1@S@The disadvantage is that in order to prepare the database it becomes necessary to identify the requisite groups of files that are to be logically integrated.@@@@1@26@@oe@26-8-2013 1000002300530@unknown@formal@none@1@S@Hence, a hierarchical data model may not always be flexible enough to accommodate the dynamic needs of an organization.@@@@1@19@@oe@26-8-2013 1000002300540@unknown@formal@none@1@S@⌊=Network model¦3=⌋@@@@1@2@@oe@26-8-2013 1000002300550@unknown@formal@none@1@S@The ⌊>network model>⌋ tends to store records with links to other records.@@@@1@12@@oe@26-8-2013 1000002300560@unknown@formal@none@1@S@Each record in the database can have multiple parents, i.e., the relationships among data elements can have a many to many relationship.@@@@1@22@@oe@26-8-2013 1000002300570@unknown@formal@none@1@S@Associations are tracked via "pointers".@@@@1@5@@oe@26-8-2013 1000002300580@unknown@formal@none@1@S@These pointers can be node numbers or disk addresses.@@@@1@9@@oe@26-8-2013 1000002300590@unknown@formal@none@1@S@Most network databases tend to also include some form of hierarchical model.@@@@1@12@@oe@26-8-2013 1000002300600@unknown@formal@none@1@S@Databases can be translated from hierarchical model to network and vice versa.@@@@1@12@@oe@26-8-2013 1000002300610@unknown@formal@none@1@S@The main difference between the network model and hierarchical model is that in a network model, a child can have a number of parents whereas in a hierarchical model, a child can have only one parent.@@@@1@36@@oe@26-8-2013 1000002300620@unknown@formal@none@1@S@The network model provides greater advantage than the hierarchical model in that promotes greater flexibility and data accessibility, since records at a lower level can be accessed without accessing the records above them.@@@@1@33@@oe@26-8-2013 1000002300630@unknown@formal@none@1@S@This model is more efficient than hierarchical model, easier to understand and can be applied to many real world problems that require routine transactions.@@@@1@24@@oe@26-8-2013 1000002300640@unknown@formal@none@1@S@The disadvantages are that: It is a complex process to design and develop a network database; It has to be refined frequently; It requires that the relationships among all the records be defined before development starts, and changes often demand major programming efforts; Operation and maintenance of the network model is expensive and time consuming.@@@@1@55@@oe@26-8-2013 1000002300650@unknown@formal@none@1@S@Examples of database engines that have network model capabilities are ⌊>RDM Embedded>⌋ and ⌊>RDM Server>⌋.@@@@1@15@@oe@26-8-2013 1000002300660@unknown@formal@none@1@S@⌊=Relational model¦3=⌋@@@@1@2@@oe@26-8-2013 1000002300670@unknown@formal@none@1@S@The basic data structure of the relational model is a table where information about a particular entity (say, an employee) is represented in columns and rows.@@@@1@26@@oe@26-8-2013 1000002300680@unknown@formal@none@1@S@The columns enumerate the various attributes of an entity (e.g. employee_name, address, phone_number).@@@@1@13@@oe@26-8-2013 1000002300690@unknown@formal@none@1@S@Rows (also called records) represent instances of an entity (e.g. specific employees).@@@@1@12@@oe@26-8-2013 1000002300700@unknown@formal@none@1@S@The "relation" in "relational database" comes from the mathematical notion of ⌊>relations>⌋ from the field of ⌊>set theory>⌋.@@@@1@18@@oe@26-8-2013 1000002300710@unknown@formal@none@1@S@A relation is a set of ⌊>tuple>⌋s, so rows are sometimes called tuples.@@@@1@13@@oe@26-8-2013 1000002300720@unknown@formal@none@1@S@All tables in a relational database adhere to three basic rules.@@@@1@11@@oe@26-8-2013 1000002300730@unknown@formal@none@1@S@⌊•⌊#The ordering of columns is immaterial#⌋@@@@1@6@@oe@26-8-2013 1000002300740@unknown@formal@none@1@S@⌊#Identical rows are not allowed in a table#⌋@@@@1@8@@oe@26-8-2013 1000002300750@unknown@formal@none@1@S@⌊#Each row has a single (separate) value for each of its columns (each tuple has an atomic value).#⌋•⌋@@@@1@18@@oe@26-8-2013 1000002300760@unknown@formal@none@1@S@If the same value occurs in two different records (from the same table or different tables) it can imply a relationship between those records.@@@@1@24@@oe@26-8-2013 1000002300770@unknown@formal@none@1@S@Relationships between records are often categorized by their ⌊>cardinality>⌋ (1:1, (0), 1:M, M:M).@@@@1@13@@oe@26-8-2013 1000002300780@unknown@formal@none@1@S@Tables can have a designated column or set of columns that act as a "key" to select rows from that table with the same or similar key values.@@@@1@28@@oe@26-8-2013 1000002300790@unknown@formal@none@1@S@A "primary key" is a key that has a unique value for each row in the table.@@@@1@17@@oe@26-8-2013 1000002300800@unknown@formal@none@1@S@Keys are commonly used to join or combine data from two or more tables.@@@@1@14@@oe@26-8-2013 1000002300810@unknown@formal@none@1@S@For example, an ⌊/employee/⌋ table may contain a column named ⌊/address/⌋ which contains a value that matches the key of an ⌊/address/⌋ table.@@@@1@23@@oe@26-8-2013 1000002300820@unknown@formal@none@1@S@Keys are also critical in the creation of indexes, which facilitate fast retrieval of data from large tables.@@@@1@18@@oe@26-8-2013 1000002300830@unknown@formal@none@1@S@It is not necessary to define all the keys in advance; a column can be used as a key even if it was not originally intended to be one.@@@@1@29@@oe@26-8-2013 1000002300840@unknown@formal@none@1@S@⌊=Relational operations¦4=⌋@@@@1@2@@oe@26-8-2013 1000002300850@unknown@formal@none@1@S@Users (or programs) request data from a relational database by sending it a ⌊>query>⌋ that is written in a special language, usually a dialect of ⌊>SQL>⌋.@@@@1@26@@oe@26-8-2013 1000002300860@unknown@formal@none@1@S@Although SQL was originally intended for end-users, it is much more common for SQL queries to be embedded into software that provides an easier user interface.@@@@1@26@@oe@26-8-2013 1000002300870@unknown@formal@none@1@S@Many web applications, such as ⌊>Wikipedia>⌋, perform SQL queries when generating pages.@@@@1@12@@oe@26-8-2013 1000002300880@unknown@formal@none@1@S@In response to a query, the database returns a result set, which is the list of rows constituting the answer.@@@@1@20@@oe@26-8-2013 1000002300890@unknown@formal@none@1@S@The simplest query is just to return all the rows from a table, but more often, the rows are filtered in some way to return just the answer wanted.@@@@1@29@@oe@26-8-2013 1000002300900@unknown@formal@none@1@S@Often, data from multiple tables are combined into one, by doing a ⌊>join>⌋.@@@@1@13@@oe@26-8-2013 1000002300910@unknown@formal@none@1@S@There are a number of relational operations in addition to join.@@@@1@11@@oe@26-8-2013 1000002300920@unknown@formal@none@1@S@⌊=Normal forms¦4=⌋@@@@1@2@@oe@26-8-2013 1000002300930@unknown@formal@none@1@S@Relations are classified based upon the types of anomalies to which they're vulnerable.@@@@1@13@@oe@26-8-2013 1000002300940@unknown@formal@none@1@S@A database that's in the first normal form is vulnerable to all types of anomalies, while a database that's in the domain/key normal form has no modification anomalies.@@@@1@28@@oe@26-8-2013 1000002300950@unknown@formal@none@1@S@Normal forms are hierarchical in nature.@@@@1@6@@oe@26-8-2013 1000002300960@unknown@formal@none@1@S@That is, the lowest level is the first normal form, and the database cannot meet the requirements for higher level normal forms without first having met all the requirements of the lesser normal form.@@@@1@34@@oe@26-8-2013 1000002300970@unknown@formal@none@1@S@⌊=Database Management Systems¦2=⌋@@@@1@3@@oe@26-8-2013 1000002300980@unknown@formal@none@1@S@⌊=Relational database management systems¦3=⌋@@@@1@4@@oe@26-8-2013 1000002300990@unknown@formal@none@1@S@An RDBMS implements the features of the relational model outlined above.@@@@1@11@@oe@26-8-2013 1000002301000@unknown@formal@none@1@S@In this context, ⌊>Date>⌋'s ⌊∗Information Principle∗⌋ states:@@@@1@7@@oe@26-8-2013 1000002301010@unknown@formal@none@1@S@⌊"The entire information content of the database is represented in one and only one way.@@@@1@15@@oe@26-8-2013 1000002301020@unknown@formal@none@1@S@Namely as explicit values in column positions (attributes) and rows in relations (⌊>tuple>⌋s) Therefore, there are no explicit pointers between related tables."⌋@@@@1@22@@oe@26-8-2013 1000002301030@unknown@formal@none@1@S@⌊=Post-relational database models¦3=⌋@@@@1@3@@oe@26-8-2013 1000002301040@unknown@formal@none@1@S@Several products have been identified as ⌊>post-relational>⌋ because the data model incorporates ⌊>relations>⌋ but is not constrained by the Information Principle, requiring that all information is represented by ⌊>data values>⌋ in relations.@@@@1@32@@oe@26-8-2013 1000002301050@unknown@formal@none@1@S@Products using a post-relational data model typically employ a model that actually pre-dates the ⌊>relational model>⌋.@@@@1@16@@oe@26-8-2013 1000002301060@unknown@formal@none@1@S@These might be identified as a ⌊>directed graph>⌋ with ⌊>trees>⌋ on the ⌊>nodes>⌋.@@@@1@13@@oe@26-8-2013 1000002301070@unknown@formal@none@1@S@Examples of models that could be classified as post-relational are ⌊>PICK>⌋ aka ⌊>MultiValue>⌋, and ⌊>MUMPS>⌋.@@@@1@15@@oe@26-8-2013 1000002301080@unknown@formal@none@1@S@⌊=Object database models¦3=⌋@@@@1@3@@oe@26-8-2013 1000002301090@unknown@formal@none@1@S@In recent years, the ⌊>object-oriented>⌋ paradigm has been applied to database technology, creating a new programming model known as ⌊>object database>⌋s.@@@@1@21@@oe@26-8-2013 1000002301100@unknown@formal@none@1@S@These databases attempt to bring the database world and the application programming world closer together, in particular by ensuring that the database uses the same ⌊>type system>⌋ as the application program.@@@@1@31@@oe@26-8-2013 1000002301110@unknown@formal@none@1@S@This aims to avoid the overhead (sometimes referred to as the ⌊/⌊>impedance mismatch>⌋/⌋) of converting information between its representation in the database (for example as rows in tables) and its representation in the application program (typically as objects).@@@@1@38@@oe@26-8-2013 1000002301120@unknown@formal@none@1@S@At the same time, object databases attempt to introduce the key ideas of object programming, such as ⌊>encapsulation>⌋ and ⌊>polymorphism>⌋, into the world of databases.@@@@1@25@@oe@26-8-2013 1000002301130@unknown@formal@none@1@S@A variety of these ways have been tried for storing objects in a database.@@@@1@14@@oe@26-8-2013 1000002301140@unknown@formal@none@1@S@Some products have approached the problem from the application programming end, by making the objects manipulated by the program ⌊>persistent>⌋.@@@@1@20@@oe@26-8-2013 1000002301150@unknown@formal@none@1@S@This also typically requires the addition of some kind of query language, since conventional programming languages do not have the ability to find objects based on their information content.@@@@1@29@@oe@26-8-2013 1000002301160@unknown@formal@none@1@S@Others have attacked the problem from the database end, by defining an object-oriented data model for the database, and defining a database programming language that allows full programming capabilities as well as traditional query facilities.@@@@1@35@@oe@26-8-2013 1000002301170@unknown@formal@none@1@S@⌊=DBMS internals¦2=⌋@@@@1@2@@oe@26-8-2013 1000002301180@unknown@formal@none@1@S@⌊=Storage and physical database design¦3=⌋@@@@1@5@@oe@26-8-2013 1000002301190@unknown@formal@none@1@S@Database tables/indexes are typically stored in memory or on hard disk in one of many forms, ordered/unordered ⌊>flat files>⌋, ⌊>ISAM>⌋, ⌊>heaps>⌋, ⌊>hash buckets>⌋ or ⌊>B+ tree>⌋s.@@@@1@26@@oe@26-8-2013 1000002301200@unknown@formal@none@1@S@These have various advantages and disadvantages discussed further in the main article on this topic.@@@@1@15@@oe@26-8-2013 1000002301210@unknown@formal@none@1@S@The most commonly used are B+ trees and ISAM.@@@@1@9@@oe@26-8-2013 1000002301220@unknown@formal@none@1@S@Other important design choices relate to the clustering of data by category (such as grouping data by month, or location), creating pre-computed views known as materialized views, partitioning data by range or hash.@@@@1@33@@oe@26-8-2013 1000002301230@unknown@formal@none@1@S@As well memory management and storage topology can be important design choices for database designers.@@@@1@15@@oe@26-8-2013 1000002301240@unknown@formal@none@1@S@Just as normalization is used to reduce storage requirements and improve the extensibility of the database, conversely denormalization is often used to reduce join complexity and reduce execution time for queries.@@@@1@31@@oe@26-8-2013 1000002301250@unknown@formal@none@1@S@⌊=Indexing¦4=⌋@@@@1@1@@oe@26-8-2013 1000002301260@unknown@formal@none@1@S@All of these databases can take advantage of ⌊>indexing>⌋ to increase their speed.@@@@1@13@@oe@26-8-2013 1000002301270@unknown@formal@none@1@S@This technology has advanced tremendously since its early uses in the 1960s and 1970s.@@@@1@14@@oe@26-8-2013 1000002301280@unknown@formal@none@1@S@The most common kind of index is a sorted list of the contents of some particular table column, with pointers to the row associated with the value.@@@@1@27@@oe@26-8-2013 1000002301290@unknown@formal@none@1@S@An index allows a set of table rows matching some criterion to be located quickly.@@@@1@15@@oe@26-8-2013 1000002301300@unknown@formal@none@1@S@Typically, indexes are also stored in the various forms of data-structure mentioned above (such as ⌊>B-tree>⌋s, ⌊>hash>⌋es, and ⌊>linked lists>⌋).@@@@1@20@@oe@26-8-2013 1000002301310@unknown@formal@none@1@S@Usually, a specific technique is chosen by the database designer to increase efficiency in the particular case of the type of index required.@@@@1@23@@oe@26-8-2013 1000002301320@unknown@formal@none@1@S@Relational DBMS's have the advantage that indexes can be created or dropped without changing existing applications making use of it.@@@@1@20@@oe@26-8-2013 1000002301330@unknown@formal@none@1@S@The database chooses between many different strategies based on which one it estimates will run the fastest.@@@@1@17@@oe@26-8-2013 1000002301340@unknown@formal@none@1@S@In other words, indexes are transparent to the application or end-user querying the database; while they affect performance, any SQL command will run with or without index to compute the result of an ⌊>SQL>⌋ statement.@@@@1@35@@oe@26-8-2013 1000002301350@unknown@formal@none@1@S@The RDBMS will produce a plan of how to execute the query, which is generated by analyzing the run times of the different algorithms and selecting the quickest.@@@@1@28@@oe@26-8-2013 1000002301360@unknown@formal@none@1@S@Some of the key algorithms that deal with ⌊>joins>⌋ are ⌊>nested loop join>⌋, ⌊>sort-merge join>⌋ and ⌊>hash join>⌋.@@@@1@18@@oe@26-8-2013 1000002301370@unknown@formal@none@1@S@Which of these is chosen depends on whether an index exists, what type it is, and its ⌊>cardinality>⌋.@@@@1@18@@oe@26-8-2013 1000002301380@unknown@formal@none@1@S@An index speeds up access to data, but it has disadvantages as well.@@@@1@13@@oe@26-8-2013 1000002301390@unknown@formal@none@1@S@First, every index increases the amount of storage on the hard drive necessary for the database file, and second, the index must be updated each time the data are altered, and this costs time.@@@@1@34@@oe@26-8-2013 1000002301400@unknown@formal@none@1@S@(Thus an index saves time in the reading of data, but it costs time in entering and altering data.@@@@1@19@@oe@26-8-2013 1000002301410@unknown@formal@none@1@S@It thus depends on the use to which the data are to be put whether an index is on the whole a net plus or minus in the quest for efficiency.)@@@@1@31@@oe@26-8-2013 1000002301420@unknown@formal@none@1@S@A special case of an index is a primary index, or primary key, which is distinguished in that the primary index must ensure a unique reference to a record.@@@@1@29@@oe@26-8-2013 1000002301430@unknown@formal@none@1@S@Often, for this purpose one simply uses a running index number (ID number).@@@@1@13@@oe@26-8-2013 1000002301440@unknown@formal@none@1@S@Primary indexes play a significant role in relational databases, and they can speed up access to data considerably.@@@@1@18@@oe@26-8-2013 1000002301450@unknown@formal@none@1@S@⌊=Transactions and concurrency¦3=⌋@@@@1@3@@oe@26-8-2013 1000002301460@unknown@formal@none@1@S@In addition to their data model, most practical databases ("transactional databases") attempt to enforce a ⌊>database transaction>⌋ .@@@@1@18@@oe@26-8-2013 1000002301470@unknown@formal@none@1@S@Ideally, the database software should enforce the ⌊>ACID>⌋ rules, summarized here:@@@@1@11@@oe@26-8-2013 1000002301480@unknown@formal@none@1@S@⌊•⌊#⌊>Atomicity>⌋: Either all the tasks in a transaction must be done, or none of them.@@@@1@15@@oe@26-8-2013 1000002301490@unknown@formal@none@1@S@The transaction must be completed, or else it must be undone (rolled back).#⌋@@@@1@13@@oe@26-8-2013 1000002301500@unknown@formal@none@1@S@⌊#⌊>Consistency>⌋: Every transaction must preserve the integrity constraints — the declared consistency rules — of the database.@@@@1@17@@oe@26-8-2013 1000002301510@unknown@formal@none@1@S@It cannot place the data in a contradictory state.#⌋@@@@1@9@@oe@26-8-2013 1000002301520@unknown@formal@none@1@S@⌊#⌊>Isolation>⌋: Two simultaneous transactions cannot interfere with one another.@@@@1@9@@oe@26-8-2013 1000002301530@unknown@formal@none@1@S@Intermediate results within a transaction are not visible to other transactions.#⌋@@@@1@11@@oe@26-8-2013 1000002301540@unknown@formal@none@1@S@⌊#⌊>Durability>⌋: Completed transactions cannot be aborted later or their results discarded.@@@@1@11@@oe@26-8-2013 1000002301550@unknown@formal@none@1@S@They must persist through (for instance) restarts of the DBMS after crashes#⌋•⌋@@@@1@12@@oe@26-8-2013 1000002301560@unknown@formal@none@1@S@In practice, many DBMS's allow most of these rules to be selectively relaxed for better performance.@@@@1@16@@oe@26-8-2013 1000002301570@unknown@formal@none@1@S@⌊>Concurrency control>⌋ is a method used to ensure that transactions are executed in a safe manner and follow the ACID rules.@@@@1@21@@oe@26-8-2013 1000002301580@unknown@formal@none@1@S@The DBMS must be able to ensure that only ⌊>serializable>⌋, ⌊>recoverable>⌋ schedules are allowed, and that no actions of committed transactions are lost while undoing aborted transactions .@@@@1@28@@oe@26-8-2013 1000002301590@unknown@formal@none@1@S@⌊=Replication¦3=⌋@@@@1@1@@oe@26-8-2013 1000002301600@unknown@formal@none@1@S@Replication of databases is closely related to transactions.@@@@1@8@@oe@26-8-2013 1000002301610@unknown@formal@none@1@S@If a database can log its individual actions, it is possible to create a duplicate of the data in real time.@@@@1@21@@oe@26-8-2013 1000002301620@unknown@formal@none@1@S@The duplicate can be used to improve performance or availability of the whole database system.@@@@1@15@@oe@26-8-2013 1000002301630@unknown@formal@none@1@S@Common replication concepts include:@@@@1@4@@oe@26-8-2013 1000002301640@unknown@formal@none@1@S@⌊•⌊#Master/Slave Replication: All write requests are performed on the master and then replicated to the slaves#⌋@@@@1@16@@oe@26-8-2013 1000002301650@unknown@formal@none@1@S@⌊#Quorum: The result of Read and Write requests are calculated by querying a "majority" of replicas.#⌋@@@@1@16@@oe@26-8-2013 1000002301660@unknown@formal@none@1@S@⌊#Multimaster: Two or more replicas sync each other via a transaction identifier.#⌋•⌋@@@@1@12@@oe@26-8-2013 1000002301670@unknown@formal@none@1@S@Parallel synchronous replication of databases enables transactions to be replicated on multiple servers simultaneously, which provides a method for backup and security as well as data availability.@@@@1@27@@oe@26-8-2013 1000002301680@unknown@formal@none@1@S@⌊=Security¦3=⌋@@@@1@1@@oe@26-8-2013 1000002301690@unknown@formal@none@1@S@⌊>Database security>⌋ denotes the system, processes, and procedures that protect a database from unintended activity.@@@@1@15@@oe@26-8-2013 1000002301700@unknown@formal@none@1@S@Security is usually enforced through ⌊∗access control∗⌋, ⌊∗auditing∗⌋, and ⌊∗encryption∗⌋.@@@@1@10@@oe@26-8-2013 1000002301710@unknown@formal@none@1@S@⌊•⌊#Access control ensures and restricts who can connect and what can be done to the database.#⌋@@@@1@16@@oe@26-8-2013 1000002301720@unknown@formal@none@1@S@⌊#Auditing logs what action or change has been performed, when and by who.#⌋@@@@1@13@@oe@26-8-2013 1000002301730@unknown@formal@none@1@S@⌊#Encryption: Since security has become a major issue in recent years, many commercial database vendors provide built-in encryption mechanism.@@@@1@19@@oe@26-8-2013 1000002301740@unknown@formal@none@1@S@Data is encoded natively into the tables and deciphered "on the fly" when a query comes in.@@@@1@17@@oe@26-8-2013 1000002301750@unknown@formal@none@1@S@Connections can also be secured and encrypted if required using DSA, MD5, SSL or legacy encryption standard.#⌋•⌋@@@@1@17@@oe@26-8-2013 1000002301760@unknown@formal@none@1@S@Enforcing security is one of the major tasks of the DBA.@@@@1@11@@oe@26-8-2013 1000002301770@unknown@formal@none@1@S@In the United Kingdom, legislation protecting the public from unauthorized disclosure of personal information held on databases falls under the Office of the Information Commissioner.@@@@1@25@@oe@26-8-2013 1000002301780@unknown@formal@none@1@S@United Kingdom based organizations holding personal data in electronic format (databases for example) are required to register with the Data Commissioner.@@@@1@21@@oe@26-8-2013 1000002301790@unknown@formal@none@1@S@⌊=Locking¦3=⌋@@@@1@1@@oe@26-8-2013 1000002301800@unknown@formal@none@1@S@⌊>Locking>⌋ is how the database handle multiple concurent operations.@@@@1@9@@oe@26-8-2013 1000002301810@unknown@formal@none@1@S@This is the way how concurency and some form of basic intergrity is managed within the database system.@@@@1@18@@oe@26-8-2013 1000002301820@unknown@formal@none@1@S@Such locks can be applied on a row level, or on other levels like page (a basic data block), extend (multiple array of pages) or even an entire table.@@@@1@29@@oe@26-8-2013 1000002301830@unknown@formal@none@1@S@This helps maintain the integrity of the data by ensuring that only one process at a time can modify the ⌊∗same∗⌋ data.@@@@1@22@@oe@26-8-2013 1000002301840@unknown@formal@none@1@S@Unlike a basic filesystem files or folders, where only one lock at the time can be set, restricting the usage to one process only.@@@@1@24@@oe@26-8-2013 1000002301850@unknown@formal@none@1@S@A database can set and hold mutiples locks at the same time on the different level of the physical data structure.@@@@1@21@@oe@26-8-2013 1000002301860@unknown@formal@none@1@S@How locks are set, last is determined by the database engine locking scheme based on the submitted SQL or transactions by the users.@@@@1@23@@oe@26-8-2013 1000002301870@unknown@formal@none@1@S@Generaly speaking no activity on the database should be translated by no or very light locking.@@@@1@16@@oe@26-8-2013 1000002301880@unknown@formal@none@1@S@For most DBMS systems existing on the market, locks are generaly ⌊∗shared∗⌋ or ⌊∗exclusive∗⌋.@@@@1@14@@oe@26-8-2013 1000002301890@unknown@formal@none@1@S@Exclusive locks mean that no other lock can acquire the current data object as long as the exclusive lock lasts.@@@@1@20@@oe@26-8-2013 1000002301900@unknown@formal@none@1@S@Exclusive locks are usually set while the database needs to change data, like during an UPDATE or DELETE operation.@@@@1@19@@oe@26-8-2013 1000002301910@unknown@formal@none@1@S@Shared locks can take ownership one from the other of the current data structure.@@@@1@14@@oe@26-8-2013 1000002301920@unknown@formal@none@1@S@Shared locks are usually used while the database is reading data, during a SELECT operation.@@@@1@15@@oe@26-8-2013 1000002301930@unknown@formal@none@1@S@The number, nature of locks and time the lock holds a data block can have a huge impact on the database performances.@@@@1@22@@oe@26-8-2013 1000002301940@unknown@formal@none@1@S@Bad locking can lead to desastrous performance response (usually the result of poor SQL requests, or inadequate database physical structure)@@@@1@20@@oe@26-8-2013 1000002301950@unknown@formal@none@1@S@Default locking behavior is enforced by the ⌊∗isolation level∗⌋ of the dataserver.@@@@1@12@@oe@26-8-2013 1000002301960@unknown@formal@none@1@S@Changing the isolation level will affect how shared or exclusive locks must be set on the data for the entire database system.@@@@1@22@@oe@26-8-2013 1000002301970@unknown@formal@none@1@S@Default isolation is generaly 1, where data can not be read while it is modfied, forbiding to return "ghost data" to end user.@@@@1@23@@oe@26-8-2013 1000002301980@unknown@formal@none@1@S@At some point intensive or inappropriate exclusive locking, can lead to the "dead lock" situation between two locks.@@@@1@18@@oe@26-8-2013 1000002301990@unknown@formal@none@1@S@Where none of the locks can be released because they try to acquire ressources mutually from each other.@@@@1@18@@oe@26-8-2013 1000002302000@unknown@formal@none@1@S@The Database has a fail safe mecanism and will automaticly "sacrifice" one of the locks releasing the ressource.@@@@1@18@@oe@26-8-2013 1000002302010@unknown@formal@none@1@S@Doing so processes or transactions involved in the "dead lock" will be rolled back.@@@@1@14@@oe@26-8-2013 1000002302020@unknown@formal@none@1@S@Databases can also be locked for other reasons, like access restrictions for given levels of user.@@@@1@16@@oe@26-8-2013 1000002302030@unknown@formal@none@1@S@Databases are also locked for routine database maintenance, which prevents changes being made during the maintenance.@@@@1@16@@oe@26-8-2013 1000002302040@unknown@formal@none@1@S@See ⌊> IBM>⌋ for more detail.)@@@@1@6@@oe@26-8-2013 1000002302050@unknown@formal@none@1@S@⌊=Architecture¦3=⌋@@@@1@1@@oe@26-8-2013 1000002302060@unknown@formal@none@1@S@Depending on the intended use, there are a number of database architectures in use.@@@@1@14@@oe@26-8-2013 1000002302070@unknown@formal@none@1@S@Many databases use a combination of strategies.@@@@1@7@@oe@26-8-2013 1000002302080@unknown@formal@none@1@S@On-line Transaction Processing systems (OLTP) often use a row-oriented datastore architecture, while data-warehouse and other retrieval-focused applications like ⌊>Google>⌋'s ⌊>BigTable>⌋, or bibliographic database(library catalogue) systems may use a column-oriented datastore architecture.@@@@1@31@@oe@26-8-2013 1000002302090@unknown@formal@none@1@S@Document-Oriented, XML, Knowledgebases, as well as frame databases and rdf-stores (aka Triple-Stores), may also use a combination of these architectures in their implementation.@@@@1@23@@oe@26-8-2013 1000002302100@unknown@formal@none@1@S@Finally it should be noted that not all database have or need a database 'schema' (so called schema-less databases).@@@@1@19@@oe@26-8-2013 1000002302110@unknown@formal@none@1@S@⌊=Applications of databases¦2=⌋@@@@1@3@@oe@26-8-2013 1000002302120@unknown@formal@none@1@S@Databases are used in many applications, spanning virtually the entire range of ⌊>computer software>⌋.@@@@1@14@@oe@26-8-2013 1000002302130@unknown@formal@none@1@S@Databases are the preferred method of storage for large multiuser applications, where coordination between many users is needed.@@@@1@18@@oe@26-8-2013 1000002302140@unknown@formal@none@1@S@Even individual users find them convenient, and many electronic mail programs and personal organizers are based on standard database technology.@@@@1@20@@oe@26-8-2013 1000002302150@unknown@formal@none@1@S@Software database drivers are available for most database platforms so that ⌊>application software>⌋ can use a common ⌊>Application Programming Interface>⌋ to retrieve the information stored in a database.@@@@1@28@@oe@26-8-2013 1000002302160@unknown@formal@none@1@S@Two commonly used database APIs are ⌊>JDBC>⌋ and ⌊>ODBC>⌋.@@@@1@9@@oe@26-8-2013 1000002302170@unknown@formal@none@1@S@For example suppliers database contains the data relating to suppliers such as;@@@@1@12@@oe@26-8-2013 1000002302180@unknown@formal@none@1@S@⌊•⌊#supplier name#⌋@@@@1@2@@oe@26-8-2013 1000002302190@unknown@formal@none@1@S@⌊#supplier code#⌋@@@@1@2@@oe@26-8-2013 1000002302200@unknown@formal@none@1@S@⌊#supplier address#⌋•⌋@@@@1@2@@oe@26-8-2013 1000002302210@unknown@formal@none@1@S@It is often used by schools to teach students and grade them.@@@@1@12@@oe@26-8-2013 1000002400010@unknown@formal@none@1@S@⌊δELIZAδ⌋@@@@1@1@@oe@26-8-2013 1000002400020@unknown@formal@none@1@S@⌊∗ELIZA∗⌋ is a ⌊>computer program>⌋ by ⌊>Joseph Weizenbaum>⌋, designed in ⌊>1966>⌋, which parodied a ⌊>Rogerian therapist>⌋, largely by rephrasing many of the patient's statements as questions and posing them to the patient.@@@@1@32@@oe@26-8-2013 1000002400030@unknown@formal@none@1@S@Thus, for example, the response to "My head hurts" might be "Why do you say your head hurts?"@@@@1@18@@oe@26-8-2013 1000002400040@unknown@formal@none@1@S@The response to "My mother hates me" might be "Who else in your family hates you?"@@@@1@16@@oe@26-8-2013 1000002400050@unknown@formal@none@1@S@ELIZA was named after Eliza Doolittle, a working-class character in ⌊>George Bernard Shaw's>⌋ play ⌊/⌊>Pygmalion>⌋/⌋, who is taught to speak with an ⌊>upper class>⌋ ⌊>accent>⌋.@@@@1@25@@oe@26-8-2013 1000002400060@unknown@formal@none@1@S@⌊=Overview¦2=⌋@@@@1@1@@oe@26-8-2013 1000002400070@unknown@formal@none@1@S@It is sometimes inaccurately said that ELIZA simulates a therapist.@@@@1@10@@oe@26-8-2013 1000002400080@unknown@formal@none@1@S@Weizenbaum said that ELIZA provided a "⌊>parody>⌋" of "the responses of a non-directional psychotherapist in an initial psychiatric interview."@@@@1@19@@oe@26-8-2013 1000002400090@unknown@formal@none@1@S@He chose the context of psychotherapy to "sidestep the problem of giving the program a data base of real-world knowledge", the therapeutic situation being one of the few real human situations in which a human being can reply to a statement with a question that indicates very little specific knowledge of the topic under discussion.@@@@1@55@@oe@26-8-2013 1000002400100@unknown@formal@none@1@S@For example, it is a context in which the question "Who is your favorite composer?" can be answered acceptably with responses such as "What about your own favorite composer?" or "Does that question interest you?"@@@@1@35@@oe@26-8-2013 1000002400110@unknown@formal@none@1@S@First implemented in Weizenbaum's own ⌊>SLIP>⌋ list-processing language, ELIZA worked by simple ⌊>parsing>⌋ and substitution of key words into canned phrases.@@@@1@21@@oe@26-8-2013 1000002400120@unknown@formal@none@1@S@Depending upon the initial entries by the user the illusion of a human writer could be instantly dispelled, or could continue through several interchanges.@@@@1@24@@oe@26-8-2013 1000002400130@unknown@formal@none@1@S@It was sometimes so convincing that there are many anecdotes about people becoming very emotionally caught up in dealing with ELIZA for several minutes until the machine's true lack of understanding became apparent.@@@@1@33@@oe@26-8-2013 1000002400140@unknown@formal@none@1@S@This was likely due to people's tendency to attach meanings to words which the computer never put there.@@@@1@18@@oe@26-8-2013 1000002400150@unknown@formal@none@1@S@In 1966, interactive computing (via a teletype) was new.@@@@1@9@@oe@26-8-2013 1000002400160@unknown@formal@none@1@S@It was 15 years before the personal computer became familiar to the general public, and two decades before most people encountered attempts at ⌊>natural language processing>⌋ in Internet services like ⌊>Ask.com>⌋ or PC help systems such as Microsoft Office ⌊>Clippy>⌋.@@@@1@40@@oe@26-8-2013 1000002400170@unknown@formal@none@1@S@Although those programs included years of research and work (while ⌊/⌊>Ecala>⌋/⌋ eclipsed the functionality of ⌊/ELIZA/⌋ after less than two weeks of work by a single programmer), ⌊/ELIZA/⌋ remains a milestone simply because it was the first time a programmer had attempted such a human-machine interaction with the goal of creating the illusion (however brief) of human-⌊/human/⌋ interaction.@@@@1@58@@oe@26-8-2013 1000002400180@unknown@formal@none@1@S@In the article "theNewMediaReader" an excerpt from "From Computer Power and Human Reason" by Joseph Weizenbaum in 1976, edited by Noah Wardrip-Fruin and Nick Montfort he references how quickly and deeply people became emotionally involved with the computer program, taking offence when he asked to view the transcripts, saying it was an invasion of their privacy, even asking him to leave the room while they were working with ELIZA.@@@@1@69@@oe@26-8-2013 1000002400190@unknown@formal@none@1@S@⌊=Influence on games¦2=⌋@@@@1@3@@oe@26-8-2013 1000002400200@unknown@formal@none@1@S@ELIZA impacted a number of early ⌊>computer games>⌋ by demonstrating additional kinds of ⌊>interface design>⌋s.@@@@1@15@@oe@26-8-2013 1000002400210@unknown@formal@none@1@S@⌊>Don Daglow>⌋ wrote an enhanced version of the program called ⌊/Ecala/⌋ on a ⌊>PDP-10>⌋ ⌊>mainframe computer>⌋ at ⌊>Pomona College>⌋ in ⌊>1973>⌋ before writing what was possibly the second or third computer ⌊>role-playing game>⌋, ⌊/⌊>Dungeon>⌋/⌋ (⌊>1975>⌋) (The first was probably "⌊>dnd>⌋", written on and for the PLATO system in 1974, and the second may have been ⌊>Moria>⌋, written in 1975).@@@@1@59@@oe@26-8-2013 1000002400220@unknown@formal@none@1@S@It is likely that ⌊/ELIZA/⌋ was also on the system where ⌊>Will Crowther>⌋ created ⌊/⌊>Adventure>⌋/⌋, the 1975 game that spawned the ⌊>interactive fiction>⌋ genre.@@@@1@24@@oe@26-8-2013 1000002400230@unknown@formal@none@1@S@But both these games appeared some nine years after the original ⌊/ELIZA/⌋.@@@@1@12@@oe@26-8-2013 1000002400240@unknown@formal@none@1@S@⌊=Response and legacy¦2=⌋@@@@1@3@@oe@26-8-2013 1000002400250@unknown@formal@none@1@S@Lay responses to ELIZA were disturbing to Weizenbaum and motivated him to write his book ⌊/Computer Power and Human Reason: From Judgment to Calculation/⌋, in which he explains the limits of computers, as he wants to make clear in people's minds his opinion that the anthropomorphic views of computers are just a reduction of the human being and any life form for that matter.@@@@1@64@@oe@26-8-2013 1000002400260@unknown@formal@none@1@S@There are many programs based on ELIZA in different languages in addition to ⌊/Ecala/⌋.@@@@1@14@@oe@26-8-2013 1000002400270@unknown@formal@none@1@S@For example, in 1980, a company called "Don't Ask Software", founded by Randy Simon, created a version for the Apple II, Atari, and Commodore PCs, which verbally abused the user based on the user's input.@@@@1@35@@oe@26-8-2013 1000002400280@unknown@formal@none@1@S@In Spain, Jordi Perez developed the famous ZEBAL in 1993, written in ⌊>Clipper>⌋ for MS-DOS.@@@@1@15@@oe@26-8-2013 1000002400290@unknown@formal@none@1@S@Other versions adapted ELIZA around a religious theme, such as ones featuring Jesus (both serious and comedic) and another Apple II variant called ⌊/I Am Buddha/⌋.@@@@1@26@@oe@26-8-2013 1000002400300@unknown@formal@none@1@S@The 1980 game ⌊/⌊>The Prisoner>⌋/⌋ incorporated ELIZA-style interaction within its gameplay.@@@@1@11@@oe@26-8-2013 1000002400310@unknown@formal@none@1@S@ELIZA has also inspired a ⌊>podcast>⌋ called "The Eliza Podcast", in which the host engages in self-analysis using a computer generated voice prompting with questions in the same style as the ELIZA program.@@@@1@33@@oe@26-8-2013