রুবি কি কার্যকরী ভাষা?


88

উইকিপিডিয়া বলেছে যে রুবি একটি কার্যকরী ভাষা, তবে আমি নিশ্চিত নই। কেন অথবা কেন নয়?


4
সম্ভবত আপনার প্রশ্নটি খুব সংক্ষিপ্ত হওয়ার কারণে, যদিও ব্যক্তিগতভাবে আমার এটির কোনও সমস্যা নেই!
ljs

ইতিমধ্যে ভাল উত্তর রয়েছে, সুতরাং কেবলমাত্র তাদের পরিপূরক হিসাবে, এফপি এবং রুবি নিয়ে আলোচনা করে এমন একক বিষয়বস্তু: code.google.com/p/tokland/wiki/RubyFunctionalProgramming slideshare.net/tokland/functional-programming-with-ruby-9975242
টোকল্যান্ড

4
যদি কেউ এই বিষয়ে আগ্রহী হন তবে দয়া করে এটি দেখুন এবং আপনি শিখবেন যে রুবি কীভাবে কার্যকরী উপায়ে ব্যবহার করা যেতে পারে, ফাংশনাল প্রোগ্রামিংয়ের মূলগুলি কী, রুবি কেন কার্যকরী প্রোগ্রামে সক্ষম হলেও এমনটি কার্যকর ভাষা নয়: ইউটিউব .কম / ঘড়িতে? v = 5ZjwEPupybw
ম্যাডিন 2 কোড 20

উত্তর:


29

আমি অবশ্যই স্পষ্টভাবে মনে করি আপনি রুবিতে কার্যকরী শৈলী ব্যবহার করতে পারেন।

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

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

সুতরাং, হ্যাঁ, এটি কার্যকরী শৈলীর সমর্থন করে তবে এটি আপনাকে অ-কার্যকরী শৈলীতে প্রোগ্রাম করতে দেয়।


4
এই মানদণ্ডটি ব্যবহার করে, আপনি কি বলবেন যে স্মার্টটাকটি কার্যকরী কারণ এতে ব্লক রয়েছে?
অস্কাররাজ

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

4
কেবলমাত্র এটিই বলতে চান যে @ ইপিটার জিজ্ঞাসা করেছেন Is ruby a functional language?এবং একটি সরল উত্তরে একটি সহজ নম্বর। রুবি কিছু কার্যকরী বৈশিষ্ট্য সহ একটি অবজেক্ট ওরিয়েন্টেড ভাষা।
ইলিয়াস পেরেজ

58

কোনও ভাষা কার্যকরী ভাষা হয় বা না তা গুরুত্বহীন। ফাংশনাল প্রোগ্রামিং হ'ল একটি থিসিস, যা ফিলিপ ওয়েডলার (ফাংশনাল প্রোগ্রামিং এর সারাংশ) এবং জন হিউজেস (কেন ফাংশনাল প্রোগ্রামিং ম্যাটার্স) দ্বারা সর্বোত্তমভাবে ব্যাখ্যা করা হয়েছে।

একটি অর্থবহ প্রশ্নটি হ'ল, 'ফাংশনাল প্রোগ্রামিংয়ের থিসিসটি অর্জনে রুবি কীভাবে আধ্যাত্মিক?' উত্তরটি 'খুব খারাপভাবে'।

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


4
আপনি যে স্লাইডগুলি দিয়েছিলেন তা উল্লেখ করেননি যে কেন রুবি "এফপির থিসিস অর্জনের পক্ষে খুব খারাপভাবেই সক্ষম" " জাভা (ঠিক আছে, বেনামে কী সহজ ফাংশন?) এর চেয়ে সি # আরও কার্যকর? এটি কি কারণ আপনি রুবিতে বিশ্বব্যাপী পরিবর্তনশীল থাকতে পারেন?
kizzx2

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

4
শ্রেণিবদ্ধ ভাষাগুলিতে অস্পষ্টতাকে কার্যক্ষম হিসাবে চিহ্নিত করার জন্য +1। নরক, আমি কার্যকরী সি লিখেছি!
এলি

4
কেন সি # রুবির তুলনায় আরও কার্যকর?
ড্যান_ল

4
কার্যকরভাবে একটি লিঙ্ক-কেবল উত্তর এটি বাহ্যিক লিঙ্কের ব্যাখ্যা (সম্পূর্ণ ব্যাখ্যা, আসলে) এর সমালোচনামূলক অংশকে আউটসোর্স করে। এখন লিঙ্কটি মারা গেছে, উত্তরটি অকেজো হয়ে গেছে।
ivan_pozdeev

34

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

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

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


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

6
এইচএইচসি, সংজ্ঞা অনুসারে, একটি ভেরিয়েবল এমন মান যা পরিবর্তন করতে পারে । আপনি যা বলছেন তা হ'ল মান।
স্কেলা নিউব

প্রকৃতপক্ষে হাস্কেলের "পরিবর্তনযোগ্য পরিবর্তনগুলি" পরামিতি (সংজ্ঞা) ছাড়াই কেবল ধ্রুবক ফাংশন।
raindev

16

আমি সমর্থন করি যে, বা একটি কার্যকরী শৈলীতে একটি ভাষায় প্রোগ্রাম করার দক্ষতা একটি কার্যকরী ভাষা তৈরি করে না।

আমি আমার কলেজগুলিকে আঘাত করতে চাই এবং এমনকি কয়েকমাস সপ্তাহে নিজেকে জাভা কোড লিখতে পারি ।

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

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

রুবি এর মূল বিষয় অবলম্বনযুক্ত, তাই এটি কার্যকরী শৈলীর পক্ষে যথাযথ সমর্থন থাকলেও এটি নিজেই কার্যকরী ভাষা নয়।

এটি যাইহোক আমার বৈজ্ঞানিক মতামত।

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

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

এখন, এটি আমার বৈজ্ঞানিক মতামত।


আমি মনে করি আপনি রুবিকে জাভা অপেক্ষা ফাংশনাল বলার জন্য আরও ভাল কেস তৈরি করতে পারেন .... না, রুবি কঠোরভাবে কার্যকরী নয় তবে এতে কার্যকরী শৈলী ব্যবহার করা বেশ সহজ ... এবং একটি অ-কার্যকরী শৈলীর সহকর্মী পারেন সহজেই এটিকে অ-কার্যকরীতে ফিরে যান
মাইক স্টোন

4
হ্যাঁ, মাইক, যদি আপনি একটি কার্যকরী শৈলীতে কোড করতে চান তবে জাবিতে রুবি একটি বিশাল উন্নতি। আমি জাভাটি কেবলমাত্র পয়েন্ট হোম বাড়িয়ে বাড়াতে এবং হাতুড়ি করতে ব্যবহার করছিলাম।
ক্রিস ভেস্ট

সুতরাং যেহেতু ডি এর খাঁটি ফাংশন রয়েছে তাই আপনি ডি কে একটি কার্যকরী ভাষা বলবেন? digitalmars.com/d/2.0/function.html#pure-funifications
পিটার বার্নস

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

13

"সত্য" কার্যকরী হওয়ার জন্য রুবিকে নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করতে হবে।

অপরিবর্তনীয় মান: একবার "পরিবর্তনশীল" সেট হয়ে গেলে, এটি পরিবর্তন করা যায় না। রুবিতে, এর অর্থ হল আপনাকে কার্যকরভাবে ধ্রুবকের মতো ভেরিয়েবলগুলি চিকিত্সা করতে হবে। ভাষাটি সম্পূর্ণরূপে সমর্থিত নয়, আপনাকে প্রতিটি পরিবর্তনশীল ম্যানুয়ালি স্থির করতে হবে।

কোনও পার্শ্ব-প্রতিক্রিয়া নেই: যখন কোনও প্রদত্ত মান পাস করা হয় তবে একটি ক্রিয়াকলাপে সর্বদা একই ফলাফলটি ফিরে আসতে হবে। এগুলি অপরিবর্তনীয় মূল্যবোধগুলির সাথে একসাথে চলে যায়; একটি ফাংশন কখনই একটি মান নিতে পারে এবং এটি পরিবর্তন করতে পারে না, কারণ এটি এমন কোনও পার্শ্ব-প্রতিক্রিয়া সৃষ্টি করবে যা ফলাফল ফেরত দেওয়ার ক্ষেত্রে স্পর্শকাতর।

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

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

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

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

প্রস্তাবনা (কেবলমাত্র একটি ধারণা)mode ফাংশনাল দৃষ্টান্ত সহ ফাইলগুলি ঘোষণার জন্য একটি নির্দেশনা পাওয়ার জন্য আমি কোনও ধরণের সংজ্ঞা দিলে দুর্দান্ত হতে পারি , উদাহরণস্বরূপ

মোড 'ফাংশনাল'


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

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

9

রুবি একটি বহু-দৃষ্টান্তমূলক ভাষা যা প্রোগ্রামিংয়ের কার্যকরী শৈলীতে সমর্থন করে।


4

রুবি হ'ল একটি অবজেক্ট-ভিত্তিক ভাষা, যা অন্যান্য দৃষ্টান্তগুলিকে সমর্থন করতে পারে (কার্যকরী, অপরিহার্য, ইত্যাদি)। তবে, যেহেতু রুবির প্রতিটি জিনিসই একটি বস্তু, এটি মূলত একটি ওও ভাষা।

উদাহরণ:

"হ্যালো"। রিভার্স () = "ওলেহ", প্রতিটি স্ট্রিং একটি স্ট্রিং অবজেক্ট উদাহরণ এবং আরও অনেক কিছু forth

এখানে বা এখানে পড়ুন


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

4

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

উদাহরণস্বরূপ, বেশিরভাগ লোকজন স্কিমকে একটি কার্যকরী ভাষা বলবে। তবে কমন লিস্পের কী হবে? একাধিক- / একক-নামস্থান সমস্যা এবং গ্যারান্টিযুক্ত টেল-কল নির্মূলকরণ (যা কিছু সিএল বাস্তবায়ন যেমন সংকলক সেটিংসের উপর নির্ভর করে) সমর্থন করে, প্রচলিত ভাষার তুলনায় স্কিমকে ভাষা হিসাবে বেশি উপযুক্ত করে তোলে না isn't লিস্প, এবং এখনও, বেশিরভাগ লিস্টাররা সিএলকে একটি কার্যকরী ভাষা বলবে না। কেন? কারণ এর চারপাশের সংস্কৃতিটি প্রচুর পরিমাণে সিএল এর অপরিহার্য বৈশিষ্ট্যগুলির উপর নির্ভর করে (যেমন এলওওপি ম্যাক্রোর মতো, উদাহরণস্বরূপ, বেশিরভাগ স্কিমার সম্ভবত এটি ভ্রমন করবে)।

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


কোন উপায়ে হাস্কেল খাঁটি কার্যকরী ভাষা নয়? বা মিরান্ডা (একটি কম পরিচিত ফাংশনাল প্রোগ্রামিং ভাষা) সম্পর্কে কীভাবে? courses.cs.washington.edu/courses/cse505/99au/functional/... "Haskell, একটি প্রমিত বিশুদ্ধ কার্মিক ভাষা, হয়"
barlop

2

আমার মনে হয় রুবি আসলে কোনও বহু-দৃষ্টান্তের ভাষা নয়। বহু-দৃষ্টান্ত লোকেরা তাদের পছন্দের ভাষাটিকে এমন কিছু হিসাবে লেবেল করতে চায় যা বিভিন্ন ক্ষেত্রে কার্যকর।

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


4
ভাষার ধরণটি সমর্থন করে প্রোগ্রামিং শৈলীর সাহায্যে সংজ্ঞায়িত করা হয়; যে, ঘুরে, এটি বৈশিষ্ট্য দ্বারা সিদ্ধান্ত নেওয়া হয়। প্রথম শ্রেণির এবং বেনামে ফাংশন = ন্যূনতম কার্যকরী প্রোগ্রামিং। রুবি ওও প্রোগ্রামিং সমর্থন করে তবে এর প্রয়োজন হয় না: আপনার কখনই কোনও ক্লাস সংজ্ঞায়িত করার দরকার নেই। অতএব, বহু-দৃষ্টান্ত।
স্কাইম্যাট

2

ফাংশনাল প্রোগ্রামিংয়ে পুনরাবৃত্তি সাধারণ common প্রায় কোনও ভাষা পুনরাবৃত্তি সমর্থন করে, তবে টেল কল অপ্টিমাইজেশন (টিসিও) না থাকলে পুনরাবৃত্তির অ্যালগোরিদম প্রায়শই অকার্যকর হয় ।

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

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


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

2

কড়া কথায় বলতে গেলে, কোনও ভাষা "ফাংশনাল" হিসাবে বর্ণনা করার কোনও মানে হয় না; বেশিরভাগ ভাষা কার্যকরী প্রোগ্রামিংয়ে সক্ষম। এমনকি সি ++ হয়।

ক্রিয়ামূলক শৈলী হ'ল কমবেশি আবশ্যকীয় ভাষা বৈশিষ্ট্যের একটি উপসেট, সিনট্যাকটিক চিনির সাথে সমর্থিত এবং কিছু সংকলক অপটিমাইজেশন যেমন অপরিবর্তনীয়তা এবং লেজ-পুনরাবৃত্তি সমতলকরণ,

পরেরটি যুক্তিযুক্তভাবে একটি স্বল্প বাস্তবায়ন-নির্দিষ্ট প্রযুক্তি এবং এটি প্রকৃত ভাষার সাথে কোনও সম্পর্ক রাখে না। X64 সি # 4.0 সংকলক পুচ্ছ-পুনরাবৃত্তি অপ্টিমাইজেশন করে, যখন x86 কোনও বোকা কারণেই না করে।

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

এটি জিজ্ঞাসা করা কিছুটা অর্থবহ হতে পারে, "ভাষা __ কী আবশ্যক প্রোগ্রামিং সমর্থন করে?", এবং উত্তরটি উদাহরণস্বরূপ লিস্পের সাথে "না" "


1

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

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