ফাংশনাল প্রোগ্রামিংয়ের জন্য বর্তমান উত্সাহ কেন? [বন্ধ]


50

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

আমি এটি পছন্দ করি, এটি সত্যিই মজাদার এবং আমার গণিতের পটভূমিতে ফিট করে।

তবে এটা কি আসলেই কিছু যায় আসে? স্পষ্টতই, এটি খুব কমই একটি নতুন ধারণা।

আমার প্রশ্নগুলি এখানে:

  1. সাম্প্রতিক এফপি উত্সাহে কী অবদান রেখেছে? ওওর সাথে কি নিছক একঘেয়েমি, বা এফপিকে আগের চেয়ে আরও বেশি কিছু করার জন্য কিছু পরিবর্তন হয়েছে?
  2. এটি কি কোনও এফপি ভবিষ্যতের সূচক? বা এটি কি অবাস্তব, অবজেক্ট অরিয়েন্ট ডাটাবেসের মতো?

অন্য কথায়, কেউ আমাকে বুঝতে বুঝতে সাহায্য করতে পারে যে এটি কোথা থেকে এসেছে এবং এটি কোথায় চলছে?



13
কোনও সদৃশ নয় - এটি জিজ্ঞাসা করছে যে কেন লোকেরা হঠাৎ ঝগড়া করছে, কারণ এটি কোনও নতুন ধারণা নয়, (এই প্রশ্নটি উদ্দেশ্যগত পার্থক্যের জন্য আরও জিজ্ঞাসা করছে)।
পিটার বুফটন

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

1
আমি মনে করি আমি স্ট্যাক ওভারফ্লোতে এই প্রশ্নের উত্তর আগে দিয়েছি।
কেন ব্লুম

1
হ্যাঁ - এফপি ইতিমধ্যে বয়স্ক ছিল আমার মনে হয় আমি যখন 1989 সালে কলম্বিয়ার স্কোয়াডকে আন্ডারগ্র্যাড হিসাবে ব্যবহার করছিলাম It's এটি আমার ধারণা চকচকে নতুন জিনিস।
টিম

উত্তর:


33

আগ্রহের "বিস্ফোরণ" এর ফলশ্রুতিতে এফপিতে অন্যতম বড় উদ্ভাবন হ'ল মনাদ।

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

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

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

মনাদ কীভাবে আইও এর সমস্যা সমাধান করে? ঠিক আছে, মোনাডদের খুব বেশি আলোচনা না করে, তারা মূলত "ওয়ার্ল্ড" (রানটাইম পরিবেশ )টিকে মোনাদকে ইনপুট হিসাবে গ্রহণ করে এবং আউটপুট হিসাবে একটি নতুন "ওয়ার্ল্ড" উত্পন্ন করে এবং ফলাফল: IO a = World -> (a, টাইপ করুন) বিশ্ব)।

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

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


অত্যন্ত তথ্যপূর্ণ, ধন্যবাদ। আমি এই উত্তরটি গ্রহণ করছি, কারণ এটি সঠিক নয় এবং অন্যেরা ভুল (আমি বেশ কয়েকটিকে উন্নত করেছি) তবে কারণ এটি আমার মনে হয় এটি ফলাফলের দৃশ্যের প্রাপ্য।
এরিক উইলসন

আরও একটি প্রাসঙ্গিক উদাহরণ type IO a = UI -> (a, UI)যদিও চমত্কার উত্তর হবে ।
কেওসপ্যান্ডিয়ন

@ রিচার্ড: "টাইপ আইও এ = ওয়ার্ল্ড -> (এ, ওয়ার্ল্ড)" সত্য বলে মনে হচ্ছে প্রায় খুব ভাল লাগছে (আমি ভেবেছিলাম আমি কখনই সন্ন্যাসী পাব না)। আমি মনে করি আপনি লিনকিউকে মনাদাদের সাথে তুলনা করেছেন কারণ আপনি যখন লম্বা একটি লিনকডা অপারেটরে প্রবেশ করেন, ল্যাম্বদা তার পুরো পরিবেশটিকে "দেখায়", ঠিক কি তাই?
স্টিফান মনোভ

@ স্টেফান: ল্যাম্বদা তার পরিবেশ দেখে বলে কিছুটা সঠিক বলে মনে হচ্ছে, তবে আমি এটিতে ১০০% পরিষ্কার নই, সুতরাং আমি নিজেকে আরও না জানানো পর্যন্ত উত্তর দিতে দ্বিধা বোধ করি। তবে, আমি 100% নিশ্চিততার সাথে বলতে পারি যে লিনকুই মনড, কারণ নির্মাতারা অনেক সময় এমনটি বলেছেন। সিলেক্টম্যানি হ্যাসকেলে বাইন্ডের সমান সমান। আপনি যদি " মনডের বিস্ময় " না পড়ে থাকেন ( ব্লগস.এমএসএনএন / বি / ওয়েসডিয়ার / অর্কিভ / ২০০৮/০১/১১/২০ ) আমি এটির উচ্চ প্রস্তাব দিচ্ছি ... এটি লিনকু সত্যিই মনডস কী তা প্রকাশ করবে। চিয়ার্স।
রিচার্ড অ্যান্টনি হেইন

1
@ জোব, উপরের মন্তব্যে রেফারেন্স হিসাবে ব্লগস.এমএসএনএন / বি / ওয়েসইডিয়ার / অর্কিভ / ২০০৮/০১/১০/২ দেখুন ।
রিচার্ড অ্যান্টনি হেইন 20'11

30

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

একটি উদাহরণ: A করতে গেলে আপনার অবশ্যই বি এবং সি উপস্থিত থাকতে হবে এবং বি ডি এবং ই এর উপর নির্ভরশীল, যার ফলস্বরূপ এমন কিছু ঘটবে

  • ডি
  • সি
  • B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর
  • একজন

কারণ উপাদানগুলি ব্যবহারের আগে আপনাকে প্রস্তুত থাকতে হবে।

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

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

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


3
1950 সালে অবশ্যই এটি সত্য ছিল।
এরিক উইলসন

1
@ ফর্মবয়, সত্যই নয়, আজও রয়েছে।

5
এটি নির্ভরতা ইনজেকশন থেকে কীভাবে আলাদা?
বিল কে

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

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

21

৮০ এর দশকের শেষের দিকে / 90 এর দশকের শুরুর দিকে কম্পিউটারগুলি স্মার্টটাক-স্টাইলের ওওপির জন্য যথেষ্ট শক্তিশালী হয়ে ওঠে। আজকাল কম্পিউটার এফপির জন্য যথেষ্ট শক্তিশালী। এফপি প্রায়শই উচ্চতর স্তরে প্রোগ্রামিং করে থাকে - তবে প্রোগ্রামে আরও আনন্দদায়ক - কোনও সুনির্দিষ্ট সমস্যার সমাধান না করে সবচেয়ে কার্যকর উপায়। কিন্তু কম্পিউটারগুলি এত দ্রুত যে আপনার যত্ন নেই।

আপনি রাষ্ট্র পরিবর্তনকারী কোড পৃথক করতে বাধ্য হওয়ায় খাঁটি কার্যকরী প্রোগ্রামিং ভাষার সাথে মাল্টি-কোর প্রারগ্যামিং সহজতর হতে পারে।

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


6
একটি উত্তর যোগ করতে যাচ্ছিল, তবে আপনি আমার শেষ বাক্যে আমার বক্তব্যটি আঘাত করেছেন; একক মেশিনে কোর সংখ্যা বাড়ার সাথে সাথে ফাংশনাল প্রোগ্রামিং আরও বেশি প্রচারিত হতে চলেছে। রাষ্ট্রের অন্তর্নিহিত অভাবটি প্রক্রিয়াজাতকরণগুলিতে যান্ত্রিকভাবে ফাংশনাল প্রোগ্রামগুলিকে বিভক্ত করা সহজ করে তোলে (যার অর্থ আপনি যদি একটি খাঁটি কার্যকরী প্রোগ্রাম রাখেন তবে একটি সংকলক তাত্ত্বিকভাবে আপনার পক্ষে ন্যূনতম প্রচেষ্টা নিয়ে আপনার জন্য সমান্তরালতার যত্ন নিতে পারেন youtube.com/watch? ডেটা সমান্তরালতার আলোচনার জন্য v = NWSZ4c9yqW8 )।
ইনাইমথি

1
@ আইনাইমাঠি ডিট্টো ফাংশনাল প্রোগ্রামিং খুব স্কেলেবল, সুতরাং এটি মাল্টি-কোর আর্কিটেকচারের প্রতি উপলব্ধি করে।
এরিকবোরসমা

নোট করুন যে আমার প্রথম মন্তব্যটি অতিরিক্ত বিবৃতি ধারণ করার জন্য উত্তর সম্পাদনার আগে লেখা হয়েছিল।
ইনাইমথি

তার জন্য দুঃখিত। আমি এই বিষয়টি ভুলে গেছি।
লেনি প্রোগ্রামার

এটি কি সত্যই গ্রহণযোগ্য যে ফাংশনাল কম্পাইলাররা ওওপিএসের মতো অনুকূলিতভাবে মেশিন কোড তৈরি করতে পারে না? কেন এটি সত্য হতে হবে এমন কোনও তাত্ত্বিক কারণ আমি ভাবতে পারি না; এবং আমি ওওপিএসের চেয়ে আরও উন্নততর অপ্টিমাইজেশানগুলি কীভাবে সম্ভব তা ভাবতে পারি।
জেরেমি

7

আজকের বিতরণ করা কম্পিউটিংয়ের প্রয়োজন।

এফপি বিল্ডিং ব্লক হিসাবে ফাংশন ব্যবহার করে, যার স্টেট নেই, সুতরাং একই পরামিতিগুলির সাথে n বার অনুরোধ করলে সর্বদা একই মানটি ফিরে আসে, তাদের পার্শ্ব প্রতিক্রিয়া হয় না।

সুতরাং, আপনি একই ফাংশনটি মেশিনগুলির একটি গোছায় পাঠাতে পারেন এবং কাজটি সমান্তরালভাবে করতে পারেন।

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

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

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

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

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


2
প্রশ্নটি এফপি-জাতীয় ভাষার সুবিধা সম্পর্কে জিজ্ঞাসা করছে । আপনি যা বর্ণনা করেছেন তা প্রচলিত ভাষা ব্যবহার করেও করা যেতে পারে।
পেসারিয়ার

6

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

এটি কেবলমাত্র কারণগুলির মধ্যে একটি তবে কার্যকরী প্রোগ্রামিং হোল্ড দেখার এক জঘন্য কারণ।


5

আমি মনে করি যে এই প্রশ্নের মূল উত্তরটি 'এক্সপোজার'।

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

সম্প্রতি মূল স্রোতে বেশ কয়েকটি ভাষা ট্র্যাকশন লাভ করেছে যা বহু-দৃষ্টিকোণ পদ্ধতির ব্যবহার করে; এফ # , জাভাস্ক্রিপ্ট প্রধান উদাহরণ।

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

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

এফ # ভিজ্যুয়াল স্টুডিও ২০১০-তে প্রথম-শ্রেণীর ভাষা হয়ে উঠেছে এবং jQuery (এট আল) এত গুরুত্বপূর্ণ হয়ে উঠছে, বিচ্ছিন্ন প্রোগ্রামগুলির সাথে খেলতে বা কিছুটা অস্পষ্ট করার পরিবর্তে এই ভাষাগুলি ব্যবহার করা বাস্তবে পরিণত হচ্ছে।

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


3

ইন এই আলাপ অ্যান্ডার্স Hejlsberg বিষয়ে তিনি মনে করেন তার ব্যাখ্যা দেয়।

[Edit]

দুঃখিত, লিঙ্কটি ভুল ছিল। এখন এটি সঠিক জায়গায় নির্দেশ করে।

এক ঘন্টার আলোচনার কয়েকটি পয়েন্টের অত্যন্ত সংক্ষিপ্তসার:

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

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


1
আপনি সংক্ষিপ্ত করতে পারেন?

1
@ থরজজর্ন এটি সেই ব্যক্তির স্মরণ করিয়ে দেয় যে সংক্ষিপ্তসার করতে পারিনি । (এটি আপনাকে নির্দেশনা দিচ্ছেন না, লেখকের উত্তর দিন))
মার্ক সি সি

1
লিঙ্কটি এমনকি সঠিক জায়গায় লিঙ্ক করে না।
কেন ব্লুম

2

আমি মনে করি এটি ওয়েবের জন্য কার্যকরী প্রোগ্রামিং দৃষ্টান্ত এবং প্রোগ্রামিংয়ের মধ্যে ঘনিষ্ঠ সম্পর্কের সাথে কাজ করা।

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

কার্যকরী প্রোগ্রামিং খুব ভাল ওয়েব অ্যাপ্লিকেশন সাথে মেলে। ওয়েব অ্যাপ্লিকেশন একটি এইচটিটিপি অনুরোধ গ্রহণ করে এবং একটি HTML ফলাফল তৈরি করে। অনুরোধ থেকে পৃষ্ঠাগুলিতে এটি কোনও ফাংশন হিসাবে বিবেচিত হতে পারে।

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

ক্রিয়াকলাপের প্রোগ্রামিং প্রায় যুগে যুগে ছিল, আমি অবাক হই কেন আমি গ্রিনফিল্ড ওয়েব প্রকল্পের জন্য লিস্প বিকাশকারীদের খোঁজ করে অনেক চাকরির বিজ্ঞাপনগুলি দেখি না।


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

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

1
লিস্প বিকাশকারীদের সন্ধানের জন্য কেন অনেক বেশি কাজের বিজ্ঞাপন নেই কেন তার আরও ভাল ধারণা পেতে আপনি পলগ্রাহাম.com/avg.html পড়তে চাইতে পারেন।

@ থরবজর্ন রাভন অ্যান্ডারসন ভাল নিবন্ধ। আমার লিস্প সম্পাদকটি ছিন্ন করতে আমাকে অনুপ্রাণিত করে।
গ্যারি রোয়ে

1

ফাংশনাল প্রোগ্রামিং আমাকে " ওয়াও, এটি নতুন " এর মতো একই ঝোঁক বোঝা দেয় যখন বছর আগে আমি যখন প্রথম প্রথম বস্তুগুলির সাথে ছোঁড়া শুরু করি।

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

আমি ভাবছি এফপি-র সাথে একই জিনিস ঘটবে শেষ পর্যন্ত ভাষাগুলির পরবর্তী ব্যাচ একইভাবে ছড়িয়ে পড়তে শুরু করার পরে। তাদের স্কেল এবং এফ # এর মতো ভাষা কমপক্ষে কয়েকটি চেনাশোনাতে ইতিমধ্যে রয়েছে।


ওও এফপির চেয়ে অনেক কম বয়সী, তবে এটি অনেক আগে থেকেই লাইমলাইটে got আমার অনুমাননীটি খুব বেশি লোককে ভয়
জাভিয়ার

1

এখানে আমার প্রশ্নগুলি: 1. সাম্প্রতিক এফপি উত্সাহে কী অবদান রেখেছে? ওওর সাথে কি নিছক একঘেয়েমি, বা এফপিকে আগের চেয়ে আরও বেশি কিছু করার জন্য কিছু পরিবর্তন হয়েছে? ২. এটি কি কোনও এফপি ভবিষ্যতের সূচক? বা এটি কি অবাস্তব, অবজেক্ট অরিয়েন্ট ডাটাবেসের মতো?

অন্যরা ভাল প্রযুক্তিগত কারণ দিয়েছেন।

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

যদি ভবিষ্যতের প্রতিশ্রুতিটি সত্য হয় এবং তা পূরণ হয় তবে ভবিষ্যতে এর ব্যাপক ব্যবহার হবে।


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

0

আমি মনে করি এটি দুটি ট্রেন্ডের সংমিশ্রণ:

  1. মূলধারার ভাষাগুলিতে ক্রিয়ামূলক বৈশিষ্ট্যগুলি যুক্ত করা হচ্ছে (উদাঃ সি #)।
  2. নতুন কার্যকরী ভাষা তৈরি হচ্ছে।

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


0

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

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


0

এটি পরিষ্কার এবং নিফটি এবং আপনার মস্তিষ্ককে সুড়সুড়ি দেয়। সেটা ঠিক আছে.

এটি আইএমএইচওও একটি ক্লাসিক ব্যান্ডওয়াগন। একটি সমস্যা খুঁজছেন একটি সমাধান।

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

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


-1

অবশ্যই এফ # এর কারণে, যদিও কখনও কখনও এটি বলা শক্ত যে কোনটি কারণ এবং কোনটি প্রভাব।

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