प्रोग्रामिंग भाषा शब्दार्थ पर पुस्तकें


31

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

मैंने तुर्बक / गिफर्ड पुस्तक पर एक नज़र डाली , लेकिन यह बहुत लंबा है; मैंने सोचा था कि विंस्केल ठीक होगा, लेकिन मेरे पास इसकी कोई पहुंच नहीं है (यह हमारे विश्वविद्यालय के पुस्तकालय में नहीं है, और मैं पैसे पर कम हूं), और मुझे यकीन नहीं है कि यह दिनांकित नहीं है। स्लोनगर ठीक लगता है, लेकिन व्यावहारिक हिस्सा इसे कुछ हद तक लंबा बनाता है, और मैं उसकी शैली के साथ बहुत सहज नहीं हूं।

तो मेरा सवाल है - क्या विन्स्केल एक अच्छी किताब है? और क्या यह दिनांकित है?

इसके अलावा, इस विषय पर अन्य संक्षिप्त पुस्तकें भी हैं?


5
सभी पुस्तकों के प्रकाशक पृष्ठों के लिंक जोड़े। ब्राउज़ करने के इच्छुक अन्य लोगों के लिए उपयोगी हो सकता है।
सुरेश वेंकट

2
आप किस तरह के शब्दार्थों में रुचि रखते हैं? Denotational? आपरेशनल? एक सिंहावलोकन?
ओहद कम्मर

@Oad Kammar: मुझे दोनों में दिलचस्पी है।
Jay

जवाबों:


31

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

अन्य पुस्तकें जो अधिक उन्नत हैं:

  • गुन्टर, प्रोग्रामिंग लैंग्वेज के शब्दार्थ , एक और अधिक उन्नत पुस्तक जो कि शब्दार्थ विज्ञान पर केंद्रित है, शब्दार्थ के लिए एक दृष्टिकोण है, जो उम्मीदों पर खरा नहीं उतरा है। विशुद्ध रूप से कार्यात्मक lanugages पर ध्यान केंद्रित करता है और संगामिति की उपेक्षा करता है। यह वह पुस्तक है जिसे मैंने खुद को एक स्नातक के रूप में शब्दार्थ से पढ़ाया था, और पूर्वव्यापी की इच्छा में मैंने इसके बजाय विंकसेल की पुस्तक का उपयोग किया था। गनर शुरुआती के लिए एक आसान पढ़ा नहीं है।

  • डोमेन और लैम्ब्डा- कैल्सी अमादियो और क्यूरीन द्वारा। डोमेन-थ्योरिटिक परंपरा में एक और पुस्तक लिखी जा रही है, हालांकि यह प्रक्रिया की गणना पर चर्चा करता है।

  • जॉन मिशेल की किताबें जिनका पहले ही ऊपर उल्लेख किया जा चुका है। वे ज्यादातर अनुक्रमिक गणना के बारे में भी हैं।

पियर्स की टीएपीएल जैसी किताबें बहुत अच्छी हैं, लेकिन प्रोग्रामिंग भाषाओं के एक पहलू पर संकीर्ण रूप से ध्यान केंद्रित करती हैं, अर्थात् प्रकार, जितना महत्वपूर्ण है। मैं इसे प्रोग्रामिंग भाषाओं के सामान्य क्षेत्र के पहले परिचय के रूप में अनुशंसित नहीं करूंगा, लेकिन जो कोई भी प्रकार के बारे में सीखना चाहता है, उसके लिए पढ़ना अनिवार्य है।

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

अपडेट 22. अप्रैल 2014: टोबियास निपको और जेरविन क्लेन ने एक नई किताब प्रकाशित की है

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

पुस्तक एकदम नई है इसलिए मैंने शिक्षण के लिए उपयोग नहीं किया है, लेकिन यह एक ऐसे परिचय के रूप में वास्तव में उपयुक्त है जो पियर्स एट अल द्वारा सॉफ़्टवेयर फ़ाउंडेशन की तुलना में निचले स्तर पर पिच किया गया है ।


2
क्या वहाँ एक तरीका है, जो दूर के तरीकों से दूर है? मुझे और तरह के लोग लगते हैं जो पहले हाथ से लहराते प्रमाणों का उपयोग करते थे, आजकल औपचारिक प्रमाण प्रस्तुत करने की अपेक्षा की जाती है। जैसा कि प्रचलित तरीके से अभी भी आसानी से सब कुछ हम नहीं कर सकते हैं, और कई और आवश्यक शर्तों की आवश्यकता होती है, उन शोधकर्ताओं ने अधिक स्वीकार्य तरीकों का उपयोग किया है जैसे कि खेल, प्रक्रिया कैल्सी, प्रूफ सहायक। मुझे यकीन नहीं है कि क्या डिपोनेटेशनल तरीकों में गिरावट है।
ओहद कम्मर

4
कृपया भ्रमित न करें denotational साथ अर्थ विज्ञान डोमेन सिद्धांत । गेम शब्दार्थ हो सकता है, और आमतौर पर, पूरी तरह से अर्थ है, अर्थात, एक कार्यक्रम का अर्थ अपने भागों के अर्थों का एक कार्य है।
बाउर

2
मैंने इस टिप्पणी के बारे में एक नया सूत्र खोला है। लेकिन यहां तक ​​कि अगर मुझे यकीन नहीं है कि मैं आपकी परिभाषा से सहमत हूं, तो खेल शब्दार्थ प्रकृति में निरूपित हैं। मुझे लगता है कि मुझे अपनी टिप्पणी में "खेल" को "परिचालन शब्दार्थ" के साथ बदलना चाहिए, और खेल शब्दार्थों को संभवत: एक और रूप में अर्थविज्ञान शब्दार्थ अनुसंधान शामिल करना चाहिए। cstheory.stackexchange.com/questions/3577/…
Ohad Kammar

1
मैं आश्वस्त नहीं हूं कि कोई बदलाव है। मेरी पहली टिप्पणी देखें, जो कि लेडी की टिप्पणी के प्रकाश में है।
ओहद कममर 19

1
क्या कोई शिफ्ट है? एक दिलचस्प सवाल। हम एक बदलाव को कैसे माप सकते हैं? ऐसे कई मानदंड हैं जिन्हें हम अपेक्षाकृत ठोस लोगों से लागू कर सकते हैं, जैसे कि विभिन्न दृष्टिकोणों को दिए गए रिसर्क अनुदानों की मात्रा, माइंड-शेयर जैसे अस्पष्ट विचारों को। यह देखते हुए कि शोधकर्ताओं, कर्मचारियों के रूप में, अनुदान राशि के लिए आवेदक के रूप में हम इस तरह के प्रश्न के परिणाम में हैं, यह संभावना नहीं है कि हम एक उत्तर पर सहमत होंगे।
मार्टिन बर्गर

20

यहाँ नि: शुल्क ऑनलाइन के लिए उपलब्ध सामग्री का एक यादृच्छिक नमूना है:

  • Winskel, प्रोग्रामिंग भाषाओं के औपचारिक शब्दार्थ , Google पुस्तक पूर्वावलोकन । मैं इस किताब के बारे में कुछ नहीं जानता। यह सूची में है क्योंकि यह सवाल विशेष रूप से इसके बारे में पूछता है, जो कि ऑनलाइन है, ज्यादातर।
  • मॉर्गन, विनिर्देशन से प्रोग्रामिंग , पीएस फाइलों की सूची । विषय शोधन है, जो उच्च-स्तरीय गैर-निष्पादन योग्य विवरणों के साथ शुरू करने और फिर व्यवस्थित निष्पादन में व्यवस्थित रूप से मॉर्फ करने की प्रक्रिया है। बेशक, प्रत्येक परिशोधन कदम को शब्दार्थ को संरक्षित करना चाहिए, इसलिए यह एक निश्चित प्रकार के शब्दार्थों पर भी चर्चा करता है (ज्यादातर विधेय पर आधारित है)।
  • हार्पर, प्रोग्रामिंग लैंग्वेजेस की प्रैक्टिकल नींव , ड्राफ्ट की पीडीएफ । नीचे दवे क्लार्क की टिप्पणी देखें।
  • रेमी, अंडरस्टैंडिंग, अंडरस्टैंडिंग, और अनएम्वेलिंग ओकेमेल लैंग्वेज , पीडीएफ । यह वह पुस्तक है जिससे मैंने क्रियात्मक प्रोग्रामिंग (OCaml, अधिक सटीक रूप से) सीखी और मुझे यह बहुत पसंद आई । यह बुनियादी भाषा सुविधाओं के शब्दार्थ को बहुत अच्छे तरीके से प्रस्तुत करता है और इस प्रक्रिया में लंबो कैलकुलस और टाइप थ्योरी को `जानना 'के आधार पर प्रस्तुत करता है।
  • Peyton जोन्स, कार्यात्मक प्रोग्रामिंग भाषाओं के कार्यान्वयन , djvu । पहले अध्यायों में लैम्ब्डा कैलकुलस (और इसके 'ऑपरेशनल शब्दार्थ') का वर्णन किया गया है और लैम्बडा कैलकुलस में उच्च स्तर की भाषा की विशेषताओं को कैसे चित्रित किया गया है। इस अर्थ में, कागज कार्यात्मक भाषाओं के लिए एक परिचालन शब्दार्थ प्रदान करता है।
  • पियर्स (एड), उन्नत प्रकार और प्रोग्रामिंग भाषाओं में उन्नत विषय , Google पुस्तक पूर्वावलोकन
  • स्लैन्गर, सिंटैक्स और प्रोग्रामिंग भाषाओं के शब्दार्थ , पीडीएफ फाइलों की सूची । मैंने कुछ समय पहले इस पर ध्यान दिया था और इसे बहुत पसंद नहीं किया था। यह सूची में है क्योंकि यह प्रश्न में उल्लिखित है।
  • ब्रुक्स, समवर्ती पृथक्करण तर्क के लिए एक शब्दार्थ , पीडीएफ । यह एक बड़ा लेख (80 पृष्ठ) है, पुस्तक नहीं। मैंने इसे शामिल किया क्योंकि यह एक हालिया विकास है जो मुझे दिलचस्प लगता है।

1
यह बहुत सारे लिंक है :)
सुरेश वेंकट

3
यह अधिक उपयोगी होगा यदि इसे सूची के रूप में प्रस्तुत किया गया हो। वैसे भी, मैं हार्पर पुस्तक की सिफारिश करूंगा: "मई" पर क्लिक करें।
डेव क्लार्क

मैं सहमत हूँ। Radu, क्या आप पुस्तकों को सूचीबद्ध कर सकते हैं, इसलिए हम जानते हैं कि हम क्या क्लिक कर रहे हैं? यह एक उत्कृष्ट संसाधन होगा।
सुरेश वेंकट

अब यह एक सूची है। (पहला संस्करण 2am के आसपास पोस्ट किया गया था, पिछली रात 5h सोने के बाद।: P)
रादू GRIGore

16

मैं प्रोग्रामिंग भाषा के शब्दार्थों पर पुस्तकों को दो वर्गों में विभाजित करूंगा: वे जो मॉडलिंग प्रोग्रामिंग भाषा अवधारणाओं पर ध्यान केंद्रित करते हैं और जो शब्दार्थ के मूलभूत पहलुओं पर ध्यान केंद्रित करते हैं । कोई कारण नहीं है कि कोई पुस्तक दोनों नहीं कर सकती। लेकिन, आम तौर पर, केवल इतना ही होता है कि आप एक पुस्तक में क्या डाल सकते हैं, और लेखकों के पास अपनी खुद की पूर्वसूचनाएँ हैं कि क्या महत्वपूर्ण है।

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

अन्य किताबें जो मॉडलिंग पहलुओं पर ध्यान केंद्रित करती हैं बजाय मूलभूत पहलुओं के निम्नलिखित हैं:

  • प्रोग्रामिंग भाषाओं के टेनेंट के शब्दार्थ विज्ञान , जो अनिवार्य प्रोग्रामिंग भाषाओं के शब्दार्थों पर एक अधिक या कम अपटोड बुक है। इसे पढ़ना आसान है। हालाँकि, यह पुस्तक के बाद के हिस्सों में सारगर्भित है और आपको यह देखने के लिए संघर्ष करना पड़ सकता है कि चीजों को एक विशेष तरीके से क्यों किया जा रहा है।

  • रेनॉल्ड्स प्रोग्रामिंग भाषाओं के सिद्धांत । शब्दार्थ में विशेषज्ञता वाले किसी व्यक्ति को इस पुस्तक को जरूर पढ़ना चाहिए। यह रेनॉल्ड्स द्वारा सब के बाद है। (डेविड श्मिट ने एक बार मुझसे टिप्पणी की थी, "भले ही रेनॉल्ड्स सुबह अखबार पढ़ रहे हों, आप ध्यान से सुनना चाहते हैं, क्योंकि आप कुछ महत्वपूर्ण सीख सकते हैं"!) इसमें मॉडलिंग पहलुओं और मूलभूत पहलुओं दोनों की अच्छी कवरेज है।

मूलभूत पहलुओं पर सबसे अच्छी किताबें हैं गुंटर (जो कि मैं एक स्नातक पाठ पुस्तक के रूप में मानता हूं), और मिशेल (जो आपके बुकशेल्फ़ पर होने के लिए अच्छा संदर्भ पुस्तक है क्योंकि यह काफी व्यापक है)।


बहुत अच्छा लगा आपको यहाँ, उदय!
रादु ग्रिगोोरे

मुझे यहां आने की खुशी है। यह एक बहुत अच्छा संसाधन है!
उदय रेड्डी

कैसे के बारे में: संक्रमण और पेड़: हंस Hüttel 2010 से एक संरचनात्मक संक्रियात्मक शब्दार्थ का परिचय। लगता है कि गोल समीक्षा है, लेकिन कोई भी इसका उल्लेख नहीं करता है।
आर्टुरो हर्नान्डेज़

1
@ उदय: उत्तर के लिए धन्यवाद। "मॉडलिंग प्रोग्रामिंग भाषा अवधारणाएं" और "अर्थ विज्ञान के मूलभूत पहलू" क्या हैं? उनके मतभेद और संबंध क्या हैं?
टिम

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

8

जब मैं शब्दार्थ पर अंडरग्रेजुएट कोर्स ले रहा था, तो मुझे विंसेल पढ़ने में बहुत मजा आया। मैं यह नहीं बता सकता कि यह दिनांकित है, हालाँकि, क्योंकि मैं इस क्षेत्र में शोध नहीं करता। वीनसेल का एक प्लस यह है कि आप इसे अंग्रेजी के अलावा अन्य भाषाओं में अनुवादित कर सकते हैं।

एक आगे पढ़ने के लिए, एक स्नातक स्तर पर और अधिक, मैं जॉन मिशेल के सुझाव देंगे किताबें मूलाधार प्रोग्रामिंग भाषाओं के लिए और प्रोग्रामिंग भाषाओं में अवधारणाओं । यदि आप केवल पहले अध्याय को पढ़ते हैं, तो मुझे लगता है कि वे आपकी सहमति की आवश्यकता को भी पूरा करते हैं।

आपको इन पुस्तकों के मुफ्त ड्राफ्ट नहीं मिलेंगे, इसलिए यदि आपके पास राडू के उत्तर में "हो सकता है" के लिए एक प्रतिबंधित बजट है।


6

ठीक है, मैं इस विषय पर विशेषज्ञ नहीं हूं, लेकिन कुछ सामान्य सलाह हैं जो मैं दे सकता हूं।

सबसे पहले, कुछ लोग हैं जो पहले से ही पुस्तक पढ़ चुके हैं और इस पर समीक्षा प्रदान करते हैं। उदाहरण के लिए, वेन्सेल पुस्तक द फॉर्मल सेमेंटिक्स ऑफ़ प्रोग्रामिंग लैंग्वेज (देखें [1] और [2] ) के लिए मुझे अमेज़न पर समीक्षाएं मिलीं।

एक समीक्षा का एक हिस्सा पढ़ता है:

यह पुस्तक शुरू से ही वाक्य रचना और शब्दार्थ के बीच भ्रमित करती है, जैसे शाब्दिक को उसके मूल्यों से अलग करना। उन्हें अलग करने के लिए कोई विशेष अधिसूचना का उपयोग नहीं किया गया था। यह एक महत्वपूर्ण मुद्दा है जिसे लेखक को इस तरह एक विषय में संबोधित करना चाहिए। इसके अलावा, उनके द्वारा उपयोग किए गए कुछ अन्य निष्कर्ष काफी भ्रामक हैं, जैसे कि परिसर और निष्कर्ष दिखाना।

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

18/20 लोग समीक्षा को उपयोगी पाते हैं। अधिक समीक्षा देखने के लिए आप अमेज़न (या अन्य स्रोतों) की तलाश कर सकते हैं।

दूसरा, अमेज़ॅन इस पुस्तक के साथ कंप्यूटर वैज्ञानिकों के लिए प्रकार और प्रोग्रामिंग लैंग्वेज और बेसिक श्रेणी सिद्धांत प्रदान करता है । पर एक अन्य विषय डेव क्लार्क पर उत्कृष्ट लोगों के रूप में इन किताबों को प्रदान करता है "प्रकार सिस्टम और भाषा शब्दार्थ प्रोग्रामिंग।" फिर, मैं एक विशेषज्ञ नहीं हूं, लेकिन वे आपके लिए उपयोगी हो सकते हैं।


TaPL मेरे स्वाद के लिए थोड़ा धीमा हो जाता है। यह एक अच्छी किताब है, लेकिन मैंने इसका उल्लेख किया क्योंकि पूछने वाला व्यक्ति "लंबी घुमावदार" पुस्तकों के बारे में चिंतित लगता है।
रादु GRIGore

@Radu: निश्चित रूप से TAPL धीमा है, लेकिन यह एक अच्छा परिचय है। आपके लिंक में उल्लिखित हार्पर पुस्तक बहुत जल्दी जाती है और बहुत अधिक जमीन को कवर करती है, हालांकि यह अभी तक पूरा नहीं हुआ है।
डेव क्लार्क

4
नमक की एक चुटकी के साथ विंसेल की किताब की अमेज़ॅन समीक्षा करें। यह अक्सर स्नातक शब्दार्थ पाठ्यक्रम में एक अनुशंसित पाठ के रूप में उपयोग किया जाता है और संभवतः असंतुष्ट छात्रों को आकर्षित करता है। मैंने पुस्तक पढ़ ली है और परिचयात्मक अध्यायों को पर्याप्त से अधिक पाया है। पूरे संसार में उनकी धारणा पूरी तरह से मानक थी।
डोमिनिक मुलिगन

4

मैं अब तक दिए गए उत्तरों पर नहीं मिली दो पुस्तकों को जोड़ना चाहूंगा:

स्टंप की पुस्तक संक्षिप्त है लेकिन बहुत स्पष्ट है।


3

एक पूर्ण शुरुआती परिचालन शब्दार्थ का अध्ययन करने के लिए, मैं मेरिबेल फर्नांडीज द्वारा प्रोग्रामिंग लैंग्वेज और ऑपरेशनल सेमेंटिक्स का सुझाव दूंगा । सब कुछ बहुत सरल तरीके से समझाया गया है जिसे समझना आसान है। http://www.springer.com/computer/swe/book/978-1-4471-6367-1

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.