অন্তর্নিহিত সমান্তরালতা / একত্রীকরণ কেন বেশি বিস্তৃত হয় না? [বন্ধ]


13

অন্তর্নির্মিত সমান্তরালতা many এটি কম্পিউটারে রেখে অনেক প্রোগ্রামার থেকে একটি বড় বোঝা দূরে নিতে পারে। সুতরাং ... বর্তমানে কেন এটি বেশি বিস্তৃত নয়?


^ অন্তর্নিহিত সমান্তরালতা হ'ল একটি প্রোগ্রামারকে একবারে একাধিক জিনিস কীভাবে করা যায় তা নিজেই নির্ধারণ করতে সক্ষম করা, কোনও প্রোগ্রামারকে থ্রেড এবং এর মতো ব্যবহার করে এই কাজটি করার দরকার নেই of


প্যারাসেল প্রোগ্রামিং ভাষাটি দেখুন, মনে হয় তারা কেবলমাত্র অন্তর্নিহিত সমান্তরালতা চেষ্টা করছে forge.open-do.org/plugins/moinmoin/parasail

উত্তর:


11

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

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


1
স্কিমে, কিছু লুপ রয়েছে যা স্পষ্টভাবে আদেশের গ্যারান্টি না দেওয়া বেছে নেয়।
জাভিয়ের

কুল আমি স্কিম সম্পর্কে জানতাম না
জ্যাচারি কে

5

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

লিগ্যাসি প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি ধীরে ধীরে ভাষা থেকে বহু থ্রেডযুক্ত বৈশিষ্ট্যগুলি সমর্থন করার চেষ্টা করছে (জাভা যোগ করেছে java.util.concurrent)।

নতুন ভাষাগুলি যা ভবিষ্যতে আসবে সেগুলি থ্রেডিং এবং চুক্তি সমর্থনে আরও ভাল হবে।


4

অন্যান্য উত্তরে বর্ণিত পয়েন্টগুলি বাদ দিয়ে (প্রমাণ করা শক্ত নয় যে অপারেশনগুলি স্বতন্ত্র, এবং প্রোগ্রামাররা সিরিয়ালি চিন্তা করে), তৃতীয় বিষয় বিবেচনা করা দরকার: সমান্তরালনের ব্যয়

সত্য, এটি যে থ্রেড সমান্তরালতার সাথে এটির সাথে উল্লেখযোগ্য ব্যয় যুক্ত হয়েছে:

  • থ্রেড তৈরি খুব ব্যয়বহুল: কার্নেলের কাছে, থ্রেড শুরু করা প্রক্রিয়া শুরু করার মতোই। আমি সুনির্দিষ্ট ব্যয় সম্পর্কে নিশ্চিত নই, তবে আমি বিশ্বাস করি এটি দশটি মাইক্রোসেকেন্ডের ক্রমে।

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

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

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

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


0

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

অর্থাৎ এটি প্রাকৃতিক নয় ......


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

পেরহাপ ফ্রিঞ্জটি ভুল শব্দ ছিল - আমার অর্থ বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে (যেমন সি ++ বা জাভা নয়) ব্যাপকভাবে ব্যবহৃত হয় না।
mattnz

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

1
আমি মনে করি যদিও don't have the patienceএটি আরও সঠিক মূল্যায়ন don't have the mental capacity। আমার ক্যারিয়ারের ধরে, আমি আরো অনেক দেখা করেছি অলস প্রোগ্রামারদের তুলনায় আমি দেখেছি মূঢ় বেশী। যদিও আমি ভাগ্যবান ছিলাম, বিশ্ববিদ্যালয়ে আমার প্রথম বর্ষে আমাকে কার্যনির্বাহী প্রোগ্রামিং এবং সাইড প্রসেসরিয়াল এবং ওও বরাবর সূক্ষ্ম সমান্তরাল প্রোগ্রামিং শেখানো হয়েছিল। আমি সন্দেহ করি যে অনেক প্রোগ্রামার এত ভাগ্যবান ছিল না এবং ফলস্বরূপ তাদের চিন্তা প্রক্রিয়াগুলি সোজা-জ্যাকেটেড হয়েছে।
মার্ক বুথ

0

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

ভাষা এবং প্ল্যাটফর্মগুলি অবশ্যই প্রোগ্রামারকে যথাসাধ্য সাবলীলতা থেকে রক্ষা করতে পারে

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

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