In this image of the windshield of the truck used in the attack in Nice, France, you can easily count the bullet holes. There are some that are doubtful. The blue arrows point to items that are probably not bullet holes. They appear square. I do not detect a hole in the center, or cracks radiating from them.
I count between 20 and 23 bullet holes. They seem to be fairly uniform. The driver's position on this truck is on the right side of the picture. In France, people drive on the right side of the road, as in most of the rest of the world.
The bullet holes are decidedly biased to the left hand side. The shooter was probably in front of the truck on the passenger side, aiming his shots toward the drivers position.
I suspect that the shooter used a rifle. The shots seem reasonable well spaced, as if attempting to reach the driver as he might take cover within the cab, or as the angle of the line of fire changed as the truck moved. The event happened quickly. The number of shots on the windsheild are well within the standard 30 shot capacity of a current French FAMAS G2 or the older FAMAS 25 round F1. It is also within the 30 round capacity of Mini-14 variants used by some French police, though they are often seen with 20 round magazines.
The placement of the shots on the windshield implies a rifle shooter taking aimed shots. The last shots were likely placed through one of the doors. It has been reported that the driver was shot as he attempted to exit the truck, after the truck had stopped. A correspondent reports that there was a slight pause and a single, final shot.
Update: the NYTimes reports that the driver was found shot to death in the passenger seat of the truck.
Link to Gun Watch