Chess engines are software programs designed to play chess. They use algorithms and heuristics to analyze positions and make moves. Here are some of the most popular chess engines and a brief explanation of their programming:

- Stockfish – Stockfish is an open-source chess engine that uses alpha-beta search with several enhancements, including principal variation search, transposition table cutoffs, and aspiration windows. It also uses bitboards to represent the chess board and position.
- Komodo – Komodo is a commercial chess engine that uses alpha-beta search with several enhancements, including multithreading, bitboards, and advanced evaluation functions. It also uses a neural network to improve its move selection.
- Houdini – Houdini is a commercial chess engine that uses alpha-beta search with several enhancements, including selective search extensions, late move reductions, and a sophisticated evaluation function. It also uses bitboards and a hash table to store positions.
- Leela Chess Zero – Leela Chess Zero is an open-source chess engine that uses a neural network to evaluate positions and make moves. It is trained using reinforcement learning and Monte Carlo tree search. It does not use traditional alpha-beta search.
- AlphaZero – AlphaZero is a chess engine developed by DeepMind, which uses a combination of neural networks and Monte Carlo tree search. It was trained using reinforcement learning and played millions of games against itself to improve its play. It does not use traditional alpha-beta search.
- Rybka – Rybka is a commercial chess engine that uses alpha-beta search with several enhancements, including multithreading, selective search extensions, and advanced evaluation functions. It also uses bitboards to represent the chess board and position.
- Fritz – Fritz is a commercial chess engine that uses alpha-beta search with several enhancements, including multithreading, transposition table cutoffs, and a sophisticated evaluation function. It also uses bitboards and a hash table to store positions.
In general, chess engines use a combination of search algorithms, such as alpha-beta search or Monte Carlo tree search, and evaluation functions to analyze positions and make moves. They also use techniques such as multithreading, bitboards, and hash tables to improve their efficiency and speed. The specific programming techniques and algorithms used vary depending on the chess engine.