উত্তর:
একটি বড় সমস্যা হ্যাসেল এর মতো একটি ভাষা দিয়ে শুরু করা হলে অন্য সমস্ত কিছুই কেবল নিম্নমানের বলে মনে হবে।
সত্যই আমি মনে করি হাস্কেল বা স্কিমের মতো ভাষা দিয়ে শুরু করা একটি দুর্দান্ত ধারণা হবে।
(আমি স্বীকার করি যে আমি কার্যকরী ভাষা আসক্ত) সম্পাদনা:
আমি উভয় ভাষা সম্পর্কে যা পছন্দ করি ঠিক আছে:
স্কিমটি একটি খুব সাধারণ ভাষা নেয় এবং এর মধ্যে উন্নয়নের জন্য একটি দুর্দান্তভাবে শক্তিশালী ভাষা তৈরি করে। এছাড়াও এসআইসিপি স্কিম সম্পর্কে লেখা হয় যা এখুনি এটি শেখার পক্ষে মূল্যবান করে তোলে। স্কিমটি এমন সহজতম বিষয় সম্পর্কে যা আপনি কল্পনাও করতে পারেন যা একটি সম্পূর্ণ ভাষা হতে পারে।
হাস্কেল যা সত্যিই আমার উপর বাড়ছে তা হ'ল টাইপ সিস্টেম। অন্য ভাষাগুলিতে আমি যে সমস্ত বাগ দেখতে পাচ্ছি তা ভুল কোথাও কোথাও প্রদর্শিত হওয়ার কারণে। হাস্কেলে এটি প্রায় অসম্পূর্ণ। এছাড়াও একটি অলস ভাষার ধারণাটি কেবল কিছু দুর্দান্ত জিনিস এড়িয়ে চলেছে। উদাহরণস্বরূপ আপনি হাস্কেলগুলিতে অসীম ডেটা স্ট্রাকচার তৈরি করতে পারেন এবং তারপরে কেবল আপনার প্রয়োজনীয় অংশটি তৈরি করতে পারেন।
ওওপি ল্যাং শেখার আগে একটি কার্যকরী ভাষা শেখার বৃহত্তম প্লাসটি হ'ল আপনার প্রোগ্রামিং দক্ষতা প্রথমে বিকাশ লাভ করে এবং তারপরে আপনি সহজেই ওওপি ধারণাটি উপলব্ধি করতে পারেন। যদি আপনি কোনও ওওপি ভাষা দিয়ে নির্দেশনা শুরু করেন তবে আপনাকে দুটি বিষয় একই সাথে শিখতে হবে: "কোড সম্পর্কে চিন্তা করা" এবং "ওওডি সম্পর্কে চিন্তা করা"। এটি বিরক্তিকর পেতে পারে। প্রথমে একটি কার্যকরী ভাষা নিয়ে অনুশীলন করুন এবং আপনার প্রোগ্রামিং দক্ষতা বিকাশ করুন। তারপরে ওওপি এবং অন্যান্য দৃষ্টান্তগুলি শিখুন। যেহেতু ওওপি কাঠামোগত প্রোগ্রামিংয়ের ঘাটতিগুলি সমাধান করার জন্য তৈরি হয়েছিল তাই কেন এটি বোঝা সহজ হবে। এই কারণেই সিএস কোর্সগুলি সি দিয়ে শুরু হয় এবং তারপরে সি ++ এ চলে যায়।
প্রশ্নে কিভাবে কার্যকরী প্রোগ্রামিং, দুই সর্বোত্তম সুপারিশগুলি শুরু করে প্রোগ্রামিং শিখতে:
প্রথম এবং সুস্পষ্ট একটি হ'ল কম্পিউটার প্রোগ্রামগুলির ক্লাসিক স্ট্রাকচার এবং ব্যাখ্যা , অ্যাবেলসন এবং সুসমানের দ্বারা, যা সেখানকার সিএসের জন্য সেরা পরিচিতির একটি হিসাবে রয়ে গেছে, এবং স্কিম ব্যবহার করে একটি কার্যকরী দৃষ্টিকোণ থেকে শেখানো হয়। এটি সম্পূর্ণ অনলাইনে উপলব্ধ । আপনি যদি এখানে শুরু না করেন তবে কিছুটা পয়েন্ট হিসাবে আপনার এখানে আসা উচিত।
সাম্প্রতিক গতিতে একই স্থলটির বেশিরভাগ অংশ জুড়ে থাকা এবং সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের উপর আরও জোর দেওয়া সহ আরও একটি সাম্প্রতিক পাঠ্য হ'ল ম্যাথু ফেলেলিসেন এবং র্যাকেট / পিএলটি দল থেকে অন্যান্যদের একগুচ্ছ প্রোগ্রাম , ডিজাইনের প্রোগ্রামগুলি কীভাবে র্যাকেট উপভাষা ব্যবহার করে পরিকল্পনা. এটি অনলাইনেও পাওয়া যায় , যেমনটি চলছে অগ্রগতি দ্বিতীয় সংস্করণ । এই বইটির সুবিধা রয়েছে যে এটি DrRacket প্রোগ্রামিং পরিবেশের সাথে ব্যবহার করার জন্য ডিজাইন করা হয়েছে, যা প্রাথমিকের জন্য বিশেষজ্ঞ এবং কোডের সাথে পরীক্ষার জন্য বিশেষজ্ঞদের জন্য অত্যন্ত মৈত্রী ইন্টারফেস সরবরাহ করে।
ফাংশনাল প্রোগ্রামিং দিয়ে কেন শুরু হবে এই প্রশ্নে , আমি বব হার্পারের ব্লগে উল্লেখ করতে চাই । কার্নেগি মেলন সম্প্রতি কার্যনির্বাহী প্রোগ্রামিং শেখানোর জন্য তাদের সিএস পাঠ্যক্রমটি পুনরায় তৈরি করেছেন এবং হার্পার তার ব্লগে তাদের অগ্রগতিকে ধাক্কা দিয়ে চলেছে। স্ট্যান্ডার্ড এমএল-এর সংজ্ঞার পিছনে থাকা একজন হিসাবে, এটা স্পষ্ট যে তিনি এই পদক্ষেপের জন্য ছিলেন, এবং তিনি এর কারণগুলি ভালভাবে যুক্তি দিয়েছিলেন।
অবশেষে, আমি প্রথমে হাস্কেল শেখার বিরুদ্ধে সতর্কতা অবলম্বন করব, যদিও অন্যেরা তাতে দ্বিমত পোষণ করতে পারে। যদিও হাস্কেলের এফপিতে খাঁটি দৃষ্টিভঙ্গি অবশ্যই ভাল অভ্যাসের প্রজনন করবে, অলস গণনার ক্ষেত্রে ভাষার ফোকাস অগত্যা শিক্ষানবিদের জন্য একটি ভাল মিল নয়; প্রোগ্রামার হিসাবে আপনাকে শিখতে হবে প্রথম এবং সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলির মধ্যে উত্সটি দেখে আপনার প্রোগ্রামটি ঠিক কী করছে এবং একই সমস্যার জন্য বিভিন্ন পদ্ধতির আপেক্ষিক ব্যয় সম্পর্কে তর্ক করা। আমি আমার অভিজ্ঞতা যে হাস্কেলের অলসতা এই উভয় ক্রিয়াকলাপ এমনকি অভিজ্ঞ প্রোগ্রামারদের জন্য কিছুটা চ্যালেঞ্জ হিসাবে তৈরি করেছে, যদিও আপনার মাইলেজ মে ভ্যারিয়ের হতে পারে।
এফপি দিয়ে শুরু করার মূল সুবিধা (বা, অ-অসুবিধে) হ'ল বেশিরভাগ ধারণাগুলি অপরিহার্য প্রোগ্রামিংয়ের ক্ষেত্রেও প্রয়োগ করতে পারে। ক্ষেত্রের ক্ষেত্রটি কার্যকরী এবং অপরিহার্য ধারণা উভয়ই শেখাতে ভিডিও গেম উপমাগুলি ব্যবহার করে এবং উত্সর্গীকৃত শিক্ষার্থীরা কেবলমাত্র একটি কার্যকরী গেম (এনপিআই) নয়, শর্তসাপেক্ষ, পুনরাবৃত্তি, লুপস, এডিটি এবং ইভেন্ট-চালিত নকশার একটি দৃ understanding় বোঝা রেখে যায়। এই ধারণাগুলি আধুনিক প্রোগ্রামিংয়ে ব্যবহারিকভাবে সর্বব্যাপী এবং নিয়মিত ব্যবহৃত হয়।
এর চেয়েও গুরুত্বপূর্ণ, তবে কীভাবে বিমূর্ততাগুলি এনকোড করা শিখছে , উচ্চতর অর্ডার ফাংশন এবং ডেটা ধরণের ব্যবহারের সাথে এমন কিছু যা এফপি ছাড়িয়ে যায়। প্রোগ্রামগুলি কীভাবে ডিজাইন করবেন তা ইনডাকশনের মাধ্যমে শেখানোর মাধ্যমে এটিতে একটি অনন্য দৃষ্টিভঙ্গি গ্রহণ করে। উদাহরণস্বরূপ, শিক্ষার্থীরা কীভাবে fold
তালিকার যোগফল এবং পণ্য উভয়ই নেওয়ার কোডটি দেখে, কী কী সাধারণ তা খুঁজে পেয়ে এবং বাস্তবায়নটি নিজেই অর্জন করে কীভাবে কাজ করে তা শিখবে ।
উপরের ওওপি সমতুল্য সম্ভবত নিম্নলিখিতগুলির এক বা একাধিককে জড়িত করবে: ইন্টারফেস, বিমূর্ত শ্রেণি, জেনেরিকস, ফান্টেক্টর, বা (যদি আপনি এটি ভুল করছেন) সিলেটলেট। যদিও এটি জাভাতে নিখুঁতভাবে গ্রহণযোগ্য ডিজাইনের নিদর্শন রয়েছে, আইএমএইচও তারা কোনও প্রারম্ভিক পাঠ্যক্রমের অন্তর্ভুক্ত নয় এবং কেবল অন্তর্নিহিত নীতিগুলি অবলম্বন করে। এমনকি এফপি ভাষায় "দেরি" করার জন্য পরিচিত কেউ হিসাবে, আমি বলতে পারি যে ওওপির চিরতরে স্থানান্তরিত সমুদ্র নেভিগেট করা একটি শক্তিশালী ফাংশনাল অ্যাঙ্কর করে খুব সহজ করে দেওয়া হয়েছে।
RACKETEERS
। নিশ্চিত হয়ে নেই কখন এটি শেষ হয়, দুঃখিত।
কার্যকরী প্রোগ্রামিং জিনিসগুলি অনেক সহজ করে তোলে। ওওপি ভাষায়, আপনাকে সেই রাষ্ট্রটি বিনষ্ট না করে একাধিক থ্রেড জুড়ে পরিচালনা করার পরিস্থিতি মোকাবেলা করতে হবে। কার্যকরী ভাষায়, যখন বেশিরভাগ কাজ খাঁটি ফাংশন দ্বারা করা হচ্ছে, আপনাকে এটি নিয়ে চিন্তা করার দরকার নেই।
গতি / পারফরম্যান্সের ক্ষেত্রে, আমি সত্যিকারের পারফরম্যান্স জকি নই, তবে কার্যকরী হওয়ার অর্থ ধীর হওয়া নয়, এবং কার্যকরী ভাষার গঠনগুলির গতির সাথে সামান্যই সম্পর্ক রয়েছে। কার্যকরী ভাষার বাক্য গঠনগুলি ক্লোজিউর এবং হাস্কেলের মধ্যে পার্থক্যগুলির মতো ব্যাপকভাবে পরিবর্তিত হয়। ক্লোজওর যেমন হয় তত দ্রুত, এবং সত্য-পরবর্তী অপ্টিমাইজেশনের সাহায্যে জাভার গতিতে পৌঁছতে (এবং কখনও কখনও অতিক্রম করে) can
সুতরাং এটি সর্বোপরি নির্ভর করে আপনি কী খুঁজছেন
আমি মনে করি প্রোগ্রামিংয়ের ভাষা শেখার সময় শিক্ষার সামগ্রীর প্রাপ্যতা, কিছু ভাল কোডের নমুনা এবং পরামর্শদাতাগুলি খুব গুরুত্বপূর্ণ। আপনার পরিস্থিতির উপর নির্ভর করে আপনার এমন একজন পরামর্শদাতা থাকতে পারে যা আপনাকে শিখিয়ে দিতে পারে ইত্যাদি। তবে আমি মনে করি মূলধারার ভাষার তুলনায় কার্যকরী ভাষার সংস্থান খুব কম are এর অর্থ আপনি মূলধারার ভাষা শেখার তুলনায় ধীরে ধীরে অগ্রসর হবেন। তবে আপনি যদি তাড়াহুড়ো না করেন তবে এটি কোনও সমস্যা নয়।
ফাংশনাল প্রোগ্রামিং ভাষা শেখার সবচেয়ে গুরুত্বপূর্ণ কারণ বীজগণিত সম্পর্কিত ডেটা-ধরণের বোঝা। মানসিক ম্যাপিং ওও শ্রেণির সম্পর্ক এবং এমনকি ডেটাবেস ডিজাইনের মডেলিংয়ে সহায়তা করবে।
মাল্টি-কোর / মাল্টি-প্রসেসর সিস্টেমগুলিতে ফোকাস সমান্তরাল অ্যালগরিদমগুলির ব্যবহারের উপর জোর দেয় যা এফপিতে আরও স্পষ্ট এবং সংক্ষিপ্তভাবে প্রকাশ করা যেতে পারে। ভাষার ল্যাম্বডা শাখা সম্ভবত পরবর্তী এক থেকে দুই দশক ধরে ব্যবহারের শক্তিশালী বৃদ্ধি দেখতে পাবে।
তবে কিছু সাধারণ সমস্যাও রয়েছে। এফপি সহজ বলে বিশ্বাস করা একটি বড় ভুল, কারণ স্থান এবং সময় জটিলতার গণনা করার পাশাপাশি থামার প্রমাণ সরবরাহ করা ল্যাম্বডা ক্যালকুলাসে বিশেষত অলস মূল্যায়নের সমর্থনকারী ভাষায় আরও বেশি চ্যালেঞ্জ হতে পারে।
সুতরাং, উভয় শিখুন! বা সম্ভবত আরও ভাল: প্রথমে স্কেলার মতো উভয়কেই গ্রহণ করে এমন একটি ভাষা শিখুন। আপনি যদি টাই-ডাই টি-শার্ট এবং কিছুটা ডাচ অ্যাকসেন্ট মানেন না, তবে সম্ভবত আপনি ডঃ এরিক মেইজারের এফপি লেকচারগুলি এমএসডিএন-তে পেয়ে যাবেন।