কার্যকরী প্রোগ্রামিংয়ের জন্য যুক্তিগুলি [বন্ধ]


10

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


2
F#ক্রিয়ামূলক প্রোগ্রামিংয়ের সম্পূর্ণ প্রতিনিধি নয়। Clojureপরিবর্তে চেষ্টা করুন।
কাজের

1
আমি এফ # জানি না, তবে আমি যখনই আমার মনটি ফুটিয়ে তুলতে চাই আমি হাস্কেল ব্যবহার করি। এখন পর্যন্ত প্রতিবার কাজ করেছেন;)

1
infoq.com/preferencesations/Are-We-There-Yet-Rich-Hickey এই বিষয়টির একটি দুর্দান্ত ভিডিও (ওও বনাম কার্যকর)
মাইক্রা

একটি গতিশীল কার্যকরী ভাষা? আপনি চান হিসাবে অনেক পেতে পারেন। : পি
এরিক রিপেন

উত্তর:


14

খাঁটি ফাংশনাল প্রোগ্রামিংয়ের জন্য কয়েকটি যুক্তি:

  • আজকের মাল্টি-কোর সিস্টেমগুলির জন্য কার্যগুলি ভাগ করা আরও সহজ
  • আপনার প্রোগ্রামটি সঠিক তা প্রমাণ করা আরও সহজ
  • কার্যকরী রচনা আশ্চর্যজনক, নিবিড় এবং শক্তিশালী হতে পারে

সম্পূর্ণ চিকিত্সার জন্য, কেন ফাংশনাল প্রোগ্রামিং ম্যাটার এবং কেন ফাংশনাল প্রোগ্রামিং ম্যাটার ম্যাটার


6

আমি সি # এর পরিবর্তে এফ # তে কোড বেছে নেব এমন পরিস্থিতিগুলি ভাবতে আমার সমস্যা হচ্ছে। কোন ধারনা?

থেকে এখানে :

অ্যাসিঙ্ক্রোনাস সার্ভার

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

ধাতব প্রোগ্রামিং (যেমন পার্সিং)

  • Fslex এবং fsyacc এর মতো পার্সার জেনারেটর।
  • এফপার্সেকের মতো পার্সার সংযুক্তকারী।
  • মার্জিত হাত-ঘূর্ণিত পার্সারগুলির জন্য সক্রিয় নিদর্শন।
  • পার্স গাছ উপস্থাপনের জন্য বীজগণিত ডেটাটাইপগুলি।
  • গাছগুলি চালিত করার জন্য প্যাটার্নের মিল, উদাহরণস্বরূপ অপ্টিমাইজেশনের স্তরগুলি প্রয়োগ করুন।
  • দ্রুত কোডের রান-টাইম জেনারেশনের প্রতিচ্ছবি।

প্রযুক্তিগত কম্পিউটিং

  • মার্জিত এবং দ্রুত অ্যালগরিদমিক কোডের জন্য উচ্চ-অর্ডার ফাংশন।
  • প্রতীকী ম্যানিপুলেশনের জন্য বীজগণিতের ডেটাটাইপগুলি এবং প্যাটার্নের মিল।
  • নেট নেট লাইব্রেরির সম্পদের জন্য আন্তঃক্রিয়াশীলতা।
  • এফ # ইন্টারেক্টিভ ব্যবহার করে ইন্টারঅ্যাক্টিভিটি।
  • ডেটা ম্যাসেজ করার জন্য গণনা এক্সপ্রেশন।
  • উন্নত নির্ভুলতার জন্য পরিমাপের ইউনিট।

জিইউআই অ্যাপ্লিকেশন

  • ব্যবহারকারী ইন্টারফেস কোড এবং অ্যাপ্লিকেশন লজিক কোডের মধ্যে অ্যাসিঙ্ক্রোনাস বার্তা হিসাবে পাস করার মডেল।
  • উচ্চতর ক্রম ফাংশন আপনাকে ঘোষিতভাবে ব্যবহারকারী ইন্টারফেসগুলি সংজ্ঞায়িত করতে দেয়।

লজিক প্রোগ্রামিং

  • সহজ ব্যাকট্র্যাকিংয়ের জন্য ক্রমাগত সংগ্রহ।
  • লেজ নির্ভরযোগ্যতার জন্য কল।
  • সহজ জেনেরিক প্রোগ্রামিংয়ের জন্য স্বয়ংক্রিয় জেনারালাইজেশন।

পরীক্ষামূলক

  • ইন্টারেক্টিভভাবে ইউনিট পরীক্ষা চালান।
  • বিডিডি মানে দোভাষী লিখতে হবে।
  • পরীক্ষার জোতা লেখার জন্য ফলাফলগুলি ভিজ্যুয়ালাইজ করার জন্য ভাল স্ক্রিপ্টিং ভাষা।

কর্মক্ষমতা

  • inline ব্যয়-মুক্ত উচ্চ-অর্ডার বিমূর্তনের জন্য।
  • লেজ দ্রুত রাষ্ট্রের মেশিনগুলির জন্য কল করে।
  • স্বল্প বিলম্বের জন্য বিশুদ্ধভাবে কার্যকরী ডেটা স্ট্রাকচার।
  • অপ্টিমাইজড কোড উত্পন্ন করার জন্য ধাতব প্রোগ্রামিং।

আমি স্বীকার করব যে আমি এফ # বা সি # জানি না তবে আমি এফ # তে কয়েক দিন ব্যয় করার এবং আপনি কী মনে করেন তা দেখার পরামর্শ দিব। আমার মনে হয়, আরপিএল ব্যবহার করা যে কোনও ভাষায় এটির পক্ষে একটি বড় জয় যা এটি সমর্থন করে
জ্যাচারি কে

5

আরও কম বা কম দৈনিক ভিত্তিতে - এর জন্য কার্যকরী শৈলীর প্রোগ্রামিং কী ব্যবহার করে তা এখানে।

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

গণনার প্রতিটি পর্যায় কিছু অতিরিক্ত বিশদ যুক্ত করে তবে মূলত অবজেক্টটিকে রূপান্তরিত করে না। পাইপলাইনটির "শেষ" এ আমরা অঙ্কগুলি এবং গুনগুলি এবং অন্যান্য বিষয়গুলি গণনা করার জন্য সত্যই অভিনব কাজটি করি।

এটি কল্পনা করুন.

for data in summarize( enrich( calculate( some_query( criteria() ) ) ) ):
    print data

গণনার প্রতিটি "ফেজ" হ'ল একটি কার্যকরী প্রোগ্রামিং লুপ যা সাধারণ পঠন-গণনা-ফলন করে এবং অন্যান্য জিনিস এবং ফলাফলের সংমিশ্রণ বস্তু তৈরি করে।

(আমরা পাইথন ব্যবহার করি, তাই জেনারেটর ফাংশনগুলি ব্যবহার করে ক্রিয়ামূলক প্রোগ্রামিং।

রাজ্যহীন, অপরিবর্তনীয় বস্তু ব্যবহার করা সহজ।


পাইথনের কি এফ # এর সমতুল্য? criteria() |> some_query |> calculate |> enrich |> summarizeআমি ফরোয়ার্ড পাইপ অপারেটরটি পরিষ্কার কোডে যেতে পারে তবে আমি ডিগ্রি করি।
কেওসপ্যান্ডিয়ন

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

@ চাওস: আমি জানি না know সাধারণত আমি mapএকই প্রভাব পেতে রচনা ।
পল নাথান

4

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

সি # এবং এফ # তে একটি সংকলক বাস্তবায়নের কল্পনা করুন - একটি বিমূর্ত সিনট্যাক্স ট্রি উপস্থাপন করে এবং এর উপর রূপান্তর করা যদি আপনার ভাষা এডিটি এবং একটি প্যাটার্ন ম্যাচ সরবরাহ করে তবে এটি আরও সহজ।


2

ধরণের মানচিত্র-হ্রাসের ধরণের বৃহত বহু-সিস্টেম এবং বৃহত্তর বহু-কোর সমান্তরালতার জন্য আদর্শ। খুব সুন্দর, বিবেচনা করে আজকাল এন্ট্রি স্তরের সার্ভারগুলি 48 টি কোর (96 টি গণনা এইচটি) নিয়ে আসে।


2

আপনি যদি হাস্কেলকে পুরোপুরি কার্যকর করতে চান তবে এরলং এর সম্পর্কে খুব দুর্দান্ত জিনিসও রয়েছে।

সাইমন পেটন-জোনস হাস্কেল সম্পর্কে বলেছেন, তিনি এমন একটি প্রোগ্রাম রাখতে চান যাতে স্পষ্টত কোনও বাগ নেই, বরং কোনও বাগ থাকে না।

(আমি সম্ভবত উদ্ধৃতিটি কিছুটা বন্ধ পেয়েছি, তবে আপনি ধারণাটি পাবেন)

পার্শ্ব প্রতিক্রিয়াগুলিকে সীমাবদ্ধ করে আপনি আপনার কোডটি সঠিক প্রমাণ করতে আরও সহজ করে তুলছেন।


1

একটি নির্দিষ্ট সুবিধা এটি অনেক সহজেই সমান্তরাল হয় easily


2
আপনি বিশুদ্ধতার কথা বলছেন এবং এর একটি স্পষ্ট অসুবিধা হ'ল শুদ্ধতা প্রোগ্রামগুলিকে অনেক ধীর করে তোলে। সুতরাং সমান্তরাল + খাঁটি ভাল জিনিস অগত্যা নয়।
জন হ্যারোপ 25'12
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.