If you are a hobbyist who is only using G-Code to program your home 3D printer, for example, one of the open-source, stand-alone simulators, or AutoCAD or Solidworks software will most likely be the best solution. One of the MATLAB or Python libraries might be worth checking out if you’re a researcher or programmer wishing to go deeper into the simulation. Finally, if you work in the industry, you’ll want software that is simple to use, reliable, and won’t cause you any needless headaches. RoboDK is a solid choice for robotic machining and 3D printing. Look into a good CAM package for every other CNC.