কার্যকরী প্রোগ্রামিং ভাষা: অতীত, বর্তমান এবং ভবিষ্যত

লেখক: Laura McKinney
সৃষ্টির তারিখ: 4 এপ্রিল 2021
আপডেটের তারিখ: 14 মে 2024
Anonim
ফিলি জগ - জাভাতে কার্যকরী প্রোগ্রামিং: অতীত, বর্তমান এবং ভবিষ্যত
ভিডিও: ফিলি জগ - জাভাতে কার্যকরী প্রোগ্রামিং: অতীত, বর্তমান এবং ভবিষ্যত

কন্টেন্ট


ছাড়াইয়া লত্তয়া:

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

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

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

প্রোগ্রামিং ভাষার এই স্বতন্ত্র শ্রেণিটি আরও ভালভাবে বুঝতে, আমরা সংজ্ঞা, বৈশিষ্ট্য এবং এর সাথে যুক্ত ইতিহাসের দিকে নজর রাখব। (ইনফোগ্রাফিকটি দেখুন: প্রোগ্রামিং ভাষার ইতিহাস))

কেন এটি ফাংশনাল প্রোগ্রামিং বলা হয়?

খাঁটি ফাংশন তৈরির ফলে তৈরি সফ্টওয়্যার নির্মাণের পদ্ধতির থেকে এফপি এর নাম পেয়েছে। সমস্ত কার্যকরী প্রোগ্রামিং ভাষার ভিত্তি লাম্বদা ক্যালকুলাস (এছাড়াও λ-ক্যালকুলাস হিসাবে লেখা)। এটি "বিশ্বের ক্ষুদ্রতম সার্বজনীন প্রোগ্রামিং ভাষা" হিসাবে বর্ণনা করা হয়।


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

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

গাণিতিক কার্যাদি মধ্যে রুট

লাম্বদা ক্যালকুলাসে ফাংশনাল প্রোগ্রামিংয়ের মূল কারণ, এর ইতিহাস ১৯৩০-এর দশকের, যখন আলোনজো চার্চ এটি চালু করেছিল। অবশ্যই, এটি তখন কম্পিউটারগুলির জন্য ব্যবহৃত হত না।


1960

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

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

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

এমএল এর জন্য বিলটি ফিট করে এবং তারা 1978 সালেও দেখতে পেল যে এটি একটি সাধারণ প্রোগ্রামিং ভাষা হিসাবে কার্যকর হতে পারে। সংস্করণগুলিতে নিউ জার্সির স্ট্যান্ডার্ড এমএল এবং সিএএমএল অন্তর্ভুক্ত রয়েছে।

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

1990 উপস্থাপনা এবং এর বাইরে: হাস্কেল

হাস্কেল, যুক্তিবিদ হাস্কেল বি কারির নামে নামকরণ করা একটি কমিটির ফসল যা ১৯৮7 সালে ভাষা গঠনের কাজ শুরু করেছিল এবং ১৯৯০ সালে প্রথম সংস্করণ প্রকাশ করেছিল। সর্বশেষ মান হ্যাস্কেল ২০১০, এবং অন্য সংস্করণটি ২০২০ সালে প্রকাশিত হয়েছে ।

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

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

যদিও অলসতা সাধারণত খারাপ জিনিস হিসাবে বিবেচিত হয়, এটি প্রোগ্রামিংয়ের কোনও উদ্দেশ্য করে। অলস মূল্যায়ন কি হিসাবে ব্যাখ্যা করা হয়েছে? "কঠোর মূল্যায়ন" এর বিপরীতে অলস মূল্যায়নের পদ্ধতির মধ্যে কেবল যা প্রয়োজন তা মূল্যায়ন করা।

বর্তমান শীর্ষ কার্যকরী প্রোগ্রামিং ভাষা

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

"লিনকের মতো বিষয়, সি # তে ভাষা-সংহত ক্যোয়ারী স্টাফ, এটি হ্যাশেল আসলেই সরাসরি F এফ # ওয়ার্কফ্লো সরাসরি এই একাকী I / O গল্প থেকে আঁকা।"

Clojure

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

হিজি ক্লোজুর.আর.গ্রন্থে যেমন ব্যাখ্যা করেছেন, "জাভাতে কলগুলি প্রতিফলন এড়াতে পারে তা নিশ্চিত করার জন্য jচ্ছিক ধরণের ইঙ্গিত এবং টাইপ অনুক্রম সহ ক্লোজার জাভা ফ্রেমওয়ার্কগুলিতে সহজ অ্যাক্সেস সরবরাহ করে” "

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

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

বেদারুজাতীয় বৃক্ষবিশেষ

এলম একটি খাঁটি কার্যকরী ভাষার নাম যা প্রথম ইভান জাজাপ্লিকি ২০১২ সালে ডিজাইন করেছিলেন web এটি ওয়েব বিকাশকারীদের মধ্যে জনপ্রিয় যারা ব্যবহারকারী ইন্টারফেস তৈরির জন্য এটি পছন্দ করেন। এলম সংকলকটি এইচটিএমএল, সিএসএস এবং জাভাস্ক্রিপ্টকে লক্ষ্য করে। এটি জাভাস্ক্রিপ্ট লাইব্রেরিগুলির সাথে ঠিক তেমনভাবে কাজ করে যেমন ক্লোজার জাভা লাইব্রেরিগুলির সাথে কাজ করে।

এলমের সম্পর্কে আলাদা যা হ'ল এটি স্ট্যাটিক টাইপ চেকিং ব্যবহার করে যা রানটাইম ব্যতিক্রমগুলি নির্মূল করতে সহায়তা করে কারণ সংকলনের সময় ত্রুটিগুলি ধরা পড়ে। এলম সাইটটি গর্বিত হওয়ার সাথে সাথে, "NoRedInk প্রায় দু'বছর আগে এলমে স্যুইচ করেছে, এবং 250k + লাইন পরে, প্রযোজনায় একটি বিভ্রান্তিকর রানটাইম ব্যতিক্রম ঠিক করতে তাদের এখনও স্ক্যাম্বল করতে হয়নি।"

ব্যবহারকারীর শেষে দৃশ্যমান ত্রুটিগুলির অনুপস্থিতি কোনও ভাষার পক্ষে সুস্পষ্ট সুবিধা। এ কারণেই এটি নিজের কাছে: "একটি আনন্দদায়ক ভাষা" -র বর্ণনাটি প্রয়োগ করার ক্ষেত্রে ন্যায়সঙ্গত বোধ করে।

স্পর্শমণি

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

এলিক্সির প্রোগ্রামারদের জন্য সুবিধা হ'ল তারা কোনও রানটাইম ব্যয় না করেই কোনও এরিং ফাংশন শুরু করতে পারে।

এফ #

এফ # একটি ওপেন সোর্স, ক্রস প্ল্যাটফর্ম, প্রথম কার্যক্রমে প্রোগ্রামিং ভাষা। যে কেউ এফ # সফটওয়্যার ফাউন্ডেশনে যোগ দিতে পারেন। ফাউন্ডেশনের সাইটটি ভাষাটি এইভাবে যোগ করে:

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

এফ # অ্যাপ্লিকেশন অঞ্চলে বিস্তৃত ব্যবহৃত হয় এবং এটি একটি সক্রিয় উন্মুক্ত সম্প্রদায় এবং শিল্প-নেতৃস্থানীয় সংস্থাগুলি পেশাদার সরঞ্জাম সরবরাহ করে উভয় দ্বারা সমর্থিত।

ইদ্রিস

ইদ্রিস একটি সাধারণ উদ্দেশ্য বিশুদ্ধ কার্যকরী প্রোগ্রামিং ভাষা যা হাস্কেল এবং এমএল দ্বারা প্রভাবিত বৈশিষ্ট্যযুক্ত।

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

জাভাস্ক্রিপ্ট

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

Kotlin

নতুনতম ভাষার মধ্যে (কেবলমাত্র ফেব্রুয়ারী ২০১ 2016 এ প্রকাশিত হয়েছিল) মধ্যে কোটলিন তৈরি এবং পরীক্ষার জন্য পাঁচ বছর ছিলেন। আমেক্স, এনবিসি ডিজিটাল, এক্সপিডিয়া এবং গ্রেডলের মতো সংস্থাগুলি এটি ব্যবহার করে। এটি খাঁটি কার্যকরী ভাষা নয়।

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

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

এর বহুমুখিতা এটিকে "যে কোনও ধরণের উন্নয়নের জন্য, এটি সার্ভার-সাইড, ক্লায়েন্ট-সাইড ওয়েব এবং অ্যান্ড্রয়েড হোক" উপযুক্ত করে তোলে এবং এটি অ্যাপলের আইওএসের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য কাজ করছে।

scala

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

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

আমরা কী শিখেছি

টেলস্ট্রার বিগ ডেটা অ্যানালিটিক্স জিএম মার্ক মলোনির সমষ্টি যে আমরা এখন কার্যকরী ভাষাগুলি আলিঙ্গন করার এবং প্রোগ্রামাররা সেগুলি শেখার বিষয়ে কেন বিবেচনা করা উচিত:

একটি কল্পকাহিনীটি হ'ল ফাংশনাল প্রোগ্রামিং হার্ড বা খুব বেশি একাডেমিক। এটি শেখার জন্য আরও একটি দক্ষতা। এটি মাস্টার করতে সময় এবং অনুশীলন লাগে - 80s / 90 এর দশকের শেষ দিকে ডেভেলপাররা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং শিখতে পেরেছিল এমন যাত্রার চেয়ে আলাদা নয়। প্রযুক্তি বিবর্তিত অবিরত। আমি সফ্টওয়্যারকে ভালবাসি এটির একটি কারণ। কীভাবে শিখতে হবে তা শেখা যেমনটি আপনি জানেন তেমন গুরুত্বপূর্ণ।