Le principal avantage du code Pascal est sa clarté, ce qui facilite sa lecture. Cet avantage est particulièrement parlant avec les fonctions de tests. Faciles à lire en Pascal elles peuvent donner des maux de tête avec certains autres langages. Par ailleurs, la structure du code renforce cette clarté : des sections précises pour les déclarations, la notion interface/implémentation rendant inutile la création d'un fichier d'interface, la distinction procédure/fonction... Le mot-clé "with" - qui évite de re-décrire toute la hiérarchie d'une structure de données utilisée dans un bloc begin/end - a largement contribué à la lisibilité du code:
with damier[ligne,colonne] do begin piece=fou; couleur=noir; end;
Un autre avantage du Pascal est sa rigueur : au contraire du Visual Basic, les passages d'un type à un autre se font selon des règles précises, les variables sont obligatoirement typées. Cette rigueur permet d'éviter nombres d'erreur de programmation, mais confère un certain manque de souplesse. Toutefois il est possible d'utiliser le type Variant qui permet de stocker autant un nombre qu'une chaîne de caractères (à utiliser avec précaution tout de même).
Pour le reste, beaucoup des inconvénients que l'on attribuait au langage il y a 10 ou 20 ans, ne sont plus d'actualité. Par exemple, le manque de souplesse pour les passages chaîne - caractère a été corrigé dès les premières versions de Turbo Pascal. Les objets ont fait leur apparition avec la notion d'héritage, plus récemment les classes, et même la technologie .net... Les optimisations apportées depuis Turbo Pascal 5.0 ont permis de générer des exécutables aux performances équivalentes à leurs homologues issus du C mais le vieux mythe continue malheureusement d'exister.
Dernier avantage du Pascal : la rapidité de compilation. Compiler 10 Mo de code ne demande en Pascal que quelques secondes contre plusieurs minutes en C. Delphi 6 a même été jugé comme le compilateur le plus rapide de tous les temps, capable de compiler une centaine de mégaoctets de code en moins d'une minute. Cette rapidité est due à la structure claire et explicite du langage avec, par exemple, la distinction procédure/fonction qui permet au compilateur d'éviter les tests permettant d'effectuer cette distinction ou encore l'absence de déclarations dans le code, l'obligation de déclarer les variables et les routines avant de les utiliser et enfin l'interface qui se trouve dans le même fichier que le code (un seul fichier ".pas" contre un fichier ".h" et un fichier ".c" en C).
Jusqu'à récemment un inconvénient majeur du langage était l'absence de support d'une technique de généricité. Cela a été rajouté aussi bien dans Delphi que dans Lazarus. On peut donc désormais faire des 'templates', c'est-à-dire du code dont on ne définit pas un type T qui sera remplacé plus tard par n'importe quel type voulu.