স্কালা এবং গ্রোভির মধ্যে মূল পার্থক্যগুলি কী কী? [বন্ধ]


128

পৃষ্ঠে গ্রোভি এবং স্কালা দেখতে অনেকটা একইরকম, স্কালাকে স্থিরভাবে টাইপ করা এবং গ্রোভি গতিশীল।

  • অন্যান্য গুরুত্বপূর্ণ পার্থক্যগুলি কি এবং একে অপরের তুলনায় সুবিধাগুলি কী?
  • তারা সত্যিই কি অনুরূপ?
  • দুজনের মধ্যে কি প্রতিযোগিতা আছে?
    • যদি তা হয় তবে আপনি কী ভাবেন যে দীর্ঘ মেয়াদে জিতবে?

গ্রোভি ২.০ এ স্ট্যাটিক টাইপিংও
নতুন-

উত্তর:


230

এগুলি উভয়ই JVM এর জন্য অবজেক্ট ওরিয়েন্টেড ভাষা যা ল্যাম্বডাস এবং ক্লোজার রয়েছে এবং জাভাতে আন্তঃব্যবহার করছে। তা বাদে এরা একেবারেই আলাদা।

গ্রোভি একটি "গতিশীল" ভাষা যা এই অর্থে নয় যে এটি গতিশীলভাবে টাইপ করা হয়েছে তবে এটি গতিশীল মেটা-প্রোগ্রামিং সমর্থন করে।

স্কালা একটি "স্ট্যাটিক" ভাষা যাতে এটি স্ট্যাটিকালি টাইপ করা থাকে এবং জাভাতে আপনি যে বিশ্রী জিনিস করতে পারেন তার বাইরে কার্যত কোনও গতিশীল মেটা-প্রোগ্রামিং নেই। দ্রষ্টব্য, স্কালার স্ট্যাটিক টাইপ সিস্টেম জাভা-র তুলনায় যথেষ্ট পরিমাণে অভিন্ন এবং পরিশীলিত।

গ্রোভি সিনট্যাকটালি জাভা দ্বারা প্রভাবিত হলেও রুবীর মতো ভাষাগুলিতে শব্দার্থগতভাবে বেশি প্রভাবিত।

স্কালা সিনথেটিকভাবে রুবি এবং জাভা উভয় দ্বারা প্রভাবিত। এটি জাভা, এসএমএল, হাস্কেল এবং জিবেটা নামক একটি অত্যন্ত অস্পষ্ট ওও ভাষা দ্বারা শব্দার্থগতভাবে বেশি প্রভাবিত।

গ্রাভির জাভা ওভারলোডিং যেভাবে পরিচালনা করে তার কারণে "দুর্ঘটনাজনক" একাধিক প্রেরণ রয়েছে।

স্কালা কেবলমাত্র একক প্রেরণ, তবে একাধিক প্রেরণকে পরিচালনা করার জন্য বোঝানো একই ধরণের কিছু সমস্যা মোকাবেলায় এসএমএল অনুপ্রেরণা প্যাটার্নের মিল রয়েছে। তবে যেখানে একাধিক প্রেরণ কেবল রানটাইম টাইপের প্রেরণ করতে পারে সেখানে স্কালার প্যাটার্নের মিলটি রানটাইম ধরণ, মান বা উভয় ক্ষেত্রে প্রেরণ করতে পারে। প্যাটার্ন মিলের মধ্যে সিন্ট্যাক্টিক্যালি সুখী ভেরিয়েবল বন্ডিংও অন্তর্ভুক্ত রয়েছে। এই একক বৈশিষ্ট্যটি স্কালায় কীভাবে প্রোগ্রামিং তৈরি করে তা কতটা মজাদার ress

স্কালা এবং গ্রোভি উভয়ই মিক্সিনগুলির সাথে একাধিক উত্তরাধিকারের ফর্মকে সমর্থন করে (যদিও স্কালা তাদের বৈশিষ্ট্য হিসাবে ডাকে)।

স্কলা আংশিক ফাংশন অ্যাপ্লিকেশন এবং ভাষা পর্যায়ে কারিঙ উভয় সমর্থন করে, গ্রোভির আংশিক ফাংশন অ্যাপ্লিকেশন করার জন্য একটি বিশ্রী "তরকারী" পদ্ধতি রয়েছে।

স্কালা সরাসরি লেজ পুনরাবৃত্তি অপ্টিমাইজেশন করে। আমি গ্রোভির বিশ্বাস করি না। এটি কার্যকরী প্রোগ্রামিংয়ে গুরুত্বপূর্ণ তবে জরুরী প্রোগ্রামিংয়ে কম গুরুত্বপূর্ণ।

স্কালা এবং গ্রোভি উভয়ই ডিফল্টরূপে অধীর আগ্রহে মূল্যায়ন করা হয়। যাইহোক, স্কালা কল-বাই নাম পরামিতিগুলিকে সমর্থন করে। গ্রোভি করেন না - কল-বাই-নাম অবশ্যই বন্ধের সাথে অনুকরণ করা উচিত।

স্কালার "বোঝার জন্য" রয়েছে, যা অন্যান্য ভাষায় পাওয়া তালিকার বোঝার একটি সাধারণীকরণ (প্রযুক্তিগতভাবে তারা মনড বোঝা এবং কিছুটা - হাস্কেলের করণীয় এবং সি # এর লিনকুইয়ের মধ্যে কোথাও)।

স্কালায় "স্ট্যাটিক" ক্ষেত্র, অভ্যন্তর শ্রেণি, পদ্ধতি ইত্যাদি সম্পর্কিত কোনও ধারণা নেই - এটি পরিবর্তে সিঙ্গলটন অবজেক্ট ব্যবহার করে। গ্রোভি স্থির ধারণাটি ব্যবহার করে।

গ্রোভি যেমন করেন তেমনভাবে পাটিগণিত অপারেটর বাছাইতে স্কেলা তৈরি করেনি। স্কালায় আপনি পদ্ধতিগুলি খুব নমনীয়ভাবে নামকরণ করতে পারেন।

শূন্যতার সাথে কাজ করার জন্য গ্রোভির এলভিস অপারেটর রয়েছে। স্কালার প্রোগ্রামাররা নাল ব্যবহারের জন্য অপশন প্রকারের ব্যবহার পছন্দ করে তবে আপনি চান যদি স্ক্যালায় কোনও এলভিস অপারেটর লেখা সহজ হয়।

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

আমি নিশ্চিত যে অনেকগুলি, অনেক পার্থক্য রয়েছে যা আমি আবৃত করি নি। তবে আশা করি এটি আপনাকে একটি সারাংশ দেবে।

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

কে জিতবে? আমার স্ফটিক বল অন্য কারোর মতো ফাটলযুক্ত।


21
এটি যদি উভয়ই জিততে পারে যে যদি কোনও বিশ্ববিদ্যালয় কেবলমাত্র জাভা =) এর পরিবর্তে এই ভাষাগুলি শেখানো শুরু করতে পারে
চি চি

13
অপরিবর্তনীয়তা কি স্কালার মূল বৈশিষ্ট্য নয়? সম্মতি এবং অভিনেতাদের সম্পর্কে কী? আমাদের আরও কিছু বলুন ...
লিওনেল

4
যদি কোনও প্রতিযোগিতা থাকে তবে এটি ক্লোজারের সাথে হবে, তবে ক্লোজুরে প্রতিযোগিতায় আগ্রহী নয়।
রায়নে 21

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

4
যেহেতু এই উত্তরে অনেকগুলি ভোট রয়েছে, তাই একটি অংশ আমি সংশোধন করতে চাই। এটা ঠিক যে গ্রোভির উত্তরাধিকার ভিত্তিক মাল্টিম্যাথডগুলি দুর্ঘটনা হিসাবে শুরু হয়েছিল, তবে একটি গ্রোভী বিকাশকারী সম্মেলনে জেমসকে অন্তর্ভুক্ত করা হয়েছিল এবং গ্রোভী ১.০ এর অনেক আগেই আমরা এটি রাখার সিদ্ধান্ত নিয়েছিলাম। এটি পরিবর্তন করা কঠিন হত না। জেমস যা লিখেছিলেন তা যুক্ত করার জন্য ... ইনভয়েডটাইমিক সেই বাধাটি নামিয়েছে যার বিষয়ে তিনি কথা বলছেন
ব্ল্যাকড্র্যাগ

12

স্কেলা বলতে বোঝায় একটি ওও / ফাংশনাল হাইব্রিড ভাষা এবং এটি খুব সুপরিকল্পিত এবং ডিজাইন করা। গ্রোভি আরও অনেকগুলি সংযোজনের মতো যা জাভাতে ব্যবহার করতে পছন্দ করবে। আমি উভয়কে ঘনিষ্ঠভাবে দেখেছি, তাই আমি বলতে পারি :)

এগুলির কোনওটিই অপরের চেয়ে ভাল বা খারাপ নয়। গ্রোভি মেটা-প্রোগ্রামিংয়ে খুব ভাল, মেটাল প্রোগ্রামিংয়ের প্রয়োজন হয় না এমন সমস্ত ক্ষেত্রে স্কালা খুব ভাল, তাই ... আমি উভয়ই ব্যবহার করার প্রবণতা রাখি।


11

স্কালায় এমন অভিনেতা রয়েছে, যা বাস্তবায়নের ক্ষেত্রে সম্মতিটি আরও সহজ করে তোলে। এবং বৈশিষ্ট্য যা সত্য দেয়, টাইপসেফ একাধিক উত্তরাধিকার।


9
ভবিষ্যতের রেফারেন্সের জন্য, গ্রোভি জিপি বা আক্কার মাধ্যমে করে।
জোর্লেভ

4
ভবিষ্যতের রেফারেন্সের জন্য,
গ্রোভির


7

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

স্কালা কিছুটা আলাদাভাবে তালিকা প্রয়োগ করে; গ্রোভিতে, বেশ কিছু সবকিছু java.util.List এর উদাহরণ, যেখানে স্কালা তালিকাগুলি এবং আদিম অ্যারে উভয়ই ব্যবহার করে। গ্রোভির কাছে (আমার মনে হয়) আরও ভাল স্ট্রিং ইন্টারপোলেশন রয়েছে।

স্কেলা দ্রুততর, এটি বলে মনে হয়, তবে গ্রোভির লোকেরা 2.0 রিলিজের জন্য সত্যই পারফরম্যান্সকে চাপ দিচ্ছে। 1.6 1.5 সিরিজের উপর গতিতে একটি বিশাল লিপ দিয়েছে।

আমি মনে করি না যে দুটি ভাষাই সত্যই 'জিতবে', কারণ তারা দুটি ভিন্ন শ্রেণির সমস্যাকে লক্ষ্য করে। স্কালা হ'ল একটি উচ্চ-পারফরম্যান্স ভাষা যা জাভার মতো বয়লারপ্লেটের মতো একই স্তরের না হয়ে খুব জাওয়ার মতো। গ্রোভি দ্রুত প্রোটোটাইপিং এবং বিকাশের জন্য, যেখানে প্রোগ্রামারদের কোডটি প্রয়োগ করতে যে সময়ের প্রয়োজন তার চেয়ে গতি কম গুরুত্বপূর্ণ।


3
"গ্রোভি দ্রুত প্রোটোটাইপিং এবং বিকাশের জন্য" - এটি পরামর্শ দেয় যে গ্রোভি উত্পাদন ব্যবহারের জন্য উপযুক্ত নয় যার সাথে আমি একমত নই। উত্পাদন ব্যবহারে গ্রিলের প্রচুর সাইট রয়েছে, উদাহরণস্বরূপ
ডোনাল

10
স্কালা কোনও গতিশীল ভাষা নয়।
জন অক্সলে

2
"গ্রোভির আরও ভাল স্ট্রিং ইন্টারপোলেশন রয়েছে (আমার মনে হয়)"। - স্কেলা-২.১০.০ সহ এটি আর সত্য নয় (স্কালায় দুর্দান্ত স্ট্রিং অন্তরঙ্গকরণ পাওয়া গেল)।
ভ্যাসিলিনভিকভ

5

স্কোলার গ্রোভির চেয়ে অনেক বেশি স্টিপার লার্নিং বক্ররেখা রয়েছে। প্যাটার্ন ম্যাচিং এবং লেজ ভিত্তিক পুনরাবৃত্তি সহ ফাংশনাল প্রোগ্রামিংয়ের জন্য স্কালার আরও অনেক বেশি সমর্থন রয়েছে, অর্থ খাঁটি এফপির আরও সরঞ্জাম meaning


0

স্কালায় ডায়নামিকা সংকলনও রয়েছে এবং আমি এটি টুইটার ইওল লাইব ( https://github.com/twitter/util ) ব্যবহার করে সম্পন্ন করেছি । আমি স্কাল কোডটি একটি ফ্ল্যাট ফাইলে রেখেছি (কোনও প্রকার ছাড়াই) এবং রান সময়ে ইওল নির্মিত স্কালার ক্লাস ব্যবহার করে। আমি বলব স্কেলটি হ'ল মেটা প্রোগ্রামিং এবং এতে গতিশীল জটিলতার বৈশিষ্ট্য রয়েছে

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