2010-09-21 15 views
12

¿Puede alguien darme una definición clara y concisa de la diferencia entre un lenguaje de programación y un marco? Recorrí la red y no pude encontrar una definición adecuada.¿Cuál es la diferencia entre un lenguaje y un marco?

Para obtener un crédito adicional, ¿es posible que un lenguaje y un marco estén tan inextricablemente unidos que NO HAY diferencia, o existe una línea tan clara entre ellos que esto no es posible?

+0

Quizás un ejemplo de su pregunta de EC sería el marco NextStep como parte de Objective-C. No exactamente inextricable, pero muy cerca ... –

+0

Si un idioma estuviera "inextricablemente vinculado" a un marco de cualquier forma, entonces el marco sería, por definición, parte del lenguaje. – mquander

+1

Hay muchos idiomas que puede usar NeXTStep/OpenStep/Cocoa con: Objective-C++, Objective-Modula-2, Ruby, Nu, FScript, ... Y puede usar Objective-C sin NeXTStep/OpenStep/Cocoa. La relación entre Objective-C y NeXTStep es similar a la de C y POSIX: se inventaron juntas y se integraron bien, pero se puede usar POSIX sin C (por ejemplo, con C++, OCaml, Perl) y se puede usar C sin POSIX (por ejemplo, con Win32, NeXTStep, o sin entorno * en absoluto *, por ejemplo, en dispositivos integrados o al escribir kernels OS.) –

Respuesta

25

Un lenguaje es la sintaxis, la gramática, la semántica (y tal vez una biblioteca central) que los implementadores deben admitir. Un marco es un conjunto coherente de código de biblioteca que, en conjunto, simplifica la programación en cualquier idioma.

+0

Esa fue una buena :) –

+0

Un marco no tiene que estar escrito en el idioma. Simplemente tiene que estar disponible para el idioma. – David

+1

-1. Lo que está describiendo es una * biblioteca * no un marco. –

-2

Un lenguaje de programación es un método de comunicación estandarizado y específico entre el programador y la computadora (en lenguajes modernos, técnicamente es entre programador y compilador, que "interpreta" su código en instrucciones más simples con las que la computadora puede trabajar). Es una abstracción pura que especifica su estructura, sintaxis y semántica; las implementaciones del lenguaje generalmente se consideran parte del entorno en el que se desarrolla el programador, e incorporan el compilador y cualquier implementación de máquina virtual.

Un marco es un conjunto estandarizado de bibliotecas de códigos preescritas diseñadas para ser usadas y reutilizadas por los desarrolladores, y una vez más atadas más al entorno. Un entorno es la intersección del lenguaje, marco, máquina virtual o tiempo de ejecución (una capa de abstracción en la que el código administrado o interpretado se traduce de una forma independiente de la máquina a código nativo) y máquina (la capa de hardware en la que se ejecutan las instrucciones nativas) .

+1

-1. Lo que está describiendo es una * biblioteca * no un marco. –

2

Respecto a la línea clara entre el lenguaje y el marco, supongo que puede contar las DSL (Idiomas Específicos del Dominio) como construcciones que son tanto un Lenguaje como un Marco (ya que es un Marco en el Idioma original sobre el que se basa).

Lisp es el único idioma que se me ocurre ahora que pueden desdibujar esta distinción:

"El nombre LISP deriva de 'Procesamiento lista de' Las listas enlazadas son una de las principales estructuras de datos idiomas Lisp, y la fuente de Lisp. El código en sí mismo está compuesto de listas. Como resultado, los programas Lisp pueden manipular el código fuente como una estructura de datos, dando lugar a los macro sistemas que permiten a los programadores crear nueva sintaxis o incluso nuevos lenguajes específicos de dominio incrustados en Lisp ".

http://en.wikipedia.org/wiki/Lisp_(programming_language)

1

espero poder explicar con un ejemplo.

Dot Net es un marco que consiste en grandes bibliotecas y es compatible con muchos lenguajes de programación .. C# es un lenguaje de programación a través del cual se puede dar instrucciones a una máquina principalmente equipo .. Ahora bien, si su código fuente está en C# puede usar las bibliotecas de Dot net framework y el código fuente que está escrito en otros idiomas ..

1

En mi punto, un lenguaje de programación parece un montón de cosas (sintaxis, gramática, semántica, etc.) que las personas ya combinan en uno más conveniente, más útil, más fácil de usar y más agradable: un marco, y me encanta tener un marco antes de comenzar a hacer un programa.

Conozco algunos lenguajes de programación como C, PHP, ASP, Python, Java y algunos frameworks como Yii, Zend, Pygame, Struts. Todo lo que veo es que puede haber muchos frameworks creados a partir de un lenguaje de programación, pero un framework se construye solo a partir del lenguaje de programación.

3

Un marco aplicación es la estructura organizativa del código de cualquier aplicación, incluyendo opciones para convenciones en los archivos/carpetas, clases/funciones, etc.

Un producto marco aplicación es cualquier herramienta que ayuda a generar el marco para una aplicación.

Un patrón de diseño de aplicación es cualquier enfoque conceptual para organizar código en el nivel de aplicación.

Un lenguaje de software de es una herramienta basada en el lenguaje que se puede utilizar para crear aplicaciones, servicios públicos, bibliotecas, marcos, etc.

Una biblioteca es cualquier extensión en funcionalidad a la funcionalidad nativa del compilado un idioma.

A biblioteca estándar es una biblioteca empaquetada con el producto de idioma mismo.

biblioteca externa es una biblioteca fuera del producto de idioma en sí y se llama de forma remota o se instala localmente.

A generador de código es cualquier herramienta que genera dinámicamente código de tiempo de ejecución permanente basado en la entrada del desarrollador.


-1

Tomemos un ejemplo. Una aplicación web para administrar empleados.

Las herramientas frontend incluirán html, javascript.

Para el back-end Python, o Ruby y la base de datos es MySql.

Algunas de las funcionalidades básicas en el back-end incluyen,

  • solicitudes Manipulación y dar respuesta
  • de conexión a la base de datos & consultar el archivo
  • Configuración/Ajustes
  • Signin/Registrarse/CRUD (crear , leer, actualizar, eliminar)

Si tuviera que usar pytho Para hacer esto, es posible que tenga que dedicar más tiempo a la creación de estos y, aun así, no puedo estar seguro de muchos aspectos, ya que debe someterse a rigurosas pruebas antes de que se active.

Aquí está la necesidad de Framework. En este caso, un marco de aplicación web (ejemplo Django - Un framework python) viene con todos los complementos/envolturas/API que resuelven muchas de las funcionalidades comunes como Manejo de solicitudes, conexión a la base de datos y sigining/signingup y mucho más.

Del mismo modo, hay tipos de marcos para diferentes casos de uso. Por ejemplo, Hadoop para Big Data, Django para desarrollo web, AngularJS (no Angular 4) para frontend.Resuelve las necesidades básicas y, por lo tanto, el desarrollo de la aplicación se simplifica, por lo que puede dedicar tiempo a desarrollar el resto de las características que tendrá su aplicación. Un lenguaje de programación es crudo en este sentido.

Cuestiones relacionadas