Answers.Body: <p><strong>EDIT:</strong></p>
  
  <ul>
  <li>I'm confident both Houdini and Komodo are in C/C++, the best language for speed optimization.</li>
  <li>I'd be very surprised if they don't use alpha-beta/nega-max. This is standard in chess programming.</li>
  <li>I don't know about board representation in Houdini and Komodo, but bitboard is good and fast. Stockfish uses that, and I think it's common for all strong engines.</li>
  </ul>
  
  <p><strong>ORIGINAL</strong></p>
  
  <p>Lot's of possibilities (I can't list everything):</p>
  
  <ul>
  <li><strong>How to prune/reduce the search tree</strong>?</li>
  <li><strong>How to evaluate a chess position</strong>?</li>
  <li>What about quiescence search? Do you want to extend your search horizon?</li>
  <li>Bitboard? Mailbox? How do you want to represent the internal board?</li>
  <li>Multithreading support?</li>
  <li>Programming language. C++? Java?</li>
  <li>Operating systems optimisations such as large pages?</li>
  </ul>
  
  <p>While all chess engines I'm aware of use alpha-beta/nega-max, their implementation could be significantly different.</p>
  
  <p>No. They <strong>don't</strong> all use the same algorithm and the same evaluation function. Visit <a href="https://chessprogramming.wikispaces.com/Home" rel="nofollow noreferrer">https://chessprogramming.wikispaces.com/Home</a>, and you'll appreciate the complexity in chess engine programming.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-18T21:17:36.277Z
Answers.Text: Could you give concrete examples for some of the strongest engines (stockfish, Houdini, Komodo,....)? I understand that there are lots of possibilities, but perhaps some of those possibilities are better than others and are therefore preferred in the stronger engines!?
Answers.UserDisplayName: user1583209
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-19T00:06:06.357Z
Answers.Text: @user1583209 Komod and Houdini are closed source. Thus, not possible to say anything for their algorithms. We can only get their analysis, but we don't know the details.
Answers.UserDisplayName: SmallChess
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-19T00:07:09.867Z
Answers.Text: @user1583209 Any concrete example will just give you a different move, different principal variation, different score. But, you'll never know why because no source code for Houdini and Komodo. Is that what you want?
Answers.UserDisplayName: SmallChess
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-19T12:23:43.010Z
Answers.Text: I had the hope that at least a few things were known about closed source engines. For instance you state that all engines use "alpha-beta/nega-max". How about "bitboards", ....? Probably the strong engines are not written in Java either!?
Answers.UserDisplayName: user1583209
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-20T02:33:37.093Z
Answers.Text: @user1583209 I'm not able to find an example. I'll try to find an example if nobody else answers this question.
Answers.UserDisplayName: SmallChess
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-18T11:37:18.933Z
Answers.LastActivityDate: 2017-10-19T23:40:58.980Z
Answers.LastEditDate: 2017-10-19T23:40:58.980Z
Answers.UserDisplayName: SmallChess
Body: <p>In what way do major chess engines differ from one another?</p>
  
  <p>Do they all use the same algorithm and the same evaluation function, differing only in parameters/weights?</p>
  
Tags: <engines><programming>
Title: Differences between chess engines
ThreadText: # Differences between chess engines
  
  (Asked by: username_0 on 2017-10-18)
  
  In what way do major chess engines differ from one another?
  
  Do they all use the same algorithm and the same evaluation function, differing only in parameters/weights?
  
  **Tags:** engines, programming
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2017-10-18. Score: 3
  
  **EDIT:**
  
  * I'm confident both Houdini and Komodo are in C/C++, the best language for speed optimization.
  * I'd be very surprised if they don't use alpha-beta/nega-max. This is standard in chess programming.
  * I don't know about board representation in Houdini and Komodo, but bitboard is good and fast. Stockfish uses that, and I think it's common for all strong engines.
  
  **ORIGINAL**
  
  Lot's of possibilities (I can't list everything):
  
  * **How to prune/reduce the search tree**?
  * **How to evaluate a chess position**?
  * What about quiescence search? Do you want to extend your search horizon?
  * Bitboard? Mailbox? How do you want to represent the internal board?
  * Multithreading support?
  * Programming language. C++? Java?
  * Operating systems optimisations such as large pages?
  
  While all chess engines I'm aware of use alpha-beta/nega-max, their implementation could be significantly different.
  
  No. They **don't** all use the same algorithm and the same evaluation function. Visit <https://chessprogramming.wikispaces.com/Home>, and you'll appreciate the complexity in chess engine programming.
  
  > **Comments:**
  > **username_0**: Could you give concrete examples for some of the strongest engines (stockfish, Houdini, Komodo,....)? I understand that there are lots of possibilities, but perhaps some of those possibilities are better than others and are therefore preferred in the stronger engines!?  
  > **username_1**: @username_0 Komod and Houdini are closed source. Thus, not possible to say anything for their algorithms. We can only get their analysis, but we don't know the details.  
  > **username_1**: @username_0 Any concrete example will just give you a different move, different principal variation, different score. But, you'll never know why because no source code for Houdini and Komodo. Is that what you want?  
  > **username_0**: I had the hope that at least a few things were known about closed source engines. For instance you state that all engines use "alpha-beta/nega-max". How about "bitboards", ....? Probably the strong engines are not written in Java either!?  
  > **username_1**: @username_0 I'm not able to find an example. I'll try to find an example if nobody else answers this question.  
  
  ---
  
  