The terms routing, switching, forwarding and bridging have different meanings that have changed over time.
Routing is the process of forwarding packets at L3 of the OSI model.
Bridging is the process of forwarding frames at Layer 2 of the OSI Model.
Switching is the process of forwarding frames at Layer 2 of the OSI based on the Destination Address.
So Forwarding is the general term for moving data from device input to output and routing/switching are specific forms of forwarding.
Once upon a time, there were many L3 protocols (IP, IPX, Appletalk, Banyan Vines etc) and there were many L2 protocols (Ethernet, FDDI, ATM, Token Ring, Arcnet etc etc). The term forwarding was used to describe moving any protocol across the network. Today, we have converged on Ethernet as the only L2 protocol to survive and IPv4/IPv6 are the only L3 protocols so the concept of “forwarding” has merged with the concept of switching and routing.
Historically (in the 1980 and 1990s), switching was done with “switches” and “routing” was done with routers. Switching of Ethernet frames could be performed in silicon while routing was done in CPU.
Another difference is that Ethernet frames require a CRC check on every frame. IP Routing requires that IP header packet have a checksum. Because the Ethernet is a fixed size header the processing is simple while the IP header is much more complex and calculating the checksum is very complex and difficult to do in silicon. There are other differences but this is the major one.