Pourquoi préférer la structure du langage Pascal à celle (par exemple) du langage C, alors que c'est cette dernière qui est la plus répandue, y compris dans les langages autres que C ?
Pour moi la raison en est toute simple : la clarté et la rigueur du code !!
Pour la clarté du code, ce que je dis souvent, c'est que lorsqu'on ouvre une unité contenant une classe, et bien grâce à la structure de ce langage, on a tout de suite une vision claire et concise de celle-ci.
Voici par exemple la déclaration d'une classe Voiture héritant de la classe Vehicule :

 Voiture = class( Vehicule)
 private
   FPuissance: string;
   FCouleur: string;
   procedure SetCouleur(const Value: string);
   procedure SetPuissance(const Value: string);
 public
   procedure Demarrer;
   procedure Arreter;
 published
   property Couleur:string read FCouleur write SetCouleur;
   property Puissance:string read FPuissance write SetPuissance;
 end;

D'un seul coup d'œil on peut voir les propriétés ainsi que les méthodes. On vois distinctement la portée de chaque élément, il est ainsi aisé de cerner rapidement ce qui va permettre de manipuler l'instance de cette classe.
Alors oui, l'inconvénient, c'est que quelque part il y a double travail : on déclare d'un côté, on implémente de l'autre. Mais justement c'est là qu'intervient Delphi !! Vous tapez le code ci-dessus dans l'IDE , et vous demandez simplement à Delphi de générer l'implémentation ! Non, bien sûr il n'a pas écrit le contenu de la méthode Demarrer, il faut bien vous en laisser un peu :) Mais par contre vous n'avez plus qu'à écrire le contenu des différentes méthodes de la classe (sauf pour les accesseurs (SetCouleur, ....) pour lesquels Delphi poussera sa générosité jusqu'à écrire le contenu, en partant du principe que vous ne voulez faire qu'une simple affectation du champ).
Cela peut paraitre paradoxal, mais même avec un langage un peu plus verbeux, on ne perd pas plus de temps à coder.
Puisque nous sommes dans les paradoxes je vais en ajouter un autre : ce qui me plait aussi dans ce langage, c'est la rigueur qu'il impose, notamment en étant fortement typé. Encore une fois cela peut sembler être contraire à la productivité puisque par exemple il est tout de même bien plus rapide d'écrire N=2 sans avoir à préciser que N est un entier. Oui, sauf que cette rigueur imposée va indirectement faire gagner beaucoup de temps au développeur pour la mise au point de son application. Avec une langage faiblement typé, il est possible d'écrire N=2, puis plus loin N="deux" pour finalement tenter une addition N=N + 1. Et si N="deux" se trouve quelque part dans une procédure appelée, la recherche de l'erreur (qui n'aura bien entendu lieue qu'à l'exécution de l'application) peut s'avérer longue.
En pascal le code ne compilera tout simplement pas. Mieux, avec Delphi un message d'erreur apparaitra directement dans l'IDE et le N sera souligné de rouge, alertant immédiatement le développeur de son erreur (ceci étant valable pour les versions postérieures à Delphi 7)
Pour résumer, un code plus clair dans lequel chaque variable possède son type unique est un code plus facile à maintenir, c'est pour cela que je préfère le Pascal.