খাঁটি ফাংশনাল প্রোগ্রামিং ভাষা (গুলি)? [বন্ধ]


20

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

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


2
আমি শিখেছি মিরান্ডা তাই আমি পক্ষপাতপূর্ণ করছি বিশ্ববিদ্যালয়ে, কিন্তু আমি সুপারিশ করবে Haskel অনুপস্থিত কারো কাছে নিজেদের চুবান এর বিক্ষেপ ছাড়া একটি কার্মিক ভাষায় অপবিত্রতা । * 8 ')
মার্ক বুথ

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

উত্তর:


28

কার্যকরী ভাষার বিশুদ্ধতার ডিগ্রি মূল্যায়নের জন্য কোনও স্কেল নেই। ভাষা যদি পার্শ্ব প্রতিক্রিয়াগুলিকে এটি অপরিষ্কারের অনুমতি দেয়, অন্যথায় এটি বিশুদ্ধ। এই সংজ্ঞা অনুসারে, হাস্কেল, বুধ, পরিষ্কার ইত্যাদি খাঁটি কার্যকরী ভাষা; স্কেল, ক্লোজার, এফ #, ওক্যামেল ইত্যাদি অপরিষ্কার।

সম্পাদনা: সম্ভবত আমার এটি বলে নেওয়া উচিত ছিল "যদি ভাষা টাইপ সিস্টেমটি না জানিয়ে পার্শ্ব প্রতিক্রিয়াগুলির অনুমতি দেয় না তবে এটি খাঁটি Otherwise অন্যথায় এটি অশুদ্ধ।"


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

8
@ ফ্র্যাঙ্ক: হ্যাঁ, হাস্কেল পার্শ্ব-প্রতিক্রিয়াগুলিকে অনুমতি দেয় তবে এটি পার্শ্ব-প্রতিক্রিয়াজনিত কোডটি চিহ্নিত করার চেয়ে আরও বেশি কিছু করে। পার্শ্ব-প্রতিক্রিয়াজনিত কোড ব্যবহার করার সময়ও এটি রেফারেন্সিয়াল স্বচ্ছতা বজায় রাখে এবং এটি খাঁটি করে তোলে - কমপক্ষে বহু লোকের শুদ্ধতার সংজ্ঞা দ্বারা। অবশ্যই এটি "কোনও পার্শ্ব প্রতিক্রিয়া অনুমোদিত নয়" এর অনুপস্থিতির অনুপস্থিতির সাথে মেলে না।
sepp2k

4
@Frank Shearar কিন্তু এটি একটি এমনভাবে কথা বলতে কারণ দরকারী IOএকসংখ্যা হয় বিশুদ্ধ। এটি রানটাইম লাইব্রেরি যা আপনার কোড নয়, যেহেতু আপনার mainফাংশনটি মূলত একটি বিশাল স্টেট ট্রান্সফর্মার। ( main :: World -> Worldপর্দার পিছনের মতো কিছু )
বিকল্প

1
আমার ভাষার উল্লেখযোগ্য স্বচ্ছতাও রয়েছে। আপনি কেবল লিখুন program = "some C code", এবং তারপরে রানটাইম পরিবেশ সি কোডের সাথে ডিল করে। :-)
ড্যানিয়েল লুবারভ

3
যেহেতু স্ক্রিনে মুদ্রণ করা একটি পার্শ্ব-প্রতিক্রিয়া হ'ল খাঁটি কার্যকরী প্রোগ্রামগুলি বেশ বিরক্তিকর।

15

যেহেতু শেখা আপনার লক্ষ্য, এবং প্রতি সেমি প্রোগ্রাম না লিখে আপনি ল্যাম্বদা ক্যালকুলাসের চেয়ে বেশি বিশুদ্ধতর পেতে পারেন না ।

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

কীভাবে বুলিয়ান এবং সংখ্যাগুলি ifআবিষ্কার করা এবং আপাতদৃষ্টিতে কিছুই আবিষ্কার করা যায় তা আপনার ট্যাঙ্কে আরও বেশি গ্যাস লাগবে না, তবে এটি আপনার ট্যাঙ্কটিকে আরও বড় করে তুলবে।


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

2
একটি প্রুফ লেখা একটি প্রোগ্রাম লিখতে হয় এবং একটি প্রোগ্রাম লিখতে হয় একটি প্রমাণ লিখতে হয়। আপনি যখন কারি – হাওয়ার্ড isomorphism সম্পর্কে জানবেন আপনি বুঝতে পারবেন যে আপনি এই গণিতের বাধা দশ হাজার লাইনের আগে পেরিয়ে গেছেন।
ম্যাকনিল

1
এর কোন সরল উপস্থাপনা নেই -1
ড্যানিয়েল লুবারভ

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

1
একবার কেসগুলির দ্বারা ক্ষয় হয়ে যাওয়ার পরে চার্চের অঙ্কগুলি ব্যবহার করে বিয়োগ করা সহজ। নেতিবাচক সংখ্যাগুলি সমর্থন করার জন্য পুরো (উত্পন্ন) ক্যালকুলাস তৈরি করা, বরং আরও কাজ।
ডোনাল ফেলো

6

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

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

হাস্কেল আইও মোনাড (অবশ্যই) মনাদগুলির গাণিতিক তত্ত্ব থেকে প্রাপ্ত। তবে, জরুরী প্রোগ্রামারদের জন্য, আমি মনে করি মনদেসে পৌঁছানোর পিছনের দিকটি আরও অর্থবোধ করে।

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

দ্বিতীয় পর্যায়ে - পাঠ্য উত্স কোড তৈরি করার পরিবর্তে আপনি একটি দৃ strongly়-টাইপযুক্ত বিমূর্ত সিনট্যাক্স ট্রি তৈরি করেন। আপনার অপরিহার্য-ভাষা সংকলকটি আপনার "উচ্চ স্তরের" সংকলকটিতে শোষিত হয়েছে এবং সোভেল কোড হিসাবে সরাসরি এএসটি গ্রহণ করে। এটি হাস্কেল যা করে তার অনেক কাছাকাছি।

যদিও এটি এখনও বিশ্রী। উদাহরণস্বরূপ আপনার দুটি স্বতন্ত্র ধরণের ফাংশন রয়েছে those কোড উত্পন্নকরণের পর্যায়ে যাঁরা মূল্যায়ন করেন এবং উত্পন্ন প্রোগ্রামটি চালিত হলে কার্যকর হয়। এটি কিছুটা C ++ এ ফাংশন এবং টেম্পলেটগুলির মধ্যে পার্থক্যের মতো।

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

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

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

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

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

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

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


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

5

আমি ব্যক্তিগতভাবে ভাষাগুলিকে তিনটি স্তরের কার্যক্ষম বিশুদ্ধিতে শ্রেণিবদ্ধ করি:

  • খাঁটি কার্যকরী ভাষা - অর্থাত্ যা আপনার পুরো প্রোগ্রামটিকে খাঁটি ফাংশন হিসাবে বিবেচনা করে এবং কেবল রানটাইমের সাথে কথোপকথনের মাধ্যমে মিউটেশনটি পরিচালনা করে - হাস্কেল সম্ভবত প্রচলিত উদাহরণ

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

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

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

আমি আসলে তৃতীয় বিভাগটি কার্যকরী ভাষা হিসাবে গণনা করি না (যদিও হাস্কেল এবং ক্লোজার শিখার পরে আমি প্রায়শই নিজেকে ব্যবহার করার সময় কার্যকরী কৌশলগুলির সদ্ব্যবহার করতে দেখি!)


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

2
@ ডোনাল ফেলো: সীমাহীনতা সীমাহীনতায় চলে যাওয়ার সাথে সাথে প্রতিটি টিউরিং-সম্পূর্ণ ভাষা কার্যকরী: ভাষাতে কেবল একটি লিস্প ইন্টারপ্রেটার প্রয়োগ করা উচিত এবং তারপরে এটি ব্যবহার করুন। :]
সিএ ম্যাকক্যান

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

@ মিকেরা: আমি আপনার উত্তরটি খুব আকর্ষণীয় মনে করেছি: স্কাল যদি কার্যকরী না হয় তবে কেবলমাত্র বহু-দৃষ্টিকোণ, আপনি সি ++ 11, সি #, এমনকি জাভা (ল্যাম্বডাসের পরিকল্পনামূলক ভূমিকা) তে কীভাবে কার্যকরী প্রোগ্রামিং বৈশিষ্ট্য বিচার করবেন?
জর্জিও 20

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

3

একটি খাঁটি কার্যকরী ভাষা যদি এর মতো হয় তবে এর কেবল খাঁটি ফাংশন (রুটিনগুলির পার্শ্ব প্রতিক্রিয়া নেই) তবে এটি কিছুটা অর্থহীন, কারণ এটি ইনপুট পড়তে বা আউটপুট লিখতে পারে না;)

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

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

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


3

সম্পূর্ণ গুরুতর উত্তর নয়, তবে উলাম্বদাকে একজন প্রতিযোগী হতে হবে। আপনি এসকেআই সংযুক্তকারীগুলির চেয়ে আর কোনও "খাঁটি কার্যকরী" পেতে পারেন না।


4
ম্যাডনেস! বৈধর্ম্য! পার্শ্ব-প্রতিক্রিয়াযুক্ত সংযুক্তকারীগুলির মতো কী ধরণের বিশুদ্ধ ভাষার অযৌক্তিকতা রয়েছে? না না. আপনি এখানে যা চান তা অলস কে
সিএ ম্যাকক্যান

2

এরলং, হাস্কেল, স্কিম, স্কালা, ক্লোজার এবং এফ #

এই প্রশ্নের সম্ভবত শ্রেষ্ঠ হিসাবে আপনি আপনার অনুসন্ধানে তোমাদের সাহায্যে পাঠাতে পারেন ভাল


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

স্কিম একটি কার্যকরী শৈলী উত্সাহ দেয়, তবে এটিতে set!(অন্যান্য জিনিসের মধ্যে) রয়েছে ...
ড্যানিয়েল লুবারভ

আমি ওসিএএমএলকে পরামর্শ দিই, কারণ এটি আমার প্রিয়। এবং এটিতে একটি মডিউল সিস্টেম রয়েছে, যা হাস্কেল এবং এফ # মিস করে।
lukstafi

@ লিউকস্টাফি সম্ভবত গত 3 বছরে হ্যাসেল বদলেছে (আমি জানি এটি পাগলের মতো বেড়েছে), তবে অবশ্যই হ্যাশেলের মডিউল রয়েছে।
সারা

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