পুরো গত বছর ধরে আমি স্কালা কোড লিখেছি (জাভা ব্যাকগ্রাউন্ড থেকে আসছে)। আমি কীভাবে ভ্যালস, কেস ক্লাস, মানচিত্র / ফিল্টার / ল্যাম্বদা ফাংশন, ফলস্বরূপ এবং প্রকার অনুমান সহ সহজ এবং ক্লিনার কোড তৈরি করতে পারি তা আমি সত্যিই পছন্দ করেছি। আমি এটি বেশিরভাগ আক্কা ভিত্তিক অ্যাপ্লিকেশনের জন্য ব্যবহার করেছি ।
এই বছর আমি একটি নতুন দল নিয়ে স্কেল প্রকল্পে আছি, যিনি সত্যই কার্যকরী প্রোগ্রামিং পছন্দ করেন। তারা স্কালাজকে প্রচুর পরিমাণে ব্যবহার করে এবং কোডটি সর্বত্র আবেদনকারী, প্রসঙ্গের সীমা, পাঠক / লেখক / রাষ্ট্রের মোনাড দিয়ে পূর্ণ হয়, এমনকি মূল পদ্ধতিটি আই / ও মোনাডে "মোড়ানো" থাকে। তাদের যুক্তি হ'ল কোডটি সঠিক কিনা তা বোঝাতে কম্পাইলারটি "আমাদের জন্য কাজ করে" তোলে এবং প্রতিটি ফাংশন পার্শ্ব প্রতিক্রিয়া থেকে মুক্ত।
তবুও, আমার দৃষ্টিকোণ থেকে এই সমস্ত সিনট্যাক্সটি সত্যই ব্যবসায়ের যুক্তি দিয়ে চলেছে। উদাহরণস্বরূপ, "মাই বিজনেসঅবজেক্ট" এর একটি ধরণ ঠিক আছে, পাশাপাশি "তালিকা [মাই বিজনেসঅবজেক্ট]", "অপশন [মাইবাসনেস অবজেক্ট]" বা "ফিউচার [মাই বিজনেসঅবজেক্ট]" এর মতো প্রকারগুলিও রয়েছে। এঁদের সবারই স্পষ্ট অর্থ এবং উদ্দেশ্য রয়েছে। অন্যদিকে কোডগুলি:
def method[M[_]: Applicative] = {
case (a, b) => (ca[M](a) |@| cb[M](b)) {
case t @ (ra, rb) =>
if (ra.result && rb.result) t.right
else t.left
}
}
এটি কি প্রোগ্রামে জটিলতা যুক্ত করে, বা আমি কেবল প্রোগ্রামিংয়ের এই পদ্ধতিতে অভ্যস্ত নই?
>>=
এবং <$>
যার অর্থ আপনার অবধি কিছুই না তারা কি জানি। তাদের অর্থ কী তা শিখার পরে, তারা এখন খুব স্বাভাবিকভাবে এবং দ্রুত আমার কাছে পড়েন। আসলেই কোনও উত্তর নয়, এই জাতীয় জিনিসগুলির সাথে কেবল আমার উদ্দেশ্য অভিজ্ঞতা। আমি স্কালাকেও ব্যবহার করি তবে স্কালাজ লাইব্রেরির সাথে কোনও অভিজ্ঞতা নেই।
for(i=0; i<7; ++i) { trivialOperation(i); }
কিছু বিশ্রী trivialOperationCount
ভেরিয়েবলের সাথে লিখবেন না , আপনি কি করবেন?) এখন, প্যাটার্ন মিলের সাথে ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি কখনও কখনও আরও কিছু ভেরিয়েবলের পরিচয় দেবে যেখানে আপনি ওওতে কেবল অ্যাকসেসর পদ্ধতি কলগুলি লিখুন। ফলাফল সাধারণত আরও সংক্ষিপ্ত হয়; সম্ভবত কিছুটা কম স্ব-ব্যাখ্যামূলক, তবে ডেটা ঘোষণার সন্ধানটি সাধারণত তা দ্রুত পরিষ্কার করে দেয়। স্ট্যাটিক টাইপিং অনেক সাহায্য করে, এটি এপিএলের মতো নয়।