CSS: Vertikales Spaltenlayout ohne <Tabelle>

Ok, ich habe mich 2001 an HTML und CSS gewöhnt. Ich habe so etwas gemacht (um eine Website mit einem "vertikalen Spalten" -Layout zu erstellen):

<html>
<head>
    <title>Vertical-column layout</title>
</head>
<body>
<table id="doc" >
<!-- header -->
    <tr>
    <td id="header" colspan="3"><!-- header code/php include --></td>
    </tr>
<!-- / header -->

<!-- / content -->
    <tr>
    <td id="col1" name="menu"><!-- content code/php include --></td>
    <td id="col2" name="content_left"><!-- content code/php include --></td>
    <td id="col3" name="content_right"><!-- content code/php include --></td>
    </tr>
<!-- / content -->

<!-- footer -->
    <tr>
    <td id="footer" colspan="3"><!-- header code/php include --></td>
    </tr>
<!-- / footer -->
</table>
</body>
</html>

Einfach, alles wird automatisch so ausgerichtet, wie ich es will, keine CSS-Kopfschmerzen usw. Das Leben war damals gut. JEDOCH habe ich vor nicht allzu langer Zeit gelesen, dass dieser Ansatz nicht mehr angewendet werden sollte. Ich wollte einen neuen Weg mit ein paar Divs versuchen, aber die Validierung von w3c & w3c mag es nicht, wenn Sie Block-Elemente als Inline-Elemente verwenden ... WTF !!!

Also ... meine Frustration hat mich dazu gebracht, euch zu fragen:

WIE? Wie kann man so etwas auf "moderne Art" erreichen ... so einfach wie möglich? Hat HTML 5 einen besseren Weg?
WARUM? Warum sollten wir jetzt diesen Tabellenansatz nicht verwenden, um ein "vertikales Spaltenlayout" auf einer Website zu erhalten?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage