tipos programacion paradigmas paradigma orientada objetos imperativo estructurada ejemplos clasificacion paradigms

paradigms - orientada - tipos de paradigmas de programacion



¿Qué paradigma de lenguaje de programación se adapta a qué trabajo? (8)

Por lo que yo sé (no mucho lo admitiré), los paradigmas de programación actualmente populares son Object Oriented (Java, C #, Ruby) vs functional (F #). Como alguien que está más familiarizado con el primer paradigma, tengo varias preguntas:

  • ¿Puede un programador quedarse con un paradigma durante toda su vida? O en otras palabras, ¿todos los problemas se pueden reducir a clavos para un martillo?
  • Si no, ¿qué herramienta es adecuada para cada tipo de tarea? Por ejemplo: basado en web vs escritorio, creando interfaces hermosas y receptivas, capaces de procesar datos rápidamente, etc.
  • ¿Alguna vez la gente ha tenido que aprender un nuevo paradigma? Para mis dos trabajos anteriores, mis lugares de trabajo requerían Java y C #. ¿Hay lugares de trabajo que usan específicamente lenguajes que no son OO?

Obviamente, no hay "mejores" idiomas, pero me pregunto si vale la pena la inversión de tiempo y energía para aprender un nuevo paradigma. ¡Gracias por adelantado!


¿Pueden todos los problemas reducirse a clavos para un martillo?

Err sí. Puede resolver problemas con solo un martillo. Solo aserrar esa puerta por la mitad lleva mucho más tiempo con ella.

¿Alguna vez la gente ha tenido que aprender un nuevo paradigma? Para mis dos trabajos anteriores, mis lugares de trabajo requerían Java y C #. ¿Hay lugares de trabajo que usan específicamente lenguajes que no son OO?

Los desarrolladores tienen que hacer esto cada 15-20 años más o menos.

Definitivamente hay toda una industria de pequeñas empresas con sistemas basados ​​en Access escritos con procedimientos VBA. (y creo que he trabajado para la mayoría de ellos). Los desarrolladores clásicos de ASP tienen que aprender ASP.NET. Los desarrolladores de Perl están aprendiendo Python. El desarrollo impulsado por lotes dio paso al desarrollo impulsado por eventos.


Creo que encontrarás respuestas en todos los ámbitos. Cuanto más trabajo, más encuentro que es "útil" conocer algunos de los otros. como desarrollador de C / VB / SQL Server, me resulta más útil aprender un poco sobre F # y algunos de los otros idiomas que existen para obtener una amplia exposición, para descubrir realmente qué herramienta es la correcta ...


Desarrollar las habilidades de diseño y arquitectura con OOP en mente es el conjunto de habilidades más deseable para una gran carrera agnóstica de idiomas.

El beneficio cuando codifica en Oops es tanto para los otros miembros del equipo como para la organización en general. Debido a que el código será comprensible para todos y si los desarrolladores renuncian al trabajo, la compañía no necesita preocuparse demasiado. En el otro caso, si sigues un estilo funcional, será muy difícil para los demás entender lo que has hecho.


El paradigma es independiente de un idioma. Puede desarrollar en estilo OO en C (eche un vistazo a GTK). Cuando programo en Java, utilizo principalmente estilo funcional.

Vale la pena conocer tantos paradigmas como sea posible. Algunos problemas son triviales de resolver en un paradigma y requieren una elaboración delicada en otro.

Como un ejemplo (trivial), compare las implementaciones de quicksort en Java y Ocaml, o mejor aún, Haskell, en esta página: http://www.rosettacode.org/rosettacode/w/index.php?title=Quicksort

(Eso no significa que lo funcional sea mejor. Hay problemas mejor resueltos con OO).


Las cosas dinámicas me asustan, pero Ruby on Rails es, de lejos, el mejor sistema de desarrollo que he visto para cosas en la web. No me siento cómodo con su uso para un proyecto de mantenimiento realmente grande y pesado porque es demasiado fácil alterar el significado del código existente, compilado y terminado. También es muy fácil para el estilo de codificación de una persona convertirlo en un nuevo idioma.

La dinámica / secuencias de comandos también es útil para los administradores del sistema y cualquier persona que ejecute un sistema Linux. Escribir un guión rápido en BASH o Ruby supera al INFIERNO de tratar de implementar la misma funcionalidad en Java o C ++.

OO hace que sea mucho más fácil entender grandes cantidades de código. Si tiene un equipo grande o múltiples equipos grandes y necesita dar una visión general rápidamente, OO hace que sea mucho más fácil describir y aislar una determinada funcionalidad. Debo decir CORRECTAMENTE CODIFICADO OO!

Entiendo que funcional es bueno para la programación de subprocesos múltiples, ya que todo tiende a ser inmutable.


Vale la pena aprender paradigmas alternativos (OO, funcional, de procedimiento, dinámico, etc.) porque te ayudará a pensar sobre los problemas de diferentes maneras.

Por ejemplo, piense en la diferencia al resolver un cruce de árboles de forma lineal (la primera forma en que lo hice) versus usar la recursión. O la combinación de Map y Reduce de Google para ayudarlos a indexar Internet.

Las nuevas formas de pensar aplicadas a viejos problemas pueden ayudar a romper algunos de los problemas más difíciles.


"O en otras palabras, ¿todos los problemas pueden reducirse a clavos para un martillo?" Sí. Período. Cualquier lenguaje de programación con el que te encuentres será tan completo como todos los demás. En realidad, existe una definición formal de "integridad" para un lenguaje de programación.

"¿Alguna vez la gente ha tenido que aprender un nuevo paradigma?" Siempre.

De hecho, hay un truco para seguir los altibajos de los "cambios de paradigma". En los últimos 30 años de mi carrera, he visto que la programación ha pasado de ser un modelo imperativo / procedimental relativamente simplista a una serie de modelos mucho más ricos que incluyen un mejor equilibrio entre el proceso y los datos.

Me he dado cuenta de lo siguiente ...

Parte de la fuerza impulsora es la comunidad de inteligencia artificial. Muchos de estos "nuevos modelos" comenzaron como esquemas de representación del conocimiento de IA. Obtuvieron tracción allí, luego se filtraron a más aplicaciones convencionales.

El modelo de relación de la entidad era originalmente para la representación del conocimiento, no para las transacciones comerciales. El modelo de Objeto, de manera similar, era para la representación del conocimiento. Entonces la gente de simulación lo encontró. Ahora el resto de nosotros lo tenemos.

Aquí está mi conclusión.

El software es representación del conocimiento.

Su elección de Paradigma o Modelo o Enfoque o Estilo se basa en la respuesta a la siguiente pregunta:

"¿Cómo puedo representar mejor este problema?"

Si el problema tiene objetos y relaciones, OO. Si el problema tiene algoritmos y transformaciones, mapas, filtros y reduce, Funcional. Si el problema es dinámico, cambiante y flexible, dinámico. Si el problema es estático y se ampliará rápidamente, Estático.


Como la mayoría de los demás han dicho, generalmente puede usar cualquier idioma para resolver cualquier problema y generalmente puede escribir en el estilo de un paradigma en otro.

Si se toma el tiempo para aprender a usar los diferentes paradigmas tal como están destinados, entonces aprenderá cosas diferentes acerca de la representación del conocimiento y la resolución de problemas que pueden ser útiles en cualquier paradigma que esté usando en el futuro.

Si bien existe cierta alineación entre los paradigmas y los dominios, generalmente es mejor elegir un idioma basado en las características específicas del entorno en el que su software necesita operar.

  • ¿Necesita ejecutarse en múltiples plataformas de escritorio?
  • Si se trata de una aplicación de escritorio, ¿necesita una apariencia nativa?
  • Es importante la iteración rápida de diseños
  • ¿Cómo se debe mantener?
  • ¿Con qué sistemas de terceros necesita operar?
  • Conocimientos / habilidades / preferencias del programador existente.