Use of transposition tables in chess engines I hope this is the right place to post this question. So I like to implement things myself without using libraries and one of my first projects was a chess engine and I would like to improve this one.

I got multiple questions:





  How are transposition tables used? Usually the serch algorithm has a
  fixed depth so we cannot "evaluate" non-leafs with the transposition
  tables, right? So the only purpose would be to hash the board
  evaluation of the leafs. Is this correct?


  I am using Java without multithreads. Is it worth to look into magic bitboards and switch to C++? They seem to be pretty messy at the first glance.


  How many nodes per second are realistic to reach with a "simple" engine. I got up to 1E6. I know that Stockfish reaches 80E6. Is it more worth to improve on nodes per second or on the algorithm itself?



I am very happy for any help.
Depends on the program and how they implemented it. Many have memorized openings and transpositions later on in the game are usually short enough that the depth of analysis handles it.
Not for me.  But I am old school when it comes to programming.  You may or may not like C++.
Nodes/sec depends on the hardware, opsys, language, and your coding.  The algorithm is far more important for good results.