ক্রিয়ামূলক ভাষা কেন? [বন্ধ]


332

আমি এখানে কার্যকরী ভাষা এবং স্টাফ সম্পর্কে প্রচুর আলাপ দেখছি। কেন আপনি "traditionalতিহ্যবাহী" ভাষার উপরের একটি ব্যবহার করবেন? তারা আরও ভাল কি? এগুলিতে তারা কী খারাপ? আদর্শ কার্যকরী প্রোগ্রামিং অ্যাপ্লিকেশন কী?


জন হিউজেস এই সম্পর্কে একটি প্রবন্ধ লিখেছেন: ফাংশনাল প্রোগ্রামিং ম্যাটারগুলি কেন
Hjulle

উত্তর:


214

কার্যকরী ভাষা অপরিহার্য এবং অবজেক্ট-ভিত্তিক ভাষার চেয়ে পৃথক দৃষ্টান্ত ব্যবহার করে। তারা ভাষায় মৌলিক বিল্ডিং ব্লক হিসাবে পার্শ্ব-প্রভাব-মুক্ত ফাংশন ব্যবহার করে। এটি প্রচুর জিনিস সক্ষম করে এবং প্রচুর জিনিসকে আরও কঠিন করে তোলে (বা বেশিরভাগ ক্ষেত্রে লোকেরা অভ্যস্ত থেকে আলাদা)।

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

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

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


14
আপনি পাইথনে ফাংশনাল প্রোগ্রামিং করতে পারেন, তবে এটি সত্যই ভয়ানক। stackoverflow.com/questions/1017621/…
গর্ডন গুস্তাফসন

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

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

202

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

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

পরিশেষে, আমি এ কথাটি প্রতিহত করতে পারি না যে আপনার মন্তব্যগুলি এফপি পুনরায় প্রসেসরাল প্রোগ্রামারদের কাছ থেকে শুনেছি এমন মন্তব্যের সাথে সমান্তরাল যেগুলি বহু বছর আগে নয়:

  • (পৌরাণিক, আইএমএইচও) "গড়" প্রোগ্রামার এটি বুঝতে পারে না।
  • এটি ব্যাপকভাবে শেখানো হয় না।
  • আপনি যে কোনও প্রোগ্রামের সাথে এটি লিখতে পারেন বর্তমান কৌশলগুলি দিয়ে অন্যভাবে লেখা যেতে পারে।

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


55
20 বছর পিছনে তাকান। আমি প্রোগ্রামিং অনেক বিকশিত হয়েছে জিনিস না। ভাল আরও ভাল সরঞ্জাম আছে, হতে পারে একটি নতুন ভাষা বা 2 কিন্তু মৌলিকভাবে খুব বেশি পরিবর্তন হবে না। এটি 20 বছরেরও বেশি সময় নেবে। আমরা সকলেই একবার ভেবেছিলাম 2000 সালে আমরা উড়ন্ত গাড়িগুলি দেখতে পাব
বিব্যাক

32
ও'ক্যামল যদিও আইরিশ।
Defmeta

7
@ অ্যালেক্স অদ্ভুত: "অব্যবস্থাপনা পছন্দসই" এবং "পার্শ্ব প্রতিক্রিয়া এড়ান" অবজেক্ট-ওরিয়েন্টেড এবং অপরিহার্য প্রোগ্রামিং স্কুলগুলিতে বেশ কিছুক্ষণ ধরে থাম্বের ভাল নিয়ম ছিল। (তাহলে কি পছন্দ হয় না? ;-)
joel.neely

101
@ বিব্যাক: 20 বছর আগে আমরা সি কোড লিখছিলাম, এবং ক্লিপার বা টার্বো পাস্কালের গুণাবলী নিয়ে আলোচনা করছিলাম। অবজেক্ট ওরিয়েন্টেশন ছিল একাডেমিকের একচেটিয়া ক্ষেত্র। যে সামান্য পরিবর্তিত হয়েছে প্রস্তাব করা নিখরচু কৌতুকপূর্ণ।
ড্যানিয়েল সি সোব্রাল

24
@ ড্যানিয়েল: দয়া করে এই ব্যক্তিদের একটি তালিকা সরবরাহ করুন যারা ক্লিপারের "গুণাবলীর" পক্ষে যুক্তি দিয়েছিলেন। তাদের শিকার করে বিচারের আওতায় আনা দরকার need
ডেভিড

125

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

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


4
আমরা ইতিমধ্যে এটি ঘটতে দেখছি। এবং ভবিষ্যতে আরও ঘটবে। সুতরাং আমি 100% এই বিষয়টিতে একমত।
জেসন বেকার

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

কার্যকর সংকরটির জন্য ডি প্রোগ্রামিং ভাষার ২.০ শাখাটি দেখুন। এটি একটি আলফা / কাজ চলছে, তবে এটি সেখানে চলেছে।
dsimcha

2
আমি এই উত্তরটি আকর্ষণীয় পেয়েছি, আমি কোনও কার্যকরী ভাষা জানি না, কেন তাদের সমান্তরালতার জন্য আরও উপযুক্ত মনে করা হয়?
andandandand

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

79

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

আমি বলি এটি শিখার কোনও কারণ নেই।

আমি মনে করি যে ভাষাগুলি কার্যকরী এবং অপরিহার্য শৈলীর মিশ্রণের জন্য ভাল কাজ করে সেগুলি সবচেয়ে আকর্ষণীয় এবং সম্ভবত সফল হওয়ার সম্ভাবনা বেশি।


ভাল কথা, তবে আমি "কীভাবে এটি আপনাকে আরও উন্নত বিকাশকারী করবে" এর ব্যাখ্যা দেখতে চাই
এমটি 3

20
বিভিন্ন প্রোগ্রামিংয়ের বিভিন্ন দৃষ্টান্তগুলি বিভিন্ন কোণ থেকে সমস্যাগুলির সাথে যোগাযোগ করে এবং প্রায়শই "চিন্তাভাবনার বিভিন্ন উপায়" বা মানসিকতার প্রয়োজন। এবং নিজেকে ভাবনার একাধিক পদ্ধতিতে প্রশিক্ষণ দেওয়া (বোঝাচ্ছে কোনটি কোন পরিস্থিতিতে কোনটি ব্যবহার করা উচিত ...) কখনই খারাপ জিনিস নয়।
পিএসশির

56

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

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

২০০ early এর প্রথম দিক থেকে কার্যকরী প্রোগ্রামিং এবং সমান্তরালতা সম্পর্কে কিছুটা গুঞ্জন রয়েছে। যেহেতু সাইমন পাইটন জোনসের মতো লোকেরা সমান্তরালতা সম্পর্কে চিন্তাভাবনা করছেন এবং কমপক্ষে ১৯৮৪ সাল থেকে, কার্যকরী ভাষাগুলি মাল্টিকোর সমস্যার সমাধান না করা পর্যন্ত আমি আমার নিঃশ্বাস ছাড়ছি না। তবে এটি এখনই অতিরিক্ত বাজেটের কিছু ব্যাখ্যা দেয়।

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


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

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

আমি ইউকেতে ইউনিতে (পাশাপাশি পাস্কেল, সি, মডিউলা 2 এবং কোবোল) ফোর্থ এবং লিস্প করেছি তবে তা আজ থেকে 20 বছর আগে ..
কেপললক

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

1
দলে থাকা সমস্ত ইউরোপীয়দের সাথে সি # এর কী হয়েছে দেখুন দেখুন :)
বেনজল

32

আমি এখানে ঘরে হাতির উল্লেখ করতে কাউকে দেখতে পাচ্ছি না, তাই আমি মনে করি এটি আমার হাতে রয়েছে :)

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

ক্লোজারগুলির সাথে একত্রে, এফপি জেএস কোডটি সত্যই হালকা করে, তবুও পাঠযোগ্য।

চিয়ার্স, পিএস


2
এইভাবেই আমি কার্যকরী প্রোগ্রামিং খনন শুরু করেছি। প্রোটোটাইপ.জেএস এর তালিকার চেয়ে ভাল আর কিছুই নয় ach প্রতিটি (ফাংশন (আইটেম)}}) বা জিক্যুরির পুরো পরিচালনা পদ্ধতি।
কোরি আর কিং কিং

20
জাভাস্ক্রিপ্ট একজনকে একটি কার্যকরী উপায়ে প্রোগ্রাম করার অনুমতি দেয়। এটি অবশ্য একটি ক্রস দৃষ্টান্তের ভাষা, যার মাধ্যমে
বিভিন্নকে


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

25

বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ

  1. ওও উপায় সর্বদা "স্বাভাবিক" হয় নি। এই দশকের মানটি গত দশকের প্রান্তিক ধারণা ছিল।

  2. কার্যকরী প্রোগ্রামিং গণিত হয়। লিস্পে পল গ্রাহাম ( লিসপের বিকল্প ফাংশনাল প্রোগ্রামিং):

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


25

আমি বাজি ধরছি আপনি যখন জানতেন যে আপনি কার্যক্ষম প্রোগ্রামিং ছিলেন:

  • এক্সেল সূত্র
  • কোয়ার্টজ সুরকার
  • জাভাস্ক্রিপ্ট
  • লোগো (কচ্ছপ গ্রাফিক্স)
  • LINQ
  • এসকিউএল
  • অ্যান্ডস্কোর.জেএস (বা লোডাশ), ডি 3

10
জাভাস্ক্রিপ্ট কীভাবে কার্যকরী প্রোগ্রামিং হিসাবে বিবেচিত হয়?
পেসারিয়ার

8
এটিতে প্রথম শ্রেণির ফাংশন, উচ্চ-অর্ডার ফাংশন, ক্লোজার্স, বেনামে ফাংশন, আংশিক প্রয়োগ, কারিরিং এবং রচনা রয়েছে।
daniel1426

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

7
দয়া করে সেই তালিকায় সি যুক্ত করুন
মনদীপ জানজুয়া

2
@ মনদীপজানজুয়া: হু? কিভাবে? বা কেন তখন কোন ভাষা হয় না?
জেড

18

গড় কর্পোরেট প্রোগ্রামার, যেমন আমি যাদের সাথে কাজ করি তাদের বেশিরভাগই এটি বুঝতে পারে না এবং বেশিরভাগ কাজের পরিবেশ আপনাকে এতে প্রোগ্রাম করতে দেয় না

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

এটি আসলে বিশ্ববিদ্যালয়গুলিতে শেখানো হয় না (বা আজকাল এটি কি?)

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

বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ

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

যে কোনও ক্ষেত্রে, মনে রাখবেন যে এফপি সমর্থকরা দাবি করেছেন যে এটি বেশ কয়েক দশক ধরে নেক্সট বিগ থিং ছিল। সম্ভবত তারা ঠিক বলেছেন, তবে মনে রাখবেন যে তারা 5, 10 বা 15 বছর আগে একই দাবি করার সময় ছিল না।

একটি জিনিস যা অবশ্যই তাদের পক্ষে গণ্য করা হয়েছে, তা হল, সম্প্রতি, সি # এফপির দিকে তীব্র ঘুরিয়ে নিয়েছে, এটি প্রায়োগিক প্রোগ্রামারদের একটি প্রজন্মকে এফপি প্রোগ্রামারগুলিতে রূপান্তরিত করে, এমনকি তাদের লক্ষ্য না করেই । এটি কেবল এফপি "বিপ্লব" এর পথ প্রশস্ত করতে পারে। হতে পারে. ;)


MIT- র ব্যবহৃত তার ইন্ট্রো সি এস এ প্রকল্প শেখান অবশ্যই, কিন্তু এখন পাইথন ব্যবহার করে।
মিপাদি

1
"15 বছর আগে তারা ওওপি বুঝতে পারেনি" - সমস্যাটি হ'ল 15 বছর আগে তারা এফপিও বুঝতে পারেনি। এবং তারা আজও না।
জেসন বেকার

15

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

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

- মিয়ামোটো মুসাশি, "পাঁচটি রিংয়ের একটি বই"


12

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

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

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

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


12

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

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

এটি আপনাকে আরও ভাল সংবেদনশীল সত্তা করে তোলে।


6
আমি মনে করি না যে ওও এফপির চেয়ে সহজাতভাবে সহজ। এটি সত্যিই আপনার পটভূমির উপর নির্ভর করে (আমি গণিতের লোক, আমি কী খুব সহজ বলে মনে করি? :) ও লোকেরা এবং আপনার উন্মাদ বিধিগুলি আপনাকে ধিক্কার জানায়।
temp2290

14
মনডা বুঝতে অসুবিধা হয় না। যে বুলক্র্যাপটি কিনবেন না।
রায়নে

-1 ওওপি এফপির চেয়ে শক্ত
কেউ

-1 আমরা ওসিএএমএল বা হাস্কেল ব্যবহার করে অপ্টিমাইজিং সংকলকগুলি লিখব না যদি এফপি কেবলমাত্র গণিতের সমস্যার জন্য উপযুক্ত ছিল।
গ্রাচুস

8

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


ভাল মন্তব্য +1। @ মেন্ডল্ট: "আরও অ্যাক্সেসযোগ্য"? আপনি কোডটি দেখলে আপনার মাথাব্যথা দ্রুত হওয়ার অর্থ কি?
প্যাট্রিক হনোরেজ

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

8

আমি উল্লেখ করতে পারি যে আপনি কার্যকরী ভাষাগুলি সম্পর্কে যা কিছু বলেছেন, বেশিরভাগ লোক প্রায় 20 বছর আগে অবজেক্ট-ভিত্তিক ল্যাঙ্গুয়েজ সম্পর্কে বলছিলেন। পিছনে তখন ওও সম্পর্কে শুনতে খুব সাধারণ ছিল:

* The average corporate programmer, e.g. most of the people I work with, will not understand it and most work environments will not let you program in it
* It's not really taught at universities (or is it nowadays?)
* Most applications are simple enough to be solved in normal IMPERATIVE ways

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


2
* গড় কর্পোরেট প্রোগ্রামার, যেমন আমি যাদের সাথে কাজ করি তাদের বেশিরভাগই এটি বুঝতে পারে না এবং বেশিরভাগ কাজের পরিবেশ আপনাকে এতে প্রোগ্রাম করতে দেয় না - এটি এখনও অনেক জায়গাতেই কাজ করেছেন ওওপির ক্ষেত্রে :) (অবশ্যই তারা বলে তারা
ওওপি

7

মাইক্রোসফ্ট এটি চাপ দিচ্ছে বলে এফ # ধরতে পারে।

প্রো:

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

বিরূদ্ধে:

  • আপনি সি # এবং। নেট দিয়ে ভাল থাকলেও এফ # শুরু করা খুব শক্ত (কমপক্ষে আমার পক্ষে :(
  • ভাল এফ # বিকাশকারীদের খুঁজে পাওয়া সম্ভবত কঠিন হবে

সুতরাং, আমি গুরুত্বপূর্ণ হয়ে ওঠার জন্য 50 # 50 টি সুযোগ দিচ্ছি। অন্যান্য কার্যকরী ভাষাগুলি অদূর ভবিষ্যতে এটি তৈরি করতে যাচ্ছে না।


6
আমি যুক্তি দিয়েছিলাম যে জালআরই নিয়ে স্কালাল একটি গভীর গভীর ভিত্তি।
সিডিএমকেই

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

1
লিনিকিউ সি # এবং ভিবি.নেটের সাথে কার্যকরী ধারণাগুলি ব্যবহার করার জন্য একটি ভাল সেতু ... এবং আমি এফ # এর সাথে তুলনা করলে পড়তে খুব কম বেদনাদায়ক বলে মনে করি
ম্যাথু হোয়াইট

5

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

ক্লোজার বা এফ # এর মতো ভাষাগুলি JVM / সিএলআর ভিত্তিতে নির্মিত তা বিবেচনা করে এই নিয়মের ব্যতিক্রম হতে পারে। ফলস্বরূপ, তাদের কাছে আমার কোনও উত্তর নেই।


+1 তবে বিপণনের শক্তি এবং আপনার প্রতিষ্ঠানের উত্তরাধিকার কোডের পর্বত কিছু নতুন নতুন ট্রেন্ডের কারণে ভাষা পরিবর্তন করতে চলেছে তা ভুলে যাবেন না।
temp2290

এবং আপনি উল্লেখ করতে ভুলে গেছেন: গুগল অজগরকে জনপ্রিয় করছে।
হাও ওউই লিম

4

[আপনার পছন্দসই ভাষা, দৃষ্টান্ত ইত্যাদি sertোকান] এখানে বেশিরভাগ অ্যাপ্লিকেশন সমাধান করা যায়।

যদিও এটি সত্য, বিভিন্ন সমস্যা বিভিন্ন সমস্যা সমাধানে ব্যবহার করা যেতে পারে। কার্যকরী কেবলমাত্র একটি উচ্চ (উচ্চতর?) স্তরের বিমূর্ততা দেয় যা সঠিকভাবে ব্যবহৃত হলে আমাদের কাজগুলি আরও কার্যকরভাবে করতে দেয়।


4

আমার কাছে মনে হয় যে সেই লোকেরা যারা স্নাতক হিসাবে কখনও লিপ্প বা স্কিম শিখেনি তারা এখন এটি আবিষ্কার করছে। এই ক্ষেত্রের অনেক কিছুর মতোই হাইপ এবং উচ্চ প্রত্যাশা তৈরি করার প্রবণতা রয়েছে ...

এটা পাস হবে।

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

এর মাধ্যমে আমার কী হবে তা হ'ল আরও ক্রস-ল্যাঙ্গুয়েজ ক্ষমতা - উদাহরণস্বরূপ একটি কার্যকরী ভাষায় জিনিসগুলি বাস্তবায়ন করা এবং তারপরে অন্যান্য ভাষায় সেই জিনিসটিতে অ্যাক্সেস দেওয়া।


1
সি # এখন একটি কার্যকরী প্রোগ্রামিং ল্যাঙ্গুয়েজ (লিস্পের মতো) কারণ এটির প্রথম-শ্রেণীর লেক্সিকাল ক্লোজার রয়েছে। প্রকৃতপক্ষে, তারা ইতিমধ্যে ডাব্লুপিএফ এবং টিপিএল ব্যবহৃত হয়। সুতরাং কার্যকরী প্রোগ্রামিং ইতিমধ্যে এখানে ইতিমধ্যে।
জন হ্যারোপ

4

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

পিপিটি

গুগলের এইচটিএমএল সংস্করণ


3

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

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


3

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

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

  • বেশ কয়েকটি ভাষায় উল্লেখযোগ্যভাবে পাইথন, সি # এবং রুবি তালিকার বোধগম্যতা এবং তালিকার জেনারেটরের জন্য স্থানীয় সমর্থন রয়েছে support

  • এমএল 1973 সালে জেনেরিক প্রোগ্রামিংয়ের সূচনা করেছিল, তবে জেনেরিকদের জন্য সমর্থন ("প্যারামেট্রিক পলিমারফিজম") গত 5 বছর বা তার পরে কেবল শিল্পের মান হিসাবে পরিণত হয়েছে। যদি আমি সঠিকভাবে মনে রাখি, ফোর্টরান ২০০৩ সালে জেনারিকদের সমর্থন করেছিল, তারপরে জাভা 2004, ২০০৫ সালে সি #, ২০০৮ সালে ডেলফি I ।)

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

বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ

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


3

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



3

লিঙ্কটি খোলে না। ত্রুটি 403.
অ্যালেক্সি ফ্রুঞ্জ

এটি একটি ভাল প্রতিস্থাপন হতে পারে? cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
কানাডিয়ান ধর্ম

মৃত লিঙ্ক। এই কারণেই এই ধরণের উত্তরগুলি উদ্ধৃত করার পাশাপাশি লিঙ্ক করার পক্ষে প্রতিক্রিয়াযুক্ত।
সিলভেস্টার

আমি লিঙ্কটি স্থির করেছি। @ সিলওয়েস্টার এটি সত্য, তবে এটি একটি 23 পৃষ্ঠার নথি। এই সাইটে উত্তর দেওয়ার জন্য কাগজটি ছড়িয়ে দেওয়া এটি ন্যায়বিচার করে না।
গ্রুম

2

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

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

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

আপনি গুরুত্বপূর্ণ কিছুটিকে আঘাত করেছেন: এটি এমন সমস্যা হতে পারে যা অন্য উপায় দ্বারা সহজেই সমাধান করা যায় না যা কার্যকরী প্রোগ্রামিংকে উত্সাহিত করবে। সেটা কি হবে?

বিশাল মাল্টিকোর হার্ডওয়্যার এবং ক্লাউড কম্পিউটিং কি তাদের সাথে চাপ দেবে?


2

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

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

এছাড়াও, বেশিরভাগ বিশ্ববিদ্যালয়গুলি এফপি শেখায়, অনেকে এমনকি এটি প্রথম প্রোগ্রামিং কোর্স হিসাবে পড়ায়।


দুঃখিত, তবে এফপি ওওপি হিসাবে প্রায় 3 বার প্রায় হয়েছে। এটি কেবল আরও বেশি সময়ের প্রয়োজনের বিষয় নয়। এফপিকে মূল স্রোতে তৈরি করতে আরও কিছু লাগবে।
জেসন বেকার

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

2

বাহ - এটি একটি আকর্ষণীয় আলোচনা। এ সম্পর্কে আমার নিজস্ব ধারণা:

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


2

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

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

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


2

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

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


2

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

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


1

অন্যান্য উত্তরের পাশাপাশি, খাঁটি কার্যকরী শর্তে সমাধান oneালাই সমস্যাটিকে আরও ভালভাবে বুঝতে বাধ্য করে। বিপরীতে, একটি কার্যকরী শৈলীতে চিন্তাভাবনা আরও ভাল * সমস্যা সমাধানের দক্ষতা বিকাশ করবে।

* হয় কার্যকরী দৃষ্টান্ত আরও ভাল কারণ বা এটি আক্রমণে অতিরিক্ত কোণ বহন করবে।

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