কেন একটি পণ্য বা সফ্টওয়্যার টুকরা উন্নয়নে একাধিক প্রোগ্রামিং ভাষা ব্যবহার করা হয়?


114

আমি কম্পিউটার বিজ্ঞানে স্নাতকোত্তর শুরু করার লক্ষ্যে সাম্প্রতিক গ্রেডের একজন শিক্ষার্থী। আমি একাধিক ওপেন সোর্স প্রকল্পগুলি পেয়েছি যা সত্যই আমাকে চক্রান্ত করে এবং সেগুলিতে আমাকে অবদান রাখতে উত্সাহিত করে (ক্লাউডস্ট্যাক, ওপেনস্ট্যাক, মুভি এবং কয়েকটির নাম কুবারনেটস)। একটি জিনিস আমি খুঁজে পেয়েছি যে তাদের বেশিরভাগের মধ্যে প্রচলিত রয়েছে একাধিক প্রোগ্রামিং ভাষার ব্যবহার (যেমন জাভা + পাইথন + গো বা পাইথন + সি ++ + রুবি)। আমি ইতিমধ্যে এই অন্যান্য প্রশ্নের দিকে নজর রেখেছি, যা একাধিক প্রোগ্রামিং ভাষা একে অপরের সাথে যোগাযোগের জন্য তৈরি করা হয় তা নিয়ে আলোচনা করে: দুটি পৃথক ভাষার সাথে দুটি পৃথক প্রোগ্রামিং কীভাবে থাকবে?

আমি এমন প্রয়োজনীয়তা বুঝতে চাই যা উদ্যোগগুলিকে একাধিক প্রোগ্রামিং ভাষা ব্যবহার করতে অনুরোধ করে। কোন প্রয়োজনীয়তা বা প্রয়োজনীয়তার ধরণটি সফ্টওয়্যার আর্কিটেক্ট বা প্রকল্পের নেতৃত্বকে বলে, "আমি প্রস্তাব করছি আমরা টাস্ক 1 এর জন্য ভাষা এক্স এবং টাস্ক 2 এর জন্য ভাষা Y ব্যবহার করব"? একই পণ্য বা সফ্টওয়্যারটিতে একাধিক প্রোগ্রামিং ভাষা ব্যবহার করার কারণটি আমি বুঝতে পারি না।


14
কম্পিউটার ইঞ্জিনিয়ারিংয়ে সহযোগী গ্রেডের শিক্ষার্থী হিসাবে, বিশেষত গবেষণা কোডের জন্য আমি এটি যুক্ত করব , এটি প্রায়শই "লেখক (শিক্ষার্থী) কোন ভাষাটি শুরু করেছিলেন সেগুলি কখন ভাল শুরু করেছিল" এটি একটি বিষয়। গবেষণা প্রকল্পগুলি, বিশেষত এক-অফগুলি যেগুলি বড় গবেষণা প্রকল্পগুলিতে নেতৃত্ব দেয় না, "সঠিকতা" (আমার অভিজ্ঞতাতে) এর চেয়ে বেশি ফলাফলকে মূল্য দেয়।
টোনিসডজি

16
@ টোনসডিজি: আমি বলব যে "নির্ভুলতা" শিক্ষাবিদ ক্ষেত্রে বেশি প্রাসঙ্গিক বলে মনে হয়, কম নয়। সাধারণত যা প্রাসঙ্গিক নয় তা হ'ল রক্ষণাবেক্ষণ, ব্যবহারকারীর অভিজ্ঞতা এবং / অথবা ডকুমেন্টেশন। বিশেষত ভাষার মিশ্রণ রক্ষণাবেক্ষণকে প্রভাবিত করে; এটি যোগ্য রক্ষণাবেক্ষণকারীদের সংখ্যা সীমাবদ্ধ করে।
এমএসএলটাররা

2
@ এসএমএলটার্স: রক্ষণাবেক্ষণ হ'ল শব্দটি আমার মনে হয় আমি সেই সময়টি খুঁজছিলাম --- আপনি যা লিখেছিলেন তার সাথে আমি একমত!
tonysdg

19
বিভিন্ন কাজের জন্য বিভিন্ন সরঞ্জাম। আপনি লক্ষ্য করবেন যে বিল্ডিং আর্কিটেক্ট এবং ইঞ্জিনিয়াররা একটি বাড়ি তৈরি করতে বিভিন্ন সরঞ্জাম ব্যবহার করেন।
পল ডি ওয়েট

17
আপনি যখন ছুটিতে যান, আপনার বাড়ি থেকে বিমানবন্দর, বিদেশী বিমানবন্দর, তারপরে হোটেল এবং সমুদ্র সৈকতে, আপনি কি ভ্রমণের প্রতিটি পায়ের জন্য একই ধরণের যানবাহন ব্যবহার করেন?
অরবিট

উত্তর:


17

এই উত্তরের দুর্দান্ত কভারেজ এবং বিভিন্ন ভাষা কেন কোনও প্রকল্পের জন্য পৃথক সুবিধা প্রদান করতে পারে তার লিঙ্কগুলি রয়েছে। তবে, প্রকল্পগুলি কেন একাধিক ভাষা ব্যবহার করে শেষ হয় তার সাথে জড়িত ভাষার উপযুক্ততার চেয়ে আরও কিছুটা বেশি রয়েছে।

প্রকল্পগুলি ছয়টি প্রধান কারণে একাধিক ভাষা ব্যবহার করে শেষ করে:

  1. অন্যান্য ভাষায় লিখিত কোড পুনরায় ব্যবহারের ব্যয় সুবিধা;
  2. লিগ্যাসি কোড অন্তর্ভুক্ত এবং সমন্বিত করার প্রয়োজনীয়তা;
  3. নির্দিষ্ট ভাষার জন্য কোডারগুলির উপলভ্যতা;
  4. বিশেষ প্রয়োজনের জন্য বিশেষ ভাষার প্রয়োজন;
  5. উত্তরাধিকার ভাষার পক্ষপাত; এবং
  6. দরিদ্র প্রকল্প পরিচালনা (অপরিকল্পিত বহু ভাষার ব্যবহার)।

1-4 কারণগুলি এই অর্থে ইতিবাচক কারণগুলি যে তাদের সরাসরি সম্বোধন একটি প্রকল্পকে দ্রুততর, আরও দক্ষতার সাথে উচ্চতর মানের পণ্য সহ এবং দীর্ঘমেয়াদী সহজ সহায়তায় সহায়তা করতে পারে। 5 এবং 6 কারণগুলি নেতিবাচক, প্রয়োজনীয় পরিবর্তনের প্রতিরোধের লক্ষণ, দুর্বল পরিকল্পনা, অকার্যকর পরিচালনা বা এই সমস্ত কারণের কিছু সংমিশ্রণ রয়েছে। দুর্ভাগ্যক্রমে এই নেতিবাচক কারণগুলি হ'ল "দুর্ঘটনাজনক" বহু ভাষা ব্যবহারের সাধারণ কারণ।

কারণ 1 , পুনরায় ব্যবহারের ব্যয় সুবিধাগুলি ওয়েবে সঠিক কোড উপাদানগুলি খুঁজে পাওয়ার জন্য ওপেন সোর্স সফ্টওয়্যার এবং উন্নত দক্ষতার বৃহত্তর ভূমিকা উভয় কারণে কোনও প্রকল্পে একাধিক ভাষা ব্যবহারের অনুমতি দেওয়ার ক্রমবর্ধমান শক্তিশালী কারণ হয়ে দাঁড়িয়েছে। "চলুন এটি সমস্ত অভ্যন্তরীণভাবে কোড করি" বিগত দশকগুলির দর্শন অর্থনৈতিক বাস্তবতার মুখোমুখি হয়ে যেতে থাকে এবং এটি কোনও নতুন প্রকল্পের জন্য মূলত কখনই সবচেয়ে কার্যকর-কার্যকর পদ্ধতির নয় approach এর ফলে প্রকল্পের মধ্যে একক ভাষা ব্যবহারের কঠোর প্রয়োগের সুযোগ কম হয়ে যায়।

বিশেষত কোনও প্রকল্পের সু-পরিচালিত ওপেন সোর্স উপাদানগুলির পুনরায় ব্যবহারের ক্ষেত্রে, একাধিক ভাষার ব্যবহার বিশাল সামগ্রিক ব্যয় সুবিধাগুলি সরবরাহ করতে পারে কারণ পুনঃব্যবহৃত উপাদানগুলি উভয়টি সু-নকশিত ইন্টারফেসের আড়ালে লুকানো থাকে এবং শূন্য-ব্যয় বহিরাগত গ্রুপগুলি দ্বারা স্বতন্ত্রভাবে রক্ষণাবেক্ষণ করা হয়। অপেক্ষাকৃত ভাল পরিস্থিতিতে, অপারেটিং সিস্টেমের উপাদানগুলির চেয়ে এই জাতীয় পুনঃব্যবহারের মাধ্যমে ভাষার মিশ্রণ প্রকল্পের জন্য বেশি ব্যয়বহুল নয়। মাইক্রোসফ্ট তাদের ব্রাউজারগুলিতে ওপেন সোর্স সফ্টওয়্যার গ্রহণের চেয়ে এই পদ্ধতির মূল্যটির চেয়ে ভাল উদাহরণ আমি জানি না।

কারণ 2 , উত্তরাধিকারের কোডটি সমন্বিত করার প্রয়োজনীয়তা, যে কোনও বড় প্রকল্পের বিপদে উপেক্ষা করা হবে। তবে লিগ্যাসি কোডটি অনেক সমস্যার কারণ হতে পারে, নির্বাকভাবে ধরে নেওয়া যে এটি একটি নতুন ভাষায় নতুন কোডের সাথে সহজেই প্রতিস্থাপন করা যায় যা অবিশ্বাস্যভাবে ঝুঁকিপূর্ণ হতে পারে। লিগ্যাসি কোড, এমনকি খারাপ লেগ্যাসি কোডও প্রায়শই অন্তর্ভুক্ত থাকে যা সম্প্রদায় দ্বারা প্রত্যাশিত বৈশিষ্ট্যগুলির একটি অন্তর্নিহিত "চুক্তি" হিসাবে পরিগণিত হয় যা উত্তরাধিকার পণ্যটি ব্যবহার করে। এই সম্প্রদায়টি প্রায়শই কোনও সংস্থার আয়ের এক প্রধান উত্স বা সরকারী সফ্টওয়্যারটির সমর্থনের মূল লক্ষ্য। কেবল এই বিষয়টি বাতিল করে দেওয়া যে চুক্তিযুক্ত চুক্তিটি সচেতন গ্রাহকদের তাড়াতে পারে এবং যদি অন্য বিকল্পগুলি সহজেই পাওয়া যায় তবে রাতারাতি কোনও সংস্থা দেউলিয়া করে দিতে পারে।

একই সময়ে, না একটি পুরানো ভাষায় পুরাতন কোড প্রতিস্থাপন শুধু যেমন পাইকারি প্রতিস্থাপন হিসাবে বিপজ্জনক হতে পারে। এর সবচেয়ে খারাপ উদাহরণ হ'ল ইউএস ভেটেরান্স অ্যাডমিনিস্ট্রেশন, যার প্রচুর সংখ্যক গুরুত্বপূর্ণ সিস্টেম রয়েছে যা এমএমএমএস (কোন মজাদার নয়) নামে একটি ভাষায় কোডড রয়েছে যা কম্পিউটার বিজ্ঞানীরা নয়, মেডিকেল চিকিৎসক দ্বারা ডিজাইন করেছিলেন। কেউ এমএমএসএস শিখতে চায় না এবং যারা এটি জানেন তারা আক্ষরিক অর্থেই মারা যাচ্ছেন। প্রোগ্রামাররা তাই আরও সাধারণ, আরও শক্তিশালী, এবং আরও ভাল রক্ষণাবেক্ষণ করা ভাষা ব্যবহার করার জন্য এগিয়ে যাওয়ার চেষ্টা করার সাথে সাথে এমএমএমএসকেও সমন্বিত করতে হবে।

এই জাতীয় বহু ভাষা ব্যবহারের জন্য সতর্ক পরিকল্পনা করা দরকার। এই পরিকল্পনার জন্য একদিকে কয়েক দশক ধরে গ্রাহক জ্ঞান হারানো এবং অন্যদিকে সফ্টওয়্যার সমর্থন করার ক্ষমতা হারাতে হবে। এমন কৌশলগুলি যা পুঙ্খানুপুঙ্খভাবে সংজ্ঞায়িত ইন্টারফেসগুলির পিছনে পুরাতন কোডকে পৃথক করে দেয় এবং এর আচরণগুলি ভালভাবে নথিভুক্ত হওয়ার পরে পুরানো কোডটি প্রতিস্থাপন করতে নতুন আরও শক্তিশালী কোড সক্ষম করে, এটি সহায়তা করতে পারে। তবে এই উত্তরাধিকারের পরিস্থিতিটি কখনও সহজ নয় এবং এটি আকারে বিস্তৃত বর্ণালী জুড়ে বহু সংস্থা ও সংস্থার মৃত্যুর কারণ হয়ে দাঁড়িয়েছে (এবং অব্যাহত থাকবে)।

কারণ 3 , বিভিন্ন ভাষার কোডারগুলির প্রাপ্যতা একটি বাস্তববাদী উপাদান যা প্রকল্পগুলি তাদের বিপদে উপেক্ষা করে। তবে প্রকল্পের আয়োজকরা অনেকটা অনুধাবন করতে পারেন (সঠিকভাবে বা ভুলভাবে) যে কোনও ভাষা তাদের লক্ষ্যের জন্য সবচেয়ে ভাল, যদি সেই ভাষা তাদের কাছে উপলব্ধ ভাষা দক্ষতার পুলের সাথে দ্বন্দ্ব হয়, তবে পণ্যটির সময়সূচী এবং মান উভয়ই শিক্ষার ফলে ভোগ করবে প্রোগ্রামারদের বক্ররেখা একটি নতুন ভাষা শেখার চেষ্টা করছে।

আরও কার্যকর যুক্তি হ'ল কার্যকরী ক্ষেত্রগুলির উপর ভিত্তি করে প্রকল্পের ভাষার প্রয়োজনীয়তা বিশ্লেষণ করা। উদাহরণস্বরূপ, প্রকল্পটি সাবধানতার সাথে দেখলে বোঝা যায় যে উচ্চ-মানের কোডের একটি ক্ষুদ্র "শীর্ষস্থানীয়" আছে, উদাহরণস্বরূপ কিছু মালিকানাধীন অ্যালগরিদম বাস্তবায়নের জন্য, যার জন্য কিছুটা সাধারণভাবে ব্যবহৃত ভাষায় কোডিং দক্ষতার প্রয়োজন হয়। যে কোনও বৃহত প্রকল্পের অন্যান্য অংশগুলি প্রায়শই সহজেই আরও প্রচলিত ভাষাগুলির সাথে সংযুক্ত থাকে, বা (আরও ভাল) সুসংহত পরিচালিত ওপেন সোর্স পণ্য দ্বারা। ভাষার প্রয়োজন অনুসারে একটি প্রকল্প বিশ্লেষণ করে বিশেষ ভাষাগুলিতে বিশেষ বিশেষজ্ঞ নিয়োগ বা ভাড়া দেওয়ার ক্ষেত্রে অনেক বেশি বাস্তবসম্মত এবং ব্যয়বহুল দৃষ্টিভঙ্গি সরবরাহ করতে পারে এবং একক প্রকল্পের মধ্যে ভাষার মধ্যে ইন্টারফেসকে আরও তীক্ষ্ণ করতে সহায়তা করতে পারে।

কারণ 4 , বিভিন্ন প্রয়োজনের জন্য বিভিন্ন ভাষা ব্যবহার করে, প্রকল্পের প্রয়োজনের বিশ্লেষণের এই ধরণের সম্পাদন থেকে অবিলম্বে এবং স্বাচ্ছন্দ্য অনুসরণ করে। এটিতেও যত্ন নেওয়া উচিত, যেহেতু একটি প্রকল্পের মধ্যে সমর্থনের জন্য খুব বেশি ভাষা নির্বাচন করা উপাদানগুলির মধ্যে সমর্থন এবং ইন্টারফেস উভয় জটিলতার একত্রিতকারী বিস্ফোরণ ঘটায়। সবচেয়ে নিরাপদ রুট ব্যয়বহুল হ'ল সর্বদা পুনরায় ব্যবহারের সর্বাধিক সুযোগগুলি সন্ধান করা, বিশেষত যদি এমন ভাল প্যাকেজ উপস্থিত থাকে যা কাস্টমাইজেশনের চেয়ে কিছুটা বেশি প্রকল্পের প্রয়োজনগুলি পূরণ করতে পারে। এরপরে, কয়েকটি স্বল্প সংখ্যক ভাষার ক্ষেত্রে এমন একধরণের সিদ্ধান্ত নেওয়া উচিত যা চিহ্নিত সংখ্যাগরিষ্ঠ চাহিদার সমাধান করতে পারে। পুনঃব্যবহার-নিবিড় বিকাশে, এটি প্রায়শই এক ধরণের আঠালো কোড হবে।

প্রকল্পের কিছু সদস্য এক এবং কিছু অন্যের মতোই খুব অনুরূপ দক্ষতার সাথে একাধিক ভাষা চয়ন করা সাধারণত ভাল ধারণা নয় । তবে, যদি বিশেষভাবে চিহ্নিত, সঠিকভাবে সংজ্ঞায়িত সক্ষমতার সাবসেট থাকে যা বিশেষ ভাষার দক্ষতা থেকে উপকৃত হয়, এটি নতুন কোড বিকাশের জন্য একাধিক ভাষাগুলি ব্যবহারের জন্য ভাল কারণ হতে পারে।

কারণ 5 , ব্যবহৃত ভাষাগুলিতে প্রয়োজনীয় পরিবর্তনের প্রতিরোধ, গুরুতর প্রকল্প ব্যাহত এবং অভ্যন্তরীণ কলহের কারণ হতে পারে। ব্যবহারকারী ডেভিয়েওএই উত্তরের মন্তব্যে উল্লেখ করেছেন, কিছু প্রকল্প কর্মীদের পক্ষে পরিবর্তন খুব কঠিন হতে পারে। একই সময়ে, পরিবর্তনের প্রতিরোধ কখনও কখনও সহজ সমস্যা হয় না, এটি স্পষ্টতই এটি কেন অনেক কলহের কারণ হতে পারে। উত্তরাধিকারের ভাষা দক্ষতার ব্যবহার কোনও প্রকল্পের উত্পাদনশীলতার পক্ষে শক্তিশালী বিকাশ হতে পারে যদি উত্তরাধিকারের ভাষাটি যথেষ্ট পরিমাণে শক্তিশালী হয় এবং একটি দলে খুব ভাল মানের পণ্য তৈরি করতে পারে যা সাবলীলভাবে পরিচালনা করে এবং গুণমানকে সম্মান করে। তবে, লিগ্যাসি ল্যাঙ্গুয়েজ দক্ষতাগুলি এই সত্যের সাথে ভারসাম্যপূর্ণ হতে হবে যে উন্নত বৈশিষ্ট্য, উপাদানগুলির উপলভ্যতা, ওপেন সোর্স বিকল্পগুলি এবং বুদ্ধিমান সরঞ্জাম কিট সমর্থন হিসাবে অনেক পুরানো ভাষা আর সাম্প্রতিক ভাষার সাথে সম্পূর্ণ করতে পারে না।

দু'জনেই এবং এখন উভয়ই, দুর্বল, কম পাঠযোগ্য বা কম উত্পাদনশীল উত্তরাধিকারের ভাষা ব্যবহার অব্যাহত রাখার একক সাধারণ (এবং উপহাসের দিক দিয়ে, বেশিরভাগ ক্ষেত্রে সঠিক) যুক্তিটি হ'ল যে প্রাচীন ভাষা আরও দক্ষ কোডের উত্পাদন সক্ষম করে। এটি একটি পুরানো যুক্তি, যা ১৯৫০ এর দশকে ফিরে আসে যখন সমাবেশ ভাষার ব্যবহারকারীরা বিরক্ত হন, প্রায়শই তিক্তভাবে, ফরটারান এবং এলআইএসপি-তে প্রোগ্রামিংয়ের উত্থান। উদাহরণস্বরূপ এখন কোড দক্ষতার আর্গুমেন্টের বৈধতা থাকতে পারে এমন একটি অপারেটিং সিস্টেম কার্নেলের মতো প্রসেসিং-নিবিড় কোডে দেখা যায়, যেখানে সি +++ এর চেয়ে বেশি পছন্দের ভাষা রয়ে গেছে (যদিও সাধারণ দক্ষতার বাইরে যাওয়ার কারণে) for

তবে, নতুন সহস্রাব্দের বিশ্বব্যাপী নেটওয়ার্কযুক্ত এবং শক্তিশালীভাবে মেশিন-সমর্থিত প্রকল্প পরিবেশে, প্রকল্পের ভাষা বাছাইয়ের মূল যুক্তি হিসাবে কোড দক্ষতা আরও দুর্বল হয়ে উঠেছে। কম্পিউটিং এবং নেটওয়ার্কিং হার্ডওয়্যার একই বিস্ফোরণ যা কৃত্রিম বুদ্ধিমত্তা অ্যাপ্লিকেশনগুলির ব্যাপক বিপণনকে সক্ষম করেছে, এর অর্থ হ'ল মানব প্রোগ্রামিংয়ের ব্যয়গুলি খুব সহজেই সস্তা হার্ডওয়্যার এবং ক্লাউডওয়্যারের উপর আপেক্ষিকতা অক্ষম কোড প্রয়োগের ক্ষেত্রে সহজেই বামন করতে পারে। এটি যখন উপাদান গ্রন্থাগারগুলির সাম্প্রতিক ভাষাগুলি, ওপেন সোর্স বিকল্পগুলি এবং উন্নত বুদ্ধিমান সরঞ্জাম কিটগুলির বৃহত্তর প্রাপ্যতার সাথে একত্রিত হয়, তখন দক্ষতার কারণে ভাষা একা রাখা খুব সংকীর্ণ হয়ে যায় cases এমনকি এটি প্রয়োগ হয় এমন ক্ষেত্রেও,

উত্তরাধিকারী ভাষার সাথে থাকার জন্য প্রকল্পের আরও জোরালো কারণ তখনই ঘটে যখন কোনও কারণে প্রকল্পের কর্মী পরিবর্তনের জন্য কম বা কোনও বিকল্প নেই। উদাহরণস্বরূপ এটি ঘটতে পারে যখন কোনও প্রধান লিগ্যাসি প্রোডাক্ট লাইন পুরোপুরি কোনও ভাষায় কোড করা হয় যার সাথে কেবল বিদ্যমান কর্মীরা সাবলীল। এই জাতীয় ক্ষেত্রে প্রকল্পটি হয় পুরানো ভাষায় প্রোগ্রাম করার চেষ্টা চালিয়ে যেতে হবে, বা নতুন ভাষা কীভাবে ব্যবহার করতে হবে সে সম্পর্কে বিদ্যমান কর্মীদের প্রশিক্ষণের চেষ্টা করতে হবে।

নতুন ভাষায় লিগ্যাসি ল্যাঙ্গুয়েজ কর্মীদের প্রশিক্ষণ দেওয়া নিজেই বিপদ হতে পারে। আমি এখনও একটি কেসটি স্মরণ করি যেখানে সদ্য প্রশিক্ষণ প্রাপ্ত এবং সি +++ তে রূপান্তরিত একটি প্রকল্পের সদস্য আমার কাছে সমস্ত আন্তরিকতার সাথে অভিযোগ করেছিলেন যে তিনি কেবল অবজেক্ট-ভিত্তিক পদ্ধতির সুবিধা বুঝতে পারেন নি। আমি যখন তার কোডটি দেখলাম তখন সে তার আগের 103 সি ফাংশনগুলিকে একক সি ++ অবজেক্ট শ্রেণির জন্য 103 পদ্ধতিতে রূপান্তরিত করেছিল ... এবং ঠিক কীভাবে এটি কোনওরকম কীভাবে সহায়তা করেছিল তা দেখেনি।

গভীর বার্তাটি হ'ল লোকেরা যখন বছর বা দশক ধরে একটি একক ভাষা এবং ভাষার শৈলীতে প্রোগ্রাম করে থাকে, তখন নতুন প্রশিক্ষণের জন্য তাদের "চিন্তা" করতে অসুবিধা প্রায় অনিবার্য হয়ে উঠতে পারে, এমনকি ভাল প্রশিক্ষণ কর্মসূচি থাকা সত্ত্বেও। কিছু ক্ষেত্রে অল্প বয়স্ক ডিজাইনার এবং প্রোগ্রামার যারা বর্তমান প্রবণতা এবং পদ্ধতির সাথে আরও উপযুক্ত তাদের আনার ব্যতীত অন্য কোনও বিকল্প হতে পারে না।

কারণ 6 , প্রকল্পের দুর্বলতা নিজের পক্ষে কথা বলে। কোনও প্রকল্পে ভাষা নির্বাচন এবং ব্যবহার সর্বদা বিবেচনা করা উচিত এবং স্পষ্টভাবে মূল্যায়ন করা উচিত, এবং কেবল দুর্ঘটনার দ্বারা ঘটতে দেওয়া উচিত নয়। খুব কমপক্ষে, ভাষা নির্বাচন দীর্ঘমেয়াদী ভাগ্য এবং কোনও প্রকল্পের সমর্থন ব্যয়গুলিতে বিশাল পার্থক্য আনতে পারে এবং তাই সর্বদা বিবেচনায় নেওয়া উচিত এবং পরিকল্পনা করা উচিত। মাম্পস হয়ে উঠবেন না!


আমি এটির সাথে একমত যদিও বাসিলের উত্তরটি মূলত কর্মক্ষমতা এবং প্রকাশের বিষয়গুলিতে ফোকাস করে, আপনার উত্তর যে কাউকে পলিগ্লট প্রোগ্রামিং বাছাইয়ের পিছনে পরিচালনার দৃষ্টিভঙ্গি বুঝতে সহায়তা করে।
পার্থ প্যাটেল 2'18

@ পার্থপ্যাটেল আমি মনে করি আপনার এই উত্তরটি গ্রহণ করা উচিত, এটি এখানে সেরা স্ব-অন্তর্ভুক্ত rap
বাম দিকের বাইরে

2
+1: তবে আপনি অহংকারকে ভুলে গেছেন। অনেক লোক নতুন ভাষা শিখতে অস্বীকার করে এবং যা জানে তার সাথে লেগে যায়। একাধিক দলের সাথে পরিপক্কতার এই ভিন্ন স্তরের একক প্রকল্পে অনেকগুলি বিভিন্ন প্রযুক্তি হতে পারে
ডেভো

1
কারণ 7, নিয়োগের উদ্দেশ্যে আইটি বিভাগকে সেক্সি দেখানোর চেষ্টা করছেন। মজা না করা, একটি নেট প্রকল্পে, আমরা একটি বিদ্যমান পরিষেবা থেকে একটি সিঙ্গেল এন্ডপয়েন্টটি প্রতিস্থাপন করে গোতে সম্পূর্ণ নতুন পরিষেবা ব্যবহার করতে পেরেছি, যাতে তারা চাকরির অ্যাডে "বহুভোজ" রাখতে পারে!
ক্রিস লি

1
হেহ! আমি একমত হতে পারি না যে একাধিক ভাষাগুলি ব্যবহার করা এমন লোকদের জন্য আকর্ষণ যা তারা উদ্বিগ্ন যে তারা কেবলমাত্র কোবল-একমাত্র ধরণের চাকরির মধ্যে পড়ে dead প্রথমবারের মতো আমি কেবলমাত্র এবং বিশেষভাবে সেই উদ্দেশ্যে কোনও ভাষা যুক্ত হওয়ার কথা শুনেছি, তবে এমন অনেক পরিবেশ রয়েছে যেখানে বিভিন্ন ধরণের সরঞ্জাম এবং ভাষা থাকার ইঙ্গিত হিসাবে দেখা হয় যে তারা সর্বশেষ প্রযুক্তিগুলির সাথে কাজ করছে, এবং এইভাবে কাজ করার জন্য আরও প্রগতিশীল জায়গা। সুন্দর উদাহরণ, ধন্যবাদ!
টেরি বলিঞ্জার

158

আমি কেন একই পণ্য বা সফ্টওয়্যারে একাধিক প্রোগ্রামিং ভাষা ব্যবহার করা হয় তার কারণটি বুঝতে পারি না?

এটি বেশ সহজ: সমস্ত প্রয়োজন এবং লক্ষ্যগুলির জন্য উপযুক্ত কোনও একক প্রোগ্রামিং ভাষা নেই।

মাইকেল এল স্কট এর বই প্রোগ্রামিং ল্যাঙ্গুয়েজ প্র্যাকটিমেটিক্স পড়ুন

কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ ভাব প্রকাশ এবং ঘোষণাপূর্ণতার পক্ষে (প্রচুর স্ক্রিপ্টিং ভাষা তবে আগদা , প্রোলগ , লিস্প , হাস্কেল, ওকামল, ...) এর মতো উচ্চ-স্তরের প্রোগ্রামিং ভাষাও । যখন বিকাশের ব্যয়টি গুরুত্বপূর্ণ (মানব সময় এবং বিকাশকারীদের ব্যয়) হয় তখন এগুলি ব্যবহার করা উপযুক্ত (রানটাইম পারফরম্যান্স অনুকূল না হলেও)।

অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি রান-টাইম পারফরম্যান্সের পক্ষে (অনেকগুলি নিম্ন-স্তরের ভাষাগুলি, সাধারণত সংকলিত বাস্তবায়ন যেমন সি ++, মরিচা, গো, সি, এসেম্বারার, এছাড়াও ওপেনসিএল এর মতো বিশেষীকৃত ভাষা ...); প্রায়শই তাদের স্পেসিফিকেশন কিছু অপরিজ্ঞাত আচরণের অনুমতি দেয় । কোডটির পারফরম্যান্স যখন গুরুত্বপূর্ণ হয়, তখন এই ভাষাগুলি ব্যবহার করা ভাল rable

কিছু বাহ্যিক গ্রন্থাগার নির্দিষ্ট ভাষায় এবং এবিআই-র জন্য এবং কলিং কনভেনশনকে মাথায় রেখে লেখা হয়। আপনার সেই অন্য ভাষাটি ব্যবহার করার প্রয়োজন হতে পারে এবং বিদেশী ফাংশন ইন্টারফেস কনভেনশনগুলি অনুসরণ করতে পারেন , সম্ভবত কিছু আঠালো কোড লিখে ।

অনুশীলনে, এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ হওয়ার সম্ভাবনা নেই যা উচ্চ ভাবগত (তাই বিকাশকারীর উত্পাদনশীলতার উন্নতি করে, দক্ষ যথেষ্ট বিকাশকারী দল ধরে ধরে) এবং রানটাইমে খুব পারফরম্যান্ট। অনুশীলনে, প্রকাশ এবং পারফরম্যান্সের মধ্যে একটি বাণিজ্য বন্ধ রয়েছে a

দ্রষ্টব্য: তবে, প্রোগ্রামিং ভাষাগুলিতে কিছুটা ধীর অগ্রগতি হয়েছে: মরিচা সি বা সম্ভবত সি ++ এর চেয়ে বেশি অভিব্যক্তিক তবে এর বাস্তবায়ন প্রায় পারফরম্যান্ট, এবং সম্ভবত সমান দ্রুত এক্সিকিউটেবলগুলি তৈরি করতে উন্নতি করবে। সুতরাং আপনার পেশাদার জীবনের সময় আপনি নতুন প্রোগ্রামিং ভাষা শেখার প্রয়োজন; তবে সিলভার বুলেট নেই

লক্ষ্য করুন যে উন্নয়নের ব্যয় আজ আরও বেশি তাৎপর্যপূর্ণ (১৯at০-এর দশকে-এটি সেই সময়ের কম্পিউটার ছিল না যেখানে খুব ব্যয়বহুল- বা কিছু এমবেডেড অ্যাপ্লিকেশনগুলিতে - বৃহত পরিমাণে পণ্য সহ)। থাম্বের নিয়ম (খুব আনুমানিক) হ'ল দক্ষ বিকাশকারী প্রতি বছর প্রায় 25 হাজার লাইন (ডিবাগড এবং ডকুমেন্টেড) সোর্স কোড লিখতে সক্ষম হন এবং এটি ব্যবহৃত প্রোগ্রামিং ভাষার উপর নির্ভর করে না।

একটি প্রচলিত পদ্ধতি হ'ল বড় অ্যাপ্লিকেশনটিতে কিছু স্ক্রিপ্টিং ভাষা (বা কিছু ডোমেন নির্দিষ্ট ভাষা ) এম্বেড করা। এই নকশা ধারণা (ডোমেন-নির্দিষ্ট ভাষা এর সাথে সম্পর্কিত) কয়েক দশক ধরে ব্যবহার করা হয়েছে (একটি ভাল উদাহরণ গিয়ে Emacs সোর্স কোড এডিটর 1980 সালের পর স্ক্রিপ্টিং জন্য Elisp ব্যবহার করে)। তারপরে আপনি একটি সহজে এম্বেডযোগ্য দোভাষী ব্যবহার করতে পারবেন (যেমন গিলি , লুয়া , পাইথন), ...) একটি বৃহত্তর অ্যাপ্লিকেশন ভিতরে। একটি বৃহত অ্যাপ্লিকেশনটির ভিতরে একজন দোভাষীকে এম্বেড করার সিদ্ধান্তটি খুব তাড়াতাড়ি করাতে হবে, এবং এর দৃ strong় স্থাপত্যগত প্রভাব রয়েছে। এরপরে আপনি দুটি ভাষা ব্যবহার করবেন: নিম্ন স্তরের স্টাফের জন্য যা দ্রুত চালাতে হয়, কিছু নিম্ন স্তরের ভাষা যেমন সি বা সি ++; উচ্চ স্তরের স্ক্রিপ্টগুলির জন্য, অন্য ডিএসএল বা স্ক্রিপ্টিং ভাষা।

আরও লক্ষ করুন যে কোনও প্রদত্ত সফ্টওয়্যার বেশিরভাগ বর্তমান অপারেটিং সিস্টেমের মধ্যে (লিনাক্স, উইন্ডোজ, অ্যান্ড্রয়েড, ম্যাকোএসএক্স, হার্ড, ... সহ) একাধিক সহযোগী প্রক্রিয়াতে কিছু প্রকার আন্তঃ প্রক্রিয়া যোগাযোগ কৌশল ব্যবহার করে চলতে পারে। এমনকি এটি বিতরণ করা কম্পিউটিং কৌশলগুলি (যেমন ক্লাউড কম্পিউটিং , এইচপিসি, ক্লায়েন্ট সার্ভার, ওয়েব অ্যাপ্লিকেশন , ইত্যাদি ...) ব্যবহার করে বেশ কয়েকটি কম্পিউটারে (বা তাদের অনেকগুলি) চালানো যেতে পারে । উভয় ক্ষেত্রেই বেশ কয়েকটি প্রোগ্রামিং ভাষা ব্যবহার করা সহজ (উদাহরণস্বরূপ প্রতিটি প্রোগ্রামের নিজস্ব প্রোগ্রামিং ভাষায় একটি প্রক্রিয়া বা কম্পিউটারে চলমান কোড)। অপারেটিং সিস্টেমগুলি পড়ুন : আরও তিনটি সহজ টুকরো । এছাড়াও, বিদেশী ফাংশন ইন্টারফেস(যেমন জেএনআই ), এবিআই এর এস, কলিং কনভেনশনস ইত্যাদি ... একই প্রোগ্রামে বেশ কয়েকটি ভাষায় মিশ্রিত করার সুবিধা (বা এক্সিকিউটেবল ) - এবং আপনি এসডবাইজির মতো কোড জেনারেটরকে সাহায্য করতে পারেন find

কিছু ক্ষেত্রে, আপনাকে বেশ কয়েকটি প্রোগ্রামিং ল্যাঙ্গুয়েজ মিশ্রিত করতে হবে : ব্রাউজারে চলমান অংশের জন্য ওয়েব অ্যাপ্লিকেশনগুলির জাভাস্ক্রিপ্ট বা ওয়েবঅ্যাস্পেসিং (কেবলমাত্র বেশিরভাগ ওয়েব ব্রাউজারের অভ্যন্তরে চলমান একমাত্র ভাষাগুলি) প্রয়োজন (ফ্রেমওয়ার্কগুলি এগুলি উত্পন্ন করে, যেমন ocsigen )। কার্নেল কোডে কিছু অংশ প্রয়োজন (যেমন শিডিয়ুলার, বা বিঘ্নগুলির নিম্ন স্তরের হ্যান্ডলিং) আংশিকভাবে এসেম্বলারে লেখা থাকতে পারে, কারণ সি বা সি ++ সেখানে প্রয়োজনীয় যা প্রকাশ করতে পারে না, আরডিবিএমএস অনুসন্ধানগুলি এসকিউএল ব্যবহার করা উচিত, জিপিপিইউ'র ওপেনসিএল-তে কোড করা কম্পিউটার কার্নেলগুলি দরকার বা CUDA C অথবা সি ++ হোস্ট কোড দ্বারা পরিচালিত, ইত্যাদি .... কিছু কিছু ভাষায় এই ধরনের একটি মিশ্রণ সহজতর (ডিজাইন করা হয় যেমন বিবৃতি , সিasmআমার দেরিতে জিসিসি মেল্টে কোড খণ্ডগুলি , ইত্যাদি ...)।

কিছু ক্ষেত্রে, আপনি রূপক কৌশলগুলি ব্যবহার করেন : আপনার বৃহত সফ্টওয়্যার প্রকল্পের কিছু অংশে কোড থাকবে (যেমন সি বা সি ++) অন্যান্য সরঞ্জাম দ্বারা উত্পাদিত (সম্ভবত প্রকল্পের নির্দিষ্ট সরঞ্জাম) কিছু অ্যাডহক প্রথাগতকরণ: পার্সার জেনারেটর (ভুলভাবে সংকলক বলা হয়- সংকলক) বাইসন বা এএনটিএলআরের মতো মনে পড়ে তবে এসডিজিআইজি বা আরপিসিজেএন। এবং লক্ষ্য করুন যে জিসিসির অভ্যন্তরে একাধিক বিশেষ সি ++ কোড জেনারেটর রয়েছে (জিসিসির অভ্যন্তরে প্রতিটি অভ্যন্তরীণ ডিএসএল এর জন্য একটি)। আরও দেখুন এই উদাহরণ। লক্ষ্য করুন যে বিপাকগুলি খুঁজে পাওয়া শক্ত। বুটস্ট্র্যাপিং সংকলক এবং হোমোসোনসিটি এবং প্রতিবিম্ব সম্পর্কেও পড়ুন(এটা উপযুক্ত শিখতে পাতার মর্মর , সঙ্গে খেলা SBCL পাঠ করার SICP ; মধ্যে এছাড়াও দেখুন জে আই টি JIT-সংকলন মত লাইব্রেরি GCCJIT ; সচেতন হতে; কিছু বৃহৎ প্রোগ্রামে আপনি তাদের ব্যবহার রানটাইম কিছু কোড জেনারেট পারে Greenspun এর দশম নিয়ম )। মধ্যে এছাড়াও দেখুন সার্কিট কম ভ্রমণ FOSDEM2018 এ আলাপ।

কখনও কখনও, আপনি কিছু বিশেষায়িত টীকা ভাষাগুলি (যা কিছু ডিএসএল হিসাবে দেখা যেতে পারে) ব্যবহার করে আপনার কোডের আনুষ্ঠানিক টীকাগুলি সরবরাহ করতে চান (উদাহরণস্বরূপ প্রভার, স্ট্যাটিক বিশ্লেষক, সংকলক) help দেখব ACSL সঙ্গে Frama-সি সি প্রোগ্রাম (নিরাপত্তা-সমালোচনামূলক বেশী), অথবা টীকা যোগ করার ফলে, OpenMP -র pragmas এইচপিসি জন্য। ক্যাভেট: এ জাতীয় টীকা লেখার জন্য প্রচুর দক্ষতা এবং বিকাশের সময় প্রয়োজন হতে পারে।

বিটিডাব্লু, এটি পরামর্শ দেয় যে সংকলক এবং দোভাষী সম্পর্কে কিছু দক্ষতা প্রতিটি বিকাশকারী (এমনকি সংকলকের অভ্যন্তরে কাজ না করে) জন্য দরকারী for সুতরাং আপনি সংকলকগুলিতে কাজ না করলেও ড্রাগন বইটি পড়ুন । আপনি যদি নিজের নিজস্ব ইন্টারপ্রেটার কোড করেন (বা আপনি যদি নিজের ডিএসএল ডিজাইন করেন) তবে ছোট ছোট টুকরোয় লিসপও পড়ুন

আরও দেখুন এই & যে & যে & যে আপনার প্রশ্নের সাথে সম্পর্কিত খনি উত্তর।

অনুপ্রেরণা ও জ্ঞানার্জনের জন্য কয়েকটি বৃহত বিনামূল্যে সফ্টওয়্যার প্রকল্পের ( গিথুব বা আপনার লিনাক্স বিতরণ থেকে ) উত্স কোডও অধ্যয়ন করুন

এছাড়াও, কিছু প্রোগ্রামিং ভাষা বিদ্যমান ভাষাগুলিতে টিকা (প্রাগমাস বা মন্তব্য হিসাবে ) যুক্ত করে বিকশিত হয়েছিল । উদাহরণের জন্য, মনে ACSL (ক মন্তব্য-এক্সটেনশান দ্বারা তাদের প্রমাণাদি সক্ষম করতে সি প্রোগ্রাম টীকা যোগ করার Frama-সি ) অথবা OpenCL বা (ক সি উপভাষা GPGPUs প্রোগ্রাম করার জন্য) ফলে, OpenMP -র বা OpenACC #pragmaগুলি বা কমন পাতার মর্মর টাইপ টীকা

PS: প্রোগ্রামিং ভাষার মিশ্রণের সামাজিক বা সাংগঠনিক বা historicalতিহাসিক কারণগুলিও রয়েছে; আমি তাদের এখানে উপেক্ষা করছি, তবে আমি জানি যে বাস্তবে এই জাতীয় কারণগুলি প্রভাবশালী। পৌরাণিক মানুষ মাস পড়ুন


6
আমার কাছে এটি সঠিক উত্তর। আপনি উদাহরণস্বরূপ সি প্রোগ্রামগুলিতে সমাবেশের রুটিনগুলি নিতে পারেন। ইউনিক্স শেলটি একাধিক প্রোগ্রামিং ভাষার সাথে আবদ্ধ থাকে এবং আপনি প্রায়শই awkব্যাশ স্ক্রিপ্টগুলির মধ্যে ব্যবহৃত (যা অন্য প্রোগ্রামিংয়ের ভাষা হিসাবে ব্যবহৃত হবে) কেবল এটি টাস্কের জন্য আরও ভাল ফিট কারণ। @ amon এর বক্তব্য এখনও দাঁড়িয়ে আছে।
মায়ুলসি

8
বিটিডাব্লু, একটি দুর্দান্ত প্রোগ্রামার কখনও কখনও কোডের লাইনগুলি মুছে ফেলতে সক্ষম হয় ... (বেশ কয়েকটি
ক্রেপি

12
দুর্দান্ত উত্তর, তবে একটি অনুরোধ: "অ্যাসাইড "গুলিকে কম বিশিষ্টভাবে উপস্থাপিত করে ইঙ্গিত করার আকাঙ্ক্ষার প্রশংসা করি তবে দয়া করে এইচটিএমএল এসইপ ট্যাগটিকে অপব্যবহার করবেন না কারণ এটি একটি ছোট ফন্টে রেন্ডারিংয়ের পার্শ্ব-প্রভাব রয়েছে has এটি একটি অ্যাক্সেসিবিলিটি দুঃস্বপ্ন হয়ে উঠেছে এবং HTML5 স্ট্যান্ডার্ডের পরামর্শ অনুসারে, "এই উপাদানগুলি কেবল নির্দিষ্ট অর্থ সহ টাইপোগ্রাফিক কনভেনশনগুলি চিহ্নিত করতে ব্যবহার করা উচিত, উপস্থাপনার জন্য টাইপোগ্রাফিক উপস্থাপনার জন্য নয়। [...] এই উপাদানগুলি কেবল তখনই ব্যবহার করুন যদি এই উপাদানগুলির অনুপস্থিতি বিষয়বস্তুর অর্থ পরিবর্তন করতে পারে। "
এফআরডি

4
@ ফেডার: অপসারণ <sup>হলেও অনুশোচনা নিয়ে
বেসিল স্টারিনকিভিচ

6
@ বাসাইলস্টারিঙ্কেভিচ প্রশংসা করেছেন। যেমনটি আমি বলেছিলাম, আমি অভিপ্রায়টির প্রশংসা করি এবং অত্যধিক ভার্জোজ, প্রবণ টু-ট্যানজেন্ট লেখক হিসাবে আমি অবশ্যই স্পষ্টভাবে চাই যে স্ট্যাক এক্সচেঞ্জ ছোট ছোট স্টাইলিংয়ের একটি সমর্থিত পদ্ধতি সরবরাহ করেছে বা সম্ভবত ক্লিক-টু-প্রকাশের ধারকটির মধ্যে ধসে পড়েছে। তবে অনুচ্ছেদের দৈর্ঘ্যের সুপারস্ক্রিপ্টগুলি সেই অভাবের উত্তর নয়।
এফআরডি

29

বহু প্রকল্প একাধিক প্রোগ্রামিং ভাষা নিয়ে নির্মিত হয় না । তবে, সফ্টওয়্যারটির সহায়তায় অন্যান্য ভাষায় স্ক্রিপ্টগুলি ব্যবহার করা সাধারণ।

  • প্রশাসনের সরঞ্জামগুলি যা পৃথক প্রোগ্রাম হয় কখনও কখনও আলাদা ভাষায় লেখা হয়।
  • গ্রন্থাগারগুলি এবং এপিআইগুলি প্রায়শই একাধিক ভাষার জন্য বাইন্ডিং সরবরাহ করে, যাতে বিকাশকারীরা তাদের পছন্দমতো ভাষা ব্যবহার করতে পারেন।
  • স্ক্রিপ্টগুলি এবং সম্পর্কিত বিকাশের স্ক্রিপ্টগুলি প্রায়শই বিশেষায়িত ভাষা ব্যবহার করে।
  • অ্যাপ্লিকেশনটির শেষ থেকে শেষের পরীক্ষাগুলিতে একই ভাষা ব্যবহার করার দরকার নেই।

কয়েকটি প্রকল্প অ্যাপ্লিকেশনের মধ্যে একাধিক ভাষা ব্যবহার করে, উদাহরণস্বরূপ নিম্ন-স্তরের ভাষার একটি কোর যা স্ক্রিপ্টিং ভাষায় প্লাগইনগুলিকে একীভূত করতে পারে। কিছু বাস্তুতন্ত্রে (যেমন জেভিএম বা। নেট) সঠিক ভাষার ব্যবহৃত ভাষা খুব গুরুত্বপূর্ণ নয়, কারণ একই ভাষার রানটাইমের একাধিক ভাষার ভাল আন্তঃআকোণীয়তা রয়েছে। উদাহরণস্বরূপ, আমি স্কালায় একটি প্রকল্প লিখতে পারি যা বিদ্যমান জাভা গ্রন্থাগারগুলি ব্যবহার করে এবং গ্রোভির সাথে স্ক্রিপ্টিং কার্যকারিতা সংহত করে।

যদি কোনও প্রকল্পে একাধিক সরঞ্জাম থাকে তবে সেগুলি বিভিন্ন ভাষায়ও বিকাশ করা যায়। যদিও ধারাবাহিকতা ভাল হবে, বিশেষত ওপেন সোর্স প্রকল্পগুলির জন্য উপলব্ধ বিকাশের প্রচেষ্টা বাধা হতে পারে। যদি কেউ একটি দরকারী সরঞ্জাম বিকাশ করতে ইচ্ছুক তবে মূল ভাষার সাথে পরিচিত না হন, সম্ভবত সেই সরঞ্জামটি ধারাবাহিকতার চেয়ে মূল্যবান।


3
এটি @ বেসাইলের উত্তরের পরিপূরক। লিনাক্স কার্নেলের পার্ল স্ক্রিপ্টগুলি কার্নেলের অংশ নয়, না মেকফাইলে। এগুলির জন্য সি ব্যবহার করে লাভ করার কিছুই নেই। তদুপরি, এই পার্ল স্ক্রিপ্টগুলি লিনাক্স কার্নেলের স্বাধীনভাবে ব্যবহার করা যেতে পারে। প্রায়শই, এগুলি একটি নিবিড়ভাবে সম্পর্কিত প্রকল্প হিসাবে বিবেচনা করা যেতে পারে, তবে স্বতন্ত্র একটি। আপনি সাধারণত একক কাজের জন্য একটি ভাষা ব্যবহার করবেন।
মায়ুলসি

20

এটির দুটি রূপ রয়েছে এবং প্রচুর সংস্থাগুলি এই দুটির মধ্যে কোথাও পড়ে:

খারাপ ফর্ম - সংস্থাটি একটি গোলমাল, এবং কেউই নিশ্চিত করে নিছে যে প্রচেষ্টাটির জন্য একক প্রযুক্তিগত দৃষ্টি রয়েছে। ডেভস সম্ভবত তারা যে ভাষায় সর্বাধিক স্বাচ্ছন্দ্যযুক্ত, বা সম্প্রতি একটি নতুন কাঠামো বা ভাষা নিয়ে পরীক্ষা-নিরীক্ষা করেছেন এবং নিখুঁত আশাবাদীর কারণে কেবল এটি ব্যবহার শুরু করার সিদ্ধান্ত নিয়েছেন use

ভাল ফর্ম - প্রতিষ্ঠানের সত্যই ভাল, পরিষ্কার আর্কিটেকচার রয়েছে যা বহুগ্লোট প্রোগ্রামিংয়ে নিজেকে ভাল ধার দেয়; একটি ভাল-সংজ্ঞায়িত বাউন্ডিং প্রসঙ্গের সাথে অ্যাপ্লিকেশনগুলিকে স্বতন্ত্র উপাদানগুলিতে ডিকপলিং করে এবং এই সংমিশ্রণটি তাদের প্রোগ্রামিংয়ের ভাষা নির্বাচন করতে দেয় যা তাদের কেবলমাত্র সেই নির্দিষ্ট উপাদানটি লিখতে দেয়।

বাস্তবতা - এটি সাধারণত পরবর্তীকালের চেয়ে বেশি আগের। আমি কিছু সংস্থাগুলি তাদের ব্যবসায়ের ডোমেনের জন্য একটি ভাষা এবং তাদের ওয়েব সার্ভারের জন্য অন্য একটি ভাষা বেছে নিতে দেখেছি এবং প্রায়শই তাদের ডাটাবেস প্রশাসনের জন্য তৃতীয়, যা প্রযুক্তিগতভাবে ভাল তবে খুব শীঘ্রই তাদের প্রযুক্তিগত বোঝার অভাব রয়েছে (বা তাদের কর্মীদের কথা শোনার প্রত্যাখ্যান) এর অর্থ এই যে তারা তিনটি একসাথে একটি বড় জগাখিচির মধ্যে ঝাপসা করে, এবং প্রায়শই আরও বেশি ভাষাগুলি প্রবর্তন করে যা মেসের নির্দিষ্ট অংশগুলি সমাধান করার জন্য উপযুক্ত।


20

আমি এমন একটি প্রোগ্রামিং প্রকল্পের একটি উদাহরণ অবদান রাখতে পারি যা ৩২ বছর ধরে চলছে এবং এতে এখনও প্রচুর জীবন বাকি রয়েছে বলে মনে হয়। এটি উন্মুক্ত উত্সের চেয়ে বাণিজ্যিক।

মূলটি একটি ডোমেন-নির্দিষ্ট ভাষায় রচিত, প্রকল্পটির জন্য বিশেষভাবে তৈরি। এটি অত্যন্ত কার্যকর প্রমাণিত হয়েছে, উল্লেখযোগ্যভাবে কারণ এটি রোলব্যাকটি বেসিক আর্কিটেকচারের সাথে সংহত করে, তবে এটি সি কোডে সংকলন করে, যা আমরা পরে প্ল্যাটফর্মের সংকলক দিয়ে সংকলন করি। এটি সেই সময়কালে প্রায় বিশটি প্ল্যাটফর্ম সমর্থন করেছে, 32- বনাম 64-বিট বৈচিত্রগুলি গণনা করছে না এবং বর্তমানে ছয়টিতে জাহাজ সরবরাহ করে।

এটি সি ++ তে লিখিত একটি অ্যাড-অন রয়েছে, যা প্রকল্পের অতীতপ্রধান যখন নিশ্চিত হয়ে যায় যে সি ++ / এমএফসি / উইন্ডোজ / এক্স 86 অন্য সমস্ত আর্কিটেকচার এবং প্ল্যাটফর্মগুলি স্থানচ্যূত করতে চলেছে, তাই সি ++ এর কাজের প্রস্তাব দেওয়া দরকার ছিল কর্মী নিয়োগ করতে সক্ষম হতে। তার প্রত্যাশা অনুযায়ী জিনিসগুলি আর পরিণত হয়নি।

ডোমেন ভাষা এবং সি ++ ছাড়াও, বিকাশকারীরা এলআইএসপিতে কাজ করেন যা পরীক্ষার ক্ষেত্রে লেখার জন্য পরীক্ষার জোড়ায় অন্তর্ভুক্ত একটি দোভাষী ব্যবহার করে পরীক্ষার ক্ষেত্রে লিখতে ব্যবহৃত হয়। আমরা এক পর্যায়ে জাভা দিয়ে এলআইএসপি প্রতিস্থাপনের বিষয়টি বিবেচনা করেছি, তবে এটি ভাগ্যবান যে আমরা তা করি নি।

এটিতে এটির মূল এপিআইয়ের জন্য একটি মোড়কও রয়েছে, সি # তে লেখা। গ্রাহকরা এটি দাবি করার সময় এটি করা হয়েছিল, যাতে তারা সি # তে তাদের আবেদনগুলি পুনরায় লিখতে পারে। এটি একটি পার্ল স্ক্রিপ্ট দ্বারা তৈরি করা হয়েছে, যা এপিআই-র জন্য সি শিরোনাম ফাইলগুলি, এবং একটি উল্লেখযোগ্য কনফিগারেশন ফাইল পড়ে এবং মোড়কের জন্য সি # কোড লিখে। পার্লটিতে সেই সমস্ত পাঠ্য-প্রক্রিয়াকরণ করা সি ++ এ করা থেকে সহজ ছিল।

এটির নিজস্ব একটি বিল্ড সিস্টেম রয়েছে এবং সেগুলি প্রয়োজন, কারণ ডোমেন ভাষাটি তৈরি-ভিত্তিক বিল্ড সিস্টেমগুলির পক্ষে উপযুক্ত নয়। ইউনিক্স-এর মতো প্ল্যাটফর্মগুলির জন্য একটিটি শেল স্ক্রিপ্ট, পার্ল এবং ডোমেন ভাষায় কিছু ছোট প্রোগ্রামে লেখা। উইন্ডোজ প্ল্যাটফর্মগুলির জন্য একটি ব্যাচের ভাষা, পার্ল এবং ডোমেনের ভাষায় একই ছোট প্রোগ্রামে লেখা। পুরানো ভিএমএস বিল্ড সিস্টেমটি ডিসিএলে লেখা ছিল, তবে এটি এক দশক ধরে ব্যবহার করা হয়নি।

ডোমেন ভাষার জন্য সংকলকটিতে কিছু YACC / বাইসন প্রোগ্রামিং রয়েছে। উদ্দেশ্যমূলক-সি ++ এ লিখিত অ্যাপল প্ল্যাটফর্মগুলির জন্য কিছু পরীক্ষার কোড রয়েছে। দলের অভ্যন্তরীণ ওয়েবসাইটগুলির কিছু (প্রকল্প পরিচালনার জন্য ব্যবহৃত, বিতরণযোগ্য অংশ নয়) এএসপিতে এবং অন্যগুলি পার্লের সিজিআই-স্ক্রিপ্ট হিসাবে লেখা হয়।

মূলত, এটি একটি কঠিন সমস্যা সমাধানের জন্য একটি প্রকল্প হিসাবে শুরু হয়েছিল, সুতরাং এটি বিশেষায়িত সরঞ্জামগুলি তৈরির জন্য উপযুক্ত ছিল, যা এখনও অন্য যে কোনও কিছু উপলভ্য চেয়ে এই কাজের জন্য উপযুক্ত বলে মনে হয়। দলটি প্রোগ্রামিংকে এমন একটি দক্ষতা হিসাবে বিবেচনা করে যা ব্যবহৃত ভাষার থেকে কিছুটা স্বতন্ত্র, সুতরাং তারা কোনও নতুন ভাষা ব্যবহার করতে ইচ্ছুক যদি এটি কোনও কাজকে আরও সহজ করে তোলে। যাইহোক, ফ্যাশন তাদের অগ্রাধিকার তালিকার উপরে আসে না, তাই তারা কৃতজ্ঞভাবে একটি নতুন ভাষা প্রবর্তন করে কোনও কাজকে টুকরো টুকরো করবে না।

এই কোডটির কার্যকারিতা হ'ল গাণিতিক মডেলিং, ওয়ার্কস্টেশন এবং সার্ভারগুলিতে ব্যবহৃত হয় (আমি যদি পণ্যটি সনাক্ত না করি তবে আমি আরও কিছুটা নির্দ্বিধায় কথা বলতে পারি)। এটি বর্তমানে প্রায় 25 মিলিয়ন এলওসি, মোট টিম আকার প্রায় পঞ্চাশ।


এই সফ্টওয়্যার প্রোডাক্টটি সম্পর্কে আরও কিছু বলা ভাল হবে: কোনটি শিল্প ডোমেইন (নিউরোসার্জারি রোবটগুলি উচ্চ-ফ্রিকোয়েন্সি ট্রেডের সমান নয়, উদাহরণস্বরূপ)? আনুমানিক আকার (কোডের কয়েক মিলিয়ন লাইনে)? দলের আকার কত?
বেসাইল স্টারিনকিভিচ

@ বেসাইলস্টারিঙ্কেভিচ: যুক্ত বিবরণ।
জন ডালম্যান

এই. ঠিক এই কারণেই প্রকল্পগুলির ভাল থেকে খারাপ পর্যন্ত একাধিক ভাষা রয়েছে।
জারেড স্মিথ

15

কিছু ক্ষেত্রে, আপনার একটি ডিভাইস ব্যবহার করতে হবে (যেমন কোনও ওএসের ইউআই টুলকিট) যা কোনও প্রদত্ত ভাষা থেকে খুব সহজেই অ্যাক্সেসযোগ্য। আইওএস এবং ম্যাকোএসের উদাহরণস্বরূপ, আপনি যদি ইউআইকিট এবং অ্যাপকিট ব্যবহার করে জিইউআই অ্যাপ্লিকেশন লিখতে চান তবে সুইফ্ট বা অবজেক্টিভ-সি-তে লিখন এটির পক্ষে দ্রুততম, সহজতম উপায়। (অন্যান্য ভাষাগুলির জন্য বাইন্ডিং থাকতে পারে তবে আপনি যে সর্বশেষ ওএস রিলিজটি করছেন তার পিছনে সেগুলি থাকতে পারে, তাই সমস্ত বৈশিষ্ট্য সরবরাহ নাও করতে পারে))

তাই প্রায়শই যা ঘটে তা যখন অ্যাপ্লিকেশন ক্রস প্ল্যাটফর্ম হয় তখন অ্যাপের মূল যুক্তিটি এমন কিছু ভাষায় লেখা হয় যা উভয়ের পক্ষে অ্যাক্সেসযোগ্য এবং ইউআই / ওএস-নির্দিষ্ট অংশগুলি যে কোনও ভাষায় তারা স্থানীয়ভাবে কাজ করে।

সুতরাং আপনি যদি উইন্ডোজ এবং ম্যাকোস অ্যাপ্লিকেশনটি লিখছেন তবে আপনি মূল যুক্তিটি সি ++ এ লিখতে পারবেন এবং ম্যাকোজে ইউআই এর জন্য উইন্ডোজ এবং সুইফটে ইউআই এর জন্য সি # ব্যবহার করতে পারেন। এটি সময় সাশ্রয় করে কারণ আপনার মূল যুক্তিকে দু'বার লেখার প্রয়োজন নেই এবং উভয় অ্যাপ্লিকেশন ইত্যাদিতে বিভিন্ন সেট বাগের সাথে ডিল করার প্রয়োজন নেই তবে এটি সত্যিকারের স্থানীয় ইউআইকেও মঞ্জুরি দেয় যা প্ল্যাটফর্মগুলির মধ্যে সর্বনিম্ন সাধারণ ডিনমিনেটর ব্যবহার করে না একটি ক্রস প্ল্যাটফর্ম ইউআই লাইব্রেরি হবে।


এমভিসি এফটিডব্লিউ! এমনকি প্রতিটি ওএস / পরিবেশের জন্য র‌্যাপার অ্যাপসের সাথে একটি ক্রস প্ল্যাটফর্মের
কোরও নামা হচ্ছে

1
এটি আমার নিজের অভিজ্ঞতার সাথে মেলে। আমি যে পরিমান আকারের কাজ করেছি তার প্রতিটি প্রকল্প একাধিক ভাষা ব্যবহার করেছে, এবং ভাষার বহুগুণ কখনও কোনও সুবিধা দেয়নি। কারণটি সর্বদা ছিল যে নির্দিষ্ট সরঞ্জামগুলির সাথে ইন্টারফেস করার জন্য নির্দিষ্ট অংশগুলি নির্দিষ্ট ভাষায় লিখতে হত।
ওয়েন

প্রাক্তন আইওএস বিকাশকারী হিসাবে আমি নিশ্চিত করতে পারি যে আমরা এটি করেছি। আমাদের পিএইচপি-তে লিখিত একটি এপিআই ছিল যা জেএসএনে যোগাযোগ করেছিল, পিএইচপি-তে লিখিত একটি ওয়েব ফ্রন্ট-এন্ড যার কাছে একটি জাভাস্ক্রিপ্ট / এইচটিএমএল 5 অংশ ছিল, জাভাতে লেখা একটি অ্যান্ড্রয়েড ফ্রন্ট-এন্ড এবং উদ্দেশ্য আই-সি-তে লিখিত একটি আইওএস ফ্রন্ট-এন্ড ছিল commun । পরে, নতুন প্রকল্পগুলি সুইফটে লেখা হয়েছিল, তবে আমাদের অভ্যন্তরীণ কাঠামোটি এখনও উদ্দেশ্যমূলক-সি-তে লেখা ছিল। সুতরাং এক পর্যায়ে আমাদের অ্যাপ্লিকেশনগুলির একটিতে পিএইচপি, জাভা, অবজেক্টিভ-সি, সুইফ্ট, জাভাস্ক্রিপ্ট এবং এইচটিএমএল 5 লিখিত ছিল এবং 3 প্ল্যাটফর্মে উপলব্ধ ছিল।
বেলী-সোফি

10

কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ কিছু নির্দিষ্ট কাজের জন্য আরও উপযুক্ত হতে পারে এই বিষয়টি ছাড়াও ব্যবহারিক বাস্তবতা রয়েছে।

ব্যবহারিক বাস্তবতায়, দুটি বিশেষত গুরুত্বপূর্ণ বিষয় বিবেচনা করা উচিত:

  1. বিভিন্ন প্রোগ্রামিং ভাষায় মানুষের অভিজ্ঞতা এবং স্তরগুলির আগ্রহ রয়েছে। - লোকেরা তাদের পছন্দ মতো ভাষায় কাজ করতে দেয় এবং এতে দক্ষ হয় এমন কিছু পরিস্থিতিতে তাদের সাধারণ ভাষায় বাধ্য করার চেয়ে আরও ভাল ফলাফলের দিকে নিয়ে যেতে পারে।
  2. বড় বড় কোডবিজগুলি বিভিন্ন লোকের দ্বারা দীর্ঘ সময় ধরে নির্মিত হয়। - একবারে কোনও প্রকল্পের জন্য আরও উপযুক্ত উপযুক্ত ভাষা বের হওয়ার পরে পুরো প্রকল্পটি পুনর্লিখনের জন্য প্রয়োজনীয় তহবিল বা স্বেচ্ছাসেবীর পরিমাণ পাওয়ার কোনও উপায় নেই।

এবং অবশ্যই একটি অ্যাপ্লিকেশনটির প্রায়শই নির্দিষ্ট অংশ থাকে যার সম্পূর্ণ ভিন্ন প্রয়োজন হয়, যেমন:

  • সংকলিত ভাষায় পারফরম্যান্স সংবেদনশীল অঞ্চলগুলি বিকাশিত। উদাহরণ ভাষা: সি ++
  • যে অঞ্চলগুলি সস্তার, পরিবর্তনযোগ্য সহজ এবং সম্ভাব্যভাবে অনুকূলিতকরণযোগ্য, স্ক্রিপ্টিং ভাষায় বিকাশিত হতে হবে। উদাহরণস্বরূপ ভাষা: লুয়া।
  • জিইউআই লেআউট। উদাহরণ ভাষা: এইচটিএমএল
  • ইনস্টলার। ভাষা / সরঞ্জাম উদাহরণ: ওয়াক্স।
  • তৈরি করুন। ভাষা / সরঞ্জাম উদাহরণ: তালিকার জন্য অনেক বেশি, সাধারণত একবারে তাদের বেশ কয়েকটি।

এবং তারপরে একটি পরিশীলিত কোডবেস দ্বারা ব্যবহৃত বেশ কয়েকটি সরঞ্জাম রয়েছে, যার মধ্যে অনেকগুলি প্রয়োজনীয় কাস্টমাইজেশন এবং অন্য কোনও ভাষাতে প্লাগইনগুলির অনুমতি দেয়।


8
এইচটিএমএল কোনও প্রোগ্রামিং ভাষা নয়
বার্গি

1
@ বার্গি সঠিক পিটার দাবী করেন না এটি। এটি একটি মার্কআপ ভাষা।
বেল-সোফি

1
এইচটিএমএল, এক্সএএমএল, কিউএমএল ইত্যাদি হ'ল কম্পিউটারগুলি কী করণীয় তা বলতে সফ্টওয়্যার প্রকল্পগুলিতে প্রোগ্রামাররা ভাষা ব্যবহার করে - সাধারণত ভাষাগুলি কঠোরভাবে প্রয়োজন হয় না কারণ প্রোগ্রামাররা তাত্ত্বিকভাবে ইউআই সহ পুরো প্রকল্পটি একক ভাষায় লিখতে পারে। এটিকেই এ প্রশ্নের প্রসঙ্গে প্রাসঙ্গিক করে তোলে।
পিটার

5

ইতিমধ্যে তৈরি অন্যান্য সঠিক পয়েন্টগুলি ছাড়াও:
অভিজ্ঞতা থেকে, অনেক ভাষা বা পরিবেশগত সিদ্ধান্তগুলি 'যদি আপনার হাতুড়ি থাকে, সবকিছুই পেরেকের মতো লাগে', যার অর্থ লোকেরা তাদের সাথে পরিচিত সরঞ্জামগুলি ব্যবহার করার প্রবণতা তৈরি করে।

তদতিরিক্ত, একটি নতুন পরিবেশ বা এমনকি ভাষার প্রচলন লাইসেন্স, প্রশিক্ষণ, সম্ভবত হার্ডওয়্যার, এবং উত্পাদনশীল সময়ের বড় ক্ষতি সহ একটি বড় বিনিয়োগ হয় - প্রাপ্তি, ইনস্টল, কনফিগার, প্রশিক্ষণ প্রতিটি একটি বড় সংস্থায় সপ্তাহ খানেক সময় নেয় এবং আপনি মূলত শেষ করেন এক গোছা শুরুর বিকাশকারীদের সাথে আপ।
মূলত কোনও আধুনিক বা আরও ভাল ফিটনেসিং পরিবেশ বা ভাষায় 'বিনিয়োগ' করার সময় কখনই আসে না, সুতরাং যতক্ষণ না এটি আর কাজ করতে না পারা যায় ততক্ষণ তারা তাদের কাছে থাকে।

আপনার প্রশ্নের বিশেষত, যদি একাধিক ব্যক্তি / দলগুলি কোনও সমাধানের বিকাশে অংশ নিচ্ছে, তবে প্রতিটি গোষ্ঠী যা জানবে তার সাথে ভাল লেগে থাকে, সুতরাং সামগ্রিক সমাধানটিতে এর মধ্যে একাধিক ভাষা রয়েছে এবং এটি একাধিক পরিবেশে বিকাশ।


5

এই প্রশ্নটি (এবং কয়েকটি উত্তর) মনে হয় যে অ্যাপ্লিকেশনগুলি কোডের একচেটিয়া ব্লক - এটি অগত্যা নয়।

স্ট্যাক এক্সচেঞ্জের মতো আপনার সাধারণ ওয়েব সাইটটি হ'ল বিভিন্ন পরিষেবাগুলির একটি গোছা যা একে অপরের থেকে স্বতন্ত্রভাবে চলছে এবং তাদের মধ্যে কিছু প্রকার বার্তা রয়েছে। এই পরিষেবাগুলি পৃথক ভাষায় প্রয়োগ করা যেতে পারে (এবং সাধারণত এটি হয়) প্রতিটি নিজস্ব শক্তি দিয়ে।

আমি একটি অনলাইন ব্যাংকিং প্ল্যাটফর্মের একটি ক্ষুদ্র স্লাইভের উপর কাজ করি, এটি ছোট কমিউনিটি ব্যাংক এবং ক্রেডিট ইউনিয়নগুলিকে লক্ষ্য করে। এই প্ল্যাটফর্মটির একাধিক উপাদান রয়েছে - একটি ওয়েব ফ্রন্ট এন্ড, একটি ডাটাবেস স্তর, একটি তৃতীয় পক্ষের যোগাযোগ স্তর ইত্যাদি These এগুলি সমস্ত অপারেটিং সিস্টেমের সাথে বিভিন্ন সার্ভারে চলমান স্বতন্ত্র অ্যাপ্লিকেশন। আপনার ব্রাউজারে ক্লায়েন্ট সাইডে জাভাস্ক্রিপ্ট চলছে, আপনার সার্ভার সাইডে পার্ল বিল্ডিং পৃষ্ঠাগুলি রয়েছে, আপনার পার্ল কোড এবং ব্যাঙ্কের কোর প্রসেসরের মধ্যে বিমূর্ত স্তর হিসাবে অভিনয় করে সি ++ তে একাধিক পরিষেবা লেখা রয়েছে, সি ++ অ্যাপ্লিকেশনগুলির একটি আরও সেট যা বিভিন্ন স্তরগুলির মধ্যে বার্তাগুলি রুট করুন, বিভিন্ন প্রক্রিয়াগুলির স্বাস্থ্য পর্যবেক্ষণ করতে এবং অভ্যন্তরীণ মনিটর ইত্যাদিতে তাদের অবস্থানের প্রতিবেদন ইত্যাদি ইত্যাদির জন্য সি ++ অ্যাপ্লিকেশন এবং পার্ল স্ক্রিপ্টগুলির বিমূর্ততা etc.

মনোলিথিক অ্যাপ্লিকেশনগুলি এখনও বিদ্যমান, তবে তারা বিভিন্ন কারণে বিভিন্ন ভাষার সুবিধা নিতে পারে। আপনি জাভাতে 90% অ্যাপ্লিকেশন লিখতে পারেন, তবে আরও পারফরম্যান্স-সমালোচনামূলক বিভাগগুলির জন্য জেএনআই ব্যবহার করুন সি বা সি ++ উপার্জন করতে।


আমি আশ্চর্য হয়েছি যে কেউ এসকিউএল (বা আপনার পছন্দের ভাষাটির কোয়েরি) উল্লেখ করেনি, বেশিরভাগ অ্যাপ্লিকেশনগুলিতে এখন কমপক্ষে কিছুটা "স্ট্যাক" আর্কিটেকচার রয়েছে।
ব্যবহারকারী 3067860

3

'বিভিন্ন ভাষায় আলাদা আলাদা শক্তি রয়েছে' এর মোটিফ: ফরট্রেনের একটি খুব নির্দিষ্ট উদাহরণটি আমি উল্লেখ করতে চাই।

ফোর্টরান প্রকৃতপক্ষে ইঞ্জিনিয়ারদের সংখ্যা বিশ্লেষণের কাজটি সহজ করার জন্য তৈরি করা হয়েছিল এবং ফোর্টরান সংকলকগুলি খুব দক্ষ সংখ্যাসূচক কোড নির্গমন করতে অনেক প্রচেষ্টা শুরু করেছে। অন্যদিকে, সেই প্রথম দিনগুলি থেকে কম্পিউটারের ব্যবহার হাজারো দিক দিয়ে বিস্ফোরিত হয়েছে যার মধ্যে কোনওটিই সাংখ্যিক বিশ্লেষণের সাথে জড়িত নয় এবং প্রোগ্রামিং ভাষার বিকাশ মূলত 'আসল' বিশ্বকে [ক্ষমা করার শোধকে] অগ্রাহ্য করার মামলা অনুসরণ করেছে।

SO: এটি আজ, এবং আপনি নিজেকে মোটামুটি বিস্তৃত পণ্য সহ একটি সংস্থার হয়ে কাজ করতে দেখছেন, এর বেশিরভাগই জাভাতে লিখেছেন (আমি এখানে ব্যক্তিগত অভিজ্ঞতা থেকে বলি) । তবে আপনি দেখতে পান যে পণ্যটির মূল বৈশিষ্ট্যগুলির মধ্যে একটি সংখ্যক বিশ্লেষণের কিছু রূপ পুনর্নির্মাণ করতে চলেছে, এবং সেই নির্দিষ্ট বিশ্লেষণের জন্য সমস্ত সেরা কোড ইতোমধ্যে নেট - ফোর্টরান এ উপলব্ধ। তো তুমি কি কর? আপনি এই ফোর্টরান কোডগুলির মধ্যে একটি ডাউনলোড করেন, এর ইন্টারফেসটি [অর্থাত্ শীর্ষস্থানীয় সাব্রোটিনের যুক্তিগুলি] বের করুন, সি এর জন্য একটি জেএনআই মোড়ক চেপে ধরুন এবং এটি জাভা ক্লাস হিসাবে প্যাকেজ করুন। BAM! আপনাকে একবারে তিনটি ভাষায় বিকাশ করতে হবে। [বিশেষত যদি আপনি দেখতে পান যে আপনার ফোর্টরান কোডটি COMMON ব্লক ব্যবহার করে - যেমন স্ট্যাটিক স্টোরেজ - এবং থ্রেড-সুরক্ষার জন্য সংশোধন করতে হবে]


4
অথবা আপনার ভাল-পরীক্ষিত ফরট্রান কম্পিউট কোরকে এক পর্যায়ে একটি নতুন অ্যালগরিদম কল করে উন্নত করা হবে যা পয়েন্টারগুলিতে হ্যাপ সাজানোর উপর নির্ভর করে, যা আপনি ইতিমধ্যে সি তে লিখেছেন এবং স্ক্যান করার জন্য আপনার কাছে জটিল ইনপুট ফাইল রয়েছে, তাই আপনি লেখেন ফ্লেক্স মধ্যে স্ক্যানার। ওহ, এবং সম্ভবত আপনি উপরে একটি জিইউআই চাইবেন, যা আপনাকে সি ++ থেকে কল করতে হবে। অথবা ক্লায়েন্ট সত্যই পুরো
জিনিসটিকে

3

কারণ প্রোগ্রামিং এক কাজ নয়। এমনকি পণ্য তৈরি করাও একটি কাজ নয়। একাধিক ধরণের কাজ রয়েছে যা বিভিন্ন ভাষার সাথে সেরা প্রকাশ করা হয়।

এটিকে আরও কংক্রিট করার জন্য, আসুন এককভাবে থাকা অ্যাপের মতো সাধারণ কিছু ধরে নেওয়া যাক (বিতরণকৃত অ্যাপ্লিকেশনের জন্য আরও কাজ করা যেতে পারে)।

একটি পণ্য হতে হবে

  • লিখিত
  • একসাথে রাখুন (এতে স্থাপনার জন্য চিত্র, ফন্ট ইত্যাদির মতো সংস্থান এবং সংস্থান সংগ্রহ উভয়ই জড়িত)
  • মোতায়েন
  • কনফিগার
  • নজর দেওয়া

এমন একটি ভাষা যা কোনও পণ্যের রান-টাইম লেখার জন্য ভাল হতে পারে, কোনও পণ্য এক সাথে রাখার জন্য তেমন ভাল হওয়ার খুব কমই সম্ভাবনা। ইত্যাদি।

তবে এমনকি কোনও পণ্য রচনার প্রক্রিয়াটিও 1 ভাষায় অনুকূলভাবে করা যায় না।

ধরা যাক, প্রচুর স্ট্রাকচার্ড ডেটা রয়েছে যা পণ্যটিতে পরিচালিত হয়। লেখার সময় কি তথ্যের কাঠামো জানা যায়? যদি এটি হয়, আপনি মোতায়েনের সময় কিছু ডাটাবেস কনফিগার করতে চাইবেন। এটি সর্বোত্তমভাবে এমন একটি ভাষায় সম্পন্ন হয়েছে যা এমন ভাষা তৈরি করতে পারে যা আপনার রান সময়কে সংকলন করবে।

এখন যদি সময়ের সাথে সাথে ডেটার কাঠামো বদলাতে পারে? কোড এবং ডাটাবেস কনফিগারেশনে নতুন ডেটা কনস্ট্রাক্টসগুলিকে রূপান্তর করার জন্য আপনার কাঠামোগত উপায় দরকার। এটি অন্য কোনও ভাষায় সেরা।

আপনি কি একই ভাষাতে সব করতে পারেন? অবশ্যই। তবে আপনার কার্যকারিতা নির্ধারণ করা হয় আপনি কীভাবে কোনও প্রকল্প শেষ করতে পারেন এবং এটির পরিবর্তনে কতটা নির্ভরযোগ্য। যদি আপনার প্রচুর কাজ ইতিমধ্যে বিদ্যমান সরঞ্জামগুলি দিয়ে স্বয়ংক্রিয় করা যায়, তবে আপনি যা করতে 3 মাস সময় নেন তা অন্য কারও দ্বারা 2 দিনের মধ্যে করা যেতে পারে। তবে কেউ পুনরাবৃত্তির মাধ্যমে আপনি কী করবেন তা স্বয়ংক্রিয় করতে অন্য ভাষা ব্যবহার করবে।


"একটি ভাষা যা পণ্যের রান-টাইম লেখার জন্য ভাল হতে পারে তেমন ভাল হওয়ার খুব কমই সম্ভাবনা থাকে" ... প্রোগ্রামিং ভাষাগুলি এলোমেলো প্রক্রিয়া থেকে বেরিয়ে আসে না, সুতরাং সম্ভাবনা সম্পর্কে এভাবে কথা বলা কিছুটা অদ্ভুত । প্রোগ্রামিং ভাষা কিছু কাজ সমাধান করার জন্য ডিজাইন করা হয়। এখন আপনার বক্তব্যটি হ'ল কোনও ভাষা দুর্ঘটনাক্রমে অন্য একটি সমস্যাও সমাধান করার সম্ভাবনা নেই যা এটি সমাধানের জন্য তৈরি করা হয়নি। যদিও আমি যুক্তি দিয়ে বলব যে প্রোগ্রামিংয়ের সারমর্মটি হ'ল যে সমস্ত সমস্যার সমাধান করতে ইচ্ছুক হতে পারে তার বিমূর্ততা এবং সত্যই নকশা করা ভাষাটি যে কোনও কাজের জন্য ঠিক ততটাই ভাল হওয়া উচিত।
বাম দিকের কাছাকাছি

@ লেফটারআউন্ডআউব কোনও ভাষা কী করতে পারে এবং এটি কীভাবে ভালভাবে প্রকাশ করে তা বিভ্রান্ত করা একটি সাধারণ ভুল। একটি উচ্চ-স্তরের ভাষার উদ্দেশ্য কোনও সমস্যা সমাধান করা নয়। এটি কোনও সমস্যার সমাধানকে এমনভাবে প্রকাশ করার জন্য একটি সিনট্যাক্স হিসাবে কাজ করা হয় যাতে কোনও সরঞ্জাম কম্পিউটারকে সম্পাদন করার জন্য এই অভিব্যক্তিটিকে একটি কার্যে রূপান্তর করতে পারে। এটি দেওয়া, এটি মনে রাখা গুরুত্বপূর্ণ যে প্রকাশের আসল কাজটি লোকেরা করে। এবং লোকেরা বিভিন্ন ডোমেনের সমস্যার সমাধান বর্ণনা করতে বিভিন্ন বিমূর্ত ব্যবহার করে।
গ্রাভকিন

নিশ্চিতভাবেই লোকেরা বিভিন্ন বিমূর্ত ব্যবহার করে। আমার বক্তব্যটি হল একটি ভাল ভাষা এই সমস্ত বিমূর্ততা প্রকাশ করতে সক্ষম হওয়া উচিত।

টুইটারে যে কোনও কিছুকে ভালভাবে প্রকাশ করার জন্য জিনিসটির দিকে সরাসরি নজর দেওয়া দরকার। সকল প্রকার বিমূর্ততা ভালভাবে প্রকাশ করার চেষ্টা করার অর্থ তাদের সবার দিকে দৃষ্টি আকর্ষণ করা। এবং এটি মনোযোগ ছড়িয়ে দিতে এবং ধারণাগুলি খারাপভাবে প্রকাশ করার কারণ হবে। কী জোর দেওয়া উচিত এবং তাতে মনোনিবেশ করার ক্ষেত্রে কোনও ভুল নেই।
গ্রাভকিন

কোথাও সরাসরি দৃষ্টি আকর্ষণ করতে সক্ষম হওয়া আসলে এটি করার মতো জিনিস নয়।
মিনিটে বাম দিকের বাইরে

1

সফ্টওয়্যার বিকাশ এমন পর্যায়ে এগিয়ে গেছে যেখানে আপনি একই প্রকল্পে বিভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন এবং আপনি এটি কার্যকর করতে পারেন।

তাহলে আপনি কেন একাধিক ভাষা ব্যবহার করবেন তা নিয়ে প্রশ্ন রয়েছে ।

একটি কারণ হ'ল ভাষাগুলি পুরানো হয়ে যায় এবং আস্তে আস্তে নতুনগুলির দ্বারা প্রতিস্থাপিত হয় এবং আপনি যদি ভাগ্যবান হন তবে এটি কিছুটা হলেও করা যায়। সুতরাং আপনার প্রকল্পে পুরানো এবং নতুন ভাষার মিশ্রণ থাকবে।

আর একটি কারণ পরিস্থিতি হ'ল প্ল্যাটফর্ম এ-তে ভাষা এক্স ব্যবহার করা খুব বেশি, প্ল্যাটফর্ম বিতে ভাষা ওয়াই অনেক বেশি ব্যবহৃত হয়, তবে ভাষা জেড উভয় প্ল্যাটফর্মে সমর্থনযোগ্য। সুতরাং প্রচলিত কোডটি Z ভাষায় লেখা হয় যা প্ল্যাটফর্মের উপর নির্ভর করে এক্স বা ওয়াইয়ের সাথে মিলিত হয়।

এবং লোকেরা অন্যের লিখিত কোডটি ব্যবহার করতে পছন্দ করে (অন্য কথায়, কোডটি যে এগুলি নিজে লিখতে তাদের সময় দিতে হয় নি)। তারা যে কোনও ভাষায় অন্যের লিখিত কোডটি নির্বিঘ্নে ব্যবহার করতে পারে, এবং তারপরে তাদের পছন্দের ভাষায় কোড যুক্ত করে।


8
প্রথম বাক্যটি সম্পর্কে: মিশ্র-ভাষা প্রোগ্রামগুলি 50 বছরেরও বেশি সময় ধরে একটি বিষয় হয়ে দাঁড়িয়েছে।
blrfl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.