Respuestas:
Llego muy tarde para responderlo. Pero me gustaría compartir un ejemplo, en el que solo pensaba hoy. Si te dijera que cortaras un trozo de papel con dimensiones de 5m por 5m, entonces seguramente lo harías. Pero supongamos que le pido que corte 1000 trozos de papel de las mismas dimensiones. En este caso, no hará la medición 1000 veces; obviamente, harías un marco de 5m por 5m, y luego, con la ayuda de este, podrás cortar 1000 trozos de papel en menos tiempo. Entonces, lo que hizo fue crear un marco que haría un tipo específico de tarea. En lugar de realizar el mismo tipo de tarea una y otra vez para el mismo tipo de aplicaciones, crea un marco que reúne todas esas facilidades en un solo paquete agradable, lo que proporciona la abstracción para su aplicación y, lo que es más importante, para muchas aplicaciones.
Técnicamente, no necesitas un marco. Si está creando un sitio realmente simple (piense en la web en 1992), puede hacerlo todo con HTML codificado y algo de CSS.
Y si desea hacer una aplicación web moderna, tampoco necesita usar un marco para eso.
En su lugar, puede elegir escribir toda la lógica que necesita, siempre. Puede escribir su propia capa de almacenamiento / persistencia de datos o, si está demasiado ocupado, simplemente escribir SQL personalizado para cada acceso a la base de datos. Puede escribir sus propias capas de autenticación y manejo de sesión. Y su propia lógica de rending de plantillas. Y su propia lógica de manejo de excepciones. Y sus propias funciones de seguridad. Y su propio marco de prueba de unidad para asegurarse de que todo funcione bien. Y el tuyo ... [continúa durante bastante tiempo]
Por otra parte, si se hace uso de un marco , podrás beneficiarse de la buena, por lo general revisada por expertos y el trabajo de decenas si no cientos de otros desarrolladores, que bien puede ser mejor de lo que muy bien probado. Podrá construir lo que desea rápidamente, sin tener que perder tiempo construyendo o sin preocuparse demasiado por los elementos de infraestructura enumerados anteriormente.
Puede hacer más en menos tiempo y saber que es muy probable que el código marco que está utilizando o extendiendo se haga mejor que usted mismo.
¿Y el costo de esto? Invertir algo de tiempo aprendiendo el marco. Pero, como lo atestiguarán prácticamente todos los desarrolladores web, definitivamente vale la pena el tiempo dedicado a aprender a obtener beneficios masivos (realmente, masivos) al usar el marco que elija.
El resumen en Wikipedia (Software Framework) (primer hit de Google por cierto) lo explica bastante bien:
Un marco de software, en la programación de computadoras, es una abstracción en la cual el código común que proporciona funcionalidad genérica puede ser anulado o especializado selectivamente por el código de usuario que proporciona funcionalidad específica. Los marcos son un caso especial de las bibliotecas de software, ya que son abstracciones reutilizables de código envuelto en una interfaz de programación de aplicaciones (API) bien definida, pero contienen algunas características distintivas clave que las separan de las bibliotecas normales.
Los marcos de software tienen estas características distintivas que los separan de las bibliotecas o aplicaciones de usuario normales:
- inversión de control : en un marco, a diferencia de las bibliotecas o las aplicaciones de usuario normales, el flujo general de control del programa no lo dicta la persona que llama, sino el marco. [1]
- comportamiento predeterminado : un marco tiene un comportamiento predeterminado. Este comportamiento predeterminado debe ser un comportamiento útil y no una serie de no-ops.
- Extensibilidad : el usuario puede ampliar un marco de trabajo generalmente mediante una anulación selectiva o especializado por código de usuario que proporciona una funcionalidad específica.
- código marco no modificable: el código marco, en general, no se permite modificar. Los usuarios pueden extender el marco, pero no modificar su código.
Es posible que lo "necesite" porque puede proporcionarle un excelente acceso directo al desarrollar aplicaciones, ya que contiene muchas funciones ya escritas y probadas. La razón es bastante similar a la razón por la que usamos bibliotecas de software.
Muchas buenas respuestas ya, pero déjame ver si puedo darte otro punto de vista.
Simplificando bastante las cosas, puede ver un marco como una aplicación que está completa, excepto por la funcionalidad real. ¡Conecta la funcionalidad y PRESTO! Tienes una aplicación.
Considere, digamos, un marco GUI. El marco contiene todo lo que necesita para hacer una aplicación. De hecho, a menudo puede hacer una aplicación mínima de manera trivial con muy pocas líneas de origen que no hace absolutamente nada, pero le brinda administración de ventanas, administración de subventanas, menús, barras de botones, etc. Ese es el lado del marco de las cosas. Al agregar la funcionalidad de su aplicación y "enchufarla" en los lugares correctos del marco, convierte esta aplicación vacía que no hace más que administrar ventanas, etc., en una aplicación real y completa.
Existen tipos similares de marcos para aplicaciones web, para aplicaciones del lado del servidor, etc. En cada caso, el marco proporciona la mayor parte del código tedioso y repetitivo (con suerte) mientras proporciona la funcionalidad del dominio del problema real. (Este es el ideal. En realidad, por supuesto, el éxito del marco es muy variable).
Insisto nuevamente en que esta es la visión simplificada de lo que es un marco. No estoy usando términos aterradores como "Inversión de control" y similares, aunque la mayoría de los frameworks tienen esos conceptos aterradores incorporados. Como eres un principiante, pensé en ahorrarte la jerga e ir con un símil fácil.
No estoy seguro de que haya una definición clara de "marco". A veces, un gran conjunto de bibliotecas se llama marco, pero creo que el uso típico de la palabra está más cerca de la definición que se trae.
Este muy buen artículo resume la diferencia entre solo un conjunto de bibliotecas y un marco:
Un marco se puede definir como un conjunto de bibliotecas que dicen "No nos llames, nosotros te llamaremos".
¿Cómo te ayuda un marco? Porque en lugar de escribir algo desde cero, básicamente solo extiendes una aplicación que funciona. Obtiene mucha productividad de esta manera, a veces la aplicación resultante puede ser mucho más elaborada de lo que podría haber hecho por su cuenta en el mismo período de tiempo, pero generalmente intercambia mucha flexibilidad.
Una explicación simple es: un marco es un andamio sobre el que puede construir aplicaciones.
Un marco generalmente proporciona alguna funcionalidad básica que puede usar y ampliar para crear aplicaciones más complejas, existen marcos para todo tipo de cosas. Microsofts MVC framework es un buen ejemplo de esto. Proporciona todo lo que necesita para despegar del sitio web de construcción usando el patrón MVC, maneja solicitudes web, rutas y similares. Todo lo que tiene que hacer es implementar "Controladores" y proporcionar "Vistas", que son dos construcciones definidas por el marco MVC. El marco MVC se encarga de llamar a sus controladores y representar sus vistas.
Quizás no sea la mejor redacción pero espero que ayude
en el nivel más bajo, un marco es un entorno en el que se le proporcionan un conjunto de herramientas para trabajar
Estas herramientas vienen en forma de bibliotecas, archivos de configuración, etc.
Este llamado "entorno" le proporciona la configuración básica (informes de errores, archivos de registro, configuración de idioma, etc.) ... que puede modificarse, ampliarse y desarrollarse.
La gente en realidad no necesita marcos, es solo una cuestión de querer ahorrar tiempo, y otros solo son una cuestión de preferencias personales.
La gente justificará que con un marco, no tiene que codificar desde cero. Pero esas son solo personas que confunden las bibliotecas con los marcos.
No estoy siendo parcial aquí, en realidad estoy usando un marco en este momento.
Un marco proporciona funcionalidades / solución al área del problema particular.
Definición de wiki :
Un marco de software, en la programación de computadoras, es una abstracción en la cual el código común que proporciona funcionalidad genérica puede ser anulado o especializado selectivamente por el código de usuario que proporciona funcionalidad específica. Los marcos son un caso especial de las bibliotecas de software, ya que son abstracciones reutilizables de código envuelto en una interfaz de programación de aplicaciones (API) bien definida, pero contienen algunas características distintivas clave que las separan de las bibliotecas normales.
Un marco nos ayuda a usar el "ya creado", una metáfora puede ser como,
piensa que el material de la tierra es el lenguaje de programación,
y, por ejemplo, "una cámara" es el programa, y usted decidió crear un cuaderno. No necesita recrear la cámara cada vez, solo use el marco de tierra (por ejemplo, en una tienda de tecnología), tome la cámara e integrela en su computadora portátil.
Un marco tiene algunas funciones que puede necesitar. quizás necesite algún tipo de arreglos que tengan mecanismos de clasificación incorporados. O tal vez necesite una ventana donde desee colocar algunos controles, todo lo que puede encontrar en un marco. Es un tipo de TRABAJO que abarca un MARCO alrededor de su propio trabajo.
EDITAR: OK, estoy a punto de desenterrar lo que ustedes intentaban decirme;) tal vez no hayan notado la información entre las líneas "TRABAJO que abarca un MARCO ..." antes de que esto se caiga más y más. Intento darle una palabra con la esperanza de que sea amable:
una buena explicación a la pregunta "Diferencia entre una biblioteca y un marco" que encontré aquí
http://ifacethoughts.net/2007/06/04/difference-between- a-library-and-a-framework /
Más allá de las definiciones, que a veces son entendibles solo si ya comprende, un ejemplo me ayudó.
Creo que obtuve un atisbo de comprensión cuando busqué ordenar una lista en .Net; Un ejemplo de un marco que proporciona una funcionalidad que se adapta al código de usuario que proporciona una funcionalidad específica. Take List.Sort (IComparer). El algoritmo de ordenación, que reside en el marco .Net en el método Ordenar, necesita hacer una serie de comparaciones; ¿El objeto A viene antes o después del objeto B? Pero Sort no tiene idea de cómo hacer la comparación; solo el tipo que se está ordenando lo sabe. No podría escribir un algoritmo de clasificación de comparación que pueda ser reutilizado por muchos usuarios y anticipar todos los diversos tipos que se le pediría que clasifique. Tienes que dejar ese trabajo al usuario mismo. Así que aquí, sort, también conocido como framework, vuelve a llamar a un método en el código de usuario, el tipo se ordena para que pueda hacer la comparación. (O se puede usar un delegado;
¿Lo entendí bien?