ক্লোজুরে সম্পর্কে এত দুর্দান্ত কী? [বন্ধ]


40

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

দেখার পরও কি ClojureScript এবং Compojure (দুই উপরোক্ত "ভালো" প্রকল্প), আমি শুধু মনে Clojure মত একটি রসিকতা। আমি বুঝতে পারি না যে কেউ কেন রুজ বা পাইথন বলে ক্লোজারকে বেছে নেবে, এমন দুটি ভাষা যা আমি পছন্দ করি এবং এর মতো একটি পরিষ্কার বাক্য গঠন রয়েছে এবং এটি খুব সহজেই বেছে নেওয়া যায় যেখানে ক্লোজুর যেখানেই এত বেশি বন্ধনী এবং চিহ্ন ব্যবহার করেছেন যেখানে এটি পড়ার ক্ষমতা নষ্ট করে দেয় আমাকে.

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

সুতরাং দয়া করে, আমাকে আলোকিত করুন!

  • ক্লোজুরে সম্পর্কে এত ভাল কি?
  • ভাষাটির প্রশংসা করার জন্য আমার নিখুঁত ন্যূনতম কী হওয়া উচিত?

14
I don't understand why someone would pick Clojure over say, Ruby or Python- এটি jvm এ চলে এবং পুরো জাভা লাইব্রেরিটি ব্যবহার করতে পারে। ... have such a clean syntaxযুক্তিযুক্তভাবে, কার্যকরী ভাষার মতো লিস্পের খুব পরিষ্কার বাক্য গঠন এবং কাঠামো রয়েছে, কেবলমাত্র এটির বেশিরভাগ লোক অভ্যস্ত নয় are

22
এর নাম সেক্সি।
প্রোগ্রামার 21

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

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

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

উত্তর:


47

আপনি যে পটভূমিটি দিয়েছেন তার জন্য, আমি যদি প্যারাফ্রেজ করতে পারি:

  1. আপনি রুবি / পাইথনের সাথে পরিচিত।
  2. আপনি এখনও ক্লোজুরের সুবিধাগুলি দেখতে পাচ্ছেন না।
  3. আপনি লিস্প বা ক্লোজার সিনট্যাক্সটি পরিষ্কার দেখতে পাচ্ছেন না।

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

আপনার দুটি প্রশ্নের সরাসরি সমাধান করতে:

  1. ক্লোজুরে সম্পর্কে এত ভাল কি? এই সাইটে এবং অন্য কোথাও প্রচুর উত্তর, যেমন https://www.quora.com/Why-would-someone-learn-Clojure দেখুন
  2. ভাষাটির প্রশংসা করার জন্য আমার নিখুঁত ন্যূনতম কী হওয়া উচিত? ক্লোজারের ডিজাইনের পিছনে যে বড় ধারণা রয়েছে তা আমি জানার পরামর্শ দিয়েছি, যেমন ক্লজিউর প্রোগ্রামিং এবং দ্য জয় অফ ক্লোজারের বই অনুসারে এবং রিচ হিকির আলোচনায়, এসপি। সহজ সরল করা সহজ কথা । একবার আপনি কী / কেন জানতে পারবেন তারপরে ক্লোজার কোড পড়ার সময় কীভাবে বুঝতে শুরু করতে পারেন , এসএসপি। ক্লাস, অবজেক্টস, স্টেট / মিউটেশন থেকে কীভাবে "সুনির্দিষ্ট ফাংশন এবং ডেটা" (উচ্চতর অর্ডার ফাংশন, মানচিত্র / সেট / অনুক্রম, প্রকার) থেকে আপনার চিন্তাভাবনা পরিবর্তন করতে হয়।

অতিরিক্ত পরামর্শ: লিস্পের কমনীয়তা এবং শক্তি আংশিকভাবে এর সংক্ষিপ্তবাদ এবং সম্পূর্ণ সঙ্গতিপূর্ণ বাক্য গঠন থেকে। এটি একটি ভাল সম্পাদক, উদাহরণস্বরূপ ক্লোজার-মোড এবং প্যারডিট সহ ইম্যাক্স সহ এটি উপলব্ধি করা অনেক সহজ। আপনি এর সাথে আরও পরিচিত হওয়ার সাথে সাথে বাক্য গঠনটি ম্লান হয়ে যায় এবং আপনি শব্দার্থবিজ্ঞান, উদ্দেশ্য এবং সংক্ষিপ্ত বিমূর্ততা "দেখতে" পাবেন। দ্বিতীয়ত, ক্লজিউরস্ক্রিপ্ট বা কমপোজারের উত্সটি পড়া শুরু করবেন না, এগুলি একবারে খুব বেশি; কিছু 4clojure.org সমস্যা চেষ্টা করুন, এবং সেখানে শীর্ষ কোডারগুলির সাথে সমাধানগুলি তুলনা করুন। আপনি যদি 4-6 টি অন্যান্য সমাধান দেখতে পান তবে অল্প সময়ে কেউ সত্যিই একটি মূর্খ, সাফল্যযুক্ত এফপি-স্টাইল সমাধান লিখেছেন যা আপনি একটি আনাড়ি, শব্দভাণ্ডার এবং অযথা জটিল জটিল অপরিহার্য-শৈলীর সমাধানের সাথে তুলনা করতে পারেন।


20

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

খারাপ দিকটি হ'ল যেহেতু প্রতিটি লিস্প প্রোগ্রামটি মূলত তার নিজস্ব ভাষা সংজ্ঞায়িত করে, তাই কী ঘটছে তা বোঝার জন্য আপনার সত্যিকারের বিষয়গুলিতে একটি দৃ gra় উপলব্ধি দরকার need

এখন, আপনার প্রশ্নের উত্তর দিতে ...

  1. ক্লোজওর একটি আধুনিক লিস্প উপভাষা যা জেভিএম / সিএলআরতে চলে runs এটি বিদ্যমান অবকাঠামোতে লিস্পের শক্তির সুবিধা গ্রহণ করা সহজ করে তোলে।

  2. আপনার সমস্যার ডোমেনের ব্যবহারের প্রশংসা করতে লিস্প তৈরি করতে কীভাবে ম্যাক্রো ব্যবহার করবেন তা বোঝা জরুরি। লিস্প রানটাইম বাস্তবায়নের পরে আমি সত্যিই এটি বুঝতে পেরেছিলাম, যখন আমি পেয়েছি যে মূল ভাষার বৈশিষ্ট্যগুলির অনেকগুলিই সহজেই লিস্পে প্রয়োগ করা যেতে পারে। এটি পেতে একটি ন্যায্য আকারের প্রকল্প লাগে।

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

সহজ বাক্য গঠন কম্পিউটারকে ব্যাখ্যা করার পক্ষে সহজ করে তোলে (যেমন সহজ শক্তিশালী ম্যাক্রোকে মঞ্জুরি দেয়) তবে জটিল জটিল প্রকাশগুলি দ্রুত পার্স করা মানুষের পক্ষে এটি খুব কঠিন করে তোলে।



4
আপনার উত্তরটি এটিকে শোনায় যে ম্যাক্রোগুলি লিসপ প্রোগ্রামিংয়ের কাছে যাওয়ার সাধারণ উপায়, যখন বাস্তবে বেশিরভাগ প্রোগ্রামিং সমস্যাগুলি সাধারণ, প্রথম শ্রেণির ফাংশনগুলির সাথে সমাধান করা যায়। ম্যাক্রোগুলি মূলত ভাষা প্রোগ্রামিংয়ের জন্য ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছে (অর্থাত্ ভাষাটি প্রসারিত করা)। আরও দেখুন bookshelf.jp/texi/onlisp/onlisp_9.html
রবার্ট হার্ভে

3
@ রবার্টহারভে আমি যুক্তি দিয়ে বলব যে আপনি যদি মার্কোসের সুযোগ নিচ্ছেন না, তবে অন্যান্য ভাষার আরও আধিক্য রয়েছে যেগুলি আমি আরও বেশি পঠনযোগ্য বাক্য গঠন সহ প্রথম শ্রেণির ফাংশনগুলির প্রস্তাব করি।
22:30 এ বাংলোস্টিংক

পছন্দ করেছেন আমি ধারণাটি পছন্দ করি।
ডিপিএম

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

10

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

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

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

আমার জন্য, আমি এখনও ভাষাটিকে তার সমস্ত সুবিধার জন্য পছন্দ করি (মূলত, জেভিএমে চালিত হওয়া এবং একত্রে সামঞ্জস্যকে সহজতর করার সময়, জাভা থেকে অনেক বেশি শক্তিশালী এবং সংক্ষিপ্ত নকশার ত্রুটিযুক্ত) তবে জুরি এখনও কিছু খুঁজে পাচ্ছে না কিনা তা সম্পর্কে উন্নত করা যেতে পারে।

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