অত্যাবশ্যক প্রোগ্রামারগুলিকে ডিক্যোটারিয়েল প্রোগ্রামিং শেখানোর চেষ্টা করার সময় কিছু ভাল অভ্যাসগুলি কী কী?


13

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

আমার কাছে কীভাবে যোগাযোগ করা উচিত সে সম্পর্কে কেউ কেউ পরামর্শ দিতে পারেন?

ধারনা

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

এফ # এবং ঘোষিত প্রোগ্রামিং ?????
পি Shved

@ পাভেল - এটা কি প্রশ্ন?
কেওসপ্যান্ডিয়ন

3
@ পাভেল - ঠিক আছে, আপনি কেন বিবৃতি দিয়েছেন তা বোঝানোর যত্ন নিন? এটি দ্বিতীয়বার আপনি অত্যন্ত অস্পষ্ট মন্তব্য করেছেন। এটা খুব অভদ্র।
কেওসপ্যান্ডিয়ন

3
en.wikedia.org/wiki/Declarative_programming ফাংশনাল প্রোগ্রামিং হ'ল এক প্রকারের ঘোষণামূলক প্রোগ্রামিং। এছাড়াও, +1, ভাল প্রশ্ন।
নিজের কাছে নোট করুন - একটি নাম ভাবেন

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

উত্তর:


5

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

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

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

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

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


1

আমি সুপারিশ করতাম:


1

অনেক আবশ্যক প্রোগ্রামিং ল্যাঙ্গুয়েজ (অ্যাডা, সি / সি ++, টার্বো পাস্কেল, ফক্সপ্রো) চলমান সময়ে ফাংশনগুলি বা পদ্ধতিতে নাম আক্ষরিকগুলির জন্য নির্দেশককে সংজ্ঞায়িত করার ক্ষমতা রাখে যা চালানোর সময় মূল্যায়ন করা যেতে পারে (এবং আক্ষরিক নাম অনুসারে প্রক্রিয়াগুলি নামক প্রক্রিয়াগুলি)।

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

এটি একবার ডুবে যায়, তারপরে আপনি অন্যান্য জিনিসগুলি (অপরিবর্তনীয়তা, ভাগ্য-কিছুই, ইত্যাদি) নিয়ে আনন্দ শুরু করতে পারেন


সংশোধন: আমি যা বলতে চাইছি তা হ'ল ধারণাটি তৈরি করুন যে আপনি প্যারামিট্রাইজড অ্যালগরিদমগুলি সংজ্ঞায়িত করতে পারেন যা অন্য অ্যালগরিদমগুলিকে পরামিতি হিসাবে গ্রহণ করতে পারে এবং ডেটা স্ট্রাকচারে এগুলি কার্যকর করতে পারে।
luis.espinal

1

আমার কাছে কীভাবে যোগাযোগ করা উচিত সে সম্পর্কে কেউ কেউ পরামর্শ দিতে পারেন?

নিশ্চিত:

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

  • F # তে পাওয়া নতুন বৈশিষ্ট্যের সুবিধা হাইলাইট করার জন্য একটি উদাহরণ ব্যবহার করুন, যেমন অ্যাসিনক্রোনাস ওয়ার্কফ্লোস, সক্রিয় নিদর্শন।

  • উপযুক্ত হলে পরিবর্তনীয় ডেটা স্ট্রাকচার ব্যবহার করে অশুচি উদাহরণ দিতে ভয় পাবেন না। F # একটি কারণে অশুচি।

  • এফ # কে প্যানিসিয়া হিসাবে উপস্থাপন করবেন না। যে অ্যাপ্লিকেশনগুলির জন্য F # তেমন উপযুক্ত নয় তেমনি অন্যান্য। নেট ভাষার তুলনায় এটি আরও ভাল উপযুক্ত Des

  • খেলনা নমুনাগুলি নির্দেশ করুন তারা অধ্যয়ন করতে পারবেন পাশাপাশি সফল রিয়েল-ওয়ার্ল্ড প্রকল্পগুলি যা এফ # (বিং অ্যাডসেন্টার, হ্যালো 3 ইত্যাদি) ব্যবহার করেছে।

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

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