DIFERENCIAS Y SIMILITUDES
DIFERENCIAS:
Java sólo puede usar los parámetros formales por referencia.
En Java toda función es dependiente de una clase, está codificada en una clase, no se permiten funciones globales y datos globales como en Pascal.
La colisión de nombres en Java no existe si las funciones pertenecen a paquetes diferentes.
Java sólo dispone de funciones. No dispone de Procedimientos.
En Java todos los datos son de E/S. En Pascal existen de Salida, de Entrada y de Entrada/Salida.
Pascal no puede devolver datos complejos como arrays en las funciones. Para ello necesita un Procedimiento (Procedure). Java por el contrario sí que tiene esta posibilidad implementada.
En Java, para que dos funciones estén sobrecargadas, tienen que diferir en el tipo devuelto y en algo más (ya sea número de parámetros, orden de los mismos o su tipo). En pascal es suficiente con el tipo devuelto.
En Java no es necesario declarar la cabecera de un método porque la comprobación de tipos se hace en tiempo de ejecución.
Java no permite pasar métodos como argumentos de otros métodos. Pascal por el contrario sí, siempre que el resultado de la función sea del mismo tipo que el argumento introducido.
El orden de las funciones al ser llamadas por otro módulo en Java es irrelevante. Debido a esto podremos llamar a una función que no esté definida aún (definida a posteriori). En Pascal esto no se permite porque toda función llamada tiene que estar implementada antes.
Java posee polimorfismo dinámico y estático y herencia en el lenguaje debido a su orientación a objetos. Esta es la razón por la que muchas implementaciones resultan más fáciles y se utiliza menos código. Pascal solo permite la sobrecarga de funciones
La comprobación de tipos, en los métodos de java se realiza en tiempo de ejecución mientras que en pascal se hace en tiempo de compilación.
SIMILITUDES:
Tanto en Java como en Pascal, se pueden sobrecargar funciones.
Dos o más funciones se pueden declarar con el mismo nombre si se distinguen en el número de parámetros o tipo.
Los dos lenguajes usan la abstracción funcional, aunque con diferentes matices, ya que los módulos o acciones reciben los parámetros de diferente manera y están codificados en diferentes lugares del código.
La sobrecarga del operador suma se realiza de igual manera en Pascal y Java.
Tanto Java como Pascal permiten el paso de parámetros en las funciones.
