2010-09-21 13 views
12

Kann mir jemand eine klare, prägnante Definition des Unterschieds zwischen einer Programmiersprache und einem Framework geben? Ich habe das Internet durchforstet und konnte keine angemessene Definition finden.Was ist der Unterschied zwischen einer Sprache und einem Framework?

Für einen zusätzlichen Kredit, ist es möglich, dass eine Sprache und ein Framework so untrennbar miteinander verbunden sind, dass es keinen Unterschied gibt, oder gibt es eine so klare Grenze zwischen ihnen, dass dies nicht möglich ist?

+0

Vielleicht wäre ein Beispiel Ihrer EC-Frage das NextStep-Framework als Teil von Objective-C. Nicht ganz untrennbar, aber ziemlich nah ... –

+0

Wenn eine Sprache in irgendeiner Weise "untrennbar mit einem Rahmenwerk verbunden wäre", dann wäre der Rahmen definitionsgemäß Teil der Sprache. – mquander

+1

Es gibt viele Sprachen, die Sie mit NeXTStep/OpenStep/Cocoa verwenden können: Objective-C++, Objective-Modula-2, Ruby, Nu, FScript, ... Und Sie können Objective-C ohne NeXTStep/OpenStep/Cocoa verwenden. Die Beziehung zwischen Objective-C und NeXTStep ähnelt der zwischen C und POSIX: Sie wurden zusammen erfunden und gut integriert, aber Sie können POSIX ohne C verwenden (zB mit C++, OCaml, Perl) und Sie können C ohne POSIX verwenden (zB mit Win32, NeXTStep, oder überhaupt mit keiner Umgebung *, zB auf Embedded Devices oder beim Schreiben von OS-Kernel.) –

Antwort

25

Eine Sprache ist Syntax, Grammatik, Semantik (und vielleicht eine Kernbibliothek), die Implementierer unterstützen müssen. Ein Framework ist ein zusammenhängender Satz von Bibliothekscode, der zusammen die Programmierung in einer beliebigen Sprache vereinfacht.

+0

Das war ein guter :) –

+0

Ein Framework muss nicht in der Sprache geschrieben werden. Es muss nur für die Sprache verfügbar sein. – David

+1

-1. Was Sie beschreiben, ist eine * Bibliothek * kein Framework. –

-2

Eine Programmiersprache ist eine spezifizierte, standardisierte Methode der Kommunikation zwischen Programmierer und Computer (in modernen Sprachen, technisch zwischen Programmierer und Compiler, die Ihren Code in einfachere Anweisungen "interpretiert", mit denen der Computer arbeiten kann). Es ist eine reine Abstraktion, die ihre Struktur, Syntax und Semantik spezifiziert; Implementierungen der Sprache werden im Allgemeinen als Teil der Umgebung betrachtet, in der der Programmierer entwickelt, und den Compiler und jede virtuelle Maschinenimplementierung einbeziehen.

Ein Framework ist ein standardisierter Satz vordefinierter Code-Bibliotheken, die von Entwicklern verwendet und wiederverwendet werden können und wiederum stärker an die Umgebung gebunden sind. Eine Umgebung ist der Schnittpunkt der Sprache, des Frameworks, der virtuellen Maschine oder der Laufzeit (eine Abstraktionsschicht, in der verwalteter oder interpretierter Code von einer maschinenunabhängigen Form in nativen Code übersetzt wird) und Maschine (die Hardwareebene, auf der native Anweisungen ausgeführt werden). .

+1

-1. Was Sie beschreiben, ist eine * Bibliothek * kein Framework. –

2

In Bezug auf die klare Linie zwischen Sprache und Framework, nehme ich an, dass DSLs (domänenspezifische Sprachen) als Konstrukte gezählt werden können, die sowohl eine Sprache als auch ein Framework sind (wie es ein Framework in der ursprünglichen Sprache ist).

Lisp ist die einzige Sprache, die ich von jetzt denken kann, dass eine solche Unterscheidung verwischen können:

„Der Name LISP leitet sich von‚Listenverarbeitung‘verlinkte Listen sind eine der wichtigsten Datenstrukturen Lisp Sprachen und Lisp-Quelle. code besteht selbst aus Listen, so dass Lisp-Programme Quellcode als Datenstruktur manipulieren können, wodurch Makros entstehen, mit denen Programmierer neue Syntax oder sogar neue domänenspezifische Sprachen erstellen können, die in Lisp eingebettet sind. "

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

1

Ich hoffe, dass ich erklären kann, ein Beispiel.

Dot net ist ein Rahmen, der aus großen Bibliotheken besteht und unterstützt viele Programmiersprachen .. C# ist eine Programmiersprache, durch die man Anweisung an eine Maschine geben kann, vor allem Computer .. Nun, wenn Ihr Quellcode in C# Sie können Dot net framework Bibliotheken und den Quellcode verwenden, der in anderen Sprachen geschrieben wird.

1

An meinem Punkt, sieht eine Programmiersprache wie Haufen von Sachen (Syntax, Grammatik, Semantik usw.), die Menschen bereits kombinieren sie in eine bequemere, nützlichere, einfacher zu bedienen und angenehmer - ein Rahmenwerk, und ich liebe es, einen Rahmen zu haben, bevor Sie beginnen, ein Programm zu machen.

Ich kenne einige Programmiersprachen wie C, PHP, ASP, Python, Java und einige Frameworks wie Yii, Zend, Pygame, Struts. Alles, was ich sehe, ist, dass es viele Frameworks geben kann, die aus einer Programmiersprache erstellt werden, aber ein Framework wird nur aus der Programmiersprache erstellt.

3

Ein Application Framework ist die Organisationsstruktur der Code der Anwendung, einschließlich der Möglichkeiten für Konventionen in Dateien/Ordner, Klassen/Funktionen usw.

Ein Anwendungsframework Produkt jedes Werkzeug ist, dass hilft, den Rahmen für eine Anwendung zu generieren.

Ein Anwendungsdesignmuster ist ein konzeptioneller Ansatz zum Organisieren von Code auf Anwendungsebene.

Eine Software Sprache ist ein sprachbasiertes Tool, das verwendet werden kann, Anwendungen, Dienstprogramme, Bibliotheken, Frameworks zu bauen usw.

A Bibliothek ist jede Erweiterung der Funktionalität auf die native kompilierte Funktionalität eine Sprache.

Eine Standardbibliothek ist eine Bibliothek, die mit dem Sprachprodukt selbst geliefert wird.

Eine externe Bibliothek ist eine Bibliothek außerhalb des Sprachprodukts selbst und wird entweder remote oder lokal installiert.

Ein Code-Generator ist ein Tool, das basierend auf der Eingabe des Entwicklers dynamisch permanenten Laufzeitcode generiert.


-1

Nehmen wir ein Beispiel. Eine Webanwendung zur Verwaltung von Mitarbeitern.

Frontend-Tools enthalten HTML, Javascript.

Für Back-End Python, oder Ruby und Datenbank ist MySql.

umfassen,

  • Handhabung Anfragen Einige der grundlegenden Funktionalitäten im Backend und geben Antwort
  • Verbindung zur Datenbank & Abfrage
  • Konfiguration/Einstellungen
  • Signin/Anmelden/CRUD-Datei (erstellen , lesen, aktualisieren, löschen)

Wenn ich Pytho verwenden waren Um dies zu tun, muss ich möglicherweise mehr Zeit investieren, um diese zu bauen, und selbst dann kann ich mir vieler Aspekte nicht sicher sein, da es strengen Tests unterzogen werden muss, bevor es live geht.

Hier ist die Notwendigkeit für Framework. In diesem Fall enthält ein Web Application Framework (Beispiel Django - Ein Python-Framework) alle Plugins/Wrappers/APIs, die viele der gängigen Funktionalitäten wie Handling Requests, Verbindung zur Datenbank und Signing/Signingup und vieles mehr lösen.

Ebenso gibt es Arten von Frameworks für verschiedene Anwendungsfälle. Zum Beispiel Hadoop für Big Data, Django für Web-Entwicklung, AngularJS (nicht Angular 4) für das Frontend.Es löst die grundlegenden Notwendigkeiten, und daher wird die Entwicklung der Anwendung vereinfacht, so dass Sie Zeit damit verbringen können, die restlichen Funktionen zu entwickeln, die Ihre Anwendung haben wird. Eine Programmiersprache ist in diesem Sinne roh.