হাসকেলে আপনার দক্ষতার মাত্রা অনুসারে আমি এই গাইডটি অর্ডার করতে যাচ্ছি, একজন নিখুঁত শিক্ষানবিস থেকে শুরু করে একটি বিশেষজ্ঞ পর্যন্ত। মনে রাখবেন যে এই প্রক্রিয়াটি অনেক মাস (বছর?) নেবে, তাই এটি দীর্ঘতর।
সম্পূর্ণ শিক্ষানবিশ
প্রথমত, হাস্কেল যথেষ্ট দক্ষতার সাথে যে কোনও কিছুতে সক্ষম। এটি খুব দ্রুত (আমার অভিজ্ঞতায় কেবল সি এবং সি ++ এর পিছনে), এবং সিমুলেশন থেকে সার্ভার, গুইস এবং ওয়েব অ্যাপ্লিকেশন পর্যন্ত যে কোনও কিছুর জন্য ব্যবহার করা যেতে পারে।
তবে কিছু সমস্যা আছে যা হাস্কেলের কাছে অন্যদের তুলনায় নতুনদের জন্য লেখার পক্ষে সহজ। গাণিতিক সমস্যা এবং তালিকা প্রক্রিয়া প্রোগ্রামগুলি এর জন্য ভাল প্রার্থী, কারণ তাদের লিখতে সক্ষম হ্যাসেল জ্ঞানের সর্বাধিক প্রাথমিক প্রয়োজন।
প্রথমত, হাস্কেলের খুব বুনিয়াদি শেখার জন্য কিছু ভাল গাইড হ'ল খুশি শেখার হ্যাশেল টিউটোরিয়াল এবং প্রথম cha টি অধ্যায় আপনাকে শিখার জন্য একটি হাস্কেল । এগুলি পড়ার সময়, আপনি যা জানেন তার সাথে সাধারণ সমস্যাগুলি সমাধান করাও খুব ভাল ধারণা।
আরও দুটি ভাল সংস্থান হ'ল প্রথম নীতিগুলি থেকে হাস্কেল প্রোগ্রামিং , এবং হাস্কেলে প্রোগ্রামিং । তারা উভয়ই প্রতিটি অধ্যায়ের জন্য অনুশীলন নিয়ে আসে, তাই আপনি শেষ কয়েকটি পৃষ্ঠাগুলিতে যা শিখেছিলেন তার সাথে মিলে আপনার ছোট ছোট সমস্যা রয়েছে।
চেষ্টা করার জন্য সমস্যার একটি ভাল তালিকা হ্যাশেল 99 সমস্যা পৃষ্ঠা । এগুলি খুব বেসিক শুরু হয় এবং আপনি এগিয়ে যাওয়ার সাথে সাথে আরও জটিল হয়ে ওঠে। এগুলি অনেকটা করা খুব ভাল অনুশীলন, কারণ তারা আপনাকে আপনার দক্ষতা পুনরাবৃত্তি এবং উচ্চতর ক্রমের ক্রিয়ায় অনুশীলন করতে দেয়। আমি এলোমেলোতার প্রয়োজন এমন কোনও সমস্যা এড়িয়ে যাওয়ার পরামর্শ দিচ্ছি কারণ হ্যাসকেলে এটি আরও কিছুটা কঠিন। পরীক্ষা করে দেখুন এই তাই প্রশ্ন যদি আপনি QuickCheck সঙ্গে আপনার সমাধানগুলি পরীক্ষা করতে চান (দেখুন অন্তর্বর্তী নীচে)।
একবার আপনি সেগুলির কয়েকটি সম্পন্ন করার পরে, আপনি প্রকল্প ইউলারের কয়েকটি সমস্যার জন্য এগিয়ে যেতে পারেন । এগুলি কতজন লোক এগুলি সম্পন্ন করেছে তা অনুসারে বাছাই করা হয়েছে, যা অসুবিধার মোটামুটি ভাল ইঙ্গিত। এগুলি আপনার যুক্তি এবং হাস্কেলটিকে পূর্ববর্তী সমস্যার চেয়ে বেশি পরীক্ষা করে, তবে আপনি এখনও প্রথম কয়েকটি করতে সক্ষম হবেন। এই সমস্যাগুলির সাথে হাস্কেলের একটি বড় সুবিধা হ'ল পূর্ণসংখ্যা আকারে সীমাবদ্ধ নয়। এই সমস্যাগুলির কিছুটি সম্পূর্ণ করতে, আপনার একটি হাস্কেলও শিখার 7 এবং 8 অধ্যায় পড়া ভাল হবে।
শিক্ষানবিস
এর পরে আপনার পুনরাবৃত্তি এবং উচ্চতর অর্ডার ফাংশনগুলিতে মোটামুটি ভাল হ্যান্ডেল থাকা উচিত, তাই বিশ্বের আরও কিছু বাস্তব সমস্যাগুলি শুরু করা ভাল সময় হবে। শুরু করার জন্য খুব ভাল জায়গা হ'ল রিয়েল ওয়ার্ল্ড হাস্কেল (অনলাইন বই, আপনি একটি হার্ড কপিও কিনতে পারেন)। আমি এমন কয়েকজনের জন্য খুব দ্রুত প্রবর্তিত প্রথম কয়েকটি অধ্যায় খুঁজে পেয়েছি যিনি এর আগে কখনও কার্যকরী প্রোগ্রামিং / ব্যবহৃত পুনরাবৃত্তি করেন নি। তবে আগের অনুশীলনগুলি থেকে আপনি যে অনুশীলনটি চালিয়ে এসেছেন তা পুরোপুরি বোধগম্য হওয়া উচিত।
বইটিতে সমস্যাগুলির মধ্য দিয়ে কাজ করা হ্যাশকেলে কীভাবে বিমূর্ততা এবং পুনরায় ব্যবহারযোগ্য উপাদানগুলি তৈরি করা যায় তা পরিচালনা করার শেখার একটি দুর্দান্ত উপায়। লোকেদের উদ্দেশ্যে বস্তু-ভিত্তিক (oo) প্রোগ্রামিংয়ের জন্য এটি অত্যাবশ্যক, যেহেতু সাধারণ oo বিমূর্ত পদ্ধতিগুলি (oo ক্লাস) হাসকেলে উপস্থিত হয় না (হাস্কেলের ধরণের ক্লাস রয়েছে তবে তারা ওও ক্লাসগুলির থেকে অনেক আলাদা, আরও oo ইন্টারফেসের মতো) )। আমি অধ্যায়গুলি এড়ানো ভাল ধারণা বলে মনে করি না, কারণ প্রত্যেকটি পরবর্তী অধ্যায়গুলিতে ব্যবহৃত হয় এমন অনেকগুলি নতুন ধারণা প্রবর্তন করে।
কিছুক্ষণ পরে আপনি অধ্যায় 14 এ পাবেন, ভয়ঙ্কর মনডস অধ্যায় (দম ডম ডাম্ম্ম) m হাস্কেল শিখেন এমন প্রায় প্রত্যেকেরই ধারণাটি কীভাবে বিমূর্ততার কারণে, মনডগুলি বুঝতে সমস্যা হয়। আমি অন্য ভাষায় এমন কোনও ধারণার কথা ভাবতে পারি না যা মন্ডাদের কার্যক্ষম প্রোগ্রামিংয়ের মতো বিমূর্ত। মনডস অনেক ধারণাকে (যেমন আইও অপারেশন, গণনা যা ব্যর্থ হতে পারে, পার্সিং, ...) এক ধারণার অধীনে একত্রিত করার অনুমতি দেয়। সুতরাং হতাশ বোধ করবেন না যদি স্নাতকের অধ্যায়টি পড়ার পরে আপনি সেগুলি সত্যিই বুঝতে না পারেন। আমি মনদেজের বিভিন্ন ব্যাখ্যা পড়তে দরকারী বলে মনে করি; প্রত্যেকে সমস্যার বিষয়ে একটি নতুন দৃষ্টিভঙ্গি দেয়। এখানে মনোড টিউটোরিয়ালগুলির খুব ভাল তালিকা দেওয়া আছে । আমি সমস্ত সম্পর্কে মনডসকে অত্যন্ত সুপারিশ করি তবে অন্যগুলিও ভাল।
এছাড়াও, ধারণাগুলি সত্যই ডুবে যেতে কিছুটা সময় নেয় This এটি ব্যবহারের মাধ্যমে আসে, তবে সময়ের মাধ্যমেও। আমি দেখতে পাই যে কখনও কখনও কোনও সমস্যায় ঘুমানো অন্য যে কোনও কিছুর চেয়ে বেশি সহায়তা করে! অবশেষে, ধারণাটি ক্লিক করবে এবং আপনি অবাক হবেন যে আপনি কেন এমন ধারণাটি বুঝতে সংগ্রাম করেছিলেন যে বাস্তবে অবিশ্বাস্যরকম সহজ। এটি ঘটলে এটি দুর্দান্ত হয় এবং এটি হয়ে গেলে, আপনি হাস্কেলকে আপনার প্রিয় অপরিহার্য প্রোগ্রামিং ভাষা হিসাবে খুঁজে পেতে পারেন :)
আপনি হাস্কেল টাইপ সিস্টেমটি পুরোপুরি বুঝতে পারছেন তা নিশ্চিত করার জন্য, আপনার 20 টি মধ্যবর্তী হ্যাসেল অনুশীলনগুলি সমাধান করার চেষ্টা করা উচিত । "ফ্যারি" এবং "কলা" এর মতো ফাংশনগুলির মজাদার নামগুলি ব্যবহার করে exercises অনুশীলনগুলি আপনাকে কিছু বেসিক ফাংশনাল প্রোগ্রামিং ধারণাগুলি সম্পর্কে ইতিমধ্যে বুঝতে না সহায়তা করতে সহায়তা করে। তীর, ইউনিকর্ন, সসেজ এবং লোমযুক্ত কলা দিয়ে coveredাকা একগুচ্ছ কাগজপত্র সহ আপনার সন্ধ্যা কাটাবার দুর্দান্ত উপায়।
অন্তর্বর্তী
আপনি একবার মোনাদাসকে বুঝতে পারলে, আমি মনে করি আপনি একটি শিক্ষানবিস হাস্কেল প্রোগ্রামার থেকে একটি মধ্যবর্তী হাস্কেলারের কাছে রূপান্তর করেছেন। তাহলে এখান থেকে কোথায় যাব? প্রথম জিনিসটি আমি সুপারিশ করব (যদি আপনি ইতিমধ্যে মনাদ শিখতে শিখেন না) হ'ল বিভিন্ন ধরণের মনাদ যেমন পাঠক, লেখক এবং রাজ্য। আবার, রিয়েল ওয়ার্ল্ড হাস্কেল এবং মোনাদ সম্পর্কে সমস্ত এটির দুর্দান্ত কভারেজ দেয়। মোনাড ট্রান্সফর্মার সম্পর্কে আপনার মোনাড প্রশিক্ষণ শেখার জন্য প্রয়োজনীয়। এগুলি আপনাকে বিভিন্ন ধরণের মনাদ (যেমন একটি পাঠক এবং রাজ্য মোনাড) এক সাথে একত্রিত করতে দেয়। এটি শুরু করা অযথা মনে হতে পারে তবে কিছুক্ষণ ব্যবহার করার পরে আপনি অবাক হয়ে যাবেন কীভাবে আপনি এগুলি ছাড়া বাঁচেন।
আপনি চাইলে এখন আসল ওয়ার্ল্ড হাস্কেল বইটি শেষ করতে পারেন। অধ্যায়গুলি এড়িয়ে যাওয়া এখনই সত্যিকার অর্থে কিছু আসে যায় না, যতক্ষণ না আপনার হাতে প্যাড ডাউন রয়েছে। আপনি যা আগ্রহী তা কেবল চয়ন করুন।
আপনার এখন যে জ্ঞানটি ছিল তা দিয়ে, আপনি ক্যাবলের বেশিরভাগ প্যাকেজগুলি (কমপক্ষে নথিভুক্ত ন্যূনতম ...) পাশাপাশি হাস্কেলের সাথে আসা বেশিরভাগ লাইব্রেরি ব্যবহার করতে সক্ষম হবেন। চেষ্টা করার জন্য আকর্ষণীয় গ্রন্থাগারের একটি তালিকা হবে:
পার্সেক : পার্সিং প্রোগ্রাম এবং পাঠ্যের জন্য। রিজেক্সস ব্যবহারের চেয়ে অনেক বেশি ভাল। দুর্দান্ত ডকুমেন্টেশন, এছাড়াও একটি বাস্তব বিশ্বের হাস্কেল অধ্যায় রয়েছে।
কুইকচেক : একটি খুব দুর্দান্ত পরীক্ষার প্রোগ্রাম। আপনি যা করেন তা হ'ল একটি ভবিষ্যদ্বাণী লিখুন যা সর্বদা সত্য হওয়া উচিত (উদাঃ length (reverse lst) == length lst
)। তারপরে আপনি প্রিকিকেটটি কুইলচেকটি পাস করুন এবং এটি প্রচুর এলোমেলো মান উত্পন্ন করবে (এই ক্ষেত্রে তালিকাগুলিতে) এবং পরীক্ষা করবে যে ভবিষ্যদ্বাণীটি সমস্ত ফলাফলের জন্য সত্য। আরও দেখুন অনলাইন ম্যানুয়াল ।
হুনিট : হাসকেলে ইউনিট পরীক্ষা করা।
gtk2hs : হাস্কেলের জন্য সর্বাধিক জনপ্রিয় গুই কাঠামো, আপনাকে হাসকেলে gtk অ্যাপ্লিকেশন লিখতে দেয়।
হ্যাস্টস্ট্যাক : হাস্কেলের জন্য একটি ওয়েব বিকাশ কাঠামো। ডাটাবেসগুলি ব্যবহার করে না, পরিবর্তে একটি ডেটা টাইপ স্টোর। খুব ভাল ডক্স (অন্যান্য জনপ্রিয় ফ্রেমওয়ার্কগুলি স্ন্যাপ এবং হ্যাওড হবে )।
এছাড়াও, অনেকগুলি ধারণা রয়েছে (যেমন মোনাড ধারণার মতো) যা আপনার শেষ পর্যন্ত শিখতে হবে। এটি প্রথমবার মনডস শেখার চেয়ে সহজ হবে, কারণ আপনার মস্তিষ্ক জড়িত বিমূর্ততার স্তরটি মোকাবেলা করতে ব্যবহৃত হবে। এই উচ্চ স্তরের ধারণাগুলি এবং তারা কীভাবে একসাথে ফিট হয় সে সম্পর্কে শিখার জন্য খুব ভাল ওভারভিউ হ'ল টাইপক্লাসোপিডিয়া ।
প্রয়োগমূলক: মনডসের মতো একটি ইন্টারফেস, তবে কম শক্তিশালী। প্রতিটি মোনাড প্রয়োগযোগ্য, তবে বিপরীত নয়। এটি কার্যকর কারণ কিছু প্রকার যা প্রয়োগযোগ্য তবে মনাদ নয়। এছাড়াও, আবেদনকারী ফাংশনগুলি ব্যবহার করে লিখিত কোডটি প্রায়শই মোনাড ফাংশনগুলি ব্যবহার করে সমমানের কোডটি লেখার চেয়ে বেশি কম্পোজেবল হয়। আপনি একটি হ্যাসেল গাইড শিখুন থেকে ফান্টেক্টর, প্রয়োগমূলক ফ্যাক্টর এবং মনোয়েডগুলি দেখুন ।
মলত্যাগের , Traversable : Typeclasses যে তালিকার অপারেশনের বিমূর্ত অনেক, যাতে একই ফাংশন অন্যান্য ধারক ধরনের প্রয়োগ করা যেতে পারে। আরও দেখুন Haskell উইকি ব্যাখ্যা ।
Monoid : একটি Monoid একটি টাইপ একটি শূন্য (অথবা mempty) মূল্য আছে, এবং একটি অপারেশন notated হয় <>
যে দুটি Monoids একসঙ্গে যোগ দেয় তখন যেমন যে x <> mempty = mempty <> x = x
এবং x <> (y <> z) = (x <> y) <> z
। এগুলিকে পরিচয় এবং সমিতি আইন বলা হয়। অনেক ধরণের মনোয়েড যেমন সংখ্যার মতো mempty = 0
এবং থাকে <> = +
। এটি অনেক পরিস্থিতিতে কার্যকর।
তীর : তীর হ'ল গণনা উপস্থাপনের একটি উপায় যা কোনও ইনপুট নেয় এবং আউটপুট ফেরত দেয়। একটি ফাংশন তীরের সর্বাধিক প্রাথমিক ধরণ, তবে আরও অনেক ধরণের রয়েছে। লাইব্রেরিতে তীরগুলি পরিচালনা করার জন্য অনেকগুলি দরকারী কার্যকারিতা রয়েছে - কেবলমাত্র সরল পুরাতন হাস্কেল ফাংশনগুলির সাথে ব্যবহার করা হলেও এগুলি খুব কার্যকর।
অ্যারে : হাস্কেলের বিভিন্ন পরিবর্তনীয় / পরিবর্তনযোগ্য অ্যারে।
এস টি মোনাদ : আপনি খুব দ্রুত পরিবর্তিত এমন একটি মিউচ্যুয়াল স্টেটের সাথে কোডটি লিখতে দিন, যদিও এখনও মনাডের বাইরে বিশুদ্ধ রয়েছেন। আরো বিস্তারিত জানার জন্য লিঙ্কটি দেখুন।
এফআরপি: ফাংশনাল রিঅ্যাকটিভ প্রোগ্রামিং, একটি নতুন, পরীক্ষামূলক কোডের কোড যা ইভেন্টগুলি, ট্রিগারগুলি, ইনপুটগুলি এবং আউটপুটগুলিকে পরিচালনা করে (যেমন একটি গুই)। যদিও আমি এ সম্পর্কে খুব বেশি জানি না। পাম হুদাকের ইয়াম্পা সম্পর্কে কথাবার্তা একটি ভাল শুরু।
আপনার অনেকগুলি নতুন ভাষার বৈশিষ্ট্য দেখতে হবে। আমি কেবল তাদের তালিকা করব, আপনি তাদের সম্পর্কে গুগল, হ্যাশেল উইকিবুক , হ্যাশেলউইকিআর.অর্গ সাইট এবং জিএইচসি ডকুমেন্টেশন থেকে প্রচুর তথ্য পেতে পারেন ।
- মাল্টিপ্যারামিটার ধরণের শ্রেণি / ক্রিয়ামূলক নির্ভরতা
- পরিবার টাইপ করুন
- অস্তিত্বযুক্ত পরিমাণযুক্ত প্রকার
- ভুতের ধরণ
- GADTS
- অন্যান্য...
প্রচুর হাস্কেল বিভাগের তত্ত্বকে কেন্দ্র করে তৈরি হয়েছে , তাই আপনি এটি সন্ধান করতে পারেন may একটি ভাল সূচনা পয়েন্ট কম্পিউটার সায়েন্টিস্টের জন্য বিভাগ তত্ত্ব । আপনি যদি বইটি কিনতে না চান তবে লেখকের সম্পর্কিত নিবন্ধটিও দুর্দান্ত।
শেষ পর্যন্ত আপনি বিভিন্ন হাস্কেল সরঞ্জাম সম্পর্কে আরও জানতে চাইবেন। এর মধ্যে রয়েছে:
- জিসিসি (এবং এর সমস্ত বৈশিষ্ট্য)
- ক্যাবল : হাসেল প্যাকেজ সিস্টেম
- ডার্কস : হাস্কেল প্রোগ্রামের জন্য খুব জনপ্রিয় হাস্কেল লিখিত একটি বিতরণিত সংস্করণ নিয়ন্ত্রণ ব্যবস্থা।
- হ্যাডক : একটি হাস্কেল স্বয়ংক্রিয় ডকুমেন্টেশন জেনারেটর
এই সমস্ত নতুন লাইব্রেরি এবং ধারণাগুলি শিখার সময়, হাসকেলে একটি মাঝারি আকারের প্রকল্প লেখার পক্ষে এটি খুব দরকারী। এটি যে কোনও কিছু হতে পারে (যেমন একটি ছোট গেম, ডেটা অ্যানালাইজার, ওয়েবসাইট, সংকলক )। এটিতে কাজ করার ফলে আপনি এখন শিখছেন এমন অনেকগুলি বিষয় প্রয়োগ করতে পারবেন। আপনি যুগে যুগে এই স্তরে থাকুন (আমি এখানেই আছি)।
বিশেষজ্ঞ
এই পর্যায়ে আসতে আপনার কয়েক বছর সময় লাগবে (২০০৯ সাল থেকে হ্যালো!) তবে এখান থেকে আমি অনুমান করছি যে আপনি পিএইচডি কাগজপত্র, নতুন জিএইচসি এক্সটেনশান লিখতে শুরু করেছেন এবং নতুন বিমূর্ততা নিয়ে এসেছেন।
সাহায্য পাচ্ছেন
শেষ অবধি, শেখার যে কোনও পর্যায়ে, তথ্য পাওয়ার জন্য একাধিক জায়গা রয়েছে। এইগুলো:
- # হেস্কেল আইরিক চ্যানেল
- মেইলিং তালিকা । এগুলি সংঘটিত হওয়া আলোচনাগুলি পড়ার জন্য সাইন আপ করার উপযুক্ত - কিছু খুব আকর্ষণীয়।
- haskell.org হোম পেজে তালিকাভুক্ত অন্যান্য স্থান
উপসংহার
আচ্ছা, এটি আমার প্রত্যাশার চেয়ে দীর্ঘতর হয়ে গেছে ... যাইহোক, আমি মনে করি হাস্কেলে দক্ষ হয়ে ওঠা খুব ভাল ধারণা। এটি একটি দীর্ঘ সময় নেয়, তবে এটি মূলত কারণ আপনি এটি করে চিন্তা করার সম্পূর্ণ নতুন পদ্ধতি শিখছেন। এটি জাভা শেখার পরে রুবি শেখার মতো নয়, সি শিখার পরে জাভা শেখার মতো। এছাড়াও, আমি আবিষ্কার করছি যে আমার অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং দক্ষতা হাস্কেল শেখার ফলস্বরূপ উন্নত হয়েছে, যেহেতু আমি বিমূর্ত ধারণার অনেক নতুন উপায় দেখছি।