Compactness of First-Order Logic