এই উত্তরের দুর্দান্ত কভারেজ এবং বিভিন্ন ভাষা কেন কোনও প্রকল্পের জন্য পৃথক সুবিধা প্রদান করতে পারে তার লিঙ্কগুলি রয়েছে। তবে, প্রকল্পগুলি কেন একাধিক ভাষা ব্যবহার করে শেষ হয় তার সাথে জড়িত ভাষার উপযুক্ততার চেয়ে আরও কিছুটা বেশি রয়েছে।
প্রকল্পগুলি ছয়টি প্রধান কারণে একাধিক ভাষা ব্যবহার করে শেষ করে:
- অন্যান্য ভাষায় লিখিত কোড পুনরায় ব্যবহারের ব্যয় সুবিধা;
- লিগ্যাসি কোড অন্তর্ভুক্ত এবং সমন্বিত করার প্রয়োজনীয়তা;
- নির্দিষ্ট ভাষার জন্য কোডারগুলির উপলভ্যতা;
- বিশেষ প্রয়োজনের জন্য বিশেষ ভাষার প্রয়োজন;
- উত্তরাধিকার ভাষার পক্ষপাত; এবং
- দরিদ্র প্রকল্প পরিচালনা (অপরিকল্পিত বহু ভাষার ব্যবহার)।
1-4 কারণগুলি এই অর্থে ইতিবাচক কারণগুলি যে তাদের সরাসরি সম্বোধন একটি প্রকল্পকে দ্রুততর, আরও দক্ষতার সাথে উচ্চতর মানের পণ্য সহ এবং দীর্ঘমেয়াদী সহজ সহায়তায় সহায়তা করতে পারে। 5 এবং 6 কারণগুলি নেতিবাচক, প্রয়োজনীয় পরিবর্তনের প্রতিরোধের লক্ষণ, দুর্বল পরিকল্পনা, অকার্যকর পরিচালনা বা এই সমস্ত কারণের কিছু সংমিশ্রণ রয়েছে। দুর্ভাগ্যক্রমে এই নেতিবাচক কারণগুলি হ'ল "দুর্ঘটনাজনক" বহু ভাষা ব্যবহারের সাধারণ কারণ।
কারণ 1 , পুনরায় ব্যবহারের ব্যয় সুবিধাগুলি ওয়েবে সঠিক কোড উপাদানগুলি খুঁজে পাওয়ার জন্য ওপেন সোর্স সফ্টওয়্যার এবং উন্নত দক্ষতার বৃহত্তর ভূমিকা উভয় কারণে কোনও প্রকল্পে একাধিক ভাষা ব্যবহারের অনুমতি দেওয়ার ক্রমবর্ধমান শক্তিশালী কারণ হয়ে দাঁড়িয়েছে। "চলুন এটি সমস্ত অভ্যন্তরীণভাবে কোড করি" বিগত দশকগুলির দর্শন অর্থনৈতিক বাস্তবতার মুখোমুখি হয়ে যেতে থাকে এবং এটি কোনও নতুন প্রকল্পের জন্য মূলত কখনই সবচেয়ে কার্যকর-কার্যকর পদ্ধতির নয় approach এর ফলে প্রকল্পের মধ্যে একক ভাষা ব্যবহারের কঠোর প্রয়োগের সুযোগ কম হয়ে যায়।
বিশেষত কোনও প্রকল্পের সু-পরিচালিত ওপেন সোর্স উপাদানগুলির পুনরায় ব্যবহারের ক্ষেত্রে, একাধিক ভাষার ব্যবহার বিশাল সামগ্রিক ব্যয় সুবিধাগুলি সরবরাহ করতে পারে কারণ পুনঃব্যবহৃত উপাদানগুলি উভয়টি সু-নকশিত ইন্টারফেসের আড়ালে লুকানো থাকে এবং শূন্য-ব্যয় বহিরাগত গ্রুপগুলি দ্বারা স্বতন্ত্রভাবে রক্ষণাবেক্ষণ করা হয়। অপেক্ষাকৃত ভাল পরিস্থিতিতে, অপারেটিং সিস্টেমের উপাদানগুলির চেয়ে এই জাতীয় পুনঃব্যবহারের মাধ্যমে ভাষার মিশ্রণ প্রকল্পের জন্য বেশি ব্যয়বহুল নয়। মাইক্রোসফ্ট তাদের ব্রাউজারগুলিতে ওপেন সোর্স সফ্টওয়্যার গ্রহণের চেয়ে এই পদ্ধতির মূল্যটির চেয়ে ভাল উদাহরণ আমি জানি না।
কারণ 2 , উত্তরাধিকারের কোডটি সমন্বিত করার প্রয়োজনীয়তা, যে কোনও বড় প্রকল্পের বিপদে উপেক্ষা করা হবে। তবে লিগ্যাসি কোডটি অনেক সমস্যার কারণ হতে পারে, নির্বাকভাবে ধরে নেওয়া যে এটি একটি নতুন ভাষায় নতুন কোডের সাথে সহজেই প্রতিস্থাপন করা যায় যা অবিশ্বাস্যভাবে ঝুঁকিপূর্ণ হতে পারে। লিগ্যাসি কোড, এমনকি খারাপ লেগ্যাসি কোডও প্রায়শই অন্তর্ভুক্ত থাকে যা সম্প্রদায় দ্বারা প্রত্যাশিত বৈশিষ্ট্যগুলির একটি অন্তর্নিহিত "চুক্তি" হিসাবে পরিগণিত হয় যা উত্তরাধিকার পণ্যটি ব্যবহার করে। এই সম্প্রদায়টি প্রায়শই কোনও সংস্থার আয়ের এক প্রধান উত্স বা সরকারী সফ্টওয়্যারটির সমর্থনের মূল লক্ষ্য। কেবল এই বিষয়টি বাতিল করে দেওয়া যে চুক্তিযুক্ত চুক্তিটি সচেতন গ্রাহকদের তাড়াতে পারে এবং যদি অন্য বিকল্পগুলি সহজেই পাওয়া যায় তবে রাতারাতি কোনও সংস্থা দেউলিয়া করে দিতে পারে।
একই সময়ে, না একটি পুরানো ভাষায় পুরাতন কোড প্রতিস্থাপন শুধু যেমন পাইকারি প্রতিস্থাপন হিসাবে বিপজ্জনক হতে পারে। এর সবচেয়ে খারাপ উদাহরণ হ'ল ইউএস ভেটেরান্স অ্যাডমিনিস্ট্রেশন, যার প্রচুর সংখ্যক গুরুত্বপূর্ণ সিস্টেম রয়েছে যা এমএমএমএস (কোন মজাদার নয়) নামে একটি ভাষায় কোডড রয়েছে যা কম্পিউটার বিজ্ঞানীরা নয়, মেডিকেল চিকিৎসক দ্বারা ডিজাইন করেছিলেন। কেউ এমএমএসএস শিখতে চায় না এবং যারা এটি জানেন তারা আক্ষরিক অর্থেই মারা যাচ্ছেন। প্রোগ্রামাররা তাই আরও সাধারণ, আরও শক্তিশালী, এবং আরও ভাল রক্ষণাবেক্ষণ করা ভাষা ব্যবহার করার জন্য এগিয়ে যাওয়ার চেষ্টা করার সাথে সাথে এমএমএমএসকেও সমন্বিত করতে হবে।
এই জাতীয় বহু ভাষা ব্যবহারের জন্য সতর্ক পরিকল্পনা করা দরকার। এই পরিকল্পনার জন্য একদিকে কয়েক দশক ধরে গ্রাহক জ্ঞান হারানো এবং অন্যদিকে সফ্টওয়্যার সমর্থন করার ক্ষমতা হারাতে হবে। এমন কৌশলগুলি যা পুঙ্খানুপুঙ্খভাবে সংজ্ঞায়িত ইন্টারফেসগুলির পিছনে পুরাতন কোডকে পৃথক করে দেয় এবং এর আচরণগুলি ভালভাবে নথিভুক্ত হওয়ার পরে পুরানো কোডটি প্রতিস্থাপন করতে নতুন আরও শক্তিশালী কোড সক্ষম করে, এটি সহায়তা করতে পারে। তবে এই উত্তরাধিকারের পরিস্থিতিটি কখনও সহজ নয় এবং এটি আকারে বিস্তৃত বর্ণালী জুড়ে বহু সংস্থা ও সংস্থার মৃত্যুর কারণ হয়ে দাঁড়িয়েছে (এবং অব্যাহত থাকবে)।
কারণ 3 , বিভিন্ন ভাষার কোডারগুলির প্রাপ্যতা একটি বাস্তববাদী উপাদান যা প্রকল্পগুলি তাদের বিপদে উপেক্ষা করে। তবে প্রকল্পের আয়োজকরা অনেকটা অনুধাবন করতে পারেন (সঠিকভাবে বা ভুলভাবে) যে কোনও ভাষা তাদের লক্ষ্যের জন্য সবচেয়ে ভাল, যদি সেই ভাষা তাদের কাছে উপলব্ধ ভাষা দক্ষতার পুলের সাথে দ্বন্দ্ব হয়, তবে পণ্যটির সময়সূচী এবং মান উভয়ই শিক্ষার ফলে ভোগ করবে প্রোগ্রামারদের বক্ররেখা একটি নতুন ভাষা শেখার চেষ্টা করছে।
আরও কার্যকর যুক্তি হ'ল কার্যকরী ক্ষেত্রগুলির উপর ভিত্তি করে প্রকল্পের ভাষার প্রয়োজনীয়তা বিশ্লেষণ করা। উদাহরণস্বরূপ, প্রকল্পটি সাবধানতার সাথে দেখলে বোঝা যায় যে উচ্চ-মানের কোডের একটি ক্ষুদ্র "শীর্ষস্থানীয়" আছে, উদাহরণস্বরূপ কিছু মালিকানাধীন অ্যালগরিদম বাস্তবায়নের জন্য, যার জন্য কিছুটা সাধারণভাবে ব্যবহৃত ভাষায় কোডিং দক্ষতার প্রয়োজন হয়। যে কোনও বৃহত প্রকল্পের অন্যান্য অংশগুলি প্রায়শই সহজেই আরও প্রচলিত ভাষাগুলির সাথে সংযুক্ত থাকে, বা (আরও ভাল) সুসংহত পরিচালিত ওপেন সোর্স পণ্য দ্বারা। ভাষার প্রয়োজন অনুসারে একটি প্রকল্প বিশ্লেষণ করে বিশেষ ভাষাগুলিতে বিশেষ বিশেষজ্ঞ নিয়োগ বা ভাড়া দেওয়ার ক্ষেত্রে অনেক বেশি বাস্তবসম্মত এবং ব্যয়বহুল দৃষ্টিভঙ্গি সরবরাহ করতে পারে এবং একক প্রকল্পের মধ্যে ভাষার মধ্যে ইন্টারফেসকে আরও তীক্ষ্ণ করতে সহায়তা করতে পারে।
কারণ 4 , বিভিন্ন প্রয়োজনের জন্য বিভিন্ন ভাষা ব্যবহার করে, প্রকল্পের প্রয়োজনের বিশ্লেষণের এই ধরণের সম্পাদন থেকে অবিলম্বে এবং স্বাচ্ছন্দ্য অনুসরণ করে। এটিতেও যত্ন নেওয়া উচিত, যেহেতু একটি প্রকল্পের মধ্যে সমর্থনের জন্য খুব বেশি ভাষা নির্বাচন করা উপাদানগুলির মধ্যে সমর্থন এবং ইন্টারফেস উভয় জটিলতার একত্রিতকারী বিস্ফোরণ ঘটায়। সবচেয়ে নিরাপদ রুট ব্যয়বহুল হ'ল সর্বদা পুনরায় ব্যবহারের সর্বাধিক সুযোগগুলি সন্ধান করা, বিশেষত যদি এমন ভাল প্যাকেজ উপস্থিত থাকে যা কাস্টমাইজেশনের চেয়ে কিছুটা বেশি প্রকল্পের প্রয়োজনগুলি পূরণ করতে পারে। এরপরে, কয়েকটি স্বল্প সংখ্যক ভাষার ক্ষেত্রে এমন একধরণের সিদ্ধান্ত নেওয়া উচিত যা চিহ্নিত সংখ্যাগরিষ্ঠ চাহিদার সমাধান করতে পারে। পুনঃব্যবহার-নিবিড় বিকাশে, এটি প্রায়শই এক ধরণের আঠালো কোড হবে।
প্রকল্পের কিছু সদস্য এক এবং কিছু অন্যের মতোই খুব অনুরূপ দক্ষতার সাথে একাধিক ভাষা চয়ন করা সাধারণত ভাল ধারণা নয় । তবে, যদি বিশেষভাবে চিহ্নিত, সঠিকভাবে সংজ্ঞায়িত সক্ষমতার সাবসেট থাকে যা বিশেষ ভাষার দক্ষতা থেকে উপকৃত হয়, এটি নতুন কোড বিকাশের জন্য একাধিক ভাষাগুলি ব্যবহারের জন্য ভাল কারণ হতে পারে।
কারণ 5 , ব্যবহৃত ভাষাগুলিতে প্রয়োজনীয় পরিবর্তনের প্রতিরোধ, গুরুতর প্রকল্প ব্যাহত এবং অভ্যন্তরীণ কলহের কারণ হতে পারে। ব্যবহারকারী ডেভিয়েওএই উত্তরের মন্তব্যে উল্লেখ করেছেন, কিছু প্রকল্প কর্মীদের পক্ষে পরিবর্তন খুব কঠিন হতে পারে। একই সময়ে, পরিবর্তনের প্রতিরোধ কখনও কখনও সহজ সমস্যা হয় না, এটি স্পষ্টতই এটি কেন অনেক কলহের কারণ হতে পারে। উত্তরাধিকারের ভাষা দক্ষতার ব্যবহার কোনও প্রকল্পের উত্পাদনশীলতার পক্ষে শক্তিশালী বিকাশ হতে পারে যদি উত্তরাধিকারের ভাষাটি যথেষ্ট পরিমাণে শক্তিশালী হয় এবং একটি দলে খুব ভাল মানের পণ্য তৈরি করতে পারে যা সাবলীলভাবে পরিচালনা করে এবং গুণমানকে সম্মান করে। তবে, লিগ্যাসি ল্যাঙ্গুয়েজ দক্ষতাগুলি এই সত্যের সাথে ভারসাম্যপূর্ণ হতে হবে যে উন্নত বৈশিষ্ট্য, উপাদানগুলির উপলভ্যতা, ওপেন সোর্স বিকল্পগুলি এবং বুদ্ধিমান সরঞ্জাম কিট সমর্থন হিসাবে অনেক পুরানো ভাষা আর সাম্প্রতিক ভাষার সাথে সম্পূর্ণ করতে পারে না।
দু'জনেই এবং এখন উভয়ই, দুর্বল, কম পাঠযোগ্য বা কম উত্পাদনশীল উত্তরাধিকারের ভাষা ব্যবহার অব্যাহত রাখার একক সাধারণ (এবং উপহাসের দিক দিয়ে, বেশিরভাগ ক্ষেত্রে সঠিক) যুক্তিটি হ'ল যে প্রাচীন ভাষা আরও দক্ষ কোডের উত্পাদন সক্ষম করে। এটি একটি পুরানো যুক্তি, যা ১৯৫০ এর দশকে ফিরে আসে যখন সমাবেশ ভাষার ব্যবহারকারীরা বিরক্ত হন, প্রায়শই তিক্তভাবে, ফরটারান এবং এলআইএসপি-তে প্রোগ্রামিংয়ের উত্থান। উদাহরণস্বরূপ এখন কোড দক্ষতার আর্গুমেন্টের বৈধতা থাকতে পারে এমন একটি অপারেটিং সিস্টেম কার্নেলের মতো প্রসেসিং-নিবিড় কোডে দেখা যায়, যেখানে সি +++ এর চেয়ে বেশি পছন্দের ভাষা রয়ে গেছে (যদিও সাধারণ দক্ষতার বাইরে যাওয়ার কারণে) for
তবে, নতুন সহস্রাব্দের বিশ্বব্যাপী নেটওয়ার্কযুক্ত এবং শক্তিশালীভাবে মেশিন-সমর্থিত প্রকল্প পরিবেশে, প্রকল্পের ভাষা বাছাইয়ের মূল যুক্তি হিসাবে কোড দক্ষতা আরও দুর্বল হয়ে উঠেছে। কম্পিউটিং এবং নেটওয়ার্কিং হার্ডওয়্যার একই বিস্ফোরণ যা কৃত্রিম বুদ্ধিমত্তা অ্যাপ্লিকেশনগুলির ব্যাপক বিপণনকে সক্ষম করেছে, এর অর্থ হ'ল মানব প্রোগ্রামিংয়ের ব্যয়গুলি খুব সহজেই সস্তা হার্ডওয়্যার এবং ক্লাউডওয়্যারের উপর আপেক্ষিকতা অক্ষম কোড প্রয়োগের ক্ষেত্রে সহজেই বামন করতে পারে। এটি যখন উপাদান গ্রন্থাগারগুলির সাম্প্রতিক ভাষাগুলি, ওপেন সোর্স বিকল্পগুলি এবং উন্নত বুদ্ধিমান সরঞ্জাম কিটগুলির বৃহত্তর প্রাপ্যতার সাথে একত্রিত হয়, তখন দক্ষতার কারণে ভাষা একা রাখা খুব সংকীর্ণ হয়ে যায় cases এমনকি এটি প্রয়োগ হয় এমন ক্ষেত্রেও,
উত্তরাধিকারী ভাষার সাথে থাকার জন্য প্রকল্পের আরও জোরালো কারণ তখনই ঘটে যখন কোনও কারণে প্রকল্পের কর্মী পরিবর্তনের জন্য কম বা কোনও বিকল্প নেই। উদাহরণস্বরূপ এটি ঘটতে পারে যখন কোনও প্রধান লিগ্যাসি প্রোডাক্ট লাইন পুরোপুরি কোনও ভাষায় কোড করা হয় যার সাথে কেবল বিদ্যমান কর্মীরা সাবলীল। এই জাতীয় ক্ষেত্রে প্রকল্পটি হয় পুরানো ভাষায় প্রোগ্রাম করার চেষ্টা চালিয়ে যেতে হবে, বা নতুন ভাষা কীভাবে ব্যবহার করতে হবে সে সম্পর্কে বিদ্যমান কর্মীদের প্রশিক্ষণের চেষ্টা করতে হবে।
নতুন ভাষায় লিগ্যাসি ল্যাঙ্গুয়েজ কর্মীদের প্রশিক্ষণ দেওয়া নিজেই বিপদ হতে পারে। আমি এখনও একটি কেসটি স্মরণ করি যেখানে সদ্য প্রশিক্ষণ প্রাপ্ত এবং সি +++ তে রূপান্তরিত একটি প্রকল্পের সদস্য আমার কাছে সমস্ত আন্তরিকতার সাথে অভিযোগ করেছিলেন যে তিনি কেবল অবজেক্ট-ভিত্তিক পদ্ধতির সুবিধা বুঝতে পারেন নি। আমি যখন তার কোডটি দেখলাম তখন সে তার আগের 103 সি ফাংশনগুলিকে একক সি ++ অবজেক্ট শ্রেণির জন্য 103 পদ্ধতিতে রূপান্তরিত করেছিল ... এবং ঠিক কীভাবে এটি কোনওরকম কীভাবে সহায়তা করেছিল তা দেখেনি।
গভীর বার্তাটি হ'ল লোকেরা যখন বছর বা দশক ধরে একটি একক ভাষা এবং ভাষার শৈলীতে প্রোগ্রাম করে থাকে, তখন নতুন প্রশিক্ষণের জন্য তাদের "চিন্তা" করতে অসুবিধা প্রায় অনিবার্য হয়ে উঠতে পারে, এমনকি ভাল প্রশিক্ষণ কর্মসূচি থাকা সত্ত্বেও। কিছু ক্ষেত্রে অল্প বয়স্ক ডিজাইনার এবং প্রোগ্রামার যারা বর্তমান প্রবণতা এবং পদ্ধতির সাথে আরও উপযুক্ত তাদের আনার ব্যতীত অন্য কোনও বিকল্প হতে পারে না।
কারণ 6 , প্রকল্পের দুর্বলতা নিজের পক্ষে কথা বলে। কোনও প্রকল্পে ভাষা নির্বাচন এবং ব্যবহার সর্বদা বিবেচনা করা উচিত এবং স্পষ্টভাবে মূল্যায়ন করা উচিত, এবং কেবল দুর্ঘটনার দ্বারা ঘটতে দেওয়া উচিত নয়। খুব কমপক্ষে, ভাষা নির্বাচন দীর্ঘমেয়াদী ভাগ্য এবং কোনও প্রকল্পের সমর্থন ব্যয়গুলিতে বিশাল পার্থক্য আনতে পারে এবং তাই সর্বদা বিবেচনায় নেওয়া উচিত এবং পরিকল্পনা করা উচিত। মাম্পস হয়ে উঠবেন না!