फोर्टन मौलिक subroutines इरादे (inout) और इरादा (बाहर) तर्क करने की अनुमति देता है, लेकिन मौलिक कार्यों केवल मंशा (इन) की अनुमति है।फोरट्रान मौलिक कार्य बनाम मूलभूत subroutines
वह क्यों है? क्या यह सिर्फ एक स्टाइलिस्ट सम्मेलन है, या क्या कार्यों को आमंत्रित करने और सबराउटिन को कॉल करने के बारे में कुछ सामान्य रूप से अलग है?
दूसरे शब्दों में,
Elemental Integer Function FOO(i)
Integer, intent(in) :: i
...
FOO=something
End Function
और
Elemental Subroutine FOO(i, v)
Integer, intent(in) :: i
Integer, intent(out) :: v
...
v=something
End Subroutine
— FOO के इन कार्यान्वयन समतुल्य रूप से कुशल हैं?
मैं इसे समझ नहीं सकता, अगर इसका दुष्प्रभाव होता है तो इसे शुद्ध प्रक्रिया कहने के लिए ज्यादा समझ नहीं आता है। मैं अनुमान लगाऊंगा और कहूंगा कि मूलभूत कार्य समानांतरता के संदर्भ में अधिक कुशल हो सकता है, जिसमें यह संकलक के लिए स्पष्ट है कि प्रक्रिया कैसे व्यवहार करती है। – bdforbes
मुझे लगता है कि अगर एक सबराउटिन केवल अपने तर्कों को संशोधित करता है और वैश्विक चर को स्पर्श नहीं करता है, तो ऐसे सबराउटिन को कुशलतापूर्वक संकलित करना मुश्किल नहीं है। इस तरह की कार्यक्षमता समझ में आता है। उदाहरण के लिए, एक यादृच्छिक संख्या जनरेटर को यादृच्छिक संख्या अनुक्रम की स्थिति को संशोधित करना चाहिए (पूर्णांक की सरणी द्वारा वर्णित) और एक यादृच्छिक संख्या लौटाएं। तो यह एक इरादा (inout) और एक इरादा (बाहर) तर्क होना चाहिए। अनुमोदित, उपयोगकर्ता ऐसे सबराउटिन में साझा चर को पारित करके गड़बड़ कर सकता है। लेकिन फिर फिर, कोई प्रोग्रामिंग प्रतिमान मूर्ख-प्रमाण नहीं है। – drlemon