বিরোধী ওরিয়েন্টেড প্রোগ্রামিং দৃষ্টান্তটি কি পুরানো হয়ে গেছে যেহেতু এটি অ্যান্টি-মডুলার এবং অ্যান্টি-প্যারালাল? [বন্ধ]


23

আমি সিএমইউর অধ্যাপক রবার্ট হার্পার পোস্ট করা নতুনদের কাছে টিচিং এফপি বিতর্কিত নিবন্ধটি পড়েছি । তিনি দাবি করেছেন যে সিএমইউ আর আর্টিকোরিটি কোর্সে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং শেখাবে না এটি "একটি আধুনিক সিএস পাঠ্যক্রমের জন্য অনুপযুক্ত"।

এবং তিনি দাবি করেছেন:

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং পুরোপুরি প্রবর্তক পাঠ্যক্রম থেকে মুছে ফেলা হয়, কারণ এটি একেবারেই প্রকৃতির দ্বারা অ্যান্টি-মডুলার এবং অ্যান্টি-প্যারালাল।

কেন ওওপি-কে অ্যান্টি-মডুলার এবং অ্যান্টি-প্যারালাল হিসাবে বিবেচনা করবেন?



14
Buhwaaaah ?! ওও পদ্ধতিগত চেয়ে তুলনামূলক এবং সমান্তরালতা সহজ করে তোলে এবং এফপির সাথে পারস্পরিক একচেটিয়া নয়। রঙিন আমাকে বিভ্রান্ত।
ম্যাট এলেন

4
তারা তাদের পাঠ্যক্রমটি নতুন করে তৈরি করেছে যাতে তাকে নতুন প্রোগ্রামটি বিক্রি করতে হয় এবং একেবারে কোনও ডেটা না দিয়েই সাহসী দাবি করা হয়। জটিল ফাংশনাল প্রোগ্রামগুলি তাদের ওওপি সহযোগীদের তুলনায় আরও সমান্তরাল বা মডুলার হওয়ার কোনও প্রমাণ নেই।
davidk01

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

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

উত্তর:


30

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

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

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

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

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

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


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

2
আপনি এখানে যা বলছেন তার সাথে আমি সাধারণত একমত হয়েছি, আমি উল্লেখ করতে চাই যে নকশার ধরণগুলি সমস্ত প্রোগ্রামিং প্যারাডিমগুলিতে আসে। ফাংশনাল প্রোগ্রামিংয়ের জন্য, আমি মনড এবং মানচিত্র / কমানোর মতো জিনিসগুলি নির্দেশ করব।
আনম

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

19

এটি সম্ভবত একটি সাহসী দাবি করা, তবে আমি একরকম সন্দেহ করি যে এই রবার্ট হার্পার সত্যই তার জীবনে সত্যিকারের সফ্টওয়্যারটি কখনও লেখেনি । তিনি যে বিষয়টি নিয়ে নিজেকে উদ্বিগ্ন মনে করেন তা হলেন এমএল এবং স্ট্যাটিকাল টাইপ সিস্টেম। এটি যতটা বড় অবদান সম্ভবত হতে পারে, আমি ওওপি সম্পর্কে তার দাবির প্রাসঙ্গিকতা কী তা আমি দেখতে পাই না।

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

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

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

ওওপি সমস্যাটি হ'ল অ্যালান কে এটিকে সংজ্ঞায়িত করেছেন এমন অর্থে খুব কম লোকই বুঝতে পারে।

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

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

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


1
বার্তা প্রেরণের জন্য +1 এবং 'জাভা সহ' এর জন্য +1। দুর্ভাগ্যক্রমে তারা যদি জাভা সরিয়ে ফেলেন তবে তারা কেবল এটি সি # দিয়ে প্রতিস্থাপন করতে এবং এর উত্তরাধিকারটি চালিয়ে যেতে চাইবে।
gbjbaanb

সমালোচকদের জন্য @ back2dos +1, জাভার জন্য -1। নিশ্চয়, স্মার্টটাক জাভার চেয়ে "অনেক বেশি ওও", ​​তবে কে এটি ব্যবহার করে? সি-এর মতোই নতুনদের জন্যও উদ্দেশ্য-সি শক্ত।
মার্টিনাস

@ মাআর্টিনাস: আপনি যদি শিক্ষার এবং একাডেমিক ক্ষেত্রে স্কাককে বিস্তৃতভাবে ব্যবহার করতে পারেন তবে যদি এটি আপনার প্রশ্নের উত্তর দেয়। জাভা হিসাবে: আপনি এটি পছন্দ করতে পারেন, আমি নাও পারি। অনেকটা কফির মতো, এটি ব্যক্তিগত পছন্দের বিষয় এবং এটি নিয়ে আলোচনার কোনও অর্থ নেই। তবে জাভা ওওপি-র পরিচিতির জন্য অনুপযুক্ত, আইএমএইচও হ'ল জাভার প্রকৃতি এবং ওওপি-র ধারণাটির একটি অনস্বীকার্য নিদর্শন এবং আমি যা বলেছিলাম ঠিক তা-ই। জাভার জনপ্রিয়তা এটিকে দূরে সরিয়ে দেবে না। সি হিসাবে, আমি আপনাকে joelonsoftware.com/articles/ThePerilsofJavaSchools.html পড়ার পরামর্শ দিচ্ছি ।
back2dos

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

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

12

আপনি প্রতিটি স্ট্রাইপের জেলিয়ট পাবেন।

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

আজ থেকে বিশ বছর পরে নিঃসন্দেহে আমাদের কার্যকরী প্রোগ্রামিংয়ের বিরুদ্ধে আরও কিছু প্রতিক্রিয়া হবে।


1
ইতিমধ্যে আছে!
কোয়ান্ট_দেব

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

5

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

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

সমান্তরালকরণ : সমান্তরাল প্রোগ্রামিংয়ের ক্ষেত্রে, বেশিরভাগ ফ্রেমওয়ার্কগুলি ইন্টারআপ্টগুলি থ্রেডিং এবং এখন যথাযথ সমান্তরালতা সমর্থন করে such

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


4

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

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

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

অদ্ভুতভাবে যথেষ্ট, উভয় স্কুলই কিছু সত্যই ভাল প্রোগ্রামার তৈরি করেছে। চিত্রে যান.

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