Question: I've heard the terminologies: register, hardware register, program register,register file.

What's the difference between all these? And in assebmly, what is the type of the EAX register? Program register?

Answer: 
a register is a small bit of memory that sits inside the CPU. and is used by assembly language to perform various tasks.

could it be that by program register you mean program counter?
In relation to the question, there are two general types of registers that you should consider: 

* program registers
* hardware registers

The hardware registers are clocked (updated on clock ticks) and are used in the **physical** design of processor circuitry. 

The program registers are random-access memory and are held in a register file located in the CPU. Assembly/machine code instructions access these registers through names like %eax, %esp, %rdi, %edi, etc.