স্কালা বনাম গ্রোভি বনাম ক্লোজার [বন্ধ]


676

কেউ দয়া করে স্কেলা, গ্রোভি এবং ক্লোজারের মধ্যে প্রধান পার্থক্য ব্যাখ্যা করতে পারেন। আমি এই সংকলনের প্রতিটি জেভিএম চালানোর জন্য জানি তবে আমি তাদের মধ্যে একটি সাধারণ তুলনা চাই।

উত্তর:


873

গ্রোভি হ'ল একটি গতিশীল টাইপ করা ভাষা, যার বাক্য গঠন জাভার খুব কাছাকাছি, বেশ কয়েকটি সিনট্যাক্স উন্নতি যা হালকা কোড এবং কম বয়লারপ্লেটের অনুমতি দেয়। এটি সংকলিত হওয়ার পাশাপাশি একটি দোভাষীর মাধ্যমে চালাতে পারে যা দ্রুত প্রোটোটাইপিং, স্ক্রিপ্টস এবং গতিশীল ভাষা শেখার জন্য একটি নতুন সিনট্যাক্স না শিখে (আপনার জাভা জেনে নিচ্ছে) ধরে নেওয়া ভাল করে তোলে। গ্রোভি ২.০ হিসাবে এটির স্থির সংকলনের জন্য ক্রমবর্ধমান সমর্থন রয়েছে । গ্রোভি ক্লোজারকে সমর্থন করে এবং কিছুটা কার্যকরী শৈলীতে প্রোগ্রামিংয়ের পক্ষে সমর্থন করে যদিও এটি এখনও কার্যকরী প্রোগ্রামিংয়ের traditionalতিহ্যবাহী সংজ্ঞা থেকে বেশ দূরে।

সফটওয়্যার ট্রানজেকশনাল মেমরির মতো কয়েকটি উন্নত বৈশিষ্ট্যযুক্ত ক্লজিউর লিস্পের একটি উপভাষা । আপনি যদি লিস্প পছন্দ করেন এবং জেভিএম এর আওতায় এটির মতো কিছু ব্যবহার করতে চান, ক্লোজার আপনার জন্য। এটি সম্ভবত JVM- এ চলমান সর্বাধিক কার্যকরী ভাষা এবং সম্ভবত সবচেয়ে বিখ্যাত ভাষা । এছাড়াও, এটি অন্যান্য লিস্প উপভাষার তুলনায় অপরিবর্তনীয়তার উপর আরও জোর দেয় , যা এটি কার্যকরী ভাষা উত্সাহীদের হৃদয়ের কাছাকাছি নিয়ে যায়।

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

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

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

স্কালা সরাসরি জাভার সাথে প্রতিযোগিতা করতে পারে এবং প্রায় সব দিক থেকে এটির অর্থের জন্য রান দেয়। এটি অবশ্যই এই মুহূর্তে জনপ্রিয়তায় প্রতিদ্বন্দ্বিতা করতে পারে না, এবং দৃ corporate় কর্পোরেট ব্যাকিংয়ের অভাব কর্পোরেট পরিবেশে এটির গ্রহণযোগ্যতাকে বাধা দিতে পারে। ভাষাটি কীভাবে বিকশিত হয় সেই অর্থে এটি জাভা থেকেও অনেক বেশি গতিশীল ভাষা। ভাষার দৃষ্টিকোণ থেকে, এটি একটি ভাল জিনিস। ব্যবহারকারীদের দৃষ্টিকোণ থেকে যারা এতে হাজার হাজার লাইনের কোড লিখিত থাকার পরিকল্পনা করেন, তা নয়।

চূড়ান্ত প্রকাশ হিসাবে, আমি স্কালার সাথে খুব পরিচিত, এবং কেবলমাত্র অন্য দুটি সাথে পরিচিত।


1
সুন্দর. যদিও আমাকে বলতে হবে স্কালায় লাইটব্যান্ড কর্পোরেট ব্যাক রয়েছে এবং লিংকডইন, টুইটার, স্পার্ক এবং প্রচুর ব্যাঙ্কের মতো বড় নামে এটি ব্যবহৃত হয়। আমি যেখানে কাজ করি আমাদের কাছে স্কালার 11 মিলিয়ন লাইনের কোডবেস রয়েছে, এটি ভাল ধারণা নয় তবে এটি কার্যকর হয়।
জোয়ান

219

scala

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

এর বেশিরভাগটি পিৎজা ভাষার সাথে মার্টিন ওডারস্কির পূর্ববর্তী কাজের উপর ভিত্তি করে ছিল । ওও / এফপি ইন্টিগ্রেশন নিছক বন্ধ হওয়ার চেয়ে বেশি এগিয়ে গেছে এবং ভাষাটিকে পোস্ট-ফাংশনাল হিসাবে বর্ণনা করা হয়েছে।

এটি সত্ত্বেও, এটি জাভা থেকে অনেক দিক থেকে নিকটতম। মূলত ওও সমর্থন এবং স্ট্যাটিক টাইপিংয়ের সংমিশ্রণের কারণে, তবে এটি ভাষা ডিজাইনের একটি স্পষ্ট লক্ষ্যের কারণে এটি জাভার সাথে খুব দৃly়ভাবে সংহত করা উচিত।

খাঁজকাটা

গ্রোভি স্পষ্টতই জাভা এর দুটি বৃহত্তম সমালোচনা দ্বারা মোকাবেলা করেছেন

  • গতিশীলভাবে টাইপ করা হচ্ছে, যা প্রচুর পরিমাণে বয়লারপ্লেট সরিয়ে দেয়
  • ভাষাতে ক্লোজার যুক্ত করা হচ্ছে।

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

গ্রোভির তিনটি ভাষার সবচেয়ে শক্তিশালী বাণিজ্যিক সমর্থন রয়েছে, বেশিরভাগই স্প্রিংসোর্সের মাধ্যমে।

Clojure

ক্লোজওর এলআইএসপি পরিবারে একটি কার্যকরী ভাষা, এটি গতিশীলভাবেও টাইপ করা হয়।

এসটিএম সহায়তার মতো বৈশিষ্ট্যগুলি এটিকে বক্সের একযোগে সম্মিলিত সহায়তা দেয়, অন্যদিকে স্কালাকে নকল করতে আক্কার মতো একটি তৃতীয় পক্ষের লাইব্রেরি প্রয়োজন requires

সিন্ট্যাক্টিক্যালি, এটি সাধারণত জাভা কোড থেকে তিনটি ভাষার সবচেয়ে দূরে।

আমি এটিও প্রকাশ করতে পারি যে আমি স্কালার সাথে সর্বাধিক পরিচিত :)


11
এই ফানেলের ভাষা আমি এর আগে কখনও শুনিনি। Historicalতিহাসিক রেকর্ডটিতে কিছুটা ফাঁক পূরণ করার জন্য ধন্যবাদ
র‌্যান্ডাল স্কুল্জ

8
আপনি সত্যিকার অর্থে ক্লোজারকে খাঁটি কার্যকরী ভাষা বলতে পারবেন না । আবশ্যক কোড লিখতে এটি অবশ্যই সম্ভব।
dbyrne

2
অভিনেতা ভিত্তিক সম্মতি জন্য স্কালা আক্কা লাইব্রেরিতে তৈরি করেছে। এটি এখন তৃতীয় পক্ষের নির্ভরতা নয়।
স্কট এম গার্ডনার

2
@Orubel বাইটকোড, একটি Scala ক্লাস হয় অভিন্ন ধরনের এবং সব - সমতুল্য জাভা ক্লাসে। ঘটনা হিসাবে, পুরো আক্কা জাভা এপিআই স্কালায় লিখিত হয় written সুতরাং দয়া করে এখানে "সংহত করতে পারবেন না" বলতে আপনি কী বোঝাতে চান তা ব্যাখ্যা করুন - কারণ এটি আমার কাছে FUD এর মতো পড়ে reads
কেভিন রাইট

3
এই দস্তাবেজটির সংক্ষিপ্তসার হিসাবে: "জাভাতে বিদ্যমান না এমন স্কাল বৈশিষ্ট্যগুলি সরাসরি জাভাতে ব্যবহার করা যায় না"। তবে ... বিমূর্ত ধরণের সদস্য এবং উচ্চ-ধরণের ধরণের প্রকারগুলি হ'ল উন্নত বৈশিষ্ট্য যা আপনি অবশ্যই ব্যবহার করতে বাধ্য হন না! জাভা গ্রোভির প্যারামিটার, বিল্ডার বা এক্সটেনশন মডিউলগুলি ছাড়াও পদ্ধতি ব্যবহার করতে পারে না, এভাবে গ্রোভিকে আপনার নিজের সংজ্ঞা অনুসারে "দৃ tight়ভাবে সংহত করা হয় না" making
কেভিন রাইট

68

ক্লোজার নিয়ে খেলার মতো সময় আমার ছিল না কখনও। তবে স্কালা বনাম গ্রোভির জন্য এটি জেমস স্ট্রাচনের ভাষ্য - গ্রোভির স্রষ্টা

"যদিও জাভাকের দীর্ঘমেয়াদী প্রতিস্থাপনের জন্য আমার পরামর্শটি স্কালা is সম্ভবত গ্রোভিকে কখনও তৈরি করেনি।

আপনি পুরো গল্পটি এখানে পড়তে পারেন


72
এটি উল্লেখ করা উচিত যে এই বিবৃতিটি বলছে না যে স্কোলা গ্রোভির চেয়ে ভাল। জেমস এমনটি বলেও পরিচিত যে তিনি যদি জানতেন যে কোনও ভাষা তৈরি করা তার পক্ষে কতটা সমস্যা তা তিনি কখনও তৈরি করতে পারতেন না। এই প্রসঙ্গে দেখা গিয়েছিল এটি স্পষ্ট যে কেন তিনি অবশ্যই গ্রোভির বিকাশ করতে পারেন নি। এবং আমি সাহস করে বলতে পারি যে তিনি অনেক ভাল ধারণা দিয়েছেন, তবে তিনি বর্তমান গ্রোভির স্রষ্টা নন। তিনি 2007 সালে 1.0 এর অনেক আগে এই প্রকল্পটি ছেড়ে গিয়েছিলেন এবং এর পর থেকে কোনও অংশ নেননি। প্রকল্পে তাঁকে ছাড়া কমপক্ষে যত কিছু ছিল তার সাথে ছিল।
ব্ল্যাকড্রাগ

31
এবং জেমস স্ট্র্যাচান কোটলিন ভাষায় সক্রিয়ভাবে কাজ করছে বলে মনে করা হচ্ছে, স্কালা স্পষ্টতই তাঁর পক্ষে যথেষ্ট চিত্তাকর্ষক নয়।
বিডিকোসার

6
@ বিডিকোশের তিনি এটিতে কাজ করছেন কারণ স্কালা সর্বাধিক প্রোগ্রামারদের জন্য খুব চিত্তাকর্ষক ... এবং [আরও গুরুত্বপূর্ণভাবে] কিছু জায়গায় খুব
নাম প্রকাশ করুন

30

তারা কোথা থেকে আসছে বা কোন বিকাশকারীরা তারা মূলত টার্গেট করছে তার সাথে তাদের পার্থক্য করা যেতে পারে।

গ্রোভি জাভা-র স্ক্রিপ্টিং সংস্করণের মতো। বড় আর্কিটেকচার সমর্থনযুক্ত চতুর অ্যাপ্লিকেশনগুলি তৈরি করার সময় জাভা প্রোগ্রামাররা দীর্ঘ সময় বাড়িতে বোধ করে। গ্রিলি অন গ্রিল হ'ল নামটি যেমন রেল ফ্রেমওয়ার্কের অনুরূপ বলে। এমন লোকদের জন্য যারা জাভাটির ভার্বোসটিটি সারাক্ষণ বিরক্ত করতে চান না।

স্কালা হ'ল একটি অবজেক্ট ওরিয়েন্টেড এবং ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং রুবি বা পাইথন প্রোগ্রামাররা এর সাথে আরও বেশি অনুভব করতে পারে। এই প্রোগ্রামিং ভাষাগুলিতে পাওয়া প্রচুর প্রচলিত ভাল ধারণাগুলি নিয়োগ করে।

ক্লোজওর লিস্প প্রোগ্রামিং ভাষার একটি উপভাষা তাই লিস্প, স্কিম বা হাস্কেল বিকাশকারীরা এই ভাষার বিকাশের সময় বাড়িতে থাকতে পারে।


24
স্কেলা আসলে কার্যকরী প্রোগ্রামিং ভাষা নয়। এটি কার্যক্ষম বৈশিষ্ট্য সহ প্রথমে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা।
ড্যানিয়েল সি সোব্রাল

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

21
স্কালা কিছু কার্যকরী বৈশিষ্ট্য সহ একটি আবশ্যকীয় ভাষা। লোকেরা যদি কোনও ভাষাকে কার্যকরী বিশ্ব থেকে আইডিয়ামগুলি গ্রহণ করার সাথে সাথে ক্রিয়াকলাপ হিসাবে ডাকতে থাকে তবে এই শব্দটি অন্য একটি বিপণনের শব্দ হয়ে উঠবে। পাশাপাশি সি ++ ক্রিয়ামূলক এবং হাস্কেলকে আবশ্যক হিসাবে কল করা শুরু করতে পারে।
জন-হ্যানসন

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

7
অন্যদিকে, ভাষার এমএল পরিবার কার্যকরী হিসাবে স্বীকৃত তবে কঠোর এবং পার্শ্ব প্রতিক্রিয়া / আবশ্যক কোডকে মঞ্জুরি দেয়।
GClaramunt 14

8

আমি প্রাগমেটিক প্রোগ্রামারস বইটি "গ্রোভী রেসিপি: গ্রীসিং হুইল অফ জাভা" স্কট ডেভিস, কপিরাইট ২০০৮ দ্বারা এবং একই বছরের এপ্রিলে মুদ্রিত করছি।

এটি কিছুটা পুরানো but তবে বইটি স্পষ্ট করে দিয়েছে যে গ্রোভি আক্ষরিক অর্থে জাভার একটি এক্সটেনশন। আমি জাভা কোডটি লিখতে পারি যা জাভা ঠিক মত কাজ করে এবং * .groovy ফাইলটির নাম পরিবর্তন করতে পারে এবং এটি দুর্দান্ত কাজ করে। বই অনুসারে, আমি যদি প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করি তবে বিপরীতটি সত্য। এখনও পর্যন্ত, পরীক্ষাগুলি এটি বহন করবে বলে মনে হচ্ছে।


গ্রোভিকে শেখার জন্য এটি সেরা বই।
শীর্ষ

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

4

স্পষ্টতই, বাক্য গঠনটি সম্পূর্ণ আলাদা (গ্রোভি জাভার সবচেয়ে নিকটতম), তবে আমি মনে করি এটি আপনি যা চাইছেন তা নয়।

আপনি যদি জাভা অ্যাপ্লিকেশনটির স্ক্রিপ্টে তাদের ব্যবহার করতে আগ্রহী হন তবে স্কেলা সম্ভবত ভাল পছন্দ নয়, কারণ জাভা থেকে এটি মূল্যায়নের কোনও সহজ উপায় নেই , তবে গ্রোভি বিশেষত সেই উদ্দেশ্যেই উপযুক্ত suited


জাভা স্ক্রিপ্টে স্কালা ব্যবহার করার বিষয়ে আপনার বক্তব্যটি আমি বুঝতে পারি না। আপনি অবশ্যই একটি স্কালা স্ক্রিপ্ট লিখতে পারেন যা জাভা কোডকে চালিত করে; কোন evalপ্রয়োজন নেই।
ড্যানিয়েল ইয়াঙ্কোভস্কি

2
@ ড্যানিয়েল, আমি লিঙ্কযুক্ত স্ক্রিপ্টিং জন্য স্কালা ব্যবহার সম্পর্কে প্রশ্ন দেখুন। সেখানে গৃহীত উত্তরটি হ'ল "ইওল" সুবিধার অভাব এবং জাভ্যাক্স। স্ক্রিপ্টিং সমর্থনটি স্ক্যালাকে একটি জাভা অ্যাপ্লিকেশন স্ক্রিপ্ট করতে ব্যবহার করতে জটিলতর করে তোলে তবে এটি গ্রোভির সাথে রয়েছে।
থিলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.