কেন প্রতিটি প্রোগ্রামের সাথে বান্ডিল না করে লাইব্রেরিগুলি আলাদাভাবে প্রেরণ করা হয়?


10

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

তাদের বোঝাতে আমি কী যুক্তি ব্যবহার করতে পারি?


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

সেখানে আলোচনার সংক্ষিপ্তসার হিসাবে:

বান্ডেল মুক্ত:

  • পাইথন 3 এ কিছুটা সহজ পোর্টিং (ছোট আর্গুমেন্ট আইএমএইচও)

  • বিতরণের জন্য আরও সহজ প্যাকেজিং

  • ব্যবহারকারীদের কাছে দ্রুত (সুরক্ষা) বৈশিষ্ট্য আপডেট

  • "প্যাকেজিং এবং হ্যান্ডলিং নির্ভরতা হার্ড সমস্যা, তবে সেগুলি সমাধান করা হয় are এটি অবশ্যই এমন একটি অঞ্চল নয় যেখানে আমাদের নিজের কাজ করা উচিত" "

বান্ডিলিং রাখুন:

  • স্থাপন. এটি লিনাক্সে সহজ, ম্যাকের চেয়ে শক্ত এবং উইন্ডোজে খুব শক্ত। সু অ্যাক্সেস এবং অন্যান্য সমস্যার অভাব।

  • এটি সিমপাইয়ের একটি অবিচ্ছেদ্য অঙ্গ, অর্থাত সিম্পি এটি ছাড়া কাজ করে না (মোটেও)

  • নেই কোন অন্যান্য প্যাকেজ, যে mpmath এর কাজ করতে পারেন

  • "আমি যখন ব্যবহারকারী হিসাবে সিম্পি ডাউনলোড করি, তখন আমি এটি কেবল কাজ করার প্রত্যাশা করি।"


এটি আমার নির্দিষ্ট পরিস্থিতি, তবে আমি একটি উত্তর গ্রহণ করব যা একটি ভাল, সাধারণ উত্তরও সরবরাহ করে।


আরও ভাল উত্তর পেতে আপনাকে আপনার নির্দিষ্ট পরিস্থিতির সাথে আরও তথ্য সরবরাহ করতে হবে। উদাহরণস্বরূপ, আপনি কোন পরিবেশটি এটি চালানোর পরিকল্পনা করছেন? এটি কি ইন্টারনেটে প্রকাশিত হবে?
tshpang

আপনার অ্যাপ্লিকেশন উন্মুক্ত উত্স?
আন্তন বারকোভস্কি

@ অ্যান্টন হ্যাঁ, এটি সিমপি , প্রতীকী গণিতের জন্য একটি উন্মুক্ত উত্স পাইথন লাইব্রেরি। আমি এটিতে জিএসওসি শিক্ষার্থী (সম্পূর্ণ প্রকাশ :)) হিসাবে কাজ করছি।
ভিপিरिक

@ শেপাপাং আলোচনাটি এখানে দেখা যাবে: কোড. google.com/p/sympy/issues/detail?id=2482
ভিপিয়ারিক

@ ভিপরিক: আপনার আলোচনার সংক্ষিপ্ত বিবরণটি সংক্ষিপ্ত করে রাখা অতিরিক্ত আনন্দিত হবে, আপনার প্রশ্নের উত্তর দিতে আগ্রহীদের জন্য সময় বাঁচাতে।
tspang

উত্তর:


5

তবুও অন্য উত্তর, তবে একটিকে আমি সর্বাধিক গুরুত্বপূর্ণ বলে মনে করি (কেবল আমার নিজের নিজস্ব মতামত), যদিও অন্যরাও ভাল উত্তর।

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


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

শেষ পর্যন্ত, এটি সম্ভবত সবচেয়ে গুরুত্বপূর্ণ পয়েন্ট। আমি অন্যান্য উত্তরগুলির সাথেও একমত, তবে আমাকে কেবল একটি বেছে নিতে হয়েছিল। :)
ভিপিরিক

6

আপনি যে সুবিধাগুলি উল্লেখ করেছেন তার উপরে (সুরক্ষা, প্যাকেজিং, বৈশিষ্ট্য), আমি আরও কিছু সম্পর্কে ভাবতে পারি:

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

  • এটি অন্যান্য প্রকল্পের জন্য কার্যকর হওয়ার ক্ষেত্রে, এটি সাধারণত ডিস্ক ব্যবহারের আকার হ্রাস করে (যেমন কোডের কেবলমাত্র একটি অনুলিপি)।

  • এটি আপনার কোডের মান উন্নত করবে, আপনাকে কিছু (খুব প্রয়োজনীয়) রিফ্যাক্টরিং করতে বাধ্য করবে। উপরের প্রথম পয়েন্টের মতো এটিও আপনার কোডের মানের উপর নির্ভর করে।

  • গ্রন্থাগারের ব্যবহারকারীর সংখ্যা বৃদ্ধি করা (যদি এটি বিচ্ছিন্ন হয়ে যায়) এটি আরও জেনেরিক করতে সহায়তা করবে, এটি সম্ভবত এর মানেরও উন্নতি করবে।


1
সমস্ত ভাল পয়েন্ট। আমি মনে করি এটি "ফিউচার-প্রুফিং" হিসাবে পড়া যেতে পারে: আপনার পয়েন্টগুলির মধ্যে কয়েকটি বর্তমানে প্রয়োগ হয় (এমপিএমথ এই মুহূর্তে কেবলমাত্র কয়েকটি প্রকল্পে ব্যবহৃত হয়) তবে এটি সহজেই দেখা যায় যে আপনার প্রতিটি পয়েন্ট প্রতিটি নতুন প্রকল্পের জন্য মূল্য অর্জন করে এমপিএমথ ব্যবহার করে।
ভিপিরিক

4

সুবিধাগুলি সুস্পষ্টরূপে, আপনার ক্ষেত্রে প্রোগ্রামের সাথে শপিংয়ের লাইব্রেরির জন্য মোতায়েনের সহজতাটি মূল যুক্তি বলে মনে হচ্ছে।

এখানে বান্ডিলিংয়ের বিরুদ্ধে আরও কিছু যুক্তি দেওয়া হয়েছে:

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

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

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

  • নির্ভরতা উপলব্ধ না থাকলে বা ভুল সংস্করণ থাকলে কেউই আপনাকে পরিষ্কার ত্রুটি বার্তা প্রদর্শন করতে বাধা দেয় না।

  • লোকেরা প্রায়শই এটিকে ঘৃণা করে থাকে যখন প্রোগ্রাম নিজেকে নিজের চেয়ে আরও চালাক বলে মনে করে। ব্যবহারকারীদের তাদের নিজস্ব সিস্টেমের যত্ন নিতে দিন।


আপনি শেষ পয়েন্টটি ব্যাখ্যা করতে পারেন? আমি এটি বলতে পারছি না এটি বান্ডিলিংয়ের পক্ষে / বিপরীতে আর্গুমেন্ট কিনা।
tshepang

3
আমি এটি বান্ডিলের বিরুদ্ধে হিসাবে বুঝতে পারি - ব্যবহারকারীরা যা চান তা ইনস্টল করতে চান, আমাকে তাদের উপর কোনও বিশেষ সংস্করণ জোর করে না।
ভিপিরিক

3

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


3

একটি আকার সব ফিট করতে হবে না।

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

বাইনারি বিতরণ (যদি আপনি তাদের সরবরাহ করেন) যে কোনও উপায়ে যেতে পারে; বান্ডিলিং সম্ভবত তাদের জন্য বোধগম্য হয়, কারণ এগুলি ডাউন স্ট্রিম দ্বারা ব্যবহৃত হয় না।

তবে উইন্ডোজ এবং ম্যাক ইনস্টলারগুলির জন্য আপনি বিপরীত সিদ্ধান্ত এবং বান্ডিল নিতে না পারার কোনও কারণ নেই।


1
যদিও আমি সাধারণভাবে একমত, এটি একটি অতিরিক্ত বোঝা তৈরি করে (তবে ছোট) এর অর্থ সম্ভবত যে কেউই এই সমাধানটিকে ফিরে পাবে না।
ভিপিরিক

2

বান্ডিলিং বনাম নির্ভর প্যাকেজিং বিশ্বে একটি পুরানো বিতর্ক। এই নথিটি এই দুটি বিদ্যালয়ের চিন্তাভাবনা সম্পর্কে জানায়: http://www.aosabook.org/en/packaging.html


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