Tienes razón en que las computadoras físicas tienen memoria finita y, por lo tanto, no están completas para Turing. Hay otras formas en que la teoría de la computabilidad no es un buen modelo para la computación: no tiene en cuenta las limitaciones de tiempo y memoria. La teoría de la complejidad se inventó (tal vez) como una descripción más realista de la informática, pero en mi humilde opinión, tiene problemas similares (pero más sutiles).
Por otro lado, para estudiar matemáticamente las capacidades y los límites de la informática, necesitamos usar alguna abstracción que no tenga restricciones. Eso hace posible el análisis. De manera similar, en mecánica estadística suponemos que el número de elementos (átomos o moléculas) es tan grande que el comportamiento está cerca del límite (es decir, dejamos que el número de elementos tienda al infinito). Estudiar informática desde una perspectiva asintótica tiene ventajas similares, pero a veces es engañoso. Aquí hay algunos ejemplos de esto último:
- En criptografía, los algoritmos exponenciales son a veces factibles. Si elegimos los parámetros de seguridad incorrectos, nuestro cifrado podría ser inseguro aunque sea "demostrablemente seguro".
- Se supone que los algoritmos de tiempo polinómico representan computación eficiente y factible, pero muchos de ellos no son factibles. Como ejemplo, los algoritmos de multiplicación de matrices más sofisticados no se usan en la práctica.
- La teoría moderna de la complejidad está obsesionada con el rendimiento en el peor de los casos, y no puede analizar algoritmos heurísticos que se utilizan en la práctica. Los problemas NP-hard se consideran inviables, pero se resuelven en la práctica todo el tiempo.
Otro problema es que las computadoras reales no funcionan en absoluto como las máquinas de Turing. Funcionan como máquinas RAM, que son una mejor abstracción para la informática real.