Занять какую-то однозначную позицию в этом вопросе сложно. Многие считают, что слово "ходят" по отношению к кораблю или любому другому судну – это просто жаргонизм наряду с гальюном, компасом (с ударением на второй слог) и т.д. Соответственно, в выражении "плавают корабли" никакой ошибки нет. Как говорил классик: "Плывут пароходы — привет Мальчишу!" – в конце концов, рыба тоже плавает, а не ходит – констатация этого факта может быть хорошим ответом на знаменитое выражение про то, что "это г... в проруби плавает, а корабли ходят".
В общем, с точки зрения русского языка корабли всё же плавают – то есть держатся на воде, не тонут; либо плывут – то есть двигаются по воде (или в воде). А откуда взялось убеждение, что корабли ходят? Оказывается, и тут есть несколько версий, совершенно не противоречащих друг другу, кстати.
Скажем, самая "техническая" версия гласит, что ходить корабли начали в тот момент, когда у них появились винт, который крутится. Поскольку в этом действии есть "момент ш