¡Abstracción! Aquí hay algunas razones de por qué:
- El código bien resumido es más fácil de entender para los humanos, lo que facilita su mantenimiento y, en general, aumenta enormemente la felicidad.
- No tiene que escribir el mismo código muchas veces si puede escribir una versión más general una vez.
- Comprender nuevos conceptos es más fácil si puede relacionarlo con algo que ya sabe, y es más probable que suceda si las cosas que conoce son muy generales.
Y aquí hay algunos ejemplos concretos (heh) de esas razones:
- Consulte Solicitudes, un módulo de manejo de HTTP en Python, para una excelente demostración de esto.
- Estaba en un equipo de FIRST Robotics Competition (# 125) en la escuela secundaria, y ayudé a sus nuevos programadores el año después de graduarme. Tenían un gran desafío frente a ellos. El robot para disparar frisbee que estaban construyendo tenía una entrada desplegable que alimentaba a los frisbees en una revista, que tuvo que retirarse antes de que pudiera disparar. El mecanismo de disparo podía inclinarse hacia adelante y hacia atrás y estaba en un elevador que podía subir y bajar, pero no todos esos movimientos eran posibles con la revista aún extendida. Podría haber sido un desastre codificar. Ingrese la abstracción clave: cada subsistema esencialmente tenía dos estados, encendido y apagado, a veces con un tiempo de transición. Después de hacer esa abstracción, todo lo que había que completar para cada subsistema era exactamente qué hacer (motores en movimiento, neumáticos, etc.) cuando el subsistema se encendía o apagaba y cuánto tiempo esperar como retraso de transición. Había dos comandos básicos: activar / desactivar un subsistema y activar / desactivar un subsistema con un retraso de transición antes de continuar.
- En el curso introductorio EECS del MIT (6.01), una de las tareas de laboratorio es implementar funciones en distribuciones de probabilidad. La mitad de la tarea era descubrir qué se suponía que debían hacer las funciones. Una de ellas era la probabilidad total (PA, PBgA): dada una distribución PA en algún conjunto A y una función PBgA de A a distribuciones en un conjunto B (que le da la probabilidad de x dada y para cada x en A e y en B ), calcule la distribución general de probabilidad en B. Resulta que totalProbability es una instancia de una de las operaciones básicas de mónada, al igual que algunas de las otras funciones que tuvimos que implementar. Aunque nunca antes había visto ninguno de los problemas en el laboratorio, conocer un poco sobre las mónadas me dio un andamiaje para los conceptos relevantes, y completar los detalles fue relativamente simple.
- ¿Cuáles son los activos clave de IBM?
- Puse un enlace a mi perfil de github en mi carta de presentación. ¿Es probable que el entrevistador explore mi perfil y haga preguntas específicas sobre mi código?
- ¿Cuáles son los desafíos que enfrentan las empresas cuando subcontratan procesos comerciales o desarrollo de software a tiendas en el extranjero?
- ¿Qué tipo de paradigma podría reemplazar a OOP?
- ¿Cómo es tener una maestría en Ingeniería de Software en comparación con tener una licenciatura?