The first generation of computers used vacuum tubes, took up entire rooms, were expensive to operate, and could only solve one problem at a time via machine language. Examples included the UNIVAC and ENIAC. The second generation transitioned to using transistors, magnetic memory/storage, and high-level languages like Fortran. They were smaller, faster, and more reliable. The third generation was defined by integrated circuits replacing individual transistors, making computers smaller, cheaper, and more efficient while supporting features like multiprocessing and operating systems.