Beamforming and precoding are two words that can be used interchangeably, but some people also read different things into the words. I explain this in a blog post:
I agree with Emil and add to him precoding is the transmitter signal processing to affect maximization of the received signal to certain receiver or antenna and while reducing the interference to all other receivers or receiving antennas.
In case of Massive MIMO precoding can be termed beam forming where one forms beams to the different users simultaneously while suppressing the interference at the same time.
1. Beam-forming is mostly denoted to the signal processing scheme implemented by the transmitter prior to radio transmission with the goal of concentrating the signal intended to each user on that user only and prevent unwanted signal interference. This results in an almost pure received signal at the user antennas with high SINR.
Although beam-forming is capable of purify the signals but always some residual unwanted interfering signals remain. Accordingly, receiver implements a precoding scheme in order to purify these residual signals as much as possible:
2. Precoding is mostly denoted to the signal processing schemes (e.g., Maximal Ratio Combiner, Zero Forcing) implemented by receiver on the signal received at its antenna. These signal processing schemes are performed prior to detection with the goal of purifying the received signal by eliminating the residual unwanted interfering signals and improving the SINR in order to achieve higher spectral efficiency after detection (spectral efficiency is logarithmically related to SINR).
Hope this helps. However also as professor Bjornson denoted, these two words might be used interchangeably in some references and articles.
Precoding is equal to pre-equalize the signal to be transmitted. This way it can be reduced the effects of large- and small-scale fading on the transmitted signal based on the CSI quality.
Note: Prior to apply precoding, channel estimation must be performed.
Instead, Beamforming is the technique used to aim the radiation lobe of an antenna array to a specific point (in azimuth and elevation angles). In theory, Beamforming can be implemented digitally, but with massive MIMO systems, this cannot be treatable, instead hybrid beamforming techniques like the partially connected array are widely used. With this setup, the Beamforming task is split in the analog and digital domains.
Note: Beamforming also requires the CSI, but only for the digital domain. In the analog domain, precoding codebooks are used in order to aim the signal towards the user.
Just a small addition to the comment from @Diego Carrera:
Its true that, hybrid-analog beamforming (HBF) have alot been studied in the recent years for large scale MIMO systems. Major problem that researchers used to describe about the implementation of "conventional" digital beamforming (DBF) is the requirement of one RF chain per antenna. However, this is a partial truth. In fact, DBF can be implemented even using a single RF chain. Primarily DBF requires that weighted signal is preserved from digital baseband unit till the antenna aperture ( talking about TX side). Therefore, initially, it was thought this can be done considering one RF chain per antenna. However, later , researcher have shown that, the signals can be preserved in RF chain by implementing time/frequency division multiplexing in the RF chain. Performance of these techniques is considerably closer to the "conventional" DBF. As HBF is inferior technology compared to DBF, recently low RF complexity DBF techniques are getting research interest (although studies started way back in early 2000's). See one example below:
I think precoding is more of a generalization of beam forming vectors. Beam forming can be used in transmission and reception of signals for spatial filtering of unwanted signals and coherent combining of desired signals. This can only be apply at the base station because of the presence of multi antenna and also because the base station is assumed to know the channel responses of all or some UEs in the network. It is preferable used in MISO, SIMO systems or multi- UE MISO systems or rather multi-UE SIMO systems. However Precoding terminology are preferably used for MIMO systems. But the functionality of both are the same
Bpth are same, conceptually. Its kind of distributing powers levels to be transmitted from different antennas. The word precoding is bit into communication theory and beamforming into the antenna side.
The digital beamforming should be used in every case on MIMO and Massive MIMO wireless communication on the transmitter and receiver sites. Precoding methods used only in transmitters. In the general case for pre-coding of signals can be used LDPC, Polar Codes, Reed-Muller, Reed-Solomon Codes, Turbo Codes etc. On the other hand, in the case of using OFDM and N-OFDM Signals as the pre-coding procedure can be considered IFFT as well.
I found this article that also use the two terms for the same processing as there is no common consensus about their meanings: https://arxiv.org/pdf/2004.05079.pdf
If our purpose is to transmit a signal to a specific device (one device), we will transmit it along a specific direction to establish fast and a more reliable link. This thing is the crux of beamforming, where the signal is not spread in all directions. Precoding is simply letting the decoder know the channel knowledge after sending multiple signals to the receiver.