[MÚSICA] En este curso veremos un nuevo enfoque de lo que significa programar. Una definición válida, pero simplista, es que programar es escribir una secuencia, pasos, para que la computadora realice alguna acción. Una versión más amplia y completa es la definición de programación es que es representar conocimiento en la computadora. En este contexto, una posible definición de programa es modelo computable de un dominio de un problema de la realidad. La realidad es todo aquello que podemos percibir, tocar, hablar sobre, etcétera. Dominio de problema es un recorte de la realidad que nos interesa modelar. Modelo es una representación de lo que estamos modelando. Computable significa que puede ejecutarse en una máquina de Turing. Una característica esencial de lo que es computable es que, no solo especifica el qué, sino que, además, implementa el cómo. Entonces, lo que hacemos cuando programamos son modelos computables que modelan un aspecto concreto de la realidad. Como programar es programar conocimiento en la computadora, primero debemos adquirir ese conocimiento para poder representarlo. Con lo cual el desarrollo de software es un proceso de aprendizaje. Eso implica que es iterativo, es incremental, el conocimiento se genera a partir de hechos concretos, el conocimiento generado debe ser organizado y el feedback inmediato favorece el aprendizaje. Algunas características del proceso de desarrollo de software son: el dominio del problema está generalmente especificado en lenguajes ambiguos y contextuales. Por ejemplo, el lenguaje natural. El proceso de desarrollo implica desambiguar y descontextualizar el conocimiento del dominio del problema. El proceso de desarrollo implica hacer explícito y externo el conocimiento implícito e internalizado de los expertos del dominio. El cambio es una característica esencial del software. no accidental porque, o bien cambia el dominio del problema, o cambia nuestro entendimiento del dominio del problema, o cambia la manera de modelar lo que entendemos del dominio del problema. Para resumir todo esto, vimos que programar es representar conocimiento en una computadora, que el desarrollo de software es un proceso de aprendizaje, por ende, debe ser iterativo e incremental. [MÚSICA]