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


13

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

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


2
এই প্রশ্নের উত্তর আরও ভালভাবে দেওয়া হবে cs.stackexchange.com এ
davidk01

@ChrisF। কম্পিউটার সায়েন্স সাইটগুলির একটিতে এই প্রশ্নটি আরও ভাল ফিট fit যদি তা না হয় তবে আমি এটিকে সংকীর্ণ করার চেষ্টা করেছি এবং ভাবছি যে এটি বর্তমান রূপে আবার খোলা যেতে পারে।
টম আউ

ম্যাথামেটিকায় ল্যাম্বডা ক্যালকুলাস বেকড রয়েছে খেয়াল করে কেউ তা উল্লেখ করেনি।
উইলিয়াম

উত্তর:


26

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

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

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

এর বাইরে লাম্বদা ক্যালকুলাস এবং অন্যান্য সম্পর্কিত ক্যালকুলি প্রোগ্রামিং ভাষার তত্ত্ব এবং নির্দিষ্ট সংকলক নির্মাণ কৌশলগুলিতে অপরিহার্য সরঞ্জাম।

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


আমি আগে যেটি নির্বাচন করেছিলাম তার চেয়ে এটি উত্তম উত্তর। আপনার উত্তর সত্যিই বাড়িতে হিট। আমি ঠিক এটিই খুঁজছিলাম!
রোনাল্ডমুনোদাওফা

"... এলসি ফাংশন ব্যতীত সর্বদা ঠিক একটি যুক্তি থাকে": এই বৈশিষ্ট্যটিকে কারি করা বলা হয় বা এটি অন্তত এর সাথে সম্পর্কিত?
জর্জিও

@ জর্জিও কারিঙ আলাদা, তবে সম্পর্কিত। এলসির একাধিক যুক্তিযুক্ত ফাংশন নেই, তবে সেগুলি কেবল নেস্টেড ফাংশন হিসাবে এনকোড করা যেতে পারে যা প্রতিটি যুক্তি গ্রহণ করে। এমএল স্বরলিপি ব্যবহার করে উদাহরণ: x = fn (a, b, c) => a + b + c(প্রকার int * int * int -> int, প্রার্থনা fn (1, 2, 3)) এমএল তে x = fn a => fn b => fn c => a + b + cটাইপ int -> int -> int -> int, অনুরোধ ((x 1) 2) 3- প্যারেন্স optionচ্ছিক ) এ রূপান্তরিত হতে পারে । এখন সব তিনটি আর্গুমেন্ট সরবরাহ পরিবর্তে, আমরা মাত্র দুটি প্রদান করতে পারেন: plus3 = x 1 2কোন ধরনের রয়েছে int -> int। এটি আংশিক প্রয়োগ / কার্য়িং ing
আমন

আমি ভেবেছিলাম কারিউরিংয়ের অর্থ সমস্ত ফাংশন কেবল একটি যুক্তি (এলসি হিসাবে) নেয় take
জর্জিও

8

ল্যাম্বদা ক্যালকুলাসের ডিফারেনশিয়াল / অবিচ্ছেদ্য ক্যালকুলাসের সাথে কোনও সম্পর্ক নেই। শব্দের সর্বাধিক জেনারেল অর্থে ক্যালকুলাস মানে হল গণনার একটি ব্যবস্থা।

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

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


1
আপনি নির্দিষ্ট ভাষাগুলির উল্লেখ করতে চাইতে পারেন যা ল্যাম্বডা ক্যালকুলাসের খুব কাছে, যেমন লিস্প।
জর্জিও

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