আমি কীভাবে বাস্তব বিশ্বে কার্যকরী প্রোগ্রামিং ব্যবহার করতে পারি? [বন্ধ]


103

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

একটি Win32 বিকাশকারী হিসাবে যদিও আমি কি আমার অ্যাপ্লিকেশনটির কয়েকটি ঘরের জন্য হাস্কেল ব্যবহার করতে পারি? এবং যদি আমি তা করি তবে আমার জন্য স্বয়ংক্রিয়ভাবে নেওয়া কোনও সত্যিকারের সুবিধা আছে কি? যদি তাই হয় তবে কি আমাকে এই সুবিধা দেয়, সংকলক?

আপনার জন্য স্বয়ংক্রিয়ভাবে একাধিক কোর এবং সিপু'র লেখার জন্য F # টি কী সমান্তরাল কাজ করে? টাস্ক ম্যানেজারের থ্রেডের সংখ্যা বাড়তে দেখবেন কি?

মূলত আমার প্রশ্নটি হল, আমি কীভাবে হাস্কেলকে ব্যবহারিক উপায়ে ব্যবহার শুরু করতে পারি এবং যদি আমি তা করি তবে আমি সত্যিই কিছু সুবিধা দেখতে পাব?


2
ব্যক্তিগতভাবে, আমি এরলংয়ের দিকে তাকাব - তবে তা আমি।
জেসন বুটিং

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

উত্তর:


41

দেখে মনে হচ্ছে রিয়েল ওয়ার্ল্ড হাস্কেল বইটি আপনি যা খুঁজছেন ঠিক তেমনই। আপনি এটি বিনামূল্যে অনলাইনে পড়তে পারেন:

http://book.realworldhaskell.org/


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

25

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

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


21
তারপরে আমি আপনার জন্য পোস্ট করব: herdingcode.com/?p=45 :)
ব্রায়ান আর বন্ডি


14

এটি আকর্ষণীয়ও হতে পারে: " রিয়েল ওয়ার্ল্ড ফাংশনাল প্রোগ্রামিং "

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


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

1
@ ড্যানিয়েল কিছু উপায়ে, আরও অনেক কিছু; পি আমি যে সরঞ্জামগুলিতে কাজ করি তা নাটকীয় হতে পারে।
মার্ক Gravell

8

আপনি উল্লেখ করেননি, তবে আমি ধরে নিচ্ছি যে আপনি সি ++ ব্যবহার করছেন। কার্যকরী হয়ে উঠার একটি সম্ভাব্য সহজ উপায় হ'ল সি ++ / সি এল এল থেকে এফ # via পরিচালিত কোডটিতে আপনাকে কল আউট এবং আউট করার অনুমতি দেওয়ার জন্য সি ++ এ "ম্যাজিক পিক্সির ডাস্ট" (IJW: এটি জাস্ট ওয়ার্কস নামে পরিচিত) থাকে। এটির সাথে, F # কোড কল করা সি # থেকে প্রায় সমান সহজ।

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

যদি আপনি হাস্কেল পথে যাওয়ার সিদ্ধান্ত নেন তবে আপনি যে বৈশিষ্ট্যটি সন্ধান করবেন সেটি হ'ল এফএফআই: বিদেশী ফাংশন ইন্টারফেস। তবে, আমি মনে করি না যে এটি আপনাকে এফ # এর সাথে সি ++ / সিএলআই এর সমান মাত্রা দেবে।


6

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

শুভকামনা।


4

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

এই শেষ পয়েন্টটি হাস্কেলের অন্যতম প্রধান সুবিধা: টাইপ সিস্টেমটি আশ্চর্যজনক। বলেছিল, এটি কোনও শক্তিশালী সরঞ্জামের মতো; এটির সদ্ব্যবহার করতে সময় এবং প্রচেষ্টা দরকার।

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

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