কেন এত প্রোগ্রামিং ভাষা আছে?


130

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

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

কিছু সম্পর্কিত পড়া:


2
ওও এবং অ-ওওয়ের মধ্যেও পার্থক্য রয়েছে। এছাড়াও, কিছু ভাষা সুন্দর প্যাকেজ সহ আসে: আর, ম্যাপেল, মতলব, ম্যাথমেটিকা ​​যা প্রায়শই অন্যান্য ভাষার অভাব থাকে from
আর্টেম কাজনাটচিভ


4
ইতিমধ্যে উপর প্রোগ্রামাররা জিজ্ঞাসা programmers.stackexchange.com/q/7551/45322
alain.janinm

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

4
এত গাড়ি কেন? কেন এত বিমান আছে? এবং নৌকা কি! আমি সত্যিই এটা বোঝাচ্ছি! আপনি সমুদ্রের দিকে নেমে এসেছেন, যেমন, সমস্ত ধরণের ডাং জিনিস রয়েছে! কি বিন্দু ঐ সমস্ত differents জিনিস ধরণের?!?!? এটি অদক্ষ! এটা অপব্যয় !! এবং এই সমস্ত বিভিন্ন পছন্দ এর freakin ' পয়েন্ট কি ?!?!?! গীজ - বুদ্ধিমান মানুষ! ইউগো, একটি এফ -150, এবং একটি সমুদ্রের রেখা ছাড়া আর কারও পক্ষে প্রয়োজনের দরকার নেই! ওহ, হ্যাঁ, প্লেনগুলি - এমডি -80 ঠিক প্রায় সমস্ত কিছুর জন্য ভাল কাজ করবে। সেখানে। এখন যে যে সব বসতি স্থাপন ... :-)
বব জার্ভিস

উত্তর:


116

প্রোগ্রামিং ভাষা বিকশিত হয় এবং সময়ের সাথে উন্নতি হয় (নতুনত্ব)।

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

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

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

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

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

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

প্রোগ্রামিং ভাষার নকশায় বিবর্তন ছাড়াই আমরা সকলেই সমাবেশের ভাষা বা সি ++ ব্যবহার করতাম।

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


1
সম্পুর্ন একমত. আমি আগ্রহী যেখানে বহু-দৃষ্টান্তের ভাষাগুলি (যেমন স্কেলা) কয়েক বছরের মধ্যে থাকবে। যদি তারা সহজ ডিএসএল সংহতকরণের অনুমতি দেয় তবে আমরা আসলে ভাষার সংখ্যায় ধীরে ধীরে হ্রাস পেতে পারি।
রাফেল

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

সমাবেশ এবং সি ++ একই বাক্সে রাখলে আমার হৃদয় ব্যাথা পায়। সি ++ অনেক বিকশিত হয়েছে !! বিশেষত সি ++ 11 এবং এগিয়ে থেকে।
পেরিগ্রেং-এলকে

66

tldr: সিলভার বুলেট ভাষা নেই।

আমি আশা করি তারা আমার বিরুদ্ধে মামলা করবে না, তবে স্ট্যানফোর্ডের একটি উপস্থাপনা থেকে এখানে একটি ছবি দেওয়া হয়েছে।

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন কোন ভাষা বাছাই করার সিদ্ধান্ত নেন, আপনি এই 3 টি বৈশিষ্ট্যের মধ্যে কেবল 2 টি বেছে নিতে পারেন ।

এবং সে কারণেই লোকেরা দুঃখ পেয়েছে এবং একটি সুপারলঙ্গাজির আবিষ্কার করতে চায় যা তাদের সমস্ত 3 টি জুড়ে।

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

এই জাতীয় কারণগুলির সংমিশ্রণে একটি নতুন ভাষা আসে।

( এবং আমি শুনেছি যে প্রতিটি ভাল প্রোগ্রামারকে তাদের নিজস্ব নতুন ভাষা তৈরি করতে হবে;) )


11
সময়ের সাথে সাথে ত্রিভুজটি সঙ্কুচিত হচ্ছে, এমন অর্থে যে কোণগুলি একত্রে কাছাকাছি চলেছে ..... আমি আশা করি / স্বপ্ন দেখছি।
ডেভ ক্লার্ক

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

এটি একটি আকর্ষণীয় বিবৃতি এবং ধরণের আমাকে সিএপি উপপাদ্যের কথা মনে করিয়ে দেয়। এটি কি কেবল একটি অনানুষ্ঠানিক যুক্তি, বা ত্রিভুজটি প্রমাণিত হতে পারে?
এভানু

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

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

25

পৃথিবীতে এমন বিভিন্ন জিনিস রয়েছে যাগুলির বিভিন্ন বৈচিত্র রয়েছে: ওয়ার্ড প্রসেসর, গাড়ি, বাড়ির নকশা, পানীয়, ক্যান্ডি, কলম, খেজুর ইত্যাদি we কেন আমাদের এত কিছু থাকার কারণে কয়েকটি মূলনীতিতে সিদ্ধ করা যায়:

  • কেউ ভাবেন যে তারা বিদ্যমান পণ্যগুলিতে উন্নতি করতে পারে
  • স্থানীয় বিবেচনার দ্বারা একটি আলাদা নকশা আবশ্যক (মনে করুন: স্টিল্টের উপরে বনাম কংক্রিটের স্ল্যাবগুলিতে বাড়িগুলি)
  • একটি নতুন বিভাগের পণ্য এমন একটি প্রয়োজনীয়তা পূরণ করে যেখানে আগে কোনওটির অস্তিত্ব ছিল না

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

  • কার্টরিজ ঝর্ণা কলম ডুবানো ফোয়ারা কলমের একটি উন্নতি, যা নিজেরাই পালকের কুইলে উন্নতি।
  • নাসার একটি কলমের দরকার ছিল যা মহাকর্ষের অভাবে লিখতে পারে, তাই চাপযুক্ত রোলারবল কলমটি আবিষ্কার হয়েছিল।
  • খুব প্রথম কলমটিই সম্ভবত ভাল বা ডায়ার বা রক্তে নিমজ্জিত স্টিক হতে পারে; এর আগে লোকেরা পাথরগুলি একসাথে স্ক্র্যাপ করছিল বা পশমের সাথে দেয়ালে পিগমেন্টগুলি গন্ধ করছিল। (শুধু অনুমান।)

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

তবে কলম সম্পর্কে যথেষ্ট।

আমাদের বর্তমান প্রোগ্রামিং ভাষার অগণিত ভাষা প্রথমটিতে ফিরে পাওয়া যায়: ১৯৪০ এর দশকে প্রাথমিক কম্পিউটারগুলির জন্য সংখ্যাযুক্ত মেশিন কোডগুলি। আদিম, ব্যবহার করা শক্ত এবং কম্পিউটারে প্রবেশের জন্য কঠোর, কিন্তু তারা কাজটি করেছে। প্রোগ্রামাররা মেশিন কোডগুলিতে স্মরণীয় শব্দ (যেমন ADD, CALL, LOAD) অর্পণ করে, "সমাবেশ ভাষা" নামক ভাষার শ্রেণীর জন্ম দিয়েছিল তার খুব বেশি দিন হয়নি।

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

(সম্ভবত এখন আপনি দেখতে পাচ্ছেন এটি কোথায় চলছে ...)

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

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

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

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


লোকেরা যে কারণেই হোক তার চেয়েও কেন আমাদের একাধিক ভাষা থাকতে হবে তার জন্য এখানে কোন বাধ্যতামূলক কারণ আমি দেখিনি।
রাফেল

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

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

20

কার্যকরী প্রোগ্রামিং ভাষা সাধারণত গণনার বিভিন্ন (তবে ক্ষমতার সমতুল্য) মডেল: ল্যাম্বডা-ক্যালকুলাসের ভিত্তিতে থাকে । কিছু টি টাইপযুক্ত (পাইথনের মতো টাইপিংয়ের ভাষা রয়েছে) যেমন এলআইএসপি, স্কিম ( কম্পিউটার প্রোগ্রামগুলির বই / কোর্সের ব্যাপকভাবে স্বীকৃত কাঠামো এবং ব্যাখ্যায় ব্যবহৃত হয় ) এবং হাস্কেল, এমএল, এফ # এর মতো স্ট্যাটিক্যালি টাইপ করা ভাষা রয়েছে।

এস আই সি পি হ'ল যা আমাকে কার্যকরী প্রোগ্রামিংয়ে রূপান্তরিত করে, তবে অন্যান্য লোকেরা এই কাগজটি জন হিউজেস এবং তাঁর সাথে এই সাক্ষাত্কারের সুপারিশ করেন।

মাইক্রোসফ্ট দ্বারা কার্যকরী প্রোগ্রামিংয়ে এখন চাপ দেওয়া হচ্ছে, উদাহরণস্বরূপ, যারা ভিএস 2010 এবং 11-এ F # (.NET এর জন্য তাদের কার্যকরী ভাষা) অন্তর্ভুক্ত করেছেন; তারা এমএসআর, আইআইআরসি-তে কিছু হাস্কেল বিকাশকারীকেও নিয়োগ দেয়।

দ্রষ্টব্য, এখানে কিছু অ- ল্যাম্বদা -ক্যালকুলাস ক্রিয়ামূলক প্রোগ্রামিং ভাষা রয়েছে যেমন রিফাল , যা প্যাটার্ন মিল এবং পুনরায় লেখার উপর ভিত্তি করে।

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


1
ভাষার আর একটি আকর্ষণীয় শ্রেণি হ'ল প্রোলোগের মতো লজিক প্রোগ্রামিং ভাষা। আমার কেবল ডেটালগের সাথে খুব সীমিত অভিজ্ঞতা ছিল তাই সম্ভবত অন্য কেউ সেগুলি সম্পর্কে একটি উত্তর লিখতে পারে?
ড্যানিল

2
আমি একমত যে আমাদের প্রতিটি প্রোগ্রামিং দৃষ্টান্তের জন্য একটি প্রোগ্রামিং ভাষা প্রয়োজন: আবশ্যক, ওও, ঘোষক, কার্যকরী ইত্যাদি But
দাই

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

তবে যদি সি # এবং জাভা উভয় ভার্চুয়াল মেশিন ধারণাটি ব্যবহার করে তবে আমরা কেন উভয় ভাষার জন্য অভিন্ন সিনট্যাক্স ব্যবহার করব না? আমি মনে করি প্রতিটি ডিজাইনারের নিজের / তার ভাষাটি কেমন হওয়া উচিত তার দৃ strong় ধারণা রয়েছে এবং তার নিজস্ব মান তৈরি করার প্রবণতা রয়েছে।
দাই

@ ডাই, সর্বোপরি সি # এবং জাভার মধ্যে অনেক ছোটখাটো পার্থক্য রয়েছে। এছাড়াও, আমি মনে করি উইন্ডোজের জাভা ভিএম বা এই জাতীয় কিছু নিয়ে কোনও আইনি বিবাদ ছিল।
ড্যানিল

19

বিশেষত, কম্পিউটার প্রোগ্রামার হিসাবে আমার কোনও কার্যকরী ভাষা জানা উচিতের কোনও কারণ আছে?

হ্যাঁ. কারণ হ্যাশেল আমার মতামত বদলেছে। এটি আপনার চিন্তাভাবনা বদলে দিতে পারে।

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

পড়ুন:

  1. ভাষা এবং চিন্তার উইকি

  2. কেনেথ ই Iversion, টুরিং অ্যাওয়ার্ড বক্তৃতা দ্বারা চিন্তার একটি সরঞ্জাম হিসাবে স্বরলিপি

তবে কেন এতগুলি বিভিন্ন প্রোগ্রামিং ভাষা রয়েছে?

স্বরলিপি চিন্তার হাতিয়ার। স্বাচ্ছন্দ্যে বিভিন্ন চিন্তাভাবনা মোকাবেলায় আমাদের বিভিন্ন টেইলার বানানো স্বরলিপি প্রয়োজন। সুতরাং আমরা নতুন ভাষা তৈরি।

এছাড়াও, পড়ুন । ;-)


5
পুনরাবৃত্তি divineশী!
প্রতীক দেওঘরে

4
পুনরুক্তি করা কি মানব?
সুরেশ

1
নিশ্চিত না যে এটি হাস্কেলের পক্ষে ভাল বিজ্ঞাপন ছিল কিনা। ;)
ব্যারি ব্রাউন

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

"আমি অর্ধ দিনের মধ্যে সোনার আগে যা কিছু এসেছিল তা শেষ করে দিয়েছি।" সত্যি? আপনি আধঘন্টার মধ্যে টাইপচ্লাস, ফান্টেক্টর, এডিটি, প্রকার ইত্যাদি শিখলেন? সেটা অসম্ভব. LYAH 14. বাইরে অধ্যায় 12 monads হয়েছে RWH অধ্যায় 6 পর্যন্ত কোন monads আছে, এবং তারা খুব ধীরে ধীরে চালু হয় - সম্পূর্ণ সংজ্ঞা অধ্যায় 14. হয়
sdcvvc

13

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

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

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


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

12

যেহেতু অন্যরা ইতিমধ্যে এই প্রশ্নের জন্য ভাল উত্তর দিয়েছে, আমি কেবল অ্যালান পার্লিসকে উদ্ধৃত করব।

টুরিং টার পিট থেকে সাবধান থাকুন, যার মধ্যে সবকিছু সম্ভব তবে আগ্রহের কিছুই সহজ নয়।

এছাড়াও, http://weblog.raganwald.com/2004/10/beware-of-turing-tar-pit.html , ভাল পঠিত।


11

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

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

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

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

আমাকে একটি ব্যক্তিগত উদাহরণ বর্ণনা করুন। প্রায় 10 বছর আগে আমি ফিনিশ সংস্থার জন্য কিছু সি ++ কোড লিখছিলাম। আপনি জানেন, ফিনল্যান্ডে তাদের কাছে এমন বিশাল ট্রাক রয়েছে যেগুলি ভাল, দীর্ঘ দূরত্বে ভ্রমণ করে এবং এক জায়গা থেকে অন্য জায়গায় প্রচুর পরিমাণে জিনিস সরবরাহ করে। আমি নিশ্চিত, আমেরিকাতেও এ জাতীয় ট্রাক রয়েছে। সুতরাং একটি সাধারণ সমস্যা হ'ল এটি নিশ্চিত করা যে 24 বা ততোধিক সমস্ত টায়ার ঠিক আছে। অবশ্যই, সময়-পরীক্ষিত প্রযুক্তি রয়েছে: চাপ এবং তাপমাত্রা পর্যবেক্ষণ করা যেতে পারে, এবং কঠোর পরিবর্তনগুলি বোঝায় যে কিছু ভুল হয়েছে went অবশ্যই, এই প্রযুক্তিটির সমস্ত মালিকানাধীন, পেটেন্টযুক্ত, সমস্ত নিদর্শন সহ। (মনে রাখবেন: পেটেন্টগুলি উদ্ভাবনের উত্সাহ দেওয়ার কথা!) সুতরাং এই ফিনিশ সংস্থাটি ... শব্দ করে টায়ারের অবস্থা সনাক্ত করতে চেয়েছিল। সমস্ত টায়ার থেকে আগত শব্দ শুনতে মাইক্রোফোন ইনস্টল করা এবং সেই টায়ারে কোনওর কোনওরকম সমস্যা আছে কিনা তা দেখার জন্য মাইক্রোফোন ইনস্টল করা এবং আমি প্রোটোটাইপ করছি এই উন্মাদনা (এমনকি তাদের নমুনা শব্দ রেকর্ড করার জন্য একটি নিবেদিত ল্যাব ছিল; একবার তারা যখন আমাকে একটি নির্দিষ্ট অনুষ্ঠানের একটি চিত্তাকর্ষক ভিডিও রেকর্ড পাঠিয়েছিল যখন তারা 5 বা 10 টন চাপ চাপিয়ে এবং কিছু হাস্যকর তাপমাত্রা পর্যন্ত গরম করার পরে একটি নমুনা টায়ারটি বিস্ফোরিত করতে সক্ষম হয়) ।) স্পষ্টতই, আবার এই বিকাশের কোনও নির্দিষ্ট যুক্তিসঙ্গত কারণ ছিল না, ব্যতীত এটি মজাদার ছিল এবং কিছু লোক অর্থ উপার্জন করতে চেয়েছিল। সুতরাং আরও বুঝতে হবে যে কেন কেউ নতুন প্রোগ্রামিং ভাষার বিকাশ শুরু করবে তার অনেকগুলি কারণ রয়েছে। এগুলি শিখার কোনও প্রয়োজন বা এমনকি সম্ভাবনা নেই। (এমনকি তাদের নমুনা শব্দ রেকর্ড করার জন্য একটি নিবেদিত ল্যাব ছিল; একবার তারা যখন আমাকে একটি নির্দিষ্ট অনুষ্ঠানের একটি চিত্তাকর্ষক ভিডিও রেকর্ড পাঠিয়েছিল যখন তারা 5 বা 10 টন চাপ চাপিয়ে এবং কিছু হাস্যকর তাপমাত্রা পর্যন্ত গরম করার পরে একটি নমুনা টায়ারটি বিস্ফোরিত করতে সক্ষম হয়) ।) স্পষ্টতই, আবার এই বিকাশের কোনও নির্দিষ্ট যুক্তিসঙ্গত কারণ ছিল না, ব্যতীত এটি মজাদার ছিল এবং কিছু লোক অর্থ উপার্জন করতে চেয়েছিল। সুতরাং আরও বুঝতে হবে যে কেন কেউ নতুন প্রোগ্রামিং ভাষার বিকাশ শুরু করবে তার অনেকগুলি কারণ রয়েছে। এগুলি শিখার কোনও প্রয়োজন বা এমনকি সম্ভাবনা নেই। (এমনকি তাদের নমুনা শব্দ রেকর্ড করার জন্য একটি নিবেদিত ল্যাব ছিল; একবার তারা যখন আমাকে একটি নির্দিষ্ট অনুষ্ঠানের একটি চিত্তাকর্ষক ভিডিও রেকর্ড পাঠিয়েছিল যখন তারা 5 বা 10 টন চাপ চাপিয়ে এবং কিছু হাস্যকর তাপমাত্রা পর্যন্ত গরম করার পরে একটি নমুনা টায়ারটি বিস্ফোরিত করতে সক্ষম হয়) ।) স্পষ্টতই, আবার এই বিকাশের কোনও নির্দিষ্ট যুক্তিসঙ্গত কারণ ছিল না, ব্যতীত এটি মজাদার ছিল এবং কিছু লোক অর্থ উপার্জন করতে চেয়েছিল। সুতরাং আরও বুঝতে হবে যে কেন কেউ নতুন প্রোগ্রামিং ভাষার বিকাশ শুরু করবে তার অনেকগুলি কারণ রয়েছে। এগুলি শিখার কোনও প্রয়োজন বা এমনকি সম্ভাবনা নেই। একবার যখন তারা আমাকে একটি নির্দিষ্ট অনুষ্ঠানের একটি চিত্তাকর্ষক ভিডিও রেকর্ড পাঠিয়েছিল যখন তারা একটি নমুনা টায়ারটি 5 বা 10 টন চাপের সাথে চাপিয়ে দিয়ে কিছু হাস্যকর তাপমাত্রা পর্যন্ত গরম করার পরে এটি বিস্ফোরিত করতে সক্ষম হয়।) স্পষ্টতই, আবার কোনও নির্দিষ্ট যুক্তিবাদী ছিল না এই বিকাশের কারণ, এটি মজাদার ছিল এবং কিছু লোক অর্থ উপার্জন করতে চেয়েছিল except সুতরাং আরও বুঝতে হবে যে কেন কেউ নতুন প্রোগ্রামিং ভাষার বিকাশ শুরু করবে তার অনেকগুলি কারণ রয়েছে। এগুলি শিখার কোনও প্রয়োজন বা এমনকি সম্ভাবনা নেই। একবার যখন তারা আমাকে একটি নির্দিষ্ট অনুষ্ঠানের একটি চিত্তাকর্ষক ভিডিও রেকর্ড পাঠিয়েছিল যখন তারা একটি নমুনা টায়ারটি 5 বা 10 টন চাপের সাথে চাপিয়ে দিয়ে কিছু হাস্যকর তাপমাত্রা পর্যন্ত গরম করার পরে এটি বিস্ফোরিত করতে সক্ষম হয়।) স্পষ্টতই, আবার কোনও নির্দিষ্ট যুক্তিবাদী ছিল না এই বিকাশের কারণ, এটি মজাদার ছিল এবং কিছু লোক অর্থ উপার্জন করতে চেয়েছিল except সুতরাং আরও বুঝতে হবে যে কেন কেউ নতুন প্রোগ্রামিং ভাষার বিকাশ শুরু করবে তার অনেকগুলি কারণ রয়েছে। এগুলি শিখার কোনও প্রয়োজন বা এমনকি সম্ভাবনা নেই।

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

উপসংহারে, অনেক লোক, অনেক দেশ, অনেক প্রোগ্রামিং ভাষা রয়েছে। এটাই তো জীবনের প্রকৃতি! এর জন্য কৃতজ্ঞ থাকি: এর অর্থ এই যে প্রোগ্রামিং / কম্পিউটার বিজ্ঞানের ক্ষেত্রটি অনেক বেশি জীবিত এবং সমৃদ্ধ ishing


খুব নিখুঁত উত্তর, কেন জানি না এটি গ্রহণ করা হয়নি!
এএম_আইহেল্পফুল

8

কেন এতগুলি বিভিন্ন প্রোগ্রামিং ভাষা আছে?

কারণ এখানে পছন্দগুলি রয়েছে:

  • নির্দিষ্টকরণের মোড: কার্যকর বনাম কার্যকরী
  • টাইপিং: স্ট্যাটিকালি টাইপ করা বনাম গতিশীল টাইপ
  • মূল্যায়নের ক্রম: কল-বাই-মান বনাম কল-বাই-নাম
  • পরিমিতি: শ্রেণিভিত্তিক বনাম। বিমূর্ত তথ্য টাইপ-ভিত্তিক
  • সম্পাদন মডেল: ধারাবাহিক বনাম সমবর্তী

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

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


যদি এই সমস্ত ভাষা একই জিনিস করতে পারে তবে কেন কেবল একটি ভাষাতেই লেগে থাকবেন না এবং প্রোগ্রামিং কম্পিউটারের জন্য সেটিকে ব্যবহার করবেন না কেন?

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

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


বিশেষত, কম্পিউটার প্রোগ্রামার হিসাবে আমার কোনও কার্যকরী ভাষা জানা উচিতের কোনও কারণ আছে?

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


1

আপনি এটিকে বিবর্তন হিসাবে দেখতে পারেন।

শুরুতে, কম্পিউটারগুলি বাইনারি কোডগুলির সাথে খাঁটিভাবে প্রোগ্রাম করা হয়েছিল। এর পরে স্মৃতিবিজ্ঞানের প্রচলন এবং সমাবেশের ভাষা প্রচলিত হয়েছিল, বেশিরভাগই ব্যবহৃত সিপিইউয়ের উপর নির্ভর করে।

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

এর পরে চতুর্থ স্তরের ভাষাগুলি উঠল, যেমন যুক্তিযুক্ত ভাষা (প্রোলোগের মতো)। সর্বাধিক জেনেরিক ভাষা হ'ল তৃতীয় স্তরের ভাষার উত্তরসূরি; এর মধ্যে কয়েকটি জাভা, সি #।

আমরা ইন্টারনেট / ওয়েবের জন্য সুনির্দিষ্ট ভাষাও দেখতে পাই, যেমন এএসপি.এনইটি, পিএইচপি।

এবং একটি নির্দিষ্ট ডোমেনের জন্য ভাষা (ডিএসএল), যা বেশিরভাগ জেনেরিক ভাষার সাথে একত্রে কাজ করে।

তারপরে লোগোগুলির মতো বাচ্চাদের প্রোগ্রামিং শেখার জন্য ভাষা রয়েছে।

পাইথন, রুবি ইত্যাদির মতো দ্রুত লিখিত কোডের ভাষা, এক্সএমএল (এক্সএসএলটি) হ্যান্ডল করার জন্য ভাষা।

এবং আমি সম্ভবত অনেক ভাষা এবং এমনকি ভাষা বিভাগগুলি ভুলে গিয়েছি।


1
আপনার কালানুক্রমিক বিভ্রান্ত। প্রোলোগ 1972 সালের, যা এডা (1983) এর চেয়ে কম বয়সী। "তৃতীয় স্তরের ভাষার উত্তরসূরিরা" বলতে আপনি কী বোঝেন তা আমি জানি না; কয়েকটি ভাষা সি এবং পাস্কাল (যা আডা জন্মগ্রহণ করে) সহ ফোর্টরানের বংশধর নয়।
prosfilaes

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

1

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

এর অর্থ এখানে দীর্ঘ ইতিহাস এবং সময়রেখা ছিল যা মূলত ১৯৩০ এর দশকে ল্যাম্বদা ক্যালকুলাস দিয়ে শুরু হয়েছিল ।

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

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

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

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

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

প্রোগ্রামিং ভাষাগুলিতে বর্তমান লম্বরেঞ্জ ট্রেন্ডগুলি মনে হয় বিগ ডেটা এবং সমান্তরালীর দিকে যেমন ম্যাপ্রেডুস সহসমাপনেও বর্তমান আগ্রহ রয়েছে ।

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

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

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


আরও দেখুন নিদর্শন ডিজাইন যা প্রায়ই ভাষায় ক্রস ও ভাষায় প্রয়োগ করা হয়। ভাষা অধ্যয়ন / কার্যকারিতার আরেকটি মূল বিষয়
হ'ল

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

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

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

সংযোজন, নতুন / উঠতি ভাষায় কেস স্টাডি: গুগল যেতে , Node.js অ্যাপল দ্রুতগতি
vzn

-3

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

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

সিণ্ডার মতো এগুলি দেখতে খুব কম, তবে এর সাথে খুব কম মিল রয়েছে: জাভাস্ক্রিপ্ট, জাভা, সি #, (যুক্তিযুক্ত) উদ্দেশ্য-সি।

এটি সমস্ত বিপণন, জাভা, সি ++ এবং জাভাস্ক্রিপ্ট কিন্ডাকে দেখতে সি এর মতো দেখাচ্ছে তবে কভারগুলির আওতায় এর চেয়ে বেশি আলাদা হতে পারে।


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

2
"কিছু যাদের কোনওরূপে সি-এর প্রভাব নেই: ... অ্যালগল, আলগোল -68, ..." - মজার বিষয় হল আপনার এই কথাটি বলা উচিত, প্রদত্ত যে সি সি আলগোল থেকে উত্থাপিত হয়েছিল। "আপনি যদি ভাষাটি ধরণের বাছাটিকে" সি "এর মতো দেখান, তবে এটি প্রবেশের ক্ষেত্রে আপত্তিজনক বাধা কমিয়ে দেয়" - আইর্ক, এটি ভুল প্রমাণিত হয়েছে। প্রোগ্রামিংয়ের পূর্বের এক্সপোজার ছাড়াই শিক্ষার্থীরা অন্যান্য ভাষার সাথে দ্রুত শিখতে পারে (আমার মনে হয় তারা সেই গবেষণায় হাস্কেলকে ব্যবহার করেছিল)।
রাফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.