লোকেরা কেন অনেক প্রোগ্রামিং ভাষায় কিছু গ্রন্থাগার পুনরায় লেখায়?


13

কিছু লাইব্রেরি রয়েছে, যা তাদের বিভিন্ন সংস্করণে বিভিন্ন প্রোগ্রামিং ভাষায় রচিত রয়েছে যেমন উদাহরণস্বরূপ Lucene , যা জাভাতে লেখা (যেমন তারা 100% খাঁটি জাভা), তবে এর সংস্করণগুলি C ++, C, Perl এও রয়েছে , রুবি, লিস্প এবং অন্যান্য কয়েকটি ভাষা। এবং আমি এই ভাষাগুলিতে বাস্তবায়ন সম্পর্কে কথা বলছি , কেবল এফএফআই ইন্টারফেস নয়।

কেন মানুষ এটা করে? আমি একটি স্পষ্ট কারণ দেখতে পাচ্ছি: যখন কোনও প্রকল্পের কম নির্ভরতা থাকে তখন স্থাপনা এবং বিতরণ (এবং সম্ভবত উন্নয়নও সহজ) হয়। তবে কি আর কিছু আছে? কোন পরিস্থিতিতে এটি মূল্য?


4
আপনার কার্যকরকরণের পরিবেশের প্রাকৃতিক সীমানা জুড়ে যোগাযোগ করা খুব ব্যয়বহুল হতে পারে ।

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

উত্তর:


16

কিছু কারণ আমি এটি করেছি (আমার ক্ষেত্রে হাসকেলে সি কোডটি পুনরায় লিখুন):

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

19

সাধারণত একটি নির্দিষ্ট প্ল্যাটফর্মটিতে একটি লাইব্রেরিটিকে "নেটিভ" হিসাবে পুনর্নির্মাণের জন্য নিম্নলিখিত মঞ্জুরি দেয়:

  • সহজ স্থাপনা এবং বিতরণ
  • সহজ ডিবাগিং
  • আপনার সঠিক প্ল্যাটফর্মের জন্য উপযুক্ত আরও আইডেম্যাটিক এপিআই
  • প্রায়শই ভাল পারফরম্যান্স (প্ল্যাটফর্ম ইন্টারপ ব্যথা হতে পারে)
  • সামঞ্জস্যের জন্য এখনও মূল নকশার সমস্যাগুলি স্থির করা হচ্ছে

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


11

কিছু লোক এটি একটি নতুন ভাষা শেখার জন্য সহায়তা করে। তারা পূর্বের ভাষায় ফ্যামিলার ছিল এমন একটি লিব বেছে নেয়, দেখুন যে এটির জন্য নতুনের প্রয়োজন আছে এবং এটি বন্দরতে শুরু করে।

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

এটিতে একবার হয়ে গেলে, কোনও বই বা টিউটোরিয়ালের মধ্যে পাওয়া অনেকগুলি নমুনা প্রকল্পের মতো কোড ফেলে দেওয়া না হওয়াতে এটির অতিরিক্ত সুবিধাও রয়েছে, এটি আসলে সম্প্রদায়টি ব্যবহার করতে পারে এমন কিছু হতে পারে, সংযোজনকারী, আলোচক ইত্যাদি can


0

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.