অন্তর্নিহিত হার্ডওয়্যারকে সাধারণভাবে দক্ষ করার সাথে ফাংশনাল দৃষ্টান্তটি কি খুব বেশি ডাইভারজেন্ট নয়?


14

এসও-এর একটি প্রশ্নের দ্বারা অনুপ্রাণিত: /programming/6623391/how-to-gain-control-of-a-5gb-heap-in-haskell

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

গবেষণামূলক প্রবন্ধ:

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

প্রশ্নবিদ্ধ বিবৃতিতে আমি সঠিক নাকি ভুল?

এটি প্রমাণিত হতে পারে যে এফপি আধুনিক সাধারণ উদ্দেশ্যে কম্পিউটার আর্কিটেকচারে মূল কর্মক্ষমতা জরিমানা বোঝায় না?

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


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

বিশ্বাস করুন বা না করুন, তবে কম্পিউটার বিজ্ঞানীরা যারা ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং কম্পাইলারগুলি ডিজাইন করেছেন তারাও পারফরম্যান্সের জন্য অনুকূলকরণ সম্পর্কে কিছুটা জানেন know এটি প্রতিটি কার্যকরী ভাষার পণ্যের লক্ষ্য নয় তবে এটি গুরুতর উত্পাদন প্ল্যাটফর্মের জন্য।
জেরেমি

@ ক্যাম্যাক্যান, @ জেরেমি: সি # এবং জাভা উদাহরণস্বরূপ, ভার্চুয়াল মেশিন ব্যবহার করুন। কোন ব্যাপার অনুকূল তা না হয়, কোন ব্যাপার কিভাবে দক্ষ C # এবং জাভা প্রোগ্রাম উৎপাদনের জন্য হয়, সেখানে কিভাবে হয় একটি প্রধান অযোগ্যতা উৎস, এবং এটি VM- র হয়। প্রশ্ন বাস্তবায়ন কর্মক্ষমতা সম্পর্কে নয়, কিন্তু running FP on stateful automata
দ্রাক্ষালতা

1
আমার প্রশ্নটি এখানে দেখুন
গুলশান

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

উত্তর:


7

অপরিবর্তনীয়তায় একটি বিশাল ভুল বোঝাবুঝি রয়েছে।

অপরিবর্তনীয়তা শব্দার্থবিজ্ঞানের বৈশিষ্ট্য, তবে এটি বাস্তবায়নে অপরিবর্তনীয়তা বোঝায় না।

একটি সহজ উদাহরণ অলসতা বাস্তবায়ন।

যখন গণনাগুলি অলস হয়, তখন একটি অভিব্যক্তির ফলাফলটি ধারণাগতভাবে একটি মান হয় তবে অন্তর্নিহিত বাস্তবায়ন হ'ল মূল অংশ যা মূল্যায়নের জন্য যুক্তি এবং মান তৈরির জন্য একটি ফাংশন এবং সেই সাথে মানটি সংরক্ষণ করার জন্য একটি স্লট।

আপনি প্রথমবার (ভাষার ভাষায়) মানটির জন্য জিজ্ঞাসা করবেন, গণনাটি আসলে সম্পাদন করা হবে, এর ফলাফল মূল্যায়ন করা হবে এবং আপনাকে দেওয়া মান (বা একটি হ্যান্ডেল) দেওয়া হবে।

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

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

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

আপনি যখন দেখেন যে অবিশ্বাস্য সি ++ বা সি আপনাকে এই পারফরম্যান্সগুলি পেতে পারে, আপনি হয়ত কিছুটা যেতে দেবেন।

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

মজা: নিয়মিত প্রকাশের উপর একটি প্লে বা কীভাবে একটি হাস্কেল দল একটি নিয়মিত অভিব্যক্তি ম্যাচার তৈরি করেছিল যা re2গুগল থেকে সি লাইব্রেরিটিকে বেশ কয়েকটি দৃশ্যে ছাপিয়ে যায় ।


সাউন্ড আশাবাদী :)
আঙ্গুরের

3

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

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

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

তদতিরিক্ত, আপনি সহজেই কম্পিউটারের গাদা একটি স্ট্যাক করতে পারেন, এবং এমনকি লিঙ্কযুক্ত তালিকাগুলি ব্যবহার করে একটি অবিচ্ছিন্ন একটিও করতে পারেন। এটি বহু প্রোগ্রামিং ভাষায় স্ট্যাক ট্রেস উত্পন্ন করার জন্য করা হয়েছে ore সুতরাং এটি কোনও সমস্যা নয়।

ঠিক আছে, ফাংশনাল প্রোগ্রামিং কিছু সীমাবদ্ধতা বোঝায়। তবে এটি আধুনিক কম্পিউটারিংয়ে আমাদের যে সমস্যা আছে তা প্রকাশ করার প্রাকৃতিক উপায়ও এনেছে, যেগুলি হ'ল দৃষ্টান্তগুলিতে ব্যবহার করা অত্যন্ত কঠিন hard স্কেলেবিলিটি তাদের মধ্যে একটি এবং এটি একটি বাস্তব চুক্তিতে পরিণত হচ্ছে।

ইতিমধ্যে একটি জটিল সমান্তরাল সিস্টেমের সাথে মোকাবেলা করা প্রত্যেকে জানেন যে আমি কী সম্পর্কে কথা বলছি।

সুতরাং আমি উত্তরটি উপেক্ষা করব। হ্যাঁ, ফাংশনালটিতে আধুনিক হার্ডওয়্যার নিয়ে সমস্যা রয়েছে, তবে সাধারণ পুরানো প্রোগ্রামিংয়ের কিছু রয়েছে। সর্বদা মত, আপনি সুবিধা এবং ঘাটতি খুঁজে পাবেন। মূল বিষয়টি হ'ল তারা কী তাই আপনার যখন প্রয়োজন তখন উপযুক্ত পছন্দটি করতে পারেন।


0

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

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

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

শেষ পর্যন্ত, প্রোগ্রামিং হ'ল ট্রেড অফস সম্পর্কিত, তাই কেবলমাত্র এই প্রকল্পটির জন্য কী বেশি গুরুত্বপূর্ণ তা চয়ন করা দরকার।


0

এটি সত্য যে কার্যকরী দৃষ্টান্তটি অপরিবর্তনীয়তা এবং রাষ্ট্রহীনতা বোঝায়, তবে আমাদের কোনও সম্পূর্ণ বিশুদ্ধ প্রোগ্রামিং ভাষা নেই। এমনকি শুদ্ধতম, হাস্কেল, পার্শ্ব প্রতিক্রিয়াগুলির অনুমতি দেয়।

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


1
সমস্যাগুলি প্রয়োজনীয়তার সাথে সম্পর্কিত ... পারফরম্যান্স-সমালোচনামূলক ক্ষেত্রগুলির সম্পর্কে কী? উচ্চ সমান্তরালতা সেখানে মূল্যবান, তবে সামগ্রিক স্কোরটি কী?
আঙ্গুরের

1
@ ভাইনস: আমি পারফরম্যান্স-সমালোচনামূলক অ্যাপ্লিকেশনটির জন্য কোনও ভাষা ব্যবহার করি নি, তাই আমি সত্যিই এর সাথে কথা বলতে পারি না।
ল্যারি কোলেম্যান

1
কোনও পার্শ্ব প্রতিক্রিয়া সহ খুব মজা নয়, কারণ আপনি কোথাও ফলাফল সংরক্ষণ করতে পারবেন না।

@ থরবজর্ন রাভন অ্যান্ডারসন: ... এটি কলারের কাছে ফিরিয়ে দেওয়া ছাড়া অন্য কোনও উপায়ে, যা অনুমোদিত।
দ্রাক্ষালতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.