पर्ल और जावा के बीच समानताएं क्या हैं? [बन्द है]


14

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


"I LIKE THIS LANGUAGE!" तय करके आगे बढ़ें। जब भी आप किसी मुश्किल में भागते हैं तो बस अपने निर्णय को याद रखें और अपने आप को बहुत सारे दांत पीसने और बाल खींचने से बचाएं।

1
अनुशंसित पढ़ने: गोरिल्ला बनाम शार्क

जवाबों:


32

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

तो, दोनों उच्च-स्तरीय हैं :

एक उच्च-स्तरीय प्रोग्रामिंग भाषा एक प्रोग्रामिंग भाषा है जिसमें कंप्यूटर के विवरण से मजबूत अमूर्तता है।

और सामान्य उद्देश्य :

कंप्यूटर सॉफ्टवेयर में एक सामान्य प्रयोजन प्रोग्रामिंग भाषा (GPL) एक प्रोग्रामिंग भाषा है, जिसका उपयोग विभिन्न प्रकार के एप्लिकेशन डोमेन में सॉफ्टवेयर लिखने के लिए किया जाता है।

सार में इसका मतलब है कि आप पर्ल के साथ सब कुछ कर सकते हैं, आप जावा के साथ भी कर सकते हैं। और @KyleHodgson के रूप में , उनके दोनों सिंटैक्स C और C ++ से प्राप्त होते हैं और forलूप और ifस्टेटमेंट जैसे सरल सामान के लिए सिंटैक्स अनिवार्य रूप से एक ही है - और @DipanMehta नोटों के रूप में , दोनों को एकत्रित किया जाता है । और निश्चित रूप से दोनों बेहद लोकप्रिय हैं और जीवंत समुदाय हैं।

लेकिन यही वह जगह है जहां समानताएं बंद हो जाती हैं। पर्ल बहु-प्रतिमान है, प्रोग्रामिंग प्रतिमानों की एक विस्तृत श्रृंखला का समर्थन करता है:

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

इसलिए पर्ल आपके कोड 1 को बनाने के लिए एक से अधिक तरीकों की अनुमति देता है , जबकि जावा सिर्फ एक। यह कोई बुरी बात नहीं है (या अच्छी बात), यह सिर्फ अलग है। यदि आपने कोई वस्तु उन्मुख पर्ल कोड नहीं लिखा है, तो जावा पहले से थोड़ा अलग लग सकता है। निराश न हों, ऑब्जेक्ट ओरिएंटेशन एक ऐसी चीज है जिसे आपको अंततः सीखना होगा, यदि आप सॉफ्टवेयर डेवलपमेंट में करियर बनाने पर विचार कर रहे हैं, और जावा सीखना ऑब्जेक्ट ओरिएंटेशन की बुनियादी अवधारणाओं को सीखने का एक अच्छा तरीका है - एक सही तरीका नहीं है, लेकिन निश्चित रूप से एक अच्छा तरीका है।

और जैसा कि आप जानते हैं, पर्ल की व्याख्या की गई है, जबकि जावा है ... अच्छी तरह से ... पूरी तरह से एक अलग जानवर । जावा में आप अपने कोड को पर्ल में लिखते हैं, और फिर आप इसे संकलित करते हैं । परिणाम एक निष्पादन योग्य नहीं है, लेकिन जावा बाइटकोड । इस बिचौलिया प्रारूप को जावा वर्चुअल मशीन में निष्पादित (अंत में!) किया जाता है, जो पर्ल इंटरप्रेटर के कुछ समरूप है। एक जावा प्रोग्राम को चलाने के लिए एक जेवीएम को पहले से स्थापित किया जाना चाहिए, इस बात पर कि आपको पर्ल स्क्रिप्ट 2 को निष्पादित करने के लिए पर्ल इंटरप्रेटर को कैसे स्थापित करना है ।

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

जो हमें अंतिम प्रमुख अंतर पर लाता है:

पर्ल गतिशील 3 है :

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

और गतिशील रूप से टाइप 4 :

एक प्रोग्रामिंग भाषा को गतिशील रूप से टाइप करने के लिए कहा जाता है जब कंपाइल-टाइम के विपरीत इसके प्रकार की अधिकांश जाँच रन-टाइम पर की जाती है।

और जावा सांख्यिकीय रूप से टाइप किया गया है :

एक प्रोग्रामिंग भाषा को कहा जाता है कि स्टैटिक टाइपिंग का उपयोग तब किया जाता है जब रन-टाइम के विपरीत संकलन-समय के दौरान टाइप चेकिंग की जाती है।

जो, इसे यथासंभव सरल रूप से रखने के लिए, इसका मतलब है कि जावा में आपको उपयोग करने से पहले अपने चर और विधियों के प्रकार को घोषित करना होगा। अन्य अंतर हैं, लेकिन मैं खुद से उन्हें खोजने का मज़ा खराब नहीं करना चाहूंगा :)

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

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

1 "टिम टोडी"

2 पेरल समुदाय तोता के माध्यम से एक पर्ल वर्चुअल मशीन की सक्रियता की खोज कर रहा है ।

3 डायनामिक का मतलब हमेशा डायनामिक टाइप नहीं होता है।

4 पर्ल गतिशील रूप से उपयोगकर्ता परिभाषित प्रकारों के लिए टाइप किया गया है, वैधानिक रूप से सरणियों, हैश, स्केलर्स और सबरूटीन्स के संबंध में टाइप किया गया है, और दृढ़ता से टाइप किया गया है use strict, इसलिए अनिवार्य रूप से यह एक परिवर्तनशील प्रकार की भाषा है, लेकिन कुछ समझदारी रखने के लिए इसे गतिशील रूप से कहते हैं। आपके द्वारा लिखा गया।

5 दुरुपयोग की बात के रूप में, जोएल स्पोल्स्की द पेरिल्स ऑफ जावास्कूल में लिखते हैं ।


6
पर्ल के साथ तुलना में, जावा एक उच्च-स्तरीय भाषा नहीं है। यह पर्ल कोड की तुलना में कुछ लिखने के लिए अधिक जावा कोड लेता है।
tchrist

1
@tchrist एक भाषा की तुलना में किसी भाषा के उच्च स्तर, या उच्च / निम्न स्तर के साथ कोड की मात्रा का क्या करना है?
यानि

1
@YannisRizos यह जवाब देने के लिए बहुत आसान है। यदि यह अधिक कोड लेता है, तो आप एक उच्च पर्याप्त अमूर्त परत के साथ काम नहीं कर रहे हैं। एक चमकदार उदाहरण जावा के डोडी स्ट्रिंग हैंडलिंग के साथ है। यह जावा 7. में रेगेक्स इंजन को छोड़कर अमूर्त यूनिकोड कोड बिंदुओं की उच्च-स्तरीय अवधारणा का समर्थन नहीं करता है, यह दुर्भावना का एक बड़ा कारण है कि एक भाषा जावा की पर्ल के साथ तुलना कैसे की जाती है।
tchrist

@tchrist शब्द की विषय-वस्तु एक तुलनात्मक तुलना के लिए अधिक जगह की अनुमति नहीं देती है, लाइनें बहुत धुंधली हैं, और दोनों भाषाओं में सुविधाओं की एक विस्तृत श्रृंखला है, जिनमें से कुछ बहुत उच्च स्तर और कुछ नीच हैं। इसलिए, मैं उन्हें एक ही स्तर पर होने के बारे में सोचता रहूंगा और इसके बारे में ज्यादा चिंता नहीं करूंगा। मेरी यहाँ भी इसी तरह की बातचीत हुई , जिसने मुझे भाषाओं की तुलना करने में कोई समय नहीं गंवाने के लिए प्रेरित किया;)
यानिक्स

@YannisRizos आपको जावा में एक हाइलेवल अवधारणा नहीं मिल रही है जिसमें पर्ल का अभाव है, लेकिन आप पर्ल में कई हाइलेवल अवधारणाओं को खोज सकते हैं जिसमें जावा का अभाव है। इस प्रकार, पर्ल उच्च स्तर है। पर्ल में फ़ंक्शन पॉइंटर्स हैं; जावा नहीं करता है पर्ल में ऑपरेटर ओवरलोडिंग है; जावा नहीं करता है पर्ल में नियतात्मक विध्वंसक होते हैं; जावा नहीं करता है पर्ल रिटर्न प्रकार द्वारा कार्यों को अधिभारित कर सकता है; जावा नहीं कर सकता। मैं बहुत लंबे समय तक इस रास्ते पर जा सकता हूं। आप निश्चित रूप से 'महसूस' करना जारी रखेंगे, लेकिन अधिकांश आपको प्रसन्न करते हैं, और जो भी कारण हो, लेकिन यह व्यक्तिपरक विश्लेषण के कारण नहीं है।
टीचर

2

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


@downvote, क्यों? (मैं जवाब के साथ प्यार में नहीं हूं, बस जिज्ञासु के रूप में जो आपको इतनी समस्याग्रस्त पाया गया।)
काइल हॉजसन

1

एक वैकल्पिक उत्तर में एक स्टैब ले रहा है क्योंकि वर्तमान में चयनित एक दोनों के बीच मतभेदों पर ध्यान केंद्रित करता है (वास्तव में पर्ल और जावा के बीच बहुत अधिक समानताएं नहीं हैं)।

समानताएँ

  • वे दोनों सी-लाइक हैं (उनके पास लूप और ब्रेस और सेमी-कॉलन हैं)
  • वे मुख्य रूप से अनिवार्य हैं
  • न ही संकलित बायनेरिज़ का उत्पादन करें
  • वे दोनों बहुत परिपक्व हैं
  • वे दोनों उद्यम में परीक्षण किए गए (पर्ल ऑप्स ग्लू और जावा अधिक अनुप्रयोगों / सेवाओं के रूप में अधिक हैं)
  • वे दोनों लोकप्रिय हैं
  • वे दोनों वस्तु-अभिविन्यास का समर्थन करते हैं
  • उन दोनों के पास विस्तृत चौखटे उपलब्ध हैं
  • उनके पास उनके बारे में प्रकाशित पुस्तकें हैं
  • वे दोनों सी / असेंबली की तुलना में उच्च स्तर के हैं
  • वे दोनों "धीमे" हैं (विभिन्न के लिए, धीमे के विशिष्ट परिदृश्यों में न तो सी / विधानसभा हैं)
  • वे दोनों स्वचालित रूप से मेमोरी का प्रबंधन करते हैं ("कचरा संग्रह")
  • 2012 की गर्मियों के अनुसार न तो हिप / कूल हैं
  • वे दोनों खुले स्रोत समुदाय में उलझे हुए हैं
  • वे दोनों कई प्लेटफार्मों के लिए उपलब्ध हैं

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

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