2009-04-22 22 views
10

यदि आप एक (कहें) PHP डेवलपर के लिए प्रोग्रामिंग स्थिति का विज्ञापन कर रहे थे, और एक महान रेज़्यूमे वाला कोई व्यक्ति लागू होता था, लेकिन वे एएसपी.नेट में एक विशेषज्ञ थे (और) उनके सीवी का PHP घटक बहुत हल्का था, आप अभी भी उन्हें स्थिति के लिए मानते हैं? क्या आपको लगता है कि सामान्य ट्रम्प विशिष्ट भाषा कौशल में प्रोग्रामिंग कौशल?भाषाओं के बीच प्रोग्रामिंग कौशल कैसे हस्तांतरण कर रहे हैं?

उत्तर

14

एक अच्छा प्रोग्रामर आसानी से भाषाओं के बीच स्थानांतरित कर सकता है।

हालांकि, पकड़ यह है कि परिभाषा के अनुसार एक अच्छा प्रोग्रामर, वह व्यक्ति है जिसके पास पहले से ही विभिन्न भाषाओं का उपयोग करने के लिए कौशल है। यदि आप किसी ऐसे व्यक्ति को भर्ती कर रहे हैं जिसमें केवल एक भाषा और प्रोग्रामिंग वातावरण (कंपाइलर, ढांचा, आदि) में अनुभव हो, तो उनके पास आवश्यक अनुभव नहीं हो सकता है, विशेष रूप से दिया गया है कि PHP 'स्टैक' .NET के लिए कुछ अलग है।

यदि, हालांकि, आप किसी ऐसे व्यक्ति को भर्ती कर रहे हैं जो जावा, PHP जानता है और पाइथन के साथ कुछ अनुभव है, तो यह इंगित करता है कि उनके पास प्रोग्रामिंग अनुभव की एक अच्छी श्रृंखला है और यह अधिक संभावना है कि उनके कौशल आसानी से एएसपी.नेट पर स्थानांतरित हो जाएंगे ।

यह मेरी राय है।

+0

एक किरायेदार को समझाओ! : -/ – nalply

4

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

7

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

7

बिल्कुल। सामान्य प्रोग्रामिंग कौशल किसी भी डेवलपर के लिए मूल मूल्य हैं। वास्तव में, संचार कौशल सबकुछ से भी अधिक हो सकता है। एक अच्छा प्रोग्रामर एक अच्छा संवाददाता है।

प्रोग्रामिंग संचार के बारे में होना चाहिए क्योंकि कोड अधिक समय व्यतीत करेगा और इसे संशोधित किया जा रहा है, इससे पहले इसे पहली बार लिखना होगा, इसलिए यह बेहतर तरीके से संवाद करेगा कि यह क्या करना है।

प्रोग्रामर मौलिक सिद्धांतों में एक ठोस नींव रखने वाला प्रोग्रामर लगभग किसी भी भाषा में तेज़ी से तेज़ी से गति करने में सक्षम होना चाहिए।

1

यह निर्भर करता है। अगर किसी के पास मजबूत तकनीकी पृष्ठभूमि, प्रतिभा और जुनून है तो इसे एक नई भाषा या डोमेन चुनना काफी आसान होना चाहिए। मेरा मतलब है कि यह कंप्यूटर विज्ञान का पूरा बिंदु है - चीजें प्रतिदिन बदलती हैं, और हर अच्छे प्रोग्रामर को अनुकूलित करने में सक्षम होना चाहिए।

4

ईमानदारी से, ऐसा प्रतीत नहीं होता है, लेकिन मेरा मानना ​​है कि यह प्रश्न सटीक रूप से उत्तर देने के लिए लगभग अस्पष्ट है। मुझे लगता है कि इसमें से अधिकांश विशिष्ट नौकरी पर निर्भर करेगा जिसके लिए आप भर्ती कर रहे हैं।

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

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

2

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

2

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

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

3

सहमत, एक अच्छा प्रोग्रामर भाषाओं के बीच स्थानांतरित कर सकते हैं।

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

संक्षेप में, अगर मुझे एक वरिष्ठ की आवश्यकता होती है, तो प्रासंगिक अनुभव वाला व्यक्ति सिंटैक्स से परिचित किसी व्यक्ति पर जीतता है। जूनियर, शायद कुछ छूट है।

1

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

1

PHP और एएसपी.नेट समान हो सकता है, लेकिन PHP और C# बहुत अलग हैं, और यदि आप सी # 3 का उपयोग कर रहे हैं तो एक बहुत तेज़ सीखने की वक्र है। यदि प्रोग्रामर सिर्फ फ्रंट एंड काम कर सकता है तो यह एक बड़ा सौदा नहीं होगा।

अब, भाषाओं के बीच ज्ञान कितना हस्तांतरणीय है, क्योंकि यह निर्भर करता है कि भाषा एक ही प्रकार का प्रोग्रामिंग (संरचनात्मक, कार्यात्मक, ऑब्जेक्ट उन्मुख) है। एक महान सी प्रोग्रामर अपने ज्ञान को ओओपी या एफपी में स्थानांतरित नहीं कर सकता है, उदाहरण के लिए, डिज़ाइन तक पहुंचने का तरीका इतना अलग है।

4

उन उच्च स्तरीय भाषाओं के बारे में मुश्किल हिस्सा "कक्षा पुस्तकालय" है, इसमें "अंतर्निहित" कार्यों का उपयोग करने में कुछ समय लगता है। (आप पहिया को फिर से शुरू नहीं करना चाहते हैं)।

लेकिन यदि आप केवल भाषा यह स्वयं को देखो, के बाद से सबसे अधिक भाषाओं किसी तरह से एक दूसरे से जुड़े हुए हैं एक आदमी है कि 5 + भाषाओं जानता है एक लाभ एक आदमी है कि केवल एक ही भाषा में जानता है।

और अगर आप इस एक भर्ती करने के लिए नीचे उबाल, इसके बारे में एक सवाल यह है कि कब तक आप प्रोग्रामर रखने के लिए योजना बनाई है? क्या उसे एक त्वरित नौकरी करने के लिए किराए पर लिया गया है, 2-3 महीने कहें या क्या आप एक नया प्रोग्रामर किराए पर लेते हैं जिसे आप 3+ साल रखना चाहते हैं?

बहु भाषा पुरुष शायद लंबे समय में बेहतर होगा, लेकिन यह कुछ समय लगेगा उसे अगर वह इस विशिष्ट भाषा नहीं जानते गति पकड़ पाने के लिए होगा ....

/जोहान

0

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

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

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

2

कौशल आसानी से हस्तांतरणीय हैं, लेकिन क्या सिर्फ इसे ठीक करने के लिए विरोध के रूप में किसी विशेष भाषा में एक व्यक्ति महान बनाता है उनके बारे में गहराई से उस भाषा के quirks का ज्ञान है।

प्रत्येक भाषा में इसकी अजीब मुहावरे होती हैं जो कि कुछ समय के लिए भाषा के साथ काम करने के बाद ही उठा सकती है। एक और समान भाषा में कुशल होने के नाते वास्तव में इसकी मदद नहीं करता है।

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

1

गलत सवाल, मुझे लगता है। फ्रेमवर्क के बीच प्रोग्रामिंग कौशल कैसे हस्तांतरणीय है। एक एएसपी क्लासिक डेवलपर और जेएसपी डेवलपर शायद एक दूसरे को कोड पढ़ और लिख सकता है। जावा सर्वर चेहरे और एएसपी.नेट के लिए वही। जैसा कि मुझे अपने वर्तमान प्रोजेक्ट से पता है, सी # Winforms डेवलपर को अपनी प्रतिभा को सी # एएसपी.नेट परियोजना में स्थानांतरित करने में कठिन समय हो सकता है। सिंटेक्स मुख्यधारा प्रोग्रामिंग भाषाओं का इतना छोटा हिस्सा है (मैं प्रोलॉग और एफ # जैसे विषम गेंदों को छोड़ रहा हूं, जिसमें घुंघराले-ब्रेस लैंगुग के परिवार की तुलना में कोड के लिए मौलिक रूप से अलग दृष्टिकोण है)

1

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

एक निश्चित बिंदु से परे हालांकि नई तकनीक सीखने की लागत शायद फीका है। PHP/VBscript के बीच स्विचिंग मुझे सम्मेलनों में सरल परिवर्तनों (जैसे ";" के उपयोग के बाद से सीखते समय काफी परेशान पाया गया) ने कहा कि सीखने की प्रक्रिया में थोड़ी अतिरिक्त परेशानी की आवश्यकता नहीं है।हाल ही में मुझे सी #, पर्ल और वीबीस्क्रिप्ट के बीच थोड़ा सा स्विच करना पड़ा है और यह कोई मुद्दा नहीं है - आप इसके बारे में सोचने के बिना प्रत्येक व्याकरण के नियमों का पालन करते हैं।

2

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

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

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

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

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

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

मैं आपको एक उदाहरण दूंगा जिसके बारे में मैं बात कर रहा हूं। कितने जावा प्रोग्रामर ने कभी स्ट्रिंगबिल्डर या स्ट्रिंगबफर शुरू किया है?

StringBuffer strBuf = new StringBuffer(); 

और उसके बाद एक दर्जन .append() ऑपरेशन करने के लिए आगे बढ़े? विशेष रूप से एक लूप के भीतर जो हजारों बार, लाखों बार निष्पादित करता है। औसत जावा प्रोग्रामर क्या अनजान है यह है कि डिफ़ॉल्ट कन्स्ट्रक्टर 16 बाइट्स का आंतरिक बफर बनाता है। प्रत्येक strBuf.append (str) के रूप में; स्ट्रिंगबफर की सामग्री की लंबाई बढ़ाता है, इसे स्मृति के एक नए, बड़े ब्लॉक को आवंटित करने के लिए मजबूर किया जाता है, मौजूदा सामग्री को स्मृति में कॉपी करें, नई स्ट्रिंग संलग्न करें, और उसके बाद पुराने बफर को जीसी के लिए चिह्नित करें। यह अनावश्यक आवंटन, प्रतियां, और खंडित आउट-ऑफ-स्कोप मेमोरी की भारी संख्या के साथ समाप्त होता है जिसे gc'd होना चाहिए।

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

StringBuffer fixedStrBuf = new StringBuffer(1024); 

फिर, प्रत्येक .append() अपने पाश केवल प्रतियां नई स्ट्रिंग में एक ही बफर में मौजूदा एक पर। जब आप समाप्त कर लें और fixedStrBuf.toString() के साथ सामग्री को पुनर्प्राप्त कर लें, तो बस fixedStrBuf.setLength (0) पर कॉल करें; जो बफर को बरकरार रखता है, लेकिन इसे फिर से उपयोग करने के लिए पुन: प्रारंभ करता है। आप प्रत्येक लूप के शीर्ष पर सेटलेथेंथ (0) कॉल भी कर सकते हैं। बस यह सुनिश्चित कर लें कि स्ट्रिंगबफर ऑब्जेक्ट स्कोप से बाहर निकलने जा रहा है जैसे ही आप प्रोसेसिंग लूप से बाहर निकलते हैं जो लगातार इसका उपयोग करता है, या कम से कम इसे पूरा करने पर इसे शून्य का मान असाइन करें, इसलिए इसे gc'd किया जा सकता है अब इसकी आवश्यकता नहीं है।

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

org.apache.commons.lang.text.StrBuilder;

स्ट्रिंगबिल्डर की तरह, यह सिंक्रनाइज़ नहीं होता है, इसलिए इसे सावधानीपूर्वक उपयोग करें, लेकिन इसमें कम से कम एक दर्जन अन्य उपयोगी विधियां हैं जिनमें .clear(), जो वही काम करता है .setLength (0) करता है, लेकिन कोड थोड़ा और पठनीय।

कुछ साल पहले, मुझे अपने स्टार जावा प्रोग्रामर (पेन में अपनी कक्षा के शीर्ष 10% और ब्रेनबेन्च टेस्ट के बाद) ने एक ईटीएल (डेटामैनींग) प्रोग्राम लिखा था, के बाद एक प्रमुख परिवहन कंपनी द्वारा फोन किया गया था। रातोंरात आने वाले आंकड़ों को लेना, उस पर कुछ प्रमुख परिवर्तन करना, और एक अस्थायी डाटामार्ट बनाना जिससे वरिष्ठ अभियंता अपने दिन के काम के लिए आवश्यक ग्राफ, ग्रिड और रिपोर्ट को कॉल कर सकते हैं। दुर्भाग्यवश, उनके कार्यक्रम को चलाने के लिए 300 से 360 मिनट (5 से 6 घंटे) के बीच लिया गया, और इंजीनियरों ने आधा दिन पीछे गिर गया क्योंकि उन्हें दोपहर के भोजन तक अपना निर्णय समर्थन डेटा नहीं मिला। मैंने कार्यक्रम के विश्लेषण और दोबारा दो सप्ताह बिताए और बिना किसी बड़े पुनर्लेखन के, रनटाइम को 15 से 20 मिनट तक काट दिया। उस कार्यक्रम में, भाषा के कई अन्य दुरुपयोगों के बीच (सिंटैक्स और अर्थशास्त्र के सभी सही थे), प्रोग्रामर ने वास्तव में उपरोक्त स्ट्रिंगबफर() का उपयोग लगभग एक दर्जन के साथ किया था जिसमें प्रत्येक पास एक लूप में प्रत्येक पास लगाया गया था जो दस लाख से अधिक भाग गया था बार, पंद्रह मिलियन अनावश्यक आवंटन, प्रतियां और हटाना। और, वह कोड की सिर्फ एक पंक्ति थी। मैं उन सभी तरीकों से एक पुस्तक लिख सकता हूं जिसमें प्रोग्रामर अपने सुंदर, लेकिन रात के अंत में अक्षम, जावा कोड के निम्न-स्तर के परिणामों से अनजान था।

तो, मेरी सलाह है कि रूबी या पायथन जोड़ने की कोशिश करने के बजाय या जो भी नई गर्म सारणी भाषा आपके प्रदर्शन के लिए है, अपने खाली समय के कुछ महीने लें, सी (या तो सी 99 या यहां तक ​​कि पुराना - डॉन ' ब्रांड नए सी 11 मानक तक पहुंचने की कोशिश करने के बारे में चिंता न करें, जो लगभग कोई भी अभी तक उपयोग नहीं कर रहा है), और गेल लाकमान द्वारा "क्रैकिंग द कोडिंग साक्षात्कार" नामक पुस्तक प्राप्त करें, जिसमें अन्य मोती के बीच 150 छोटे कोडिंग अभ्यास हैं एक तकनीकी साक्षात्कार के दौरान आपको व्हाइटबोर्ड पर कोड करने के लिए कहा जा सकता है। वे सभी को सी, सी ++, और जावा में हल किया जा सकता है (वह जावा में पुस्तक के अंत में जवाब देता है क्योंकि यह अधिक व्यापक रूप से समझा जाता है, भले ही सी अधिक सरल और अधिक सुरुचिपूर्ण समाधान प्रदान करे)। जब आप पढ़ रहे हैं तो सी में उनके माध्यम से काम करें और आप गुड जावा प्रोग्रामिंग और बैड जावा प्रोग्रामिंग के बारे में बहुत अधिक जानकारी सीखेंगे। अनुलेख कुछ अच्छे सी प्राइमर्स ढूंढें - मूल के & आर (केर्निगन और रिची) मैनुअल से सी सीखने की कोशिश कर रहे हैं दो दिन के रूट नहर को धीमा करना। यदि आप K & R पढ़ते हैं, तो कम से कम दूसरा संस्करण ढूंढें। एच & एस (हार्बिसन & स्टील) एक स्पष्ट शिक्षण पुस्तिका है।

बीटीडब्ल्यू, आपके जावा पी-कोड चलाने वाले जेवीएम सी या सी ++ में लिखे गए हैं।

+0

यदि आप उन लोगों द्वारा चिंतित/परेशान हैं जो केवल जावा/सी #, पायथन आदि का उपयोग/उपयोग करते हैं, तो आप मुझसे नफरत करेंगे ... मैं इन दिनों केवल जावास्क्रिप्ट का उपयोग करता हूं। – nickf

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