কোডিংয়ের কার্যকরী শৈলীতে আপনার দলকে কীভাবে প্রবর্তন করবেন?


10

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

কার্যকরী কোডিং শৈলীতে তাদের পরিচয় করিয়ে দেওয়ার ভাল উপায় হতে পারে সে সম্পর্কে কোনও পরামর্শ? আমরা আমাদের কোডিং প্রচুর সংক্ষিপ্ত করতে পারি যদি আমরা আমাদের নির্দিষ্ট ক্ষেত্রেগুলি কার্যকরীভাবে করি way

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


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

2
@ মেসনওহিলার: আমি জানি কেন আমাদের কার্যকরী দরকার। মাসের জিনিসটির শীতল ভাষায় নয়। তার জন্য অনেক পুরানো।
ফ্যান্যাটিক 23

1
আসুন ধরে নেওয়া যাক কেউ হাস্কেলকে চেনে, আপনি কি এটি আপনার সিস্টেমে কাজ করতে পারবেন?
JeffO

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

উত্তর:


8

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

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


যে উপস্থাপনা চমত্কার .. বিশেষত যেহেতু এটি একটি ভ্যাম্পায়ার দ্বারা দেওয়া হয়েছে !! হাঃ হাঃ হাঃ!! জে / কে .. ছেলেরা ক্যারিশমা পেয়েছে ..
হাঞ্জোলো

7

আপনার সহকর্মীদের কাজের বাইরে কোড আছে?

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

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

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

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

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

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

এটি ডেভসকে বিক্রি করার মতো ... ম্যানেজমেন্ট হ'ল সম্পূর্ণ অন্য একটি জন্তু।


2

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


2

একটি কার্যনির্বাহী প্রোগ্রামারকে ভাড়া করুন (বা বসকে ভাড়া নেবেন)

অবশেষে, এটি আপনার দলের বাকি অংশগুলিকে বন্ধ করে দেবে।

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


2

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

জটিলতার পার্থক্যটি যদি আপনি বলেন তত বিস্তৃত হয়, তবে এটি নিজের পক্ষে কথা বলা উচিত।


2

স্কালার উল্লেখ করার জন্য +1 করা: এই উত্তরে মন্তব্য হিসাবে এটি শুরু হয়েছিল তবে খুব বড় হয়েছে ...

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

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

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


1
@timeday খুব ভাল বলেছেন। আমি জাভা / ওও ছেলেরা। আমি এক বছর আগে স্কেলা বাছাই করেছি। এবং এফপি শেখা আমার পক্ষে বেশ চ্যালেঞ্জিং ছিল। আমি একসাথে কিছু করছি এবং এটির সাথে বসে আছি। আমি সব একবারে পাওয়ার চেষ্টা করছি না।
বিশৃঙ্খলা

1

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

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

যাইহোক, আপনার এফপি যাত্রায় শুভকামনা। :)

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