প্রতিটি ধরণের প্রোগ্রামিং ভাষা শেখা


24

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

আমি একটি প্রথাগত ভাষা (পার্ল) শিখেছি করেছি, কিন্তু কি হয় অন্যান্য ধরনের?

তাদের মধ্যে পার্থক্য কী এবং এর কয়েকটি উদাহরণ কী?


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

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

3
পিটার নরভিগের পরামর্শ : কমপক্ষে অর্ধ ডজন প্রোগ্রামিং ভাষা শিখুন। শ্রেণীর বিমূর্ততা (যেমন জাভা বা সি ++) সমর্থন করে এমন একটি ভাষা অন্তর্ভুক্ত করুন (যেমন লিস্প বা এমএল) ফাংশনাল অ্যাবস্ট্রাকশন সমর্থন করে, সিন্টেক্সিক অ্যাবস্ট্রাকশন (লিস্পের মতো) সমর্থন করে এমন একটি ভাষা, যেমন প্রলোজ বা সি ++ টেম্পলেটগুলির সমর্থন করে, একটি যা কর্টিনগুলিকে (যেমন আইকন বা স্কিম) সমর্থন করে এবং সমান্তরালতা (সিসালের মতো) সমর্থন করে।
কিংবদন্তি

উত্তর:


34

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

  • প্রথাগত
  • ক্রিয়ামূলক
  • যৌক্তিক
  • অবজেক্ট ওরিয়েন্টেড
  • জাতিবাচক

প্রক্রিয়াজাতীয় প্রোগ্রামিং কেমন তা আপনি ইতিমধ্যে জেনে গেছেন বলে মনে হয়।

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

ইন যৌক্তিক প্রোগ্রামিং আপনি predicates যা যেমন সত্ত্বা, মধ্যে সম্পর্ক বর্ণনা সংজ্ঞায়িত president(Obama, USA)বা president(Medvedev, Russia)। এই পূর্বাভাসগুলি কেবল আক্ষরিক মান নয়, খুব জটিল হয়ে উঠতে পারে এবং ভেরিয়েবলগুলিকে জড়িত করতে পারে। একবার আপনি আপনার সমস্ত পূর্বাভাস নির্দিষ্ট করে দেওয়ার পরে, আপনি আপনার সিস্টেমের প্রশ্ন জিজ্ঞাসা করতে পারেন এবং যুক্তিযুক্তভাবে সামঞ্জস্যপূর্ণ উত্তর পেতে পারেন।

লজিকাল প্রোগ্রামিংয়ের বড় ধারণাটি কম্পিউটারকে কীভাবে কীভাবে গণনা করা যায় তা বলার পরিবর্তে জিনিসগুলি কী তা আপনি তা জানান । উদাহরণ: PROLOG।

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

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

void swap(int, int);
void swap(float, float);
....

আপনি লিখতে হবে

void swap(T, T);

একবার, এবং কম্পাইলারটি কোডটিতে প্রকৃতপক্ষে ব্যবহৃত হওয়ার পরে যা কিছু Tহতে পারে তার জন্য নির্দিষ্ট কোড তৈরি করুন swap()

জেনেরিক প্রোগ্রামিং সি ++, জাভা এবং সি # দ্বারা বিভিন্ন ডিগ্রীতে সমর্থিত।

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


2
এসকিউএল কোন বিভাগে পড়বে?
কर्क কুইকেনডাল

@ কির্ককুইএন্ডল এসকিউএল বিশেষজ্ঞ বা "সামান্য" ভাষা হবে be
কেভিন Lacquement

17
এসকিউএল একটি ঘোষিত ভাষা। আপনি কী চান তা বলুন, এটি কীভাবে পাবেন তা নির্ধারণ করে। (
প্রোলোগের

3
উত্তরটি আরও সম্পূর্ণরূপে তৈরি করার জন্য আমাদের কী প্রক্রিয়াগতের বিবরণ থাকতে পারে?
ডিফোরে

3
@ ডিমা নিস সারসংক্ষেপ। তবে, একটি অপেক্ষাকৃত ছোটখাটো নিতপিক: "জেনেরিক প্রোগ্রামিং" সি ++ তে টেম্পলেটগুলির ব্যবহার থেকে আসে নি এবং হাস্কেলের মতো কার্যকরী ভাষায় খুব ঘন ঘন ব্যবহৃত হয়।
আন্দ্রেস এফ।

11

প্রোগ্রামিং ভাষার বেশিরভাগ অর্থেগোনাল বৈশিষ্ট্য রয়েছে; তারা যে সমর্থন করে সেই দৃষ্টান্ত বা দৃষ্টান্তগুলির মধ্যে সর্বাধিক বিশিষ্ট একটি। Wikipedia নিবন্ধটি পারাদিগ্ম্স বিস্তারিত জুড়ে; সর্বাধিক গুরুত্বপূর্ণ দৃষ্টান্তগুলি সম্ভবত:

  • কার্যপ্রণালী / স্ট্রাকচার্ড
  • ক্রিয়ামূলক
  • অবজেক্ট ওরিয়েন্টেড
  • ইভেন্ট-চালিত এবং দিক-ওরিয়েন্টেড
  • জাতিবাচক
  • যুক্তিবিদ্যা

তবে ভাষা অন্যান্য উপায়েও পৃথক:

  • টাইপিং সিস্টেম (গতিশীল বনাম স্ট্যাটিক টাইপিং, এবং শক্তিশালী বনাম দুর্বল প্রকারের)
  • প্রক্রিয়া এবং রানটাইম পরিবেশ তৈরি করুন (ব্যাখ্যা করা, বাইটকোড-সংকলিত, সম্পূর্ণ সংকলিত)
  • মেমরি পরিচালনা (সি / সি ++ এর মতো ম্যানুয়াল, জাভার মতো বাধ্যতামূলক স্বয়ংক্রিয় আবর্জনা সংগ্রহ, ডি এর মতো optionচ্ছিক জিসি, ...)
  • মূল্যায়ন শৃঙ্খলা (আগ্রহী বনাম অলস; বেশিরভাগ ভাষা ডিফল্টরূপে আগ্রহী, তবে অনেকগুলি অলস গঠন সরবরাহ করে)
  • স্কোপিংয়ের বিধিগুলি (পিএইচপি, জাভাস্ক্রিপ্ট এবং সি, তিনটি ভাষায় সিন্ট্যাক্সের ক্ষেত্রে অন্যভাবে বেশ অনুরূপভাবে কীভাবে স্কোপ কাজ করে তা তুলনা করুন)

2

বেশ কয়েকটি বিভিন্ন প্রোগ্রামিং প্যারাডিম রয়েছে যা বর্তমানে প্রচলিত রয়েছে:

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

এগুলি কি কেবল অন্য ধরণের?
ডায়নামিক

@ পার্ল.জে - না, তবে এইগুলি হ'ল প্রধান ব্যক্তি যা এই দিনগুলিতে বিস্তৃত ছড়িয়ে পড়ে। - উইকিপিডিয়া দেখুন প্রোগ্রামিং দৃষ্টান্ত
ওডে

@ পারল.জে স্ট্যাক-ভিত্তিক রয়েছে: যেমন ফরথ এবং পোস্টস্ক্রিপ্ট। যুক্তি: যেমন প্রোলগ।
জেটি

2
এবং জিরোথ প্রকারটি সি;)
ইয়াতী সাগাদ

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

0

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

আপনি যদি কলেজে যান তবে আপনার প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি কোর্স নেওয়া উচিত কারণ এটি বিভিন্ন ধরণের প্রোগ্রামিং ভাষা এবং সেগুলির জন্য সর্বোত্তমভাবে ব্যবহৃত হয় intr


0

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

  • স্প্রেডশিট ল্যাঙ্গুয়েজস (এক্সেল, গুগল ফর্ম): ট্যাবুলার ডেটা হ্যান্ডেল করার জন্য ডিজাইন করা।
  • অ্যারে ল্যাঙ্গুয়েজস (এপিএল, জে): বহুমাত্রিক অ্যারেগুলি দ্রুত প্রক্রিয়া করার জন্য ডিজাইন করা। জেতে (+/ % #)&.:*:একটি অ্যারের আরএমএস গণনা করে। সংক্ষিপ্ত হওয়ার জন্য বিখ্যাত, অপঠনযোগ্য হওয়ার জন্য কুখ্যাত।
  • অটোমেশন ল্যাঙ্গুয়েজস (অটোহটকি, বাশ): ফর্ম পূরণ, ফাইল আপলোড করা ইত্যাদি সাধারণ কাজগুলি স্ট্রিমলাইনের জন্য তৈরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.