জেনেরিক প্রোগ্রামিং, এটি শিল্পে কতবার ব্যবহৃত হয়


11

আমি এই মুহুর্তে একাডেমিক সেটিংয়ে প্রোগ্রামিং করি, তাই আমি যা চাই তা ব্যবহার করতে পারি। আমি কয়েকটি জিনিসের জন্য বুস্ট গ্রাফ লাইব্রেরিটি ব্যবহার করছি এবং আমি ভাবছি জিপি আরও গভীরভাবে বুঝতে ব্যয় করা বিনিয়োগের পক্ষে এটি মূল্যবান কিনা wond

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

(আমি যখন এটি লিখছি, আমি দেখতে পাচ্ছি যে জেনেরিক-প্রোগ্রামিং এমনকি কোনও বৈধ ট্যাগ নয়!)


স্ট্যাকওভারফ্লোতে ট্যাগ বিতরণ সম্ভবত এখানকার একের চেয়ে পরিসংখ্যানগত প্রমাণ হিসাবে অনেক বেশি কার্যকর। দেখুন stackoverflow.com/questions/tagged/generic-programming , stackoverflow.com/questions/tagged/generics
পিটার Török

উত্তর:


7

আমি কৌতূহলী - জেনেরিক প্রোগ্রামিং (জিপি) শিল্পে বেশি ব্যবহৃত হয়?

এটি সত্যই দল এবং প্রকল্পের প্রেক্ষাপটে নির্ভরশীল।

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

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

তবে গেম ডে-তে, বেশিরভাগ লোকেরা কেবল কোনও রূপক এড়িয়ে চলবে।

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

এটি সাধারণ নয় তবে এটি বিদ্যমান এবং কিছু কুলুঙ্গি ডোমেনগুলি (কিছু বৈজ্ঞানিক বা সংখ্যা-ক্রাঞ্চিং এম্বেড থাকা প্রসঙ্গে) মেটাপগ্রোমিং বা শিখতে ইচ্ছুক ব্যক্তিদের অনেক কিছু জানা প্রয়োজন।

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

বুস্ট (http://boost.org) লাইব্রেরির একটি সেট যা কিছু ভারী রূপক কালো যাদু দ্বারা তৈরি, এবং প্রচুর সি ++ শপগুলিতে "এসটিএল ++" হিসাবে ব্যবহৃত হয়, এটি এসটিএলের একটি সম্প্রসারণ (এবং এটি)। প্রতিটি দোকান বিভিন্ন কারণে এটি ব্যবহার করে না, যেমন সংকলক সামঞ্জস্যতা (কিছু বুস্ট লাইব্রেরি আপনার সংবেদককে প্রতিবার ক্ষমা করতে পারে যে তিনি আপনার অনুভূতিতে আঘাত করেছেন ...) এবং আরও প্রায়ই কারণ কিছু বিকাশকারী বুঝতে সক্ষম না হওয়া পছন্দ করেন না কীভাবে একটি সরঞ্জাম ভিতরে কাজ করে (বুস্ট.স্পিরিট বোঝার চেষ্টা করুন ...)

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

কারওরই একই চাহিদা, প্রসঙ্গ বা দল নেই বলে noক্যমত্য নেই।

তবে এখনও, স্পষ্টতই, এটি ব্যবহৃত হয়। আরও জিজ্ঞাসা করুন কে আরও বেশি বাস্তব-বিশ্বের উদাহরণ পেতে তাদের মেইলিং তালিকার উপরে ব্যবহার করে?


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

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

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

5

আমি কৌতূহলী - জেনেরিক প্রোগ্রামিং (জিপি) শিল্পে বেশি ব্যবহৃত হয়?

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

আমার অনুমান যে বেশিরভাগ প্রোগ্রামাররা ওওপি-র সাথে অনেক বেশি স্বাচ্ছন্দ্যবোধ করে বা জিপি জোর দেয় না বা সমর্থন করে না এমন ভাষাগুলি ব্যবহার করে, যাতে সি ++ তে এসটিএল ডেটা স্ট্রাকচার / ফাংশনগুলি কল করার বাইরে আমার ধারণাটি হ'ল জিপি ঘন ঘন ব্যবহৃত হয় না প্রস্তুতিতে.

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


পয়েন্ট নেওয়া, আমি বোঝাতে চাইনি যে ওওপি এবং জিপি হয় / অথবা পছন্দ is তবে, আমি যে প্রকল্পগুলি দেখেছি তাদের বেশিরভাগই জাভাতে কঠোরভাবে OOP বলে মনে হচ্ছে। আমি মনে করি জাভার আরও সাম্প্রতিক সংস্করণগুলি জিপি সমর্থন করে, তবে জাভা প্রোগ্রামারদের কোন ভগ্নাংশ সত্যই সেই কার্যকারিতাটি ব্যবহার করে? যেমনটি আমি বলেছিলাম, আমি শিল্পে কাজ করছি না এবং আমার দৃষ্টিকোণটি ভালভাবে জড়িয়ে যেতে পারে, এ কারণেই আমি প্রশ্নটি জিজ্ঞাসা করেছি।
বিডি 1

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

@ ফ্রাস্ট্রেটড উইথফর্মস ডিজাইনার: জাভাতে জেনারিকস সি ++ টেমপ্লেট থেকে সম্পূর্ণ পৃথক। জাভা জেনেরিকগুলি 100% খাঁটি সিনট্যাকটিক চিনি এবং মেটা-প্রোগ্রামিং সমর্থন করে না।
কেভিন

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

4

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

কোড এটির সদৃশতা এড়াতে এবং সংকলন-সময় বহুবর্ষবাদ (ভার্চুয়াল প্রেরণ ছাড়াই) অর্জন করতে লোকেরা এটি ব্যবহার করে।

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