এফ # এবং স্কালার মধ্যে সবচেয়ে বড় পার্থক্যগুলি কী কী?


59

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

জাভা প্ল্যাটফর্মের জন্য .NET এবং স্কালার জন্য এফ # ডিজাইন করা হয়েছে সত্ত্বেও এফ # এবং স্কালার মধ্যে সবচেয়ে বড় পার্থক্যগুলি কী?


2
আপনি যদি ভোট দিতে এবং ভাবতে পারেন যে এটি একটি দরকারী প্রশ্ন বা এর নীচে দরকারী উত্তর রয়েছে তবে দয়া করে ভোট দিন। একটি ভাল সম্প্রদায় তৈরি করতে স্ট্যাক এক্সচেঞ্জের সাইটগুলির ভোট দরকার। আপনি প্রতিদিন 30 টি ভোট দিতে পারেন, তাদের অপচয় করবেন না। বিশেষভাবে ব্যবহারকারীগণ উচ্চ খ্যাতি এবং কম গণনা প্রাপ্ত ভোট সহ দয়া করে এটি পড়ুন: meta.programmers.stackexchange.com/Qestions/393/…
ম্যানেরো

functional programming langugages that don't force the developer to only use immutable datatypes- খেলনা ভাষা বাদে কি কিছু আছে?
ইঙ্গো

1
@ ইঙ্গো, আপনি যদি ভাবেন যে এমএল এবং ওকামাল ক্রিয়াকলাপের প্রোগ্রামিং ভাষা হিসাবে যোগ্যতা অর্জন করতে পারে না কারণ তারা পরিবর্তনের অনুমতি দেয়, সম্ভবত আপনার সংজ্ঞাটি সামঞ্জস্য করা উচিত!
ফ্রাঙ্ক শায়ারার

3
+ ফ্র্যাঙ্ক, আপনার অবশ্যই ভুল বোঝাবুঝি হতে হবে: মানে, এমনকি হাস্কেলেরও পারস্পরিক পরিবর্তনযোগ্য ডেটা রয়েছে। অতএব, আমি এখনও জোনাসের কোন ভাষাগুলির মনে থাকতে চাই তা জানতে আগ্রহী যা কেবলমাত্র অপরিবর্তনীয় ডেটাটাইপগুলি ব্যবহার করতে বাধ্য করবে?
ইঙ্গো

উত্তর:


61

প্রধান পার্থক্য:

  • স্কালা এবং এফ # উভয়ই ওও-আবশ্যক প্রোগ্রামিং এবং কার্যকরী প্রোগ্রামিংকে এক ভাষায় একত্রিত করে। দৃষ্টান্ত একীকরণের দিকে তাদের দৃষ্টিভঙ্গি যদিও অনেক আলাদা different স্কালা দুটি প্যারাডিজমকে একটিতে ফিউজ করার চেষ্টা করে (আমরা এটিকে অবজেক্ট-ফাংশনাল প্যারাডিজম বলি), যেখানে F # পাশাপাশি দুটি প্যারাডিজম সরবরাহ করে। উদাহরণস্বরূপ, এফ # তে বীজগণিত সংক্রান্ত ডেটা ধরণের নিখুঁতভাবে কার্যকরী কাঠামো যা তাদের মধ্যে কোনও OO'ness নেই যদিও স্কালায় ADT এখনও নিয়মিত ক্লাস এবং অবজেক্ট। (দ্রষ্টব্য: সিএলআর বাইটোকোডে সংকলনের প্রক্রিয়াতে, এমনকি এফ # এডিটিও শ্রেণি এবং অবজেক্টে পরিণত হয় তবে উত্স স্তরের এফ # প্রোগ্রামারের কাছে এগুলি দৃশ্যমান হয় না))

  • এফ # এর সম্পূর্ণ হিন্দি-মিলনার স্টাইলের ধরণ রয়েছে। স্কালার আংশিক ধরণের অনুক্রম রয়েছে। সাবটাইপিং এবং খাঁটি- OO- নেসের জন্য সমর্থন হিন্ডলি-মিলনার স্টাইলের ধরণের অনুমিতিকে স্কালার পক্ষে অসম্ভব করে তোলে।

  • স্কেল এফ # এর চেয়ে অনেক বেশি নমনীয় ভাষা। স্কালায় একটি খুব ছোট অরথোগোনাল সেট রয়েছে যা পুরো ভাষায় পুনরায় ব্যবহৃত হয়। F # মনে হয় প্রতিটি ছোট ছোট জিনিসের জন্য নতুন সিনট্যাক্স প্রবর্তন করে, স্কেলার তুলনায় এইভাবে খুব সিনট্যাক্স ভারী হয়ে যায়। (স্কালার 40 টি কীওয়ার্ড রয়েছে, যেখানে এফ # এর 97 টি রয়েছে That এটি আপনাকে কিছু বলা উচিত: :-)

  • মাইক্রোসফ্ট ভাষা হওয়ায় এফ # এর ভিজ্যুয়াল স্টুডিওর আকারে একটি দুর্দান্ত আইডিই সমর্থন রয়েছে। জিনিসগুলি স্কালার পক্ষে খুব ভাল নয়। Eclipse প্লাগইনটি এখনও চিহ্ন পর্যন্ত নেই। একই নেটবিন্স প্লাগইন জন্য যায়। আইডিইএ এই মুহুর্তে আপনার সেরা বাজি বলে মনে হচ্ছে, যদিও এটি জাভা আইডিইগুলির সাথে আপনি কী পান। (ইমাস ভক্তদের জন্য, ENSIME সময় আছে this আমি এই প্যাকেজটি সম্পর্কে অনেক ভাল জিনিস শুনেছি, তবে আমি এখনও এটি চেষ্টা করি নি))

  • স্কালায় এফ # এর চেয়ে অনেক বেশি শক্তিশালী (এবং জটিল) টাইপ সিস্টেম রয়েছে।


অন্যান্য পার্থক্য:

  • এফ # ফাংশনগুলি ডিফল্টরূপে করা হয়। স্কালায়, তরকারী পাওয়া যায় তবে প্রায়শই ব্যবহৃত হয় না।

  • স্কালার বাক্য গঠনটি জাভা, স্ট্যান্ডার্ড এমএল, হাস্কেল, এরলং এবং আরও অনেক ভাষার মিশ্রণ। এফ # সিন্ট্যাক্স ওসিএএমএল, সি # এবং হাস্কেলের দ্বারা অনুপ্রাণিত হয়।

  • স্কেলা উচ্চতর ধরণের এবং টাইপক্লাস সমর্থন করে। F # হয় না।

  • স্কেল এফ # এর চেয়ে ডিএসএলগুলিতে অনেক বেশি কার্যকর।


পিএস: আমি স্কেলা এবং এফ # উভয়ই পছন্দ করি এবং আশা করি তারা ভবিষ্যতে তাদের নিজ নিজ প্ল্যাটফর্মগুলির প্রধান ভাষা হয়ে উঠবে। :-)


6
এই উত্তরটি বেশ কয়েকটি ভুল ধারণা স্থায়ী করে দেয়। আমি প্রতিটি ঘুরে গণনা করব। আপনি বলেছিলেন যে "এফ # তে বীজগণিত তথ্য টাইপগুলি সম্পূর্ণরূপে তাদের মধ্যে কোনও OO'ness ছাড়াই কার্যকরী গঠন" তবে এফ # তে বীজগণিত ডেটাটাইপগুলি কেবল শ্রেণি এবং বিশেষত, তারা OO উদাহরণ / স্থিতিশীল সদস্য এবং বৈশিষ্ট্যগুলির সাথে বর্ধনকে সমর্থন করে।
জন হ্যারোপ

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

4
@ জনহরপ: স্কেল এডিটি বিশেষভাবে ব্যবহার করে না। তাদের নিয়মিত ক্লাসের মতো চিকিত্সা করা হয়। এর Some(2)মধ্যে স্কালায় টাইপ আছে Some[Int]এবং Option[Int]যা অনাকাঙ্ক্ষিত IMO নয়। অন্যদিকে এফ # এর এডিটিগুলির জন্য একটি বিশেষ সিনট্যাক্স এবং চিকিত্সা রয়েছে এবং এটি সঠিকভাবে Some 2হিসাবে প্রকারের অনুমান করতে পারে int option। সুতরাং এডিটিগুলির এফ # এনকোডিং স্কালার (আইএমও, অবশ্যই) এর চেয়ে ভাল । আমি এটিকে নিকৃষ্ট বলে বোঝানোর চেষ্টা করিনি, এবং এটি যদি সেভাবে আসে তবে আমি দুঃখিত।
মিসিংফ্যাক্টর

9
@ জোহনহরপ: জেভিএম-তে টিসিওর অভাব অনেক স্কালার বিকাশকারীকে বিরক্ত করে না। আমাকে বিশ্বাস করুন, আপনার মনে হয় এটি এত বড় ইস্যু নয়। বেশিরভাগ সময়, আমরা সুস্পষ্ট পুনরাবৃত্তির পরিবর্তে উচ্চতর অর্ডার ফাংশন ব্যবহার করি। এবং স্কালায় বেশিরভাগ উচ্চতর অর্ডার ফাংশনগুলি লুপগুলির ক্ষেত্রে প্রয়োগ করা হয়, এবং পুনরাবৃত্তি নয়। সুতরাং, টিসিওর অভাব অনিরাপদ হয়ে ওঠে becomes
মিসিংফ্যাক্টর

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

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

4
"এফ # বেশ সহজ ভাষা বলে মনে হচ্ছে।" << না, তা নয়। এটি স্কালার চেয়ে অনেক বড়। আমার এই বিষয়টিতে কিছু সময় লেখা উচিত write
মিসিংফ্যাক্টর

4
"স্কেলা বস্তু-ভিত্তিক দিকগুলির উপর ভিত্তি করে।" << ভুল। স্কালা ওওপি ও ফাংশনাল প্রোগ্রামিং ফিউজ করার চেষ্টা করে। আমি ব্যক্তিগতভাবে খুব কমই এর অবজেক্ট-ভিত্তিক বৈশিষ্ট্যগুলি ব্যবহার করি। আমরা যা করি তার বেশিরভাগই নিখুঁতভাবে কার্যকরী।
মিসিংফ্যাক্টর

@ মিসিংফ্যাক্টর: "এটি স্কালার চেয়ে অনেক বড়"। ব্যাকরণ কত বড়?
জন হ্যারোপ

1
আমি জানি না যে বিষয়গুলি পরিবর্তিত হয়েছে কিনা। প্লাগইনটি এখনও ওপেন সোর্স সহ ইন্টেলিজিজ শিলাগুলির স্কেল।
কলিওট

0

একটি ছোট তবে গুরুত্বপূর্ণ বিষয় হল লাইসেন্স: স্কালাটি বিএসডি (সেখানে বেশিরভাগ অনুমতিপ্রাপ্ত ফ্রি সফটওয়্যার লাইসেন্স রয়েছে), এফ # "মাইক্রোসফ্ট রিসার্চ শেয়ার্ড সোর্স লাইসেন্স চুক্তি" হিসাবে ব্যবহৃত হত তবে আজকাল এটি বাণিজ্যিক পণ্য (নীচে @ লরেনজোর মতে, যদিও আমি আরও নির্দিষ্ট লাইসেন্স চুক্তি কোথাও খুঁজে পাইনি) couldn't


3
আসলে, এফ # এখন ওপেন সোর্স এবং স্কালা এখন মার্টিন ওডারস্কির সংস্থা স্কালা সলিউশনগুলির বাণিজ্যিক পণ্য।
জন হ্যারোপ

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

2
@ জুনাস: ঠিক, এফ # এর ক্ষেত্রেও একই কথা।
জন হ্যারোপ

5
@ জনহরপ: স্কালাল উন্মুক্ত উত্স হিসাবে রয়ে গেছে। দয়া করে ভুল তথ্য ছড়িয়ে দেবেন না।
অনুপস্থিতি 21

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