2010-07-23 13 views
7

He visto a programadores "batallando" con problemas matemáticos muy complejos en sus códigos, particularmente en los campos de programación de juegos, programación física, programación de gráficos, etc. Soy un desarrollador web, y me pregunto si hay conceptos matemáticos por ahí que puedo usar para la programación web. Comencé la programación web hace un año y dos meses, y todo lo que he tratado ha sido el análisis complejo de sistemas, consultas de bases de datos, diseños de interfaz de usuario, estructuras de datos simples, manipulación e interpretación de datos complejos (expresiones regulares, análisis sintáctico, etc.) pero no (aún) encontró una necesidad de matemática compleja.¿Cómo me pueden ayudar los conceptos matemáticos en el desarrollo web?

Entonces, para repetir la pregunta, ¿hay conceptos matemáticos que puedan aprovechar mis habilidades de desarrollo web? Si los hay, ¿qué escenarios son útiles o indispensables?

+0

He tomado algunas clases de matemáticas más allá de las requeridas, y, como programador generalista, no he tenido que aplicar ese conocimiento realmente. Lástima ... Hay preguntas similares, como qué conceptos matemáticos ayudan en la programación. Dicen que la teoría de conjuntos, las leyes De-Morgan, el mapa de Karnaugh ayudan. –

Respuesta

1

No hay razón para que no puedas usar tus células cerebrales matemáticas hoy en una aplicación web. Mencionas juego, física y gráficos como si estos fueran exclusivos de la programación web. Ellos no están. Hay bastantes juegos en línea implementados como aplicaciones web hoy, por ejemplo, que requieren matemática no trivial (en Flash, Silverlight o incluso JavaScript) para obtener los píxeles en el lugar correcto en la pantalla, incluidas las proyecciones y transformaciones 3D. Agregue el lienzo HTML 5 a la mezcla y las cosas se vuelven realmente interesantes.

La mentalidad de programación web a menudo está preocupada por las configuraciones del servidor, las bases de datos y el rendimiento de la memoria caché, pero la construcción del front-end web también forma parte de la programación web. Tan pronto como sea responsable de colocar los píxeles frente al usuario (más que solo texto), necesitará matemática. Si esos píxeles necesitan moverse, necesitará matemática.

1

Queueing Theory es un concepto matemático que se relaciona con la forma en que su servidor web puede manejar las solicitudes, mirando su tasa de solicitud entrante y cuánto tarda cada solicitud en atenderse.

1

La funcionalidad específica del dominio puede requerir o no grandes habilidades matemáticas, sin importar la plataforma utilizada para entregarla.

Por ejemplo, construir un sistema de recomendación basado en la web que basa sus recomendaciones en lo que otros con preferencias similares piensan que requeriría habilidades matemáticas decentes.

Otro ejemplo pertinente es la detección de fraude.

0

Con Silverlight y HTML5 (es decir, lienzo y etiquetas svg) los gráficos se encuentran en constante aumento y la línea entre la web y el escritorio será difícil de distinguir en el futuro cercano.

Suena como una gran oportunidad para usar algunas de esas habilidades matemáticas. Las habilidades web seguirán siendo necesarias ya que un servidor estará involucrado en algún momento del proceso.

1

La semana pasada optimicé una función de validación de número de seguro social (algoritmo de Luhn) en javascript, y pude descomponerlo en una sola línea. Encontrar una solución implicaba una prueba algebraica que no podría haber hecho sin matemáticas superiores.

Creo que la mayor ventaja es la de pensando como un matemático en la codificación.

0

La programación web es (o al menos debería serlo) en su mayoría functional programming, que es realmente pensamiento matemático.

+1

No compro esto. Prácticamente todo lo que hace JavaScript en el lado del cliente implica efectos secundarios. Obviamente, son efectos intencionados en la práctica, pero aún así efectos colaterales en la teoría de la programación funcional. La página es mutable Mientras escribo, en este momento, la página web que estoy mirando está mutando frente a mí. Claro, puedes apuntar a las Mónadas estilo Haskell, pero esa es solo una manera de reinventar la programación imperativa. – Steve314

+1

En cualquier caso, do-this-then-do-that - incluso como una "composición funcional que usa un operador asociativo que obedece las reglas de un álgebra monádica" sigue siendo solo do-this-then-do-that -llamándolo "matemático pensar "parece extraño, como si las personas normales no pudieran manejar ideas como" unir "dos acciones en una secuencia. Por esta y otras razones similares, realmente no compro la "programación funcional" como "pensamiento matemático" más que cualquier otro tipo de programación. – Steve314

+0

@Steve: estoy de acuerdo con el lado del cliente, incluso si CPS se usa ampliamente para solicitudes asincrónicas. Por el lado del servidor, siempre es una cuestión de "transformar algo en otra cosa" (DB query -> HTML), que es la esencia de FP. –

1

Hay una muy buena presentation y upcoming book por Gregory Meredith en Monadic Design Patterns para la Web.(También va a haber una serie de conferencias de video sobre este tema por Gregory Meredith mismo en el Channel9 en algún momento de los próximos meses). Probablemente no sea más mathy que las Mónadas o la Teoría de categorías (que es de donde vienen las mónadas) en general.

Otro buen ejemplo es el hecho de que la programación interactiva (y especialmente el patrón de diseño del iterador) y la programación reactiva (y especialmente el patrón de diseño del sujeto/observador) son duales de categoría entre sí. Además, resulta que el patrón de diseño del iterador se puede implementar como una instancia de la mónada de lista y el patrón de diseño del sujeto/observador se puede implementar como una instancia de la mónada de continuación. Dado que ambos son Mónadas, esto básicamente significa que puede tratar con ambos usando las mismas herramientas.

En otras palabras, se puede tratar con evento corrientes (que generalmente se cree difícil de tratar) de la misma manera que se hace con colecciones (que todo el mundo ya sabe cómo hacerlo). Por ejemplo, en .NET, esto significa que puede "consultar" secuencias de eventos utilizando LINQ, ya que realmente LINQ no es más que Monad Comprehensions disfrazado de consultas SQL para que los programadores empresariales no se asusten con palabras tan importantes como "Monad" .

Y, por supuesto, la Programación web es todo sobre Programación reactiva. El navegador activa constantemente eventos a los que debe reaccionar. Y todas las cosas de E/S asíncronas (base de datos, archivo, lo que sea) tienen que ver con disparar su solicitud de E/S y luego esperar un evento de finalización.

Cuestiones relacionadas