Equally important is the advance of software and programming languages, which to an increasing degree allows the representation of abstract mathematical structures in program code. Symbolic computing is bringing algorithms from mathematical analysis into the hands of pure and applied mathematicians, and the combination of symbolic and numerical techniques is becoming increasingly important both in computational science and in areas of pure mathematics.