2010-09-21 13 views
12

क्या कोई मुझे प्रोग्रामिंग भाषा और ढांचे के बीच अंतर की स्पष्ट, संक्षिप्त परिभाषा दे सकता है? मैंने वेब को खराब कर दिया है और पर्याप्त परिभाषा नहीं ढूंढ पाई है।भाषा और ढांचे के बीच क्या अंतर है?

अतिरिक्त क्रेडिट के लिए, क्या यह एक भाषा के लिए संभव है और एक ढांचा इतना अनजाने रूप से जुड़ा हुआ है कि इसमें कोई फर्क नहीं पड़ता है, या क्या उनके बीच ऐसी स्पष्ट रेखा है कि यह संभव नहीं है?

+0

शायद आपके ईसी प्रश्न का एक उदाहरण उद्देश्य-सी के हिस्से के रूप में नेक्स्टस्टेप ढांचा होगा। बिल्कुल अतुलनीय नहीं है, लेकिन बहुत करीब ... –

+0

यदि कोई भाषा किसी भी रूप में ढांचे के लिए "अनजाने रूप से जुड़ी" थी, तो ढांचा भाषा के परिभाषा भाग से होगा। – mquander

+1

ऐसी कई भाषाएं हैं जिनका उपयोग आप NeXTStep/OpenStep/Cocoa के साथ कर सकते हैं: उद्देश्य-सी ++, उद्देश्य-मॉडुला -2, रूबी, नु, एफस्क्रिप्ट, ... और आप उद्देश्य-सी का उपयोग NeXTStep/OpenStep/Cocoa के बिना कर सकते हैं। Objective-C और NeXTStep के बीच का रिश्ता सी और पॉज़िक्स के बीच एक जैसा है: उनका आविष्कार किया गया था और अच्छी तरह से एकीकृत किया गया था, लेकिन आप सी के बिना पीओएसआईक्स का उपयोग कर सकते हैं (उदाहरण के लिए सी ++, ओकैमल, पर्ल के साथ) और आप पीओएसआईक्स के बिना सी का उपयोग कर सकते हैं (उदाहरण के लिए Win32, NeXTStep, या बिना पर्यावरण के * * के साथ, उदाहरण के लिए एम्बेडेड डिवाइस पर या ओएस कर्नेल लिखते समय।) –

उत्तर

25

एक भाषा वाक्यविन्यास, व्याकरण, अर्थशास्त्र (और शायद एक कोर लाइब्रेरी) है जिसे कार्यान्वयन करने वालों को समर्थन देना आवश्यक है। एक ढांचा संगत लाइब्रेरी कोड का सेट है जो किसी भी दिए गए भाषा में प्रोग्रामिंग को सरल बनाता है।

+0

वह एक अच्छा था :) –

+0

भाषा में एक ढांचे को लिखना नहीं है। यह सिर्फ भाषा के लिए उपलब्ध होना है। – David

+1

-1। आप जो वर्णन कर रहे हैं वह एक * पुस्तकालय * ढांचा नहीं है। –

-2

प्रोग्रामिंग भाषा प्रोग्रामर और कंप्यूटर (आधुनिक भाषाओं में, तकनीकी रूप से यह प्रोग्रामर और कंपाइलर के बीच संचार का एक निर्दिष्ट, मानकीकृत तरीका है, जो आपके कोड को सरल निर्देशों में "व्याख्या करता है" कंप्यूटर के साथ काम कर सकता है)। यह एक शुद्ध अमूर्त है जो इसकी संरचना, वाक्यविन्यास और अर्थशास्त्र निर्दिष्ट करता है; भाषा के कार्यान्वयन को आम तौर पर उस माहौल का हिस्सा माना जाता है जिसमें प्रोग्रामर विकसित होता है, और संकलक और किसी वर्चुअल मशीन कार्यान्वयन को शामिल करता है।

एक ढांचा पूर्व-लिखित कोड पुस्तकालयों का मानकीकृत सेट है जिसे डेवलपर्स द्वारा उपयोग और पुन: उपयोग करने के लिए डिज़ाइन किया गया है, और फिर पर्यावरण के लिए अधिक बंधे हैं। एक पर्यावरण भाषा, ढांचे, आभासी मशीन या रनटाइम का एक चौराहे है (एक अमूर्त परत जिसमें प्रबंधित या व्याख्या कोड को मशीन-स्वतंत्र रूप से मूल कोड में अनुवादित किया जाता है) और मशीन (हार्डवेयर परत जिस पर देशी निर्देश निष्पादित किए जाते हैं) ।

+1

-1। आप जो वर्णन कर रहे हैं वह एक * पुस्तकालय * ढांचा नहीं है। –

2

भाषा और ढांचे के बीच स्पष्ट रेखा के बारे में, मुझे लगता है कि आप डीएसएल (डोमेन विशिष्ट भाषाएं) को एक भाषा और फ्रेमवर्क दोनों के रूप में गिन सकते हैं (क्योंकि यह मूल भाषा में एक फ्रेमवर्क है)।

लिस्प केवल भाषा मैं अब के बारे में सोच सकते हैं कि इस तरह के भेद ब्लर कर सकते है:

सूची प्रसंस्करण "लिंक किए गए सूची, लिस्प भाषाओं 'प्रमुख डाटा संरचनाओं में से एक हैं और लिस्प स्रोत" नाम लिस्प से निकला है "। कोड स्वयं सूचियों से बना है। नतीजतन, लिस्प प्रोग्राम डेटा संरचना के रूप में स्रोत कोड में हेरफेर कर सकते हैं, जिससे मैक्रो सिस्टम को जन्म दिया जाता है जो प्रोग्रामर को लिस्प में एम्बेडेड नए सिंटैक्स या यहां तक ​​कि नई डोमेन-विशिष्ट भाषाओं को बनाने की अनुमति देता है। "

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

1

मुझे आशा है कि मैं एक उदाहरण का उपयोग करते हुए व्याख्या कर सकते हैं।

डॉट नेट एक रूपरेखा बड़े पुस्तकालयों के होते हैं और कई प्रोग्रामिंग भाषाओं .. सी # एक प्रोग्रामिंग भाषा है जिसके माध्यम से आप एक मशीन के लिए अनुदेश दे सकते हैं समर्थन करता है, जो मुख्य रूप से कंप्यूटर .. अब अगर अपने स्रोत कोड सी # में है आप .. डॉट नेट ढांचे पुस्तकालयों और स्रोत कोड है जो अन्य भाषाओं में लिखा है का उपयोग कर सकते

1

मेरी बिंदु पर, एक प्रोग्रामिंग भाषा सामान का गुच्छा (वाक्यविन्यास, व्याकरण, अर्थ विज्ञान आदि) की तरह दिखता है जो लोग पहले से ही गठबंधन कर रहे हैं उन्हें एक और सुविधाजनक, अधिक उपयोगी, उपयोग करने में आसान, और अधिक आनंददायक - एक ढांचा, और मुझे प्रोग्राम शुरू करने से पहले एक ढांचा बनाना पसंद है।

मुझे कुछ प्रोग्रामिंग भाषाएं जैसे सी, पीएचपी, एएसपी, पायथन, जावा, और वाईआई, ज़ेंड, पायगम, स्ट्रूट जैसे कुछ ढांचे की जानकारी है। मैं देखता हूं कि प्रोग्रामिंग भाषा से बने कई ढांचे हैं, लेकिन एक ढांचा केवल प्रोग्रामिंग भाषा से ही बनाया गया है।

3

एक अनुप्रयोग फ्रेमवर्क

एक अनुप्रयोग फ्रेमवर्क उत्पाद किसी भी उपकरण है किसी भी आवेदन के कोड की संगठनात्मक संरचना, फ़ाइलें/फ़ोल्डर, वर्ग/कार्य में सम्मेलनों के लिए विकल्प सहित, आदि है कि एक आवेदन के लिए ढांचे को उत्पन्न करने में मदद करता है।

एक आवेदन डिजाइन पैटर्न आवेदन स्तर पर कोड व्यवस्थित करने के लिए कोई वैचारिक दृष्टिकोण है।

एक सॉफ्टवेयर भाषा आदि कि आवेदन पत्र, सुविधाएं, पुस्तकालयों, चौखटे निर्माण करने के लिए इस्तेमाल किया जा सकता एक भाषा-आधारित उपकरण,

एक पुस्तकालय के देशी संकलित कार्यक्षमता के लिए कार्यक्षमता में कोई भी एक्सटेंशन है एक भाषा।

मानक लाइब्रेरी भाषा उत्पाद के साथ ही एक लाइब्रेरी पैक की गई है।

एक बाहरी पुस्तकालय भाषा उत्पाद के बाहर एक पुस्तकालय है और इसे दूरस्थ रूप से या स्थानीय रूप से स्थापित किया जाता है।

कोड जनरेटर कोई ऐसा टूल है जो डेवलपर के इनपुट के आधार पर गतिशील रूप से स्थायी रनटाइम कोड उत्पन्न करता है।


-1

चलिए एक उदाहरण लें। कर्मचारियों का प्रबंधन करने के लिए एक वेब अनुप्रयोग।

फ्रंटेंड टूल में एचटीएमएल, जावास्क्रिप्ट शामिल होगा।

बैकएंड पायथन के लिए, या रूबी और डेटाबेस MySQL है।

बैकएंड में बुनियादी कार्यक्षमताओं शामिल में से कुछ,

    हैंडलिंग अनुरोध
  • और देने प्रतिक्रिया
  • डेटाबेस & क्वेरी करने
  • विन्यास/सेटिंग फ़ाइल
  • प्रवेश/पंजीकरण/CRUD के लिए कनेक्शन (बनाने , पढ़ें, अपडेट करें, हटाएं)

यदि मुझे पायथो का उपयोग करना था ऐसा करने के लिए, मुझे इन्हें बनाने के लिए और अधिक समय बिताना पड़ सकता है, और फिर भी मैं कई पहलुओं के बारे में सुनिश्चित नहीं हो सकता, क्योंकि इसे लाइव होने से पहले कठोर परीक्षण करना पड़ता है।

यहां फ्रेमवर्क की आवश्यकता है। इस मामले में एक वेब अनुप्रयोग ढांचा (उदाहरण डीजेंगो - एक अजगर ढांचा) सभी प्लगइन्स/रैपर/एपीआई के साथ आता है जो कई सामान्य कार्यक्षमताओं जैसे हैंडलिंग अनुरोध, डेटाबेस से कनेक्शन और सिग्नेनिंग/साइनअप और बहुत कुछ हल करता है।

इसी तरह, विभिन्न उपयोग मामलों के लिए ढांचे के प्रकार हैं। उदाहरण के लिए, बड़े डेटा के लिए हैडोप, वेब विकास के लिए Django, अग्रदूत के लिए AngularJS (कोणीय 4 नहीं)।यह मूलभूत आवश्यकताओं को हल करता है, और इसलिए विकासशील अनुप्रयोग को सरल बनाया जाता है, ताकि आप अपने आवेदन के बाकी सुविधाओं को विकसित करने में समय व्यतीत कर सकें। इस अर्थ में एक प्रोग्रामिंग भाषा कच्ची है।

संबंधित मुद्दे