ক্রিয়ামূলক প্রোগ্রামিং বাড়ছে?


42

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

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

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

আমি অত্যন্ত আগ্রহের সাথে সত্যটি দেখছি যে তাদের উল্লেখযোগ্য সম্প্রদায় গ্রহণযোগ্যতা না থাকা সত্ত্বেও, এই ধরণের আরও এবং আরও বেশি ভাষা উদ্ভূত হতে থাকে। ক্লোজার (2007), স্কালা (2003), এফ # (2002) সাম্প্রতিক গত দশকের তিনটি উদাহরণ।

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

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

আমি যা জানতে চাই তা হ'ল:

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

আরও গবেষণার জন্য যে কোনও সুপারিশই স্বাগত হওয়ার চেয়ে বেশি হবে।

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

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

আগাম ধন্যবাদ!


4
এটি আড়ালং নয়, আর্ল্যাং নয় (আমি আপনার পোস্টটি সম্পাদনা করেছিলাম, তবে সিস্টেম 1-বর্ণের সম্পাদনার অনুমতি দেয় না)।
কোয়ান্ট_দেব

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

1
ফাংশনাল ভাষায় প্রচলিত কয়েকটি বৈশিষ্ট্য অগত্যা কোনও ভাষা "কার্যকরী" করে তোলে না। কার্যকরী প্রোগ্রামিং চিন্তাভাবনা এবং ডিজাইনের প্রোগ্রামগুলি যেমন নির্দিষ্ট ভাষা বৈশিষ্ট্যগুলি সম্পর্কে ততটুকুই।
মিপাদি

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

1
@ মিপাডি - তবে যদি অপরিহার্য ভাষায় সমস্ত সাধারণ কার্যকরী নির্মাণ থাকে তবে আপনি কার্যক্ষম ভাষায় এটির সাথে যে কোনও কিছু করতে পারতেন - ফাঁকটি বন্ধ হয়ে যাবে এবং প্রশ্নটি হবে "এটি করার সর্বোত্তম উপায় কী"? "কার্যকরী / আবশ্যক উপায় কী"। এমএল পরিবার ইতিমধ্যে এই ফাঁকটি বন্ধ করে দিয়েছে, সত্যই, তবে এটি কার্যকরী বলা হয়েছে বলে আমরা এর স্টাইলটিকে কেবল ভাল স্টাইলের চেয়ে কার্যকরী শৈলী হিসাবে মনে করি।
স্টিভ 314

উত্তর:


24

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

যে কোনও কিছুতে বেশ কয়েকটি রূপান্তর পদক্ষেপগুলি ব্যবহার করে উদ্ভূত ডেটা উপাদানগুলির ক্রম তৈরি করা জড়িত।

মূলত, "স্প্রেডশিট সমস্যা"। সেই ডেটা প্রয়োগ করার জন্য আপনার কাছে কিছু প্রাথমিক ডেটা এবং সারি-সারি সারি গণনার সেট রয়েছে।

আমাদের উত্পাদন অ্যাপ্লিকেশনগুলি ডেটাগুলির পরিসংখ্যানের সংক্ষিপ্তসারগুলি করে; এটি সর্বোত্তমভাবে কার্যকরীভাবে যোগাযোগ করা।

একটি সাধারণ জিনিস আমরা করি তা হল তিনটি দৈত্য তথ্য সেটগুলির মধ্যে একটি মিল। একটি এসকিউএল যোগদানের অনুরূপ, তবে সাধারণীকরণের মতো নয়। এটি প্রাপ্ত তথ্যের গণনার একটি সংখ্যা দ্বারা অনুসরণ করা হয়। এটি সমস্ত কেবল কার্যকরী রূপান্তর।

অ্যাপ্লিকেশনটি পাইথনে লেখা রয়েছে, তবে জেনারেটর ফাংশন এবং অপরিবর্তনীয় নামের টিপলস ব্যবহার করে একটি কার্যকরী শৈলীতে লেখা হয়েছে। এটি নিম্ন-স্তরের ক্রিয়াগুলির সংমিশ্রণ।

এখানে কার্যকরী রচনার একটি নিবিড় উদাহরণ।

for line in ( l.split(":") for l in ( l.strip() for l in someFile ) ):
    print line[0], line[3]

এটি এক উপায় যা কার্যকরী প্রোগ্রামিং পাইথনের মতো ভাষাগুলিকে প্রভাবিত করে।

কখনও কখনও এই জাতীয় জিনিস হিসাবে লেখা হয়:

cleaned = ( l.strip() for l in someFile )
split = ( l.split(":") for l in cleaned )
for line in split:
     print line[0], line[3]

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

অপরিবর্তনীয় বস্তু হ'ল সবচেয়ে কঠিন বাধা।

প্রায়শই আপনি বিদ্যমান অবজেক্টগুলি আপডেট করার পরিবর্তে নতুন মানগুলি তৈরি করে এমন মান গণনা করে wind এটি কোনও বস্তুর পরিবর্তনীয় বৈশিষ্ট্যটি ভাবা একটি কঠিন মানসিক অভ্যাস।

প্রাপ্ত একটি সম্পত্তি বা পদ্ধতি ফাংশন একটি ভাল পদ্ধতির। রাষ্ট্রীয় অবজেক্টগুলি ভাঙা একটি কঠিন অভ্যাস।

সেখানে প্রচুর ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পরে, আপনি কীভাবে আপনার প্রয়োজনের তুলনায় আরও সেরাটি বেছে নিতে পারেন?

প্রথমে কিছু যায় আসে না। শেখার জন্য যে কোনও ভাষা চয়ন করুন। একবার আপনি কিছু জানার পরে, আপনি নিজের অবস্থার চেয়ে আরও ভালভাবে বেছে নেওয়ার মতো অবস্থানে রয়েছেন।

পাইথনের যে জিনিসগুলির অভাব রয়েছে তা কেবল বুঝতে আমি হাসকলকে পড়েছি।


5
@ এডালোরজো: পাইথন দুর্বলভাবে টাইপ করা হয়নি। এটি খুব, খুব দৃ strongly়ভাবে টাইপ করা। কোনও কাস্ট অপারেটর নেই, তাই এটি জাভা বা সি ++ এর চেয়ে বেশি শক্তভাবে টাইপ করা হয়েছে।
এস। লট

5
@ এস.লোট - আইডিই রিফ্যাক্টরিং সরঞ্জাম এবং ইন্টেলিজেন্স-টাইপ স্টাফগুলির সাথে স্থির ধরনের পরীক্ষা করা সহায়তা করে না? আপনার যদি ব্যাকগ্রাউন্ড সংকলন চলছে এবং আপনি স্ট্যাটিকালি প্রকারগুলি পরীক্ষা করছেন, তার অর্থ এই নয় যে আপনি আপনার সরঞ্জামগুলিতে আরও স্বয়ংক্রিয় করতে পারবেন? আমি সম্মত হই যে আপনার পরীক্ষায় যদি আপনার 100% কোড কভারেজ থাকে তবে এটি এটি ধরবে। আপনার অবশ্যই বুঝতে হবে যে সম্ভবত উদ্যোগের 50% এর কম কোডের কোডে ইউনিট টেস্টের কভারেজ রয়েছে, তাই না? :) আমাদের এখানে থাকতে হবে এমন একটি বাস্তব পৃথিবী রয়েছে
স্কট হুইটলক

8
@ এস.লট "স্ট্যাটিক ধরণের চেকিং সমস্ত সহায়ক নয় a কোনও সংকলক বা রান-টাইম চেকিংয়ের দ্বারা স্থির চেক আছে কিনা তা বিবেচ্য নয় You আপনি এখনও একই পরিমাণের কোড এবং একই সংখ্যার ইউনিট পরীক্ষাগুলি লিখেন। " এর, না। স্ট্যাটিক টাইপ পরীক্ষণ সমগ্র বিন্দু এটি বাগ ক্যাচ, অতএব, এটা ব্যাপক প্রয়োজনীয় পরীক্ষার পরিমাণ কমিয়ে দেয়।
জন হ্যারোপ

3
@ এসলট "পাইথন দুর্বলভাবে টাইপ করা হয়নি It's এটি খুব, খুব দৃ strongly়ভাবে টাইপ করা।" পাইথন সুস্পষ্টভাবে সংখ্যার প্রকারের মধ্যে কাস্ট করে, যা দুর্বলভাবে টাইপ করা হচ্ছে।
জন হ্যারোপ

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

23

"ক্রিয়ামূলক" হ'ল বিভিন্ন বৈশিষ্ট্যগুলির একটি গুচ্ছ, যার প্রতিটি স্বতন্ত্রভাবে কার্যকর এবং আমি স্বতন্ত্রভাবে প্রতিটি দেখতে আরও দরকারী বলে মনে করি।

অপরিবর্তনীয়তা

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

প্রথম শ্রেণীর প্রকার হিসাবে ফাংশন

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

ফাংশন রচনা করতে সক্ষম হওয়া (উদাহরণস্বরূপ Action<T>কেবল একটি রূপান্তর করা Actionকিছু পরিস্থিতিতেও বেশ কার্যকর।

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

Monads

স্বীকার করা যায় যে এটি আমার দুর্বল জায়গা, তবে আমার বোধগম্য হ'ল F # এর মধ্যে গণনাগত কর্মপ্রবাহ যেমন asyncওয়ার্কফ্লো, একটি মনাদ। এটি একটি সূক্ষ্ম কিন্তু খুব শক্তিশালী নির্মাণ। এটি সি # তে ক্লাস yieldতৈরি করতে ব্যবহৃত কীওয়ার্ডের মতো শক্তিশালী IEnumerable। মূলত এটি কভারগুলির নিচে আপনার জন্য একটি রাষ্ট্রীয় মেশিন তৈরি করছে তবে আপনার যুক্তিটি লিনিয়ার দেখাচ্ছে।

অলস মূল্যায়ন এবং পুনরাবৃত্তি

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

এস-প্রকাশ

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

এটি ছিল আপনার প্রশ্নের প্রথম অংশটির দীর্ঘ উত্তর ... এখন ...

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

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

সেখানে প্রচুর ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পরে, আপনি কীভাবে আপনার প্রয়োজনের তুলনায় আরও সেরাটি বেছে নিতে পারেন?

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


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

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

1
@edalorzo - .NET এর সাথে এফ # এর একীকরণ খুব ভাল, কেবলমাত্র একটি ছোট ছোট ব্যতিক্রম: কোনও জিইউআই ডিজাইনার নেই। আপনি আপনার জিইআইআই কে সি # অ্যাসেমব্লিতে ডিজাইন করে এবং এফ # থেকে উল্লেখ করে, বা কেবল কোডে এফ # এর ভিতরে জিইউআই তৈরি করে (ডিজাইনারের সাথে নয়)।
স্কট হুইটলক

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

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

15

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

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

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

আমার ব্যক্তিগত মতামতটি হ'ল মাল্টিকোর FP- এর হত্যাকারী বৈশিষ্ট্য নয় (কমপক্ষে হাস্কেল, স্কালা, ক্লোজার, এফ # সংকলকগণ ক্যাশে স্থানীয়তার সমস্যা সমাধান না করে)। হত্যাকারী বৈশিষ্ট্য map, filter, foldএবং বন্ধুদের যা আলগোরিদিম বৃহৎ গ্রুপ একটি সংক্ষিপ্ত অভিব্যক্তি অনুমতি দেয়। এটি সবচেয়ে জনপ্রিয় ওও সহযোগীদের তুলনায় আরও সংক্ষিপ্ত সিনট্যাক্সযুক্ত এফপি ভাষার সাথে সংমিশ্রিত হয়।

অতিরিক্তভাবে এফপি রিলেশনাল মডেলের কাছাকাছি থাকায় আরডিবিএমএসের সাথে প্রতিবন্ধকতা মেলে না এমনটি হ্রাস করে ... যা হ'ল - কমপক্ষে নন-প্রোগ্রামারদের ক্ষেত্রে - খুব সুন্দর।

এছাড়াও যখন আপনার 'নির্ভুলতা' প্রয়োজনীয়তাগুলি পূরণ করতে বিশেষভাবে অসুবিধা হয় - তখন এমন ফর্ম যা পরীক্ষা করা কঠিন (বৈজ্ঞানিক কম্পিউটিং / বৃহত ডেটা বিশ্লেষণে সাধারণ যেখানে লক্ষ্যটি আগে অজানা হওয়া এবং যেমন অন-নির্দিষ্ট ফলাফল হিসাবে) এফপি অফার দিতে পারে সুবিধাদি.

যদি আমি কোনও কার্যনির্বাহী প্রোগ্রামিং ভাষায় স্যুইচ করার সিদ্ধান্ত নিয়েছি তবে আপনি যে সমস্যার মুখোমুখি হবেন তা কি আপনি বিবেচনা করেন?

  • সরঞ্জাম সহায়তার অভাব (এফ # এবং কিছু লিপস ব্যতিক্রম, স্কালার পথে রয়েছে)
  • আপনার হার্ডওয়্যার থেকে শেষ বিট পারফরম্যান্স খুঁজে বার করা শক্ত
  • সম্প্রদায়গুলি প্রায়শই বাণিজ্যিক সফ্টওয়্যার বিকাশ প্রকল্পের একটি বৃহত গ্রুপের মুখোমুখি হওয়াগুলির চেয়ে বিভিন্ন বিষয়ে মনোনিবেশ করে
  • খুব অল্প কিছু বিকাশকারী শিল্প সেটিং এ এফপি ব্যবহারের অভিজ্ঞতা অর্জন করেছেন এবং যদি তাদের খুঁজে পান তবে আপনার সম্ভবত বেতনের সাথে প্রতিযোগিতা করতে হবে এবং আর্থিক শিল্প যেগুলি সুবিধা দিতে পারে সেগুলি উপকার করতে পারে
  • প্রোগ্রামিংয়ের কার্যকরী স্টাইলটি ডিবাগ করা শক্ত হতে থাকে; অর্থাত্ রচনা ফাংশনগুলির একটি দীর্ঘ শৃঙ্খলে ফলাফলের মধ্যে পর্যবেক্ষণ করা বেশিরভাগ (সমস্ত?) ডিবাগারগুলিতে সাধারণত সম্ভব হয় না

সেখানে প্রচুর ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পরে, আপনি কীভাবে আপনার প্রয়োজনের তুলনায় আরও সেরাটি বেছে নিতে পারেন?

  • আপনার প্লাস্টিকের ফ্রেমওয়ার্ক / ফ্রেমওয়ার্কগুলি ইতিমধ্যে কোন প্ল্যাটফর্মের (যেমন জেভিএম বা। নেট) বাইরে বেরিয়ে আপনার কতগুলি সমস্যা সমাধান করা যেতে পারে? কোন ভাষা নির্মাতারা এই সমস্যাগুলি সরাসরি প্রকাশ করতে সক্ষম?

  • আপনার অ্যাপ্লিকেশনটির স্থান এবং সময়ের পারফরম্যান্সের তুলনায় আপনার কত স্তরের নিয়ন্ত্রণের প্রয়োজন?

  • আপনার "সঠিকতা" প্রয়োজনীয়তা কতটা কঠোর?

  • আপনি কি বিকাশকারীদের পুনরায় প্রশিক্ষণ এবং / অথবা এসডাব্লু বিকাশে কিছু উচ্চ লাভজনক কুলুঙ্গি দ্বারা প্রদত্ত সুবিধার সাথে প্রতিযোগিতা করতে পারবেন?


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

9

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

ধরে নিই যে আপনি শিল্পে সি ++ / সি # / জাভা দেব ...

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

আপনি যদি ওয়েব প্রোগ্রামার হন তবে সবচেয়ে বড় ক্ষতি সম্ভবত আপনার চুলের হতে পারে।

সেখানে প্রচুর ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পরে, আপনি কীভাবে আপনার প্রয়োজনের তুলনায় আরও সেরাটি বেছে নিতে পারেন?

আমি প্ল্যাটফর্ম দিয়ে শুরু করব:

  • ওক্যামল লিনাক্সে দুর্দান্ত এবং উইন্ডোজটিতে দুর্দান্ত aw
  • উইন্ডোজে এফ # দুর্দান্ত এবং লিনাক্সে ভয়ঙ্কর।
  • স্কেলা এবং ক্লোজার জেভিএম-এ দুর্দান্ত।

1
আমি যখন পড়ি "কিছুটা শিখতে চাই না এমন কুঁচকুটে সমবয়সীদের জন্য প্রস্তুত থাকুন"। আমি চিত্কার করতে চেয়েছিলাম: "এত সত্য! এত জঘন্য সত্য!" তবে এটি সত্যিই দুঃখজনক।
জেলফির কালটসটাহল

3

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

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


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

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

2

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

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

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

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

সেখানে প্রচুর ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ থাকার পরে, আপনি কীভাবে আপনার প্রয়োজনের তুলনায় আরও সেরাটি বেছে নিতে পারেন?

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


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

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

@ এডালোরজো: "হতাশার অবসান ঘটাতে" আমি বলছি যেহেতু যদি অপরিহার্য প্রোগ্রামিং সবই জানা থাকে তবে হ্যাশেলের টাইপ সিস্টেম এবং এর প্রভাবগুলি বর্ণনা করার জন্য এর monadic পদ্ধতিটি খুব বেশি হতে পারে। আমার মনে হয় এরলং এবং স্কালার মতো পার্শ্ব-প্রতিক্রিয়াতে আরও বেশি ব্যবহারিক দৃষ্টিভঙ্গি নিয়ে এমন একটি ভাষা দিয়ে শুরু করা ভাল।
davidk01

0

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

সম্পাদনা: যেহেতু এটি সবার কাছে স্পষ্ট নয়।

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

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

সমান্তরালতার জন্য ব্যবহৃত এফপির কয়েকটি উদাহরণ:

  • কাউচডিবি - এরলং-এ বিল্ড করুন
  • ফেসবুক চ্যাট - এরলং উপর তৈরি করুন
  • টুইটার - স্কালায় বৃহত অংশ বিল্ড

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

4
@ ভার্টেক: অবজেক্টিভিটির স্বার্থে এটি এখনও ভাল হবে যদি আপনি এমন কোনও রেফারেন্স সরবরাহ করতে পারেন যা আপনার দাবির ব্যাক আপ করবে। এটি অজ্ঞ পাঠকদেরকে একটি পাল্টা প্রশ্নের চেয়ে অনেক বেশি সহায়তা করবে ...
blubb

1
@ ভার্টেক: আসলে না, আমার কাছে এমনটা কখনও ঘটেনি যে কিছু লোক দাবি করে এমন অনেক লোক সত্য করেছে। আমি আমার গণিতের প্রশিক্ষণের জন্য দোষ দিই তবে ওহে আমরা সকলেই আমাদের দাবিদার পক্ষে কঠোর ঘটনা এবং দৃ concrete় ন্যায়বিচারের মতো জিনিসগুলিতে বিশ্বাস করি না এবং আপনার সম্পাদনাটি এখনও আমার মন্তব্যের দিকে নজর দেয় না।
davidk01

1
@ ভার্টেক আপনি আপনার দাবিকে সমর্থন করে একটি বিশ্বাসযোগ্য উত্সের জন্য একটি রেফারেন্স রাখতে পারেন।
কোয়ান্ট_দেব

1
+1 @ davidk01 "সকলেই সমান্তরাল প্রোগ্রামিং দাবি করে তবে এটির ব্যাক আপ করার জন্য খুব কম ডেটা রয়েছে"। আমি বিপরীতে বিপুল পরিমাণ প্রমাণ সম্পর্কে সচেতন উদাহরণস্বরূপ, সিল্কের কাগজপত্রগুলি বর্ণনা করে যে যদি আপনি ভাল ক্যাশে জটিলতা চান যা কোনও মাল্টিকোরের মধ্যে স্কেলযোগ্য সমান্তরালতার প্রয়োজন হয় তবে স্থানটিতে রূপান্তর কীভাবে প্রয়োজনীয়।
জন হ্যারোপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.