Programming

toc
 * Home * Programming**

This is about general purpose [|programming] topics with focus on computer chess - programming languages, algorithms, data and various optimization techniques and standards.

=Programming Topics= 

Basics

 * Algorithms
 * Data
 * Program
 * Process
 * Thread
 * Programming Language
 * HTML notes
 * Space-Time Tradeoff

Parallelism

 * Parallel Computing
 * Parallel Prefix Algorithms
 * Parallel Search
 * SIMD and SWAR Techniques

Misc Programming

 * Dynamic Programming
 * Generic Programming
 * Genetic Programming

GUI Programming

 * Graphics Programming
 * Graphical User Interface

=Bug Hunting=
 * Debugging
 * Logging

=Optimization=
 * Avoiding Branches
 * Performance Measurement
 * Profiling

=Standards=

Position

 * EPD - Extended Position Description
 * FEN - Forsyth-Edwards Notation

Games

 * PGN - Portable Game Notation

Protocols

 * Chess Engine Communication Protocol
 * Universal Chess Interface

=See also=
 * Bit-Twiddling
 * CPW-Engine
 * Software

=Selected Publications= > Volume 1 - Fundamental Algorithms (**1968**) > Volume 2 - Seminumerical Algorithms (**1969**) > Volume 3 - Sorting and Searching (**1973**) > Volume 4 - Combinatorial Algorithms in preparation (five fascicles have been published as of April 2009) > Volume 4A - Enumeration and Backtracking > Volume 4B - Graph and Network Algorithms > Volume 4C and possibly 4D - Optimization and Recursion > Volume 5 - Syntactic Algorithms, planned (as of August 2006, estimated in 2015).
 * Maurice Wilkes, David Wheeler, [|Stanley Gill] (**1951**). //The Preparation of Programs for an Electronic Digital Computer//. Addison-Wesley Press; 1st edition, [|amazon.com]; 2nd edition 1957, [|amazon.com]
 * [|Stanley Gill] (**1958**). //[|Parallel Programming]//. [|The Computer Journal, Vol. 1, No. 1]
 * Christopher Strachey (**1966**). //[|System Analysis and Programming]//. Scientific American, September 1966, re-published August 23, 2011
 * Edsger Dijkstra (**1968**). //Go To Statement Considered Harmful//. Communications of the ACM, Vol. 11, No. 3, [|pdf]
 * Ward Douglas Maurer (**1968**). //[|Programming: An Introduction to Computer Languages and Techniques]//. Holden-Day
 * Donald E. Knuth (**1968 ...**). //[|The Art of Computer Programming (TAOCP)]//
 * Donald Knuth (**1974**). //Structured Programming with go to Statements//. ACM Computing Surveys, Vol. 6, No. 4, [|pdf] » goto
 * [|John Hughes] (**1984**). //Why Functional Programming Matters//. [|Chalmers Tekniska Högskola], [|Göteborg], [|pdf] » Alpha-Beta
 * [|Steve McConnell] (**1993**). //[|Code Complete: A Practical Handbook of Software Construction]//. [|Microsoft Press]
 * [|Brian W. Kernighan], [|Rob Pike] (**1999**). //[|The Practice of Programming]//. [|Addison-Wesley], ISBN: ISBN 0-201-61586-X
 * Marek Strejczek (**2004**). //Some aspects of chess programming//. Technical University of Łódź, Faculty of Electrical and Electronic Engineering, Department of Computer Science, Supervisor Maciej Szmit, [|zipped pdf], [|pdf]

=Forum Posts=
 * [|Big new ideas in chess programming] by John Smith, CCC, September 19, 2013
 * [|Photographing Chess Clock] by Harm Geert Muller, CCC, October 10, 2016

=External Links=
 * [|Computer programming from Wikipedia]
 * [|Rosetta Code], [|Rosetta Code from Wikipedia]

Computation
> [|Turing machine] > [|Lambda calculus] > [|First-order logic] > [|Bit-level parallelism] > [|Instruction-level parallelism] > [|Task parallelism]
 * [|Model of computation from Wikipedia]
 * [|Parallel computing from Wikipedia]

Paradigms
> [|Aspect-oriented programming] > [|Data-driven programming] > [|Declarative programming] > [|Dynamic programming language] > [|Functional programming] > [|Imperative programming] > [|Inductive Logic Programming] > [|Logic programming] > [|Metaprogramming] > [|Object-oriented programming] > [|Procedural programming]
 * [|Programming paradigm from Wikipedia]

Misc

 * [|Dynamic programming from Wikipedia]
 * [|Generic programming from Wikipedia]
 * [|Genetic programming from Wikipedia]
 * [|Integer programming from Wikipedia]
 * [|Stochastic programming from Wikipedia]
 * [|Programming tool from Wikipedia]
 * [|Horizon Chess - Main - Programming] by Ron Murawski
 * [|Useful Programming Documents and Books] from [|Document archive]
 * [|Game programming lecture notes] by Andy Thomason
 * [|A Programmers Place] by Maarten van Emden
 * [|Program optimization from Wikipedia]
 * [|Programming Optimization] by Paul Hsieh
 * [|research!rsc] - Computer programming links, collected by [|Russ Cox]
 * [|How Computer Chess Changed Programming] from [|IEEE Spectrum online]
 * [|YouTube channel] by [|Barbara Hecker]
 * [|Chess Engine In C] - [|YouTube] Videos by BlueFeverSoft » Vice, C
 * [|Programming A Javascript Chess Engine] - [|YouTube] Videos by BlueFeverSoft » JavaScript

=References=
 * Up one Level**