এটি অনেকটা যেমন গণিত শেখার ফলে আপনার বিশ্লেষণযোগ্য দক্ষতা উন্নত হবে এবং লাতিন / ক্লাসিক সাহিত্য শেখা আপনার লেখার দক্ষতা উন্নত করবে।
এই ভাষাগুলির নকশা করা লোকেরা কোনও প্রোগ্রাম লেখার অর্থ কী তা নিয়ে কঠোর চিন্তা করেছে। এবং সেই ভাষাগুলি সেই গবেষণার ফলাফল।
এটি বলেছিল, জাভা শেখা আপনাকে আরও উন্নত প্রোগ্রামার করে তুলবে। এবং শেখার সি। আসল উপকারগুলি বিভিন্ন দর্শনের সাথে ভাষা শেখার মাধ্যমে আসে। তারপরে কোনও প্রোগ্রাম কীভাবে লেখা উচিত সে সম্পর্কে আপনার নিজের মতামত থাকতে পারে।
সম্পাদন করা
আমি বুঝতে পারি যে এই উত্তরটি এখনও হাস্কেল এবং / অথবা লিস্প শিখেনি তাদের পক্ষে কার্যকর নয়। আমার অর্থ কী তা বোঝাতে এখানে কয়েকটি উদাহরণ দেওয়া হল
পাতার মর্মর
লিস্প বিশ্বাস করেন যে বাক্য গঠনটি ন্যূনতম হওয়া উচিত এবং সবকিছুই একটি তালিকা বা আদিম হওয়া উচিত (লিস্প তালিকা প্রক্রিয়াকরণের জন্য দাঁড়ায়)। এমনকি প্রোগ্রামগুলি মূলত অন্যান্য তালিকা এবং চিহ্নগুলি সমন্বিত তালিকাভুক্ত। লিস্প আপনাকে প্রোগ্রাম হিসাবে তালিকা হিসাবে পরিচালনা করতে এবং ফ্লাইতে নতুন প্রোগ্রাম তৈরি করতে দেয়। তাই পুরো code is data and data is code
নীতিবাক্য।
এর প্রত্যক্ষ পরিণতি হ'ল লিস্প ভাষা আপনাকে যে কোনও ইন্টারফেসটি পছন্দ করতে দেয় allows একটি চমৎকার উদাহরণ হ'ল কম্পোজার যা একটি ক্লোজার ওয়েব ফ্রেমওয়ার্ক। এখানে একটি রাউটিং ফাংশন দেখতে কেমন
(defroutes app-routes
(GET "/" [] view/page)
(GET "/api" [] (wrap-aleph-handler api/socket-handler))
(route/resources "/static")
(route/not-found "page not found"))
আর একটি চমৎকার উদাহরণ হিচাপ টেম্প্লেটিং ফ্রেমওয়ার্ক:
(html [:ul
(for [x (range 1 4)]
[:li x])])
আপনি দেখতে পাচ্ছেন, ফলাফলটি গোঁফের মতো ডিএসএল-এর মতো নিবিষ্ট, তবে আপনাকে ভাষা বৈশিষ্ট্যগুলি যেমন ব্যবহার করতে দেয় (for [x (range 1 4)] block)
। এমনকি আরও ভাল, আপনার কোডটি বিমূর্ত করতে এবং কাঠামো গঠনের সমস্ত সরঞ্জাম রয়েছে।
অন্যান্য ভাষায় বাক্য গঠন আরও জটিল। তালিকার গুচ্ছ হিসাবে আপনি জাভা প্রোগ্রামটি পড়তে পারবেন না। তবে লিস্প ব্যবহার করে আপনি একটি আদর্শ ইন্টারফেসটি দেখতে কেমন হওয়া উচিত এবং আপনার কোডের মধ্যে ডেটা হিসাবে কী বিমূর্ত করা যেতে পারে সে সম্পর্কে আপনি আরও ভাল ধারণা পাবেন। এটি আপনাকে আপনার পছন্দসই ভাষাটিকে একটি বড় ডেটা কাঠামো হিসাবে দেখতে এবং এর শব্দার্থকগুলি আরও ভালভাবে বুঝতে সহায়তা করে।
Haskell,
হাস্কেল দৃ strong় স্ট্যাটিক টাইপিং এবং বিশুদ্ধতায় বিশ্বাসী। খাঁটি ফাংশনগুলি গাণিতিক ফাংশনের মতো: এগুলি মানগুলির সংকলনে সংজ্ঞায়িত হয় এবং সেগুলি অন্য সেটে ম্যাপ করে। ফাংশনটির পার্শ্ব প্রতিক্রিয়া নেই এবং মানগুলি অপরিবর্তনীয়। বিশুদ্ধতা আকর্ষণীয় কারণ এটি কোনও বহু-দৃষ্টান্তের ভাষা থাকতে পারে না। একটি ভাষা হয় খাঁটি বা না হয়।
এর একটি পরিণতি হ'ল আপনি যখনই চান আইও ক্রিয়াটি সম্পাদন করতে পারবেন না (হাসেলাররা বিশ্বাস করেন যে এটি একটি ভাল জিনিস)। আইও ক্রিয়াকলাপগুলি লেনদেন হিসাবে সংজ্ঞায়িত করা হয় যা এগুলি নিজেরাই খাঁটি মান। main
একটি Haskell প্রোগ্রামের মান একটি আই লেনদেন সম্পাদিত যখন আপনি প্রোগ্রাম চালানো হয়।
আপনার প্রোগ্রামে ডেটা প্রবাহের সাথে আপনাকে স্পষ্টভাবে ডিল করতে হবে। আপনি বৈশ্বিক চলকগুলিতে স্টাফ লেখার এবং পড়ার মাধ্যমে দুটি উপাদানকে যোগাযোগ করতে পারবেন না। আপনাকে মানগুলি তৈরি করতে হবে এবং পাস করতে হবে।
জিমি হোফা দ্বারা উল্লিখিত আরেকটি বৈশিষ্ট্য হ'ল সমৃদ্ধ টাইপ সিস্টেম। অন্য ভাষাগুলিতে স্থির টাইপিং থাকাকালীন, হাস্কেলগুলিতে আপনার মতো জিনিস থাকতে পারে:
length :: [a] -> Int
(একটি এর তালিকা থেকে একটি অন্তর্নিহিত পর্যন্ত ফাংশন)
map :: (a -> b) -> [a] -> [b]
(ফাংশন যা a to b
রূপান্তর করে এবং এরগুলির একটি তালিকা নেয় এবং খ এর তালিকা দেয়)
সুন্দর জিনিসটি হ'ল এই ফাংশনটি আসলে কী করে তা বোঝানোর দরকার নেই: আপনি ইতিমধ্যে তাদের আচরণটি বুঝতে পেরেছেন। আরও কী, সেই স্বাক্ষরগুলির সাথে ফাংশনগুলি সত্যিকার অর্থে কিছুই করতে পারে না তবে তালিকার দৈর্ঘ্য গণনা করে একটি তালিকার উপর রূপান্তর মানচিত্র করে।
অন্যান্য টাইপ করা ভাষায়, শ্রেণিবিন্যাসের পরিবর্তনের সাথে মিলিত হয়ে এই ধরণেরগুলির সাথে দুঃস্বপ্ন দেখা যায়। আপনাকে সমবায়িকতা এবং বৈপরীত্যের মতো জিনিসগুলি বুঝতে হবে, যা ভাষার দৃষ্টিকোণ থেকে সঠিকভাবে পাওয়া অসম্ভব (যেমন সহজ, শক্তিশালী এবং নিরাপদ)।
হয় আপনি নিরাপদ পথটি নিয়ে যান (স্কালার মতো) এবং সত্যিই জটিল ভাষা নিয়ে এসেছেন বা আপনি সরল পথটি নিয়ে যান এবং এমন কিছু পান যা হয় সীমিত (গুগল জেনারিকদের তালিকা এবং মানচিত্রের মধ্যে সীমাবদ্ধ থাকে) বা অনিরাপদ (ডার্ট জেনেরিকগুলি যা সর্বদা থাকে covariant)।
হাস্কেল ব্যবহার করে আপনি মূলত বিশুদ্ধতার উপকারিতা এবং খাঁটি কোড কীভাবে লিখবেন তা শিখবেন।