¿En qué se diferencia la filosofía de la computación y la ciencia de la computación? Comenzaré explicando en primer lugar cuando se dice filosofía de «X». Abro hilo. #filosofía#computación#informática
Cuando una disciplina se le dice filosofía de «X», donde «X» puede ser ciencia, biología, política, etc. se espera que se involucre en temas que van más allá de la misma, en este caso, de la parte técnica, es un análisis teórico sobre la misma área.
Entonces la filosofía de la computación (FC) no trata sobre el diseño de software, ni de encontrar un algoritmo para resolver un problema, ni sobre el uso de una herramienta en particular.
Más bien buscar responder preguntas del tipo: ¿cuál es la diferencia entre algoritmo y programa?, ¿un programa es una entidad abstracta o concreta? O sea, trata de dar claridad a los conceptos que usamos a diario, pero que, lamentablemente, no siempre analizamos en profundidad.
Por ejemplo la segunda pregunta no es tan simple de responder. Un programa se crea a través de un conjunto de algoritmos, escritos en un lenguaje de programación, que luego se transforma a Assembly (abstracto). Pero este se ejecuta sobre un hardware (concreto)
Luego este código Assembly se transforma a binario y se opera sobre distintas combinaciones de puertas lógicas, dentro de una arquitectura de computadora.
Un programa solo existe cuando se encuentra ejecutando, entonces, ¿es abstracto o concreto? Al parecer no únicamente software, requerimos el hardware. ¿Es ambas cosas?
Este tipo de preguntas intenta responder la FC. La labor de un filósofo de la computación es adoptar un punto de vista muy amplio sobre el área y dar claridad dentro del tsunami de conceptos y confusiones que existen.
Un buen trabajo en filosofía de la computación debería aspirar a ser fructífero para un informático. Pues podría comprender mejor las posibilidades y alcances de su campo.
Hay dos autores que han escrito sobre esto: William J. Rapaport, «Philosophy of Computer Science» (cse.buffalo.edu/~rapaport/phil…). Y en particular: Raymond Turner, «Computational Artifacts», que es, sin duda, el trabajo más sistemático sobre esto.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
¿Cuál es uno de los conceptos más importantes de la programación funcional? La transparencia referencial (TR). Aunque pueda parecer difícil nada más leerlo la idea es bastante simple. Abro hilo.
Para entender esto es mejor recurrir a un ejemplo con nuestro lenguaje natural. Consideré las siguientes afirmaciones: «Isabel tiene un minino» e «Isabel tiene un gato». Ambas cumplen la TR si «minino» y «gato» referencian a lo mismo.
En cambio son opacas (no transparentes) si «minino» y «gato» se refieren a otras cosas.