¿Cuáles son actualmente las mayores exageraciones en informática y cuáles con razón?

Demasiada atención

  • Programación funcional No es una panacea, al igual que OOP antes.
  • Software de memoria transaccional. Al igual que FP, lleva a los programadores a problemas que son isomorfos a los que evita.
  • Mapa reducido. Es solo un paradigma útil entre varios, incluso si nos limitamos al procesamiento por lotes (en lugar de continuo)

Necesita más:

  • Comprobación de modelos y prueba de teoremas. En lugar de confiar en muletas FP o STM, los programadores deben modelar las interacciones de su código concurrente como máquinas de estado, luego usar MC / TP para verificar que alcanzan resultados correctos en todas las ejecuciones.
  • Razonamiento sobre la coherencia / ordenación cuando los datos se copian / almacenan en caché. Todos los días tengo que tratar con programadores que simplemente no tienen la idea de que tienes que pensar en estos problemas cada vez que se mueven los datos, ya sea entre niveles de caché de procesador o en una WAN. Personas como Lamport y Lynch han hecho un trabajo fundamental aquí, pero hay muy pocos seguimientos.
  • Razonamiento sobre fallas. Demasiadas personas están atrapadas en la mentalidad de “nada falla” o “todo falla igualmente”. La categorización de fallas y patrones de fallas, el aislamiento / contención de fallas, la reducción de garantías (por ejemplo, consistencia o desempeño) en presencia de fallas, etc. son todas áreas donde se necesita más trabajo.

Soy un viejo pedo, así que soy bastante cínico sobre las exageraciones.

Tengo que estar de acuerdo y en desacuerdo con Jeff Darcy sobre la programación funcional. Sí, la programación funcional pura tiene sus trampas. Sin embargo, la programación funcional impura tiene muchos beneficios sin las trampas.

Soy un gran admirador de una forma de programación en la que cada método / procedimiento / función solo puede escribir en una variable no automática, y solo un m / p / f puede escribir en cada variable no automática. Permite dependencias, que he encontrado enormemente poderosas, especialmente en el mantenimiento de código, subprocesamiento múltiple y procesamiento múltiple.

Siendo un viejo pedo, recuerdo cuando la demostración del teorema era grande. Me gusta, pero hubo razones por las cuales la gente dejó de hacerlo. Si son legítimos o no es otra cuestión, pero parecen inevitables, siendo la administración lo que es.

Una cosa que parece constantemente sobrevalorada son las metodologías. Todos ellos. Todas las metodologías funcionan cuando se aplican estrictamente, aunque por razones no relacionadas con la metodología específica. Todo funciona cuando se aplica de manera muy informal. Ninguno de ellos funciona en el medio, que es lo que siempre parece suceder.

La idea básica de una metodología es errónea. Es más bien freudiano, en el sentido de que supone que las personas son malas y necesitan ser puestas en forma. Mientras que las personas son realmente buenas, y azotarlas solo las distrae de lo que pueden hacer bien.

Parte 1:
1. Algoritmos de aprendizaje automático
2. Computación distribuida
3. Comercio algorítmico, algoritmos financieros

Parte 2:
1. Lenguaje de programación Haskell
2. Simulaciones VR
3. Computación biomolecular (ver Len Adleman para más detalles sobre qué es esto)

1. Big Data y Hadoop.
2. Simulación de realidad virtual (Leap, Kinect, Predator, Google Glasses, etc.)
3. Seguridad (Flame, Stutnext, Hackers, etc.)