আমি সন্দেহ করি এটি ভাষার উপর নির্ভর করে। কার্যনির্বাহী প্রোগ্রামিং হিসাবে, আমি বেশিরভাগই হাস্কেলের মধ্যে ছড়িয়ে পড়েছি, সুতরাং আমি সেখানে এটি কীভাবে কাজ করে তা ব্যাখ্যা করতে যাচ্ছি।
হাস্কেল কোডটি "মডিউলগুলিতে" সাজানো হয়েছে যা মূলত কেবল ফাংশন এবং ডেটা ধরণের সংগ্রহ। প্রতিটি মডিউল একটি একক ফাইল। একটি মডিউল জাভা শ্রেণীর এবং জাভা প্যাকেজের মধ্যে একটি মিশ্রণের কিছু - মডিউলটি কী করে তার সঠিক সুযোগটি পরিবর্তিত হয়। কোন ফাংশন এবং টাইপ কনস্ট্রাক্টর রফতানি করতে হবে এবং কোনটি লুকাতে হবে তার উপর একটি মডিউলের নিয়ন্ত্রণও রয়েছে; এটি জাভা privateএবং একই রকম public।
আমার নিজস্ব প্রোগ্রামগুলিতে, আমি মডিউলগুলি শব্দার্থকভাবে একটি কাজ করতে চাই ; এটি তাদের জাভা শ্রেণীর মতো করে তোলে কেবলমাত্র তারা একাধিক ডেটা ধরণের সংজ্ঞা দেয়। আমি স্ট্যান্ডার্ড লাইব্রেরি থেকে যে মডিউলগুলি ব্যবহার করি Data.Listসেগুলি প্যাকেজের মতো বেশি - তারা অনুরূপ ইউটিলিটি ফাংশনের একটি সেট সরবরাহ করে। এটি স্ট্যাটিক জাভা ক্লাসগুলির মতোও খুব মিল java.util.Arrays।
মডিউলগুলি জাভা প্যাকেজগুলির মতোও রয়েছে যাতে তারা স্বচ্ছতার জন্য বাসা বেঁধে রাখতে পারে (আমি মনে করি না কোডে এটির কোনও প্রভাব আছে)। সাধারণভাবে, একটি একক প্রকল্পের জন্য, আমি এটিকে একটি নাম দিয়েছি (বলুন Project) এবং আমার সমস্ত মডিউল এটির (যেমন Project.Parseএবং Project.Run) অংশ হতে পারে । যদি আমি কোনও অ্যাপ্লিকেশনটির চেয়ে লাইব্রেরির মতো কোডটি লিখতাম তবে আমি এটি কী করছে, এর মতো Data.Listবা এর উপর ভিত্তি করে এটিকে সংগঠিত করব Control.Monad। অন্যান্য ভাষাগুলির মধ্যে একটি প্রধান পার্থক্য হ'ল হাসেল আইও-কে সীমাবদ্ধ রাখতে এবং এগুলিকে এক জায়গায় রাখার জন্য উত্সাহ দেয়। প্রচুর পরিমাণে মডিউলগুলি কোনও আইও করেন না এবং যে কোনও প্রকল্পের জন্য, আমি যতটা সম্ভব মডিউল যথাসম্ভব খাঁটি থাকতে চাই।
উদাহরণ হিসাবে, আমি একটি সাধারণ প্রোগ্রামিং ল্যাঙ্গুয়েজে কাজ করছি যা আমি টিপিএল কল করছি (কোনও কারণ ছাড়াই)। এর জন্য আমি দুটি সহজ মডিউল তৈরি করেছি: TPL.Parseযা ভাষার অভ্যন্তরীণ উপস্থাপনা এবং কীভাবে এটি বিশ্লেষণ করতে পারে তা সংজ্ঞায়িত করে এবং TPL.Runযা দোভাষী চালায় এবং ভেরিয়েবল এবং আইও এর সাথে ডিল করে। কোডটি সংকলন ও চালনার জন্য সাধারণত একটি Mainমডিউল থাকে যা শেষ হয় যা প্রোগ্রামের এন্ট্রি পয়েন্ট হয়ে থাকে।
একটি ফাইলের মধ্যে ফাংশনগুলি সংগঠিত করার ক্ষেত্রে উল্লেখযোগ্য স্বাধীনতা রয়েছে; এটিই আমি করতে পছন্দ করি। আমি অন্য কোথাও ব্যবহারের আগে আমার ডেটা প্রকারগুলি শীর্ষের দিকে সংজ্ঞায়িত করি। তথ্য প্রকারের সংজ্ঞা দেওয়ার পরে, আমি তাদের যথাযথ টাইপক্লাসগুলির অংশ তৈরি করার জন্য যা কিছু প্রয়োজন তা বাস্তবায়ন করি - এটি একটি ইন্টারফেস বাস্তবায়নের মতো। তারপরে আমি যথাযথ হিসাবে যুক্তি এবং বিভিন্ন সহায়ক ফাংশন অনুসরণ করি। অবশেষে, আমি আমার আইও ফাংশনগুলির খুব নীচে শেষ করতে চাই main। এটি কোনও আইও কী করছে এবং কোথায় প্রোগ্রামটি শুরু হচ্ছে তা এটি পরিষ্কার করে দেয়।
সুতরাং, সংক্ষেপে: ফাংশনগুলি মডিউলগুলিতে থাকে, যার প্রতিটিই একটি ফাইলের সমন্বয়ে গঠিত। বেশ কয়েকটি মডিউল একটি প্রোগ্রাম বা গ্রন্থাগার তৈরি করতে পারে; পূর্ববর্তীটিতে সাধারণত একটি Mainমডিউল থাকে যা এটির প্রবেশ বিন্দু। একটি ফাইলের মধ্যে, প্রতিষ্ঠানের জন্য বিভিন্ন বিকল্প রয়েছে, তবে আমি শীর্ষের কাছাকাছি, নীচের কাছে আইও এবং মাঝখানে যুক্তি যুক্ত করতে গ্রুপের ডেটা ধরণের পছন্দ করতে পছন্দ করি।
What's stopping you from...ইয়ারস এবং প্রোগ্রামিংয়ের বছরগুলি একেবারেই আলাদা মানসিকতার সাথে, যে পর্যন্ত হাস্কেল কোড মানসিকভাবে গণনা করে না। এবং অবশ্যই আপনি ধরে নিচ্ছেন যে প্রকৃত প্রকল্পগুলি সর্বদা সঠিক এবং ঝরঝরেভাবে সংগঠিত হয় (সম্ভবত তারা আমার মতো