ক্রিয়ামূলক প্রোগ্রামিংয়ের বিরুদ্ধে আপনার দৃ stron় মতামতটি কী? [বন্ধ]


25

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

ক্রিয়ামূলক প্রোগ্রামিংয়ের বিরুদ্ধে আপনার দৃ stron় মতামতটি কী?


5
LINQ? .নেট প্রতিনিধি? গণিতের মতো ডিএসএল?
জন হ্যারোপ

5
ঘটনাক্রমে, "ফাংশনাল প্রোগ্রামিং" শব্দটি বিভিন্ন ব্যক্তি বিভিন্ন জিনিস বোঝাতে ব্যবহার করেন যাতে আপনি কোন অর্থটি ব্যবহার করছেন তা আপনাকে পরিষ্কার করা দরকার।
জন হ্যারোপ

2
আপনি কখনই আপনার কার্যক্ষম কোড বেসে কোনও লোককে কোড পাবেন না। আপনার প্রতিভা পুলকে সীমাবদ্ধ করে কোনও দুর্দান্ত ব্যবসায়ের সিদ্ধান্ত নয়।
প্যাট্রিক হিউজেস 17

উত্তর:


52

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


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

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

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

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

2
সম্ভবত একটি খাঁটি ফাংশন প্রোগ্রাম এটি চালিয়ে বিশ্বকে পুরোপুরি অপরিবর্তিত রাখবে?
মার্টিন বেকেট

24

ফাংশনাল প্রোগ্রামিংয়ের সমস্যাটি নিজেই কার্যকরী প্রোগ্রামিং নয় - এটি বেশিরভাগ লোকেরা এটি করেন এবং (আরও খারাপ) বেশিরভাগ লোকেরা ভাষাগুলি ডিজাইন করেন যা এটি করা উচিত।

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

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

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

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

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


4
যদি আরও কার্যকরী ভাষা থাকে তবে সম্ভবত কার্যকরী ভাষার মধ্যে আরও ক্রসওভার হতে পারে।
ব্যারি ব্রাউন

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

7
সুতরাং আপনার প্রথম সমস্যাটি হল যে কার্যকরী ভাষা একে অপরের উপরে সুবিধা অর্জন করার পক্ষে যথেষ্ট আলাদা নয় এবং আপনার দ্বিতীয় সমস্যাটি হ'ল এগুলি খুব সহজেই এর মধ্যে যেতে পারছেন না ?
টিখন জেলভিস

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

1
...roughly 10,000 languages and dialects that are enough different to annoy but only rarely enough different for one to have a truly significant advantage over the others...না, এই সমস্ত প্রক্রিয়াজাতীয় স্তূপগুলির মতো শোনাচ্ছে। জাভা, স্কালা, কোটলিন, সি ++, সি #, গ্রোভি, চেডার, ইএস 6, সিলন, পাইথন, তালিকাটি আরও এগিয়ে রয়েছে - তারা সকলেই কেবল সি এর বিরক্তিকর পুনরাবৃত্তি যা আসল সমস্যাগুলি সমাধান করে না। এই অসম্পূর্ণ উত্তরটির পরিপূরক হিসাবে এটি আমার অসামান্য মতামত: ডি
বিড়াল

17

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

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


9
+1, যদিও আমি উচ্চ-স্তরের অপরিহার্য ভাষাগুলিতে প্রোগ্রাম করার সময় মাঝে মাঝে একইরকম অনুভব করি। উদাহরণস্বরূপ, কেন fsck আমার এমন সিঙ্গল মেথড ক্লাস তৈরি করা দরকার যা জাভাতে আমি সি-এর মতো একটি ফাংশন পয়েন্টার ব্যবহার না করে একক পদ্ধতি ইন্টারফেস প্রয়োগ করে?
dsimcha

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

4
@ ডিএসিমচা: এটি উচ্চ স্তরের অপরিহার্য ভাষাগুলির প্রবণতার চেয়ে জাভাটির এক বিশেষত্ব। প্রকৃতপক্ষে, উচ্চ স্তরের ভাষাগুলি সম্ভবত প্রথম-শ্রেণীর অবজেক্ট হিসাবে ফাংশনটি বেশি থাকে।
মুহাম্মদ আলকারৌরি

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

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

8

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


4
এটি একটি যৌক্তিকভাবে বৈধ পয়েন্ট, তবে ওপির প্রশ্নের চূড়ান্ত বাক্যে "আপনি যে ধরণের প্রোগ্রামিং সমস্যার সাথে ঘন ঘন ঘন ঘন মুখোমুখি হন তার জন্য" এটি পরীক্ষা করে প্রতিকার করা যেতে পারে। (পৃথক পাঠকরা বিভিন্ন সমস্যার মুখোমুখি হবেন, তারা তাদের কী তা বর্ণনা করে তা কার্যকর নয়)
j_random_hacker

4

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

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


2

বাজার করার সময়

পদ্ধতিগত কোড এবং মন্ত্রগুলির একটি সম্পূর্ণ আইটি ল্যান্ডস্কেপ পরিত্রাণ পেতে অসুবিধা।


1
কার্যকরী প্রোগ্রামগুলি প্রায়শই পরীক্ষা করা সহজ। এবং তারা খাটো হয়। তাই অসমত। আমি মনে করি আপনি অন্য প্রশ্নের উত্তর দিয়েছেন "ফানশনাল প্রোগ্রামিংয়ে যাওয়ার বিরুদ্ধে আপনার দৃ stron় মতামতটি কী?"
জোনাস


2

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

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

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


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

2
আমি চালিত ক্যামরির সমস্যা রয়েছে, তবে স্থান ফাঁসের জন্য নিয়মিতভাবে আমার প্রয়োজন হয় না । হাস্কেল এমন একটি ভাষার মতো যা এফ 1 কারের মতো দেখায় , তবে আসলে এটি একটি স্থায়ী সময়ের জন্য উচ্চতর আয় করতে পারে না। :
পি

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

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

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

2

আমি একটি বড় ভক্ত এবং ফাংশনাল প্রোগ্রামিংয়ের পক্ষে। তবে এখানে আমার বিষয়গুলি:

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

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

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

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

তদতিরিক্ত, ফাংশনাল প্রোগ্রামিং খুব দরকারী যখন আনুষ্ঠানিক যাচাই করা কোনও সুবিধা বা আবশ্যক।


3
"শিখতে সহজ": আমি আধুনিক সি ++ তে দক্ষতা অর্জনের চেয়ে হাস্কেলকে আরও শক্তিশালী করতে পারছি না। আমি মনে করি যে আমরা যার সাথে পরিচিত নই আমরা কঠোরভাবে বিবেচনা করি।
জর্জিও

1

আমি দরকারী উপমা হিসাবে এফপির বিরোধী নই, তবে আমি প্রোগ্রামিং ভাষায় উপলব্ধ একমাত্র দৃষ্টান্ত হিসাবে এটির বিরোধী।

এটি অনেকগুলি সমস্যা সমাধানে সুবিধা দেয়। তবে এফপি সি এর মতো পদ্ধতিগত ভাষায় প্রয়োগ করতে এবং করতে পেরেছিল and


প্রথম বাক্যে একমত, দ্বিতীয়টির সাথে একমত নন। আপনি মূলত আবর্জনা সংগ্রহ ছাড়া এফপি করতে পারবেন না।
dsimcha

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

"আপনি মূলত আবর্জনা সংগ্রহ না করে এফপি করতে পারবেন না।" - কেন?
কোয়ান্ট_দেব

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

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

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

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


0

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


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

0

কারও কারও কাছে একটি লার্নিং বক্ররেখা বেশ লম্বা সময় নিয়ে থাকে (বিশেষত আপনি যদি ওওপি থেকে এসে থাকেন; দৃষ্টান্তের শিফট পাওয়ার আগে আপনি কয়েকবার মাথা বোঁটাবেন)।

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

মনে হচ্ছে মত প্রকাশের ক্ষেত্রে ক্ষুদ্র ক্ষতি এবং জটিলতায় কিছুটা বৃদ্ধি রয়েছে।


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

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

@ জোনাস - একটি সাধারণ জিনিসের কারণে: ফাংশন, ভেরিয়েবল ইত্যাদির জন্য শর্টকাটিং নামগুলি ... মানে, কেবল জিনিসগুলি যা করা হয় বা করা উচিত তার জন্য নাম রাখি না কেন? "পিএমএপ" কেন?
বেলুন

1
@ বেলুন: এর কার্যকরী প্রোগ্রামিংয়ের কিছুই করার নেই। আপনাকে অবশ্যই একটি নির্দিষ্ট প্রোগ্রামিং ভাষা উল্লেখ করতে হবে। অনেকগুলি কার্যকরী প্রোগ্রামিং ভাষায় মানচিত্র একটি ফাংশন এবং এটির একটি ভাল নাম রয়েছেpmapআপনি উল্লেখ করেছেন একটি সমান্তরাল বৈকল্পিক।
জোনাস

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

0

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

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

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