मोनोमोर्फाइजेशन: Difference between revisions
(Created page with "{{Short description|Compile-time transformation}} प्रोग्रामिंग भाषाओं में, मोनोमोर्फाइजेशन एक...") |
No edit summary |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Compile-time transformation}} | {{Short description|Compile-time transformation}} | ||
[[प्रोग्रामिंग भाषा]]ओं में, मोनोमोर्फाइजेशन | [[प्रोग्रामिंग भाषा]]ओं में, मोनोमोर्फाइजेशन संकलन-समय की प्रक्रिया है इस प्रकार जहां बहुरूपी कार्यों को प्रत्येक अद्वितीय तात्कालिकता के लिए कई मोनोमोर्फिक कार्यों द्वारा प्रतिस्थापित किया जाता है।<ref>{{cite web |title=सामान्य डेटा प्रकार - जंग प्रोग्रामिंग भाषा|url=https://doc.rust-lang.org/book/ch10-01-syntax.html |access-date=27 May 2021}}</ref> उल्लिखित परिवर्तन से निकलने लाभदायक माना जाता है क्योंकि इसका परिणाम विशिष्ट प्रकार के आउटपुट इंटरमीडिएट प्रतिनिधित्व (आईआर) में होता है, तथा जो अधिक प्रभावी अनुकूलन की अनुमति देता है। और इसके अतिरिक्त, कई आईआर निम्न स्तर के होने का निश्चय रखते हैं और बहुरूपता को समायोजित नहीं करते हैं। जिससे परिणामी कोड सामान्यतः [[गतिशील प्रेषण]] से तेज़ होता है, किंतु फ़ंक्शन बॉडी को डुप्लिकेट करने के कारण अधिक संकलन समय और संग्रहण स्थान की आवश्यकता हो सकती है।<ref>{{cite web |last1=Hume |first1=Tristan |title=Models of Generics and Metaprogramming: Go, Rust, Swift, D and More |url=https://thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/ |access-date=27 May 2021}}</ref><ref>{{Cite journal|last1=Tanaka|first1=Akira|last2=Affeldt|first2=Reynald|last3=Garrigue|first3=Jacques|date=2018|title=मोनोमोर्फाइजेशन और मोनाडिफिकेशन का उपयोग करके Coq में सुरक्षित निम्न-स्तरीय कोड जनरेशन|url=https://www.jstage.jst.go.jp/article/ipsjjip/26/0/26_54/_article/-char/ja/|journal=Journal of Information Processing|volume=26|pages=54–72|doi=10.2197/ipsjjip.26.54|doi-access=free}}</ref><ref>{{Cite journal|title=Extending Smt-Lib v2 with λ-Terms and Polymorphism|citeseerx = 10.1.1.663.6849}}</ref><ref>{{Cite journal|last1=Cai|first1=Yufei|last2=Giarrusso|first2=Paolo G.|last3=Ostermann|first3=Klaus|date=2016-01-11|title=डेटाटाइप-जेनेरिक प्रोग्रामिंग के लिए समवर्ती प्रकार के साथ सिस्टम f-omega|url=https://doi.org/10.1145/2837614.2837660|journal=Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages|series=POPL '16|location=St. Petersburg, FL, USA|publisher=Association for Computing Machinery|pages=30–43|doi=10.1145/2837614.2837660|isbn=978-1-4503-3549-2|s2cid=17566568}}</ref><ref>{{Cite book|last1=Klabnik|first1=Steve|url=https://books.google.com/books?id=0Vv6DwAAQBAJ|title=The Rust Programming Language (Covers Rust 2018)|last2=Nichols|first2=Carol|date=2019-08-06|publisher=No Starch Press|isbn=978-1-7185-0044-0|language=en}}</ref><ref>{{Cite book|last1=Felty|first1=Amy P.|url=https://books.google.com/books?id=l9hJCgAAQBAJ&dq=%22Monomorphization%22+-wikipedia&pg=PA291|title=Automated Deduction - CADE-25: 25th International Conference on Automated Deduction, Berlin, Germany, August 1-7, 2015, Proceedings|last2=Middeldorp|first2=Aart|date=2015-07-30|publisher=Springer|isbn=978-3-319-21401-6|language=en}}</ref> | ||
== उदाहरण == | == उदाहरण == | ||
यह Rust_(programming_language) में | यह Rust_(programming_language) में [[सामान्य प्रोग्रामिंग|जेनेरिक प्रोग्रामिंग]] पहचान फ़ंक्शन के उपयोग का उदाहरण है | ||
<syntaxhighlight lang="rust"> | <syntaxhighlight lang="rust"> | ||
fn id<T>(x: T) -> T { | fn id<T>(x: T) -> T { | ||
Line 16: | Line 17: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
मोनोमोर्फाइजेशन के बाद, यह बन जाएगा | मोनोमोर्फाइजेशन के बाद, यह बन जाएगा | ||
<syntaxhighlight lang="rust"> | <syntaxhighlight lang="rust"> | ||
Line 36: | Line 37: | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[पैरामीट्रिक बहुरूपता]] | * [[पैरामीट्रिक बहुरूपता]] | ||
* | * टाइप एसयोर | ||
* [[टेम्पलेट (सी ++)]] | * [[टेम्पलेट (सी ++)]] | ||
== संदर्भ == | == संदर्भ == | ||
Line 44: | Line 45: | ||
{{reflist}} | {{reflist}} | ||
[[Category:CS1 English-language sources (en)]] | |||
[[Category: | [[Category:CS1 errors]] | ||
[[Category: | |||
[[Category:Created On 16/06/2023]] | [[Category:Created On 16/06/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:बहुरूपता (कंप्यूटर विज्ञान)]] |
Latest revision as of 18:32, 3 July 2023
प्रोग्रामिंग भाषाओं में, मोनोमोर्फाइजेशन संकलन-समय की प्रक्रिया है इस प्रकार जहां बहुरूपी कार्यों को प्रत्येक अद्वितीय तात्कालिकता के लिए कई मोनोमोर्फिक कार्यों द्वारा प्रतिस्थापित किया जाता है।[1] उल्लिखित परिवर्तन से निकलने लाभदायक माना जाता है क्योंकि इसका परिणाम विशिष्ट प्रकार के आउटपुट इंटरमीडिएट प्रतिनिधित्व (आईआर) में होता है, तथा जो अधिक प्रभावी अनुकूलन की अनुमति देता है। और इसके अतिरिक्त, कई आईआर निम्न स्तर के होने का निश्चय रखते हैं और बहुरूपता को समायोजित नहीं करते हैं। जिससे परिणामी कोड सामान्यतः गतिशील प्रेषण से तेज़ होता है, किंतु फ़ंक्शन बॉडी को डुप्लिकेट करने के कारण अधिक संकलन समय और संग्रहण स्थान की आवश्यकता हो सकती है।[2][3][4][5][6][7]
उदाहरण
यह Rust_(programming_language) में जेनेरिक प्रोग्रामिंग पहचान फ़ंक्शन के उपयोग का उदाहरण है
fn id<T>(x: T) -> T {
return x;
}
fn main() {
let int = id(10);
let string = id("some text");
println!("{int}, {string}");
}
मोनोमोर्फाइजेशन के बाद, यह बन जाएगा
fn id_i32(x: i32) -> i32 {
return x;
}
fn id_str(x: &str) -> &str {
return x;
}
fn main() {
let int = id_i32(10);
let string = id_str("some text");
println!("{int}, {string}");
}
यह भी देखें
- पैरामीट्रिक बहुरूपता
- टाइप एसयोर
- टेम्पलेट (सी ++)
संदर्भ
- ↑ "सामान्य डेटा प्रकार - जंग प्रोग्रामिंग भाषा". Retrieved 27 May 2021.
- ↑ Hume, Tristan. "Models of Generics and Metaprogramming: Go, Rust, Swift, D and More". Retrieved 27 May 2021.
- ↑ Tanaka, Akira; Affeldt, Reynald; Garrigue, Jacques (2018). "मोनोमोर्फाइजेशन और मोनाडिफिकेशन का उपयोग करके Coq में सुरक्षित निम्न-स्तरीय कोड जनरेशन". Journal of Information Processing. 26: 54–72. doi:10.2197/ipsjjip.26.54.
- ↑ "Extending Smt-Lib v2 with λ-Terms and Polymorphism". CiteSeerX 10.1.1.663.6849.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Cai, Yufei; Giarrusso, Paolo G.; Ostermann, Klaus (2016-01-11). "डेटाटाइप-जेनेरिक प्रोग्रामिंग के लिए समवर्ती प्रकार के साथ सिस्टम f-omega". Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. POPL '16. St. Petersburg, FL, USA: Association for Computing Machinery: 30–43. doi:10.1145/2837614.2837660. ISBN 978-1-4503-3549-2. S2CID 17566568.
- ↑ Klabnik, Steve; Nichols, Carol (2019-08-06). The Rust Programming Language (Covers Rust 2018) (in English). No Starch Press. ISBN 978-1-7185-0044-0.
- ↑ Felty, Amy P.; Middeldorp, Aart (2015-07-30). Automated Deduction - CADE-25: 25th International Conference on Automated Deduction, Berlin, Germany, August 1-7, 2015, Proceedings (in English). Springer. ISBN 978-3-319-21401-6.