ক্লোজার, স্কিম / র‌্যাকেট এবং কমন লিস্পের মধ্যে পার্থক্য কী?


120

আমি জানি তারা লিস্প নামে পরিচিত একই পরিবারের ভাষার উপভাষা, তবে পার্থক্যগুলি ঠিক কী? সিনট্যাক্স, বৈশিষ্ট্য, বৈশিষ্ট্য এবং সংস্থানগুলির মতো বিষয়গুলি কভার করে আপনি যদি সম্ভব হয় তবে একটি সংক্ষিপ্ত বিবরণ দিতে পারেন?


3
আমি পার্থক্যগুলির আরও সাধারণ ওভারভিউয়ের জন্য জিজ্ঞাসা করছি কারণ আমি পড়েছিলাম এই প্রশ্নটি অন্যান্য অনেকের পক্ষে কার্যকর হতে পারে, দুঃখিত যদি এটি আপত্তিজনক মনে হয়।
মাইয়াভিক্টর

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

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

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

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

উত্তর:


103

তাদের সবার মধ্যে অনেক মিল রয়েছে:

  • গতিশীল ভাষা
  • শক্তভাবে টাইপ করা হয়েছে
  • প্রণীত
  • লিস্প-স্টাইল সিনট্যাক্স, অর্থাত্ কোডটি লিস্প ডেটা স্ট্রাকচার (ফর্ম) হিসাবে রচিত যা সাধারণ প্যাটার্ন হিসাবে ফাংশন কলগুলির মধ্যে রয়েছে: (function-name arg1 arg2)
  • শক্তিশালী ম্যাক্রো সিস্টেমগুলি যা আপনাকে কোড হিসাবে ডেটা হিসাবে বিবেচনা করে এবং রানটাইম স্বেচ্ছাসেবী কোড তৈরি করতে দেয় (প্রায়শই নতুন ভাষায় "ভাষা প্রসারিত" বা ডিএসএল তৈরি করতে ব্যবহৃত হয়)
  • প্রায়শই কার্যকরী প্রোগ্রামিং শৈলীতে ব্যবহৃত হয়, যদিও অন্যান্য দৃষ্টান্তগুলিকে সামঞ্জস্য করার ক্ষমতা রাখে
  • একটি আরএইপিএল সহ ইন্টারঅ্যাকটিভ বিকাশের উপর জোর দিন (অর্থাত্ আপনি কোডের চলমান উদাহরণে ইন্টারেক্টিভভাবে বিকাশ করতে পারেন)

সাধারণ লিস্পের স্বতন্ত্র বৈশিষ্ট্যগুলি:

Clojure স্বতন্ত্র বৈশিষ্ট্য:

  • বৃহত্তম লাইব্রেরি ইকোসিস্টেম, যেহেতু আপনি সরাসরি কোনও জাভা লাইব্রেরি ব্যবহার করতে পারেন
  • ভেক্টর []এবং মানচিত্রগুলি {}স্ট্যান্ডার্ড তালিকাগুলির পাশাপাশি মান হিসাবে ব্যবহৃত হয়() - ভেক্টর এবং মানচিত্রের সাধারণ উপযোগ ছাড়াও কেউ কেউ মনে করেন এটি একটি উদ্ভাবন যা সাধারণভাবে আরও পঠনযোগ্য করে তোলে
  • অপ্রয়োজনীয়তা এবং অলস কার্যকরী প্রোগ্রামিংয়ের উপর আরও বেশি জোর দেওয়া, কিছুটা হাস্কেলের দ্বারা অনুপ্রাণিত
  • ভাষা স্তরে সফ্টওয়্যার লেনদেনের মেমরির দ্বারা সমর্থিত শক্তিশালী সম্মতি ক্ষমতা (দেখার মতো: http://www.infoq.com/preferencesations/Value-Identity-State-Rich-Hickey )

স্কিমের স্বতন্ত্র বৈশিষ্ট্যগুলি:

  • তাত্ক্ষণিকভাবে লিস্প শিখার জন্য সবচেয়ে সহজ এবং সহজ
  • হাইজেনিক ম্যাক্রোস ( http://en.wikedia.org/wiki/Hygienic_macro দেখুন ) - ম্যাক্রো বিস্তারে দুর্ঘটনাজনিত প্রতীক ক্যাপচারের সমস্যাগুলি মার্জিতভাবে এড়িয়ে চলে

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

2
"দৃ typ়ভাবে টাইপযুক্ত গতিশীল ভাষা" বিপণন করছে। এই অর্থে পাইথন এমনকি দৃ strongly়ভাবে টাইপ করা হয়।
রন

16
@ron: পাইথন হয় শক্তিশালী ভাবে টাইপ, শুধু পাতার মর্মর মত (বলুন জাভাস্ক্রিপ্ট বা ভিবি অসদৃশ)। আপনি তার পরিবর্তে "স্ট্যাটিক টাইপিং" বনাম "ডায়নামিক টাইপিং" ভাবছেন, সমস্ত জাতের জন্য এন.ইউইকিপিডিয়া.org / উইকি / টাইপ_সিস্টেম দেখুন । তবে হ্যাঁ, এটি বিপণন করছে
নাস বানভ

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

ক্লোজারে হাইজেনিক ম্যাক্রো রয়েছে। এখানে আরও তথ্য: xિવলাইজেশন.ট.
ক্রিস্টোফার কুতরফ

50

উপরের লোকেরা কিছু জিনিস মিস করল

  1. কমন লিস্পে ভেক্টর এবং হ্যাশ টেবিলগুলিও রয়েছে। পার্থক্যটি হ'ল কমন লিস্প ভেক্টরগুলির জন্য # () ব্যবহার করে এবং হ্যাশ টেবিলগুলির জন্য কোনও সিনট্যাক্স ব্যবহার করে না। আমার বিশ্বাস, স্কিমের ভেক্টর রয়েছে

  2. কমন লিস্পে রিডার ম্যাক্রোগুলি রয়েছে যা আপনাকে নতুন বন্ধনী ব্যবহারের অনুমতি দেয় (যেমন স্কিমের বংশধর র্যাকেট)।

  3. কমন লিস্পের অস্বাস্থ্যকর বিপরীতে স্কিম এবং ক্লোজারের স্বাস্থ্যকর ম্যাক্রো রয়েছে

  4. সমস্ত ভাষা আধুনিক হয় বা ব্যাপক সংস্কার প্রকল্প রয়েছে have কমন লিস্প বিগত পাঁচ বছরে বিস্তৃত গ্রন্থাগার অর্জন করেছে (বেশিরভাগই কুইল্লিস্পকে ধন্যবাদ), স্কিমটির কয়েকটি আধুনিক বাস্তবায়ন রয়েছে (র‌্যাকেট, চিকেন, চেজ স্কিম ইত্যাদি), এবং ক্লোজুর তুলনামূলকভাবে সম্প্রতি তৈরি করা হয়েছিল

  5. কমন লিস্পের একটি বিল্ট-ইন ওও সিস্টেম রয়েছে যদিও এটি আপনি ব্যবহার করতে পারেন এমন অন্যান্য ওও সিস্টেমের থেকে একেবারেই আলাদা। উল্লেখ্য, এটি কার্যকরী হয় না - আপনি না আছে OO যেমন পণ্য কোড লিখতে।

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


4
সামঞ্জস্যতা মোডগুলি বাদ দিয়ে র‌্যাকেট কোনও স্কিমের বাস্তবায়ন নয় । দেখা stackoverflow.com/questions/3345397
বাগ

Clojure নেই না স্বাস্থ্যকর ম্যাক্রো আছে, আমি হার্ড উপায় খুঁজে পেয়েছি।
পাইয়ন

40

লিস্প -1 এবং লিস্প -2 পার্থক্য সম্পর্কে ভুলবেন না।

স্কিম এবং ক্লোজার
হ'ল লিস্প -১: এর অর্থ হল ভেরিয়েবল এবং ফাংশন উভয়ের নাম একই নেমস্পেসে থাকে।

কমন লিস্পটি লিস্প -২:
ফাংশন এবং ভেরিয়েবলগুলির বিভিন্ন নেমস্পেস থাকে (আসলে, সিএল এর অনেক নেমস্পেস থাকে)।


-4

জিম্প স্কিম লিখিত আছে :)

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

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


2
"JVM এর জন্য স্কিমকে আরও সহজ করার জন্য" "প্রতিটি অন্যান্য JVM ভাষার মতো" হ্যাঁ, ঠিক আছে।
oskarkv

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