Changes

Jump to: navigation, search

User Interface

13,216 bytes added, 14:37, 17 May 2018
Created page with "'''Home * User Interface''' FILE:Tuerkischer schachspieler racknitz3.jpg|border|right|thumb|User Interface of [https://en.wikipedia.org/wiki/The_Turk The Turk..."
'''[[Main Page|Home]] * User Interface'''

[[FILE:Tuerkischer schachspieler racknitz3.jpg|border|right|thumb|User Interface of [https://en.wikipedia.org/wiki/The_Turk The Turk] <ref>Copper engraving from the book: [https://en.wikipedia.org/wiki/Joseph_Friedrich_Freiherr_von_Racknitz Freiherr Joseph Friedrich zu Racknitz], ''Ueber den Schachspieler des [https://en.wikipedia.org/wiki/Wolfgang_von_Kempelen Herrn von Kempelen]'', [https://en.wikipedia.org/wiki/Leipzig Leipzig] und [https://en.wikipedia.org/wiki/Dresden Dresden] 1789</ref> <ref>[https://en.wikipedia.org/wiki/The_Turk The Turk from Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Wolfgang_von_Kempelen Wolfgang von Kempelen from Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Johann_Nepomuk_Maelzel Johann Nepomuk Maelzel from Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Maelzel%27s_Chess_Player Maelzel's Chess Player from Wikipedia]</ref> ]]

The '''User Interface''' is the space where [https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction Human-computer interaction] takes place <ref>[http://old.sigchi.org/cdg/ ACM SIGCHI Curricula for Human-Computer Interaction]</ref> . The [https://en.wikipedia.org/wiki/User_%28computing%29 user] [https://en.wikipedia.org/wiki/Interface_%28computer_science%29 interface] includes [[Hardware|hardware]] (physical) and [[Software|software]] (logical) components, and allow users to manipulate a system ([https://en.wikipedia.org/wiki/Input_device Input]), i.e. to [[Entering Moves|enter moves]] inside a chess program, and the system to indicate the effects of the users' manipulation ([https://en.wikipedia.org/wiki/Output_device Output]), i.e. display moves and [[Chess Position|positions]]. Chess programs require support by the underlaying [https://en.wikipedia.org/wiki/BIOS BIOS] and [https://en.wikipedia.org/wiki/Operating_system operating system], accessible by embedded [[Languages|programming language]] features, or via an [https://en.wikipedia.org/wiki/Application_programming_interface Application programming interface] (API) of a [https://en.wikipedia.org/wiki/Standard_library standard] or external [https://en.wikipedia.org/wiki/Library_%28computer_science%29 library].

=Dedicated=
[[Dedicated Chess Computers|Dedicated chess computers]] have their own proprietary [https://en.wikipedia.org/wiki/Input/output Input/output] systems and programs, a [[Robots|robot]], a mechanical [https://en.wikipedia.org/wiki/Intelligent_agent intelligent agent], may interact like an human player, recognizing the moves either by incorporating a [[Sensory Board|sensory board]], or more sophisticated by [https://en.wikipedia.org/wiki/Computer_vision computer vision] <ref>[http://de.scientificcommons.org/huiyan_chua Chua Huiyan], Le Vinh, [http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/k/Kuan:Wong_Lai.html Wong Lai Kuan] ('''2007'''). ''Chess Vision''. [https://en.wikipedia.org/wiki/NUS_School_of_Computing School of Computing], [https://en.wikipedia.org/wiki/National_University_of_Singapore National University of Singapore], [http://www.comp.nus.edu.sg/~cs4243/showcase/chess_vision/Chess-Vision-Presentation.pdf slides as pdf]</ref> and [https://en.wikipedia.org/wiki/Real-time real-time] video [https://en.wikipedia.org/wiki/Image_processing image processing], and moving [[Pieces|pieces]] with a [https://en.wikipedia.org/wiki/Mechatronics mechatronical] [https://en.wikipedia.org/wiki/Actuator actuator] and [https://en.wikipedia.org/wiki/Robot_end_effector end effector].
<span id="GameLoop"></span>
=The Game Loop=
Early chess programs, running on [https://en.wikipedia.org/wiki/Mainframe_computer mainframe computers], like [[The Bernstein Chess Program]] on an [[IBM 704]], used a simple sequential control structure to play the whole [[Chess Game|game]]. As feedback for user interactions or indicating state transitions, for instance if the [[Search|search]] finished with a move played on the internal board, [[Graphics Programming#ASCIIDiagrams|ASCII diagrams]] and [[Move List|move lists]] were printed or displayed on a [https://en.wikipedia.org/wiki/Teleprinter teleprinter], [https://en.wikipedia.org/wiki/Cathode_ray_tube CRT (cathode ray tube)] or any other [https://en.wikipedia.org/wiki/Computer_terminal Computer terminal], to prompt [https://en.wikipedia.org/wiki/Input_device input] which the user had to [[Entering Moves|enter]] by a dedicated or standard teletype <ref>[http://hans.presto.tripod.com/scan/teletype/28_01.html TELETYPE CORPORATION - Teletype Model 28 Page Printer (1)]</ref> [https://en.wikipedia.org/wiki/Computer_keyboard keyboard]. Initially, after start of the program, or during game play, while prompting a move, certain [https://en.wikipedia.org/wiki/Command_%28computing%29 commands] may be entered, either to switch modes, to set the game level, to start the game, to force or take-back a move, to switch sides, and whatever else. The usual syntax to input moves is to enter [[Algebraic Chess Notation#PureCoordinateNotation|algebraic coordinates]], that is [[Files|file letter]], [[Ranks|rank number]] of [[Origin Square|origin]] and [[Target Square|target square]] of a move to play, confirmed and sent to the program after entering [https://en.wikipedia.org/wiki/Carriage_return carriage return].

=MVC=
{{MVC to include}}

==CLI==
''see main article [[CLI|Command Line Interface]]''.

Most current chess engines communicate via a sequential [https://en.wikipedia.org/wiki/Command-line_interface command-line interface], available in all common [https://en.wikipedia.org/wiki/Operating_system operating systems]. [[Pondering]] and the need to enter moves and commands even if the program is "thinking", requires a more complicated control structure and an interruptible search routine. Often engines used [https://en.wikipedia.org/wiki/Coroutine coroutines] to implement internal [https://en.wikipedia.org/wiki/Context_switch context switching] between search and user interaction. Today, it is more common to rely on [https://en.wikipedia.org/wiki/Multi-threading multithreading] abilities of recent operating systems, and to use an explicit [[Thread|I/O-thread]], while the search routine is regularly pondering whether it needs to be interrupted by pending input received by another thread, with the option to asynchronous stop the search.

==Event driven GUIs==
''see main article [[GUI|Graphical User Interface]]''.

With the advent of operating systems with [https://en.wikipedia.org/wiki/Graphical_user_interface graphical user interfaces], also encouraged by additional input devices such as a [https://en.wikipedia.org/wiki/Mouse_%28computing%29 computer mouse] for asynchronous user interaction, the embedding of a chess engine with a classical CLI inside the [https://en.wikipedia.org/wiki/Event-driven_architecture event-driven architecture] of a graphical user interface became more difficult. Today, most programmers rely on an external event driven [[GUI|graphical user interface]] applications using [https://en.wikipedia.org/wiki/Standard_streams standard streams] or [https://en.wikipedia.org/wiki/Pipeline_%28Unix%29 pipelines] to communicate with the GUI via [[Protocols|protocols]] such as the [[Chess Engine Communication Protocol]] and the [[UCI|Universal Chess Interface]]. The external GUI application constitutes the MVC view and controller, and more or less even parts of a (redundant) game model (or even multi-game model), to make the GUI aware of its own game states to even make decisions on behalf of the engine, such as move selection from opening books and [[Endgame Tablebases|endgame tablebases]], draw claims and offers and to finally declare the game over. These game interacting features of the external GUI application in conjunction with certain protocols such as UCI by far exceeds what a pure chess user interface was initially designed for - controller and view only, enter legal moves and render the state of the game, which has become disputed issue in playing official [[Tournaments|tournament]] games.

=UI Topics=
* [[CLI|Command Line Interface]]
* [[Graphics Programming]]
* [[Entering Moves]]
* [[GUI|Graphical User Interface]]
* [[Piece Recognition]]
* [[Sensory Board]]
* [[Voice User Interface]]

=See also=
* [[Chess Game]]
* [[Dedicated Chess Computers]]
* [[Game Notation]]
* [[Protocols]]
* [[Robots]]
* [[Square Off]]

=Publications=
* [[Judith Spencer Olson|Judith S. Reitman Olson]], [http://fordhamgraded.blogspot.de/2011/03/faculty-profiles-dr-william-b-whitten.html William B. Whitten II], [http://www.pubfacts.com/author/Thomas+M+Gruenenfelder Thomas M. Gruenenfelder] ('''1984'''). ''[http://dl.acm.org/citation.cfm?id=2105 A general User-Interface for Creating and Displaying Tree-structures, Hierarchies, Decision Trees, and Nested Menus]''. in [http://www.ece.ntua.gr/en/people/faculty?view=profile&id=3 Yannis Vassiliou] (ed.) ''Human Factors and Interactive Computer Systems''. [https://en.wikipedia.org/wiki/Ablex_Publishing Ablex Publishing]
* [http://arnetminer.org/viewperson.do?naid=10306 Nick Cercone], [http://www.sfu.ca/linguistics/people/faculty/mcfetridge.html Paul McFetridge], [http://www.cs.uiuc.edu/homes/hanj/ Jiawei Han], [[Fred Popowich]] ('''1993'''). ''Human-Computer Interfaces: DBLEARN and System X''. RSKD 1993: 32-43
* [[James R. Slagle]], [http://wiki.tcl.tk/13 Zbigniew Wieckowski] a.k.a. Bishak ('''1994'''). ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.2996 Ideas for Intelligent User Interface Design]''.
* [http://www.informatik.uni-trier.de/~ley/pers/hd/m/McDaniel:Susan_E=.html Susan E. McDaniel], [http://www.ics.uci.edu/~golson/ Gary M. Olson], [[Judith Spencer Olson|Judith S. Olson]] ('''1994'''). ''Methods in Search of Methodology - combining HCI and Object Orientation''. [http://www.informatik.uni-trier.de/~ley/db/conf/chi/chi1994.html#McDanielOO94a CHI 1994], [http://www.ics.uci.edu/~jsolson/publications/Design/McDaniel%20Methods.pdf pdf] <ref>[https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction Human–computer interaction - Wikipedia]</ref> <ref>[https://en.wikipedia.org/wiki/Object-oriented_user_interface Object-oriented user interface -Wikipedia]</ref>
* [[Mikhail Donskoy]] ('''2001'''). ''How the Computer-Chess Methods Help to Build Better User Interfaces.'' [[Advances in Computer Games 9]]
* [http://be.linkedin.com/pub/david-urting/4/82b/448 David Urting], [http://distrinet.cs.kuleuven.be/people/showMember.do?memberID=u0006685 Yolande Berbers] ('''2003'''). ''[https://lirias.kuleuven.be/handle/123456789/132621?mode=full&submit_simple=Show+full+item+record MarineBlue: A Low-Cost Chess Robot]''. [https://en.wikipedia.org/wiki/Katholieke_Universiteit_Leuven Katholieke Universiteit Leuven], [http://dblp.uni-trier.de/db/conf/ra/ra2003.html#UrtingB03 RA 2003]. [http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=CE76646F8F250AB5DAA36951D4D28335?doi=10.1.1.83.6961&rep=rep1&type=pdf pdf]
* [http://de.scientificcommons.org/huiyan_chua Chua Huiyan], Le Vinh, [http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/k/Kuan:Wong_Lai.html Wong Lai Kuan] ('''2007'''). ''Chess Vision''. [https://en.wikipedia.org/wiki/NUS_School_of_Computing School of Computing], [https://en.wikipedia.org/wiki/National_University_of_Singapore National University of Singapore], [http://www.comp.nus.edu.sg/%7Ecs4243/showcase/chess_vision/Chess-Vision-Presentation.pdf slides as pdf]

=Forum Posts=
* [http://www.talkchess.com/forum/viewtopic.php?t=38584 Voice synthesis, part 1] by [[Steven Edwards]], [[CCC]], March 29, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=59367 Engines with interfaces for slightly nerdish people] by [[Peter Berger]], [[CCC]], February 26, 2016

=External Links=
* [https://en.wikipedia.org/wiki/User_interface User interface from Wikipedia]
* [https://en.wikipedia.org/wiki/User_interface_design User interface design from Wikipedia]
* [https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface Brain–computer interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Command-line_interface Command-line interface from Wikipedia] » [[CLI|Command Line Interface]]
* [https://en.wikipedia.org/wiki/Graphical_user_interface Graphical user interface from Wikipedia] » [[GUI|Graphical User Interface]]
* [https://en.wikipedia.org/wiki/History_of_the_graphical_user_interface History of the graphical user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction Human-computer interaction from Wikipedia]
* [https://en.wikipedia.org/wiki/Intelligent_user_interface Intelligent user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Kinetic_user_interface Kinetic user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Natural_user_interface Natural user interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Object-oriented_user_interface Object-oriented user interface -Wikipedia]
* [https://en.wikipedia.org/wiki/Tangible_User_Interface Tangible User Interface from Wikipedia]
* [https://en.wikipedia.org/wiki/Voice_user_interface Voice user interface from Wikipedia]

=References=
<references />

'''[[Main Page|Up one Level]]'''

Navigation menu