এফ # ওসিএএমএল থেকে প্রাপ্ত, তবে কোন বড় আইটেমগুলি অনুপস্থিত বা যুক্ত হয়েছে? বিশেষত আমি জানতে আগ্রহী যে ওসিএএমএল শেখার জন্য উপলব্ধ সংস্থানগুলি যে কেউ এফ # শিখতে চায় তার পক্ষেও দরকারী কি না।
এফ # ওসিএএমএল থেকে প্রাপ্ত, তবে কোন বড় আইটেমগুলি অনুপস্থিত বা যুক্ত হয়েছে? বিশেষত আমি জানতে আগ্রহী যে ওসিএএমএল শেখার জন্য উপলব্ধ সংস্থানগুলি যে কেউ এফ # শিখতে চায় তার পক্ষেও দরকারী কি না।
উত্তর:
প্রধান পার্থক্য হ'ল এফ # সমর্থন করে না:
এছাড়াও, এফ # এর লেবেলযুক্ত এবং optionচ্ছিক পরামিতিগুলির জন্য পৃথক বাক্য গঠন রয়েছে।
তত্ত্ব অনুসারে, ওসিএএমএল প্রোগ্রামগুলি যেগুলি এই বৈশিষ্ট্যগুলি ব্যবহার করে না সেগুলি এফ # দিয়ে সংকলন করা যেতে পারে। ওক্যামল শেখা এফ # এর একটি সম্পূর্ণ যুক্তিসঙ্গত ভূমিকা (এবং বিপরীতে, আমি কল্পনাও করতে পারি)।
পার্থক্যের সম্পূর্ণ তালিকা এখানে রয়েছে (দ্রষ্টব্য: আর্কাইভ.অর্গ মৃত লিঙ্কটির প্রতিস্থাপন)।
এই প্রশ্নের উত্তরটি কিছু সময়ের জন্য দেওয়া হয়েছে, তবে আমি বেশ অবাক হয়েছিলাম যে বেশিরভাগ উত্তরই বলে যে ওসিএএমএল বৈশিষ্ট্যগুলি F # এ কী অনুপস্থিত রয়েছে - এটি অবশ্যই আপনি জেনে রাখা ভাল যে আপনি বিদ্যমান ওসিএএমএল প্রোগ্রামগুলিকে এফ # তে পোর্ট করতে চান (সম্ভবত এটি যা সম্ভবত রেফারেন্স করা বেশিরভাগ নিবন্ধের অনুপ্রেরণা)। তবে, এমন অনেকগুলি বৈশিষ্ট্য রয়েছে যা এফ # কে একটি আলাদা ভাষা করে তোলে (। নেট জন্য কেবলমাত্র সীমাবদ্ধ সংস্করণ নয়!) এখানে এফ # তে যুক্ত হওয়া কয়েকটি জিনিস এখানে রয়েছে:
+
সমস্ত সংখ্যার ধরণের পাশাপাশি এটি সমর্থনকারী আপনার প্রকারের জন্যও ব্যবহার করতে পারেন ।এবং, সত্যই, আমি মনে করি এটি ভিজ্যুয়াল স্টুডিও আইডিই উল্লেখ করারও উপযুক্ত। এটি ভাষার কোনও অংশ নয়, তবে এটি ব্যবহারকারীর অভিজ্ঞতার উন্নতি করেছে (ভিজ্যুয়াল স্টুডিওতে ইন্টেলিসেন্স সমর্থনটি সত্যিই ভাল!)
আপনি যদি তালিকার দিকে লক্ষ্য করেন তবে এমন অনেকগুলি জিনিস রয়েছে যা মূলত এফ # এর জনপ্রিয়তায় অবদান রেখেছিল, তাই এটি কেবল "ফান্টেক্টর ছাড়াই ওক্যামল" এর চেয়ে অনেক বেশি। এফ # অবশ্যই ওসিএএমএল এর উপর ভিত্তি করে তৈরি হয়েছে (এবং অন্যান্য ভাষা যেমন হাস্কেল থেকে ধারণাগুলি গ্রহণ করে) এবং তাদের সাথে অনেকগুলি দিক ভাগ করে দেয়, তবে অন্যান্য অনেক কিছুই রয়েছে। আমার ধারণা, অ্যাসিনক্রোনাস ওয়ার্কফ্লো,। নেট স্টাইল ওও এবং মেটা-প্রোগ্রামিংয়ের মতো জিনিসগুলি ছাড়াই মাইক্রোসফ্ট ডেভেলপার বিভাগ কখনও ভিজ্যুয়াল স্টুডিও 2010-এ এফ # অন্তর্ভুক্ত করবে না।
<@ a @>
, যেমন সংজ্ঞা টাইপ করুন <@ type t = int @>
এবং এটি ক্যাম্পপ 4 এর মতো স্বেচ্ছাসেবী ব্যাকরণগুলিকে অনেক কম এক্সটেনসিবল লেক্সার এবং পার্সার পরিচালনা করতে পারে না। একটি শালীন ম্যাক্রো সিস্টেমের অভাব একটি ঘাটতি তবে আইএমএইচও, এফ # এর জন্য কোনও শালীন লেক্সার এবং পার্সারের অভাব আরও গুরুতর প্রতিবন্ধকতা। আমি প্রকৃতপক্ষে বিকাশকারীদের ওসিএএমএল ব্যবহার করে তাদের লেক্সার এবং পার্সার তৈরি করার পরামর্শ দিচ্ছি, ওফ ক্যামেলের উচ্চতর সরঞ্জাম সমর্থন থেকে উপকৃত হওয়ার জন্য এফ # সমর্থন করে এমন সাবসেটটিতে নিজেকে সীমাবদ্ধ করে এফ এ ফিরে পোর্ট করে!
আমি সর্বদা এফ # কে ওক্যামেলের চাচাতো ভাই হিসাবে বর্ণনা করি কারণ ওসিএএমএল এর অনেকগুলি বৈশিষ্ট্য রয়েছে যা এফ # থাকে না এবং কখনও পাওয়ার সম্ভাবনা থাকে না। পূর্ববর্তী সিএএমএল ভাষার সাথে এফ # আরও নিবিড়ভাবে সম্পর্কিত। বিশেষত, এফ # এর বিমূর্তকরণের জন্য খুব সীমাবদ্ধ সমর্থন এবং স্ট্রাকচারাল টাইপিংয়ের জন্য কোনও সমর্থন নেই (যেমন ওকামেলের বস্তু এবং পলিমারফিক ভেরিয়েন্টগুলি )।
কিছু প্রতিক্রিয়াশীলরা যা লিখেছেন তার বিপরীতে, F # এর ("নামযুক্ত") লেবেলযুক্ত এবং alচ্ছিক যুক্তির পক্ষে (সীমাবদ্ধ) সমর্থন রয়েছে।
যাইহোক, এগুলি সমস্ত উন্নত বৈশিষ্ট্য এবং আপনি অবশ্যই ওসিএএমএল সম্পর্কে সংস্থানগুলি ব্যবহার করে ছোট আকারের ওসিএএমএল-স্টাইলের ফাংশনাল প্রোগ্রামিংয়ের পিছনে বুনিয়াদী ধারণাগুলি গ্রহণ করতে শুরু করতে পারেন। আপনি যে প্রথম প্রধান পার্থক্যটি আবিষ্কার করবেন সেটি হ'ল এনক্যাপসুলেশন এবং বিমূর্তকরণের মতো বৃহত্তর-স্তরের সমস্যাগুলি যা ওসিএএমএল এবং এফ # তে সম্পূর্ণ ভিন্ন উপায়ে সমাধান করা হয়। আপনি যদি F # তে কীভাবে এটি করতে চান তা জানতে চাইলে একমাত্র উপলভ্য সাহিত্য হ'ল নিখুঁত কার্যকরী ডেটা স্ট্রাকচার সম্পর্কিত এই নিবন্ধ ।
আমি এটিও আবিষ্কার করেছি যে ওসিএএমএল-এর দুর্দান্ত মডিউল সিস্টেম প্রকারের (যেমন ডেটা স্ট্রাকচার) এর উপর কোডকে প্যারামিটারাইজেশন করা সহজ করে তোলে তবে ওওপি বিকল্পগুলি কেবল ঘৃণ্য নয়, প্রায় পুরোপুরি অবহেলিত নয়। নেট। তদুপরি, মার্জিত-প্যারামিটারাইজড ডেটা স্ট্রাকচারগুলি লেখার চেষ্টা করার সময় আমি এফ # সংকলকটিতে কয়েক ডজন বাগ আঘাত করেছি কারণ এর আগে কেউ এর আগেও এটি করার চেষ্টা করেনি। F # stdlib এ কিছু দুর্দান্ত ডেটা স্ট্রাকচার বাস্তবায়ন রয়েছে তবে কার্যত কোনও পুনরায় ব্যবহার করা হবে না, অর্থাত এটি একটি কাট'অনস্পস্ট কাজ।
এফ # এবং ওক্যামল ভাষাশাস্ত্রের এমএল পরিবারে ট্যাক্সোনিকভাবে ক্লাস, যার মধ্যে অন্যান্য অদ্ভুত প্রাণীরও পুরো পাসল রয়েছে। এফ # ওসিএএমএল থেকে নতুন, এবং এটিতে এখনও ফান্টেক্টর নেই [মডিউল -> মডিউল এর ফাংশন] বা সারি প্রকার [অবজেক্ট ক্লাস এবং পলিমারফিক ভেরিয়েন্ট] এখনও নেই। তাদের মধ্যে, এই দুটি সরলীকরণ সম্ভবত। নেট প্ল্যাটফর্মে বিকাশকারী কারও জন্য শেখার বক্ররেখা সহজতর করে। দুঃখের বিষয়, এই দুটি ভাষার বৈশিষ্ট্য ওসিএএমএলে প্রচুর শক্তিশালী, সুতরাং F # এর কোড কীভাবে কোড করা যায় সে সম্পর্কে অন্তর্দৃষ্টি অর্জনের জন্য ওসিএএমএল সাহিত্যের পড়া সম্ভবত পরবর্তী সময়ের সাথে হতাশার দিকে পরিচালিত করবে যখন এটি সম্ভবত সি # এর একটি দুর্দান্ত বিকল্প যেখানে উভয়ই উপলব্ধ।
এফ # সরাসরি ওসিএএমএল সিনট্যাক্স সমর্থন করে। এটি 100% সামঞ্জস্যপূর্ণ নাও হতে পারে তবে আমি মনে করি এটি খুব কাছে।
http://plus.kaist.ac.kr/~shoh/fsharp/html/index.html
এখানে পার্থক্যগুলির একটি তালিকা রয়েছে (এটি কতটা আপ টু ডেট তা নিশ্চিত নয়)
http://plus.kaist.ac.kr/~shoh/fsharp/html/fsharp-vs-ocaml.html