একটি প্রোগ্রামিং ভাষা বিশ্লেষণ


10

ইন SICP , লেখক রাজ্য ( অনুচ্ছেদ 1.1 ) তিনটি মূল ভাষায় প্রোগ্রামিং এর "মেকানিজম" আছে:

  • আদিম ভাব , যা ভাষার সাথে সম্পর্কিত সবচেয়ে সহজ সত্তার প্রতিনিধিত্ব করে

  • সংমিশ্রণের মাধ্যম , যার সাহায্যে যৌগিক উপাদানগুলি সহজতর থেকে তৈরি করা হয়

  • বিমূর্তির মাধ্যম , যার সাহায্যে যৌগিক উপাদানগুলির নামকরণ ও ইউনিট হিসাবে চালিত করা যায়

আমি কীভাবে মূল উপাদানগুলির প্রোগ্রামিং ল্যাঙ্গুয়েজ (জাভা উদাহরণস্বরূপ) এই উপাদান বা ব্যবস্থার ক্ষেত্রে বিশ্লেষণ করতে পারি?


আপনি কি আগে বর্ধিত ব্যাকাস-নওর ফর্ম, ইবিএনএফ বা ব্যাকাস-নওর ফর্ম, বিএনএফ দেখেছেন ? এটি এই তিনটি ধারণার অনুরূপ ব্যাকরণকে ভেঙে ফেলতে পারে, যদিও আপনার উদ্দেশ্যগুলি কী তা আমি সত্যিই নিশ্চিত নই তাই এটি সাহায্য করবে কিনা তা আমি জানি না।
জেটি

@ জেটি - হ্যাঁ, আমার আছে, এবং না, আমি যা আগ্রহী তা নয় I'm আমি প্রকৃতপক্ষে প্রোগ্রামিং ভাষাগুলির শব্দার্থবিজ্ঞানের (প্রশ্ন: আসলেই কি সেই শব্দটি খুঁজছি?) বিশ্লেষণ করতে চাইছি না, তাদের লিখিত ফর্ম (যেমন বাক্য গঠন)।

উত্তর:


1

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

এই তিনটি ধারণার একটি পাঠ্যপুস্তকের উদাহরণ হ'ল ল্যাম্বদা ক্যালকুলাস , যার প্রতিটিটির মধ্যে একটির রয়েছে:

  • ভেরিয়েবল এক্স , ওয়াই ,… হ'ল একমাত্র আদিম ভাব।
  • ফাংশন অ্যাপ্লিকেশন এমএন সমন্বয়ের এক মাধ্যম means
  • ল্যাম্বদা বিমূর্ততা λx.M বিমূর্তির এক মাধ্যম।

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

জাভাতে (একটি আদর্শ মডেল), আদিম ভাবগুলি মূলত ধ্রুবক এবং পরিবর্তনশীল। সংমিশ্রণের মাধ্যমটিতে অসংখ্য অপারেটর অন্তর্ভুক্ত; আরও স্পষ্টভাবে, "সংযোজনীয় অভিব্যক্তি" দুটি স্লটের (বাম-হাতের এবং ডান-হাতের দিকের) সাথে সংশ্লেষণের একটি মাধ্যম বা তিনটি স্লট (দুই পক্ষের সাথে অপারেটর) সহ যদি আপনি + বি এবং - বি উভয় অন্তর্ভুক্ত করেন তবে সেই নামে (সেই ক্ষেত্রে অপারেটররা +এবং -তাদের নিজেরাই আদিম নির্মাণ হবে) সংমিশ্রণের অন্যান্য উপায়গুলির মধ্যে নির্দেশাবলী I ; J , লুপের নির্মাণের ক্রম অন্তর্ভুক্তwhile (…) {…}, ইত্যাদি। তারপরে আপনার ভেরিয়েবল ডিক্লেয়ারেশন, ফাংশন সংজ্ঞা, শ্রেণীর সংজ্ঞা এবং এর মতো দুটি সমন্বয়ের মাধ্যম (তারা প্যারামিটারের নাম এবং প্রকার, সংস্থাগুলি, আরম্ভকারী,…) এবং বিমূর্তির মাধ্যমগুলি সংযুক্ত করে (কারণ তারা পুনঃব্যবহারের জন্য নাম সংজ্ঞায়িত করে)। এটি বাস্তবে প্রচলিত যে বিমূর্তকরণের অর্থ সংমিশ্রণের মাধ্যমও রয়েছে: তারা এর নামের সংজ্ঞা দিয়ে একটি নাম যুক্ত করে।


চমৎকার উত্তর; আমি যে সমস্যার সাথে লড়াই করছি সেগুলি আপনি পেয়েছেন - আদিম, সংমিশ্রণ ইত্যাদির মধ্যে দ্ব্যর্থক পার্থক্য

"ভেরিয়েবল" বলতে কী বোঝ? এগুলির নাম থাকার কারণে এগুলি বিমূর্তির মাধ্যম হিসাবে বর্ণনা করা যায় না?
morbidCode

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

4

রুক্ষ ছুরিকা:

এক্সপ্রেশন ঠিক যে; জাভা মধ্যে একটি অভিব্যক্তি গঠন কি। আমি জানি না যে এটি বিবৃতি অন্তর্ভুক্ত করতে বা প্রসারিত হবে কিনা।

সংমিশ্রণগুলিতে যৌগিক এক্সপ্রেশন, (ভেরিয়েবল ?,) বিবৃতি, পদ্ধতি, শ্রেণি প্রক্রিয়া এবং প্যাকেজ অন্তর্ভুক্ত থাকবে। মডিউলগুলিও, একবার তারা ভাষায় আসে।

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

জেনারিকস বিমূর্তির অতিরিক্ত স্তর (এবং হতাশা) সরবরাহ করে।


@ ম্যাটফেনউইক একটি অভিব্যক্তি একটি একক আদিম সমন্বিত হতে পারে, আদিম এবং অন্যান্য সত্তার সংমিশ্রণ একটি যৌগিক ভাব প্রকাশ করে (এখনও একটি প্রকাশ, তবে একটি বিবৃতি নয়)।
ডেভ নিউটন

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

আপনার পক্ষপাতিত্ব সম্পর্কে: জাভা জেনেরিক প্রয়োগে সমস্যা আছে?
স্টিভেন ইভার্স

2

এখানে আমার মৌলিক শ্রেণিবদ্ধকরণ। আমি এলআইএসপি দিয়ে একটি প্যারালেল আঁকতে চেষ্টা করছি।

আদিম অভিব্যক্তি

  • সমস্ত আদিম মান, জিনিসগুলি আপনি আক্ষরিক ব্যবহার করে প্রতিনিধিত্ব করতে পারেন (সংখ্যা, বুলিয়ান, ...)

এলআইএসপিতে সমান্তরাল : পরমাণু, সংখ্যা এবং তালিকা।

সংমিশ্রণের উপায় (আপনি যৌগিক ডেটা-কাঠামো তৈরি করতে পারেন এমন উপায়)

  • অ্যারেগুলির
  • অবজেক্ট / স্ট্রাক্ট

এলআইএসপিতে সমান্তরাল : কনস সেল, তালিকা

বিমূর্তকরণের অর্থ

  • সমস্ত নিয়ন্ত্রণ প্রবাহ সিনট্যাক্স (যদি থাকে তবে)
  • সকল builtin অপারেটার ( +, -, *, /, ...)
  • সমস্ত ফাংশন (এই বিভাগে আমরা ক্লাস এবং পদ্ধতি অন্তর্ভুক্ত করি)

এলআইএসপিতে সমান্তরাল : ফাংশন, সিনট্যাকটিক চিনির মতো let,define


চমৎকার উত্তর! আমি ভাবছিলাম হয়ত নিয়ন্ত্রণ-প্রবাহের কিছু গঠন কম্বিনেশনের মাধ্যমে মাপসই হবে। LISP এর সাথে দুর্দান্ত সমান্তরাল, এটি অনেক সাহায্য করে।

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

0

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

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

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

উদাহরণস্বরূপ, সিনট্যাক্স আপনাকে বৈধ forলুপ কীভাবে লিখবেন তা বলবে । শব্দার্থকগুলি আপনাকে জানাবে যে লুপটি কী করে।

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


1
কিসের অপেক্ষা? "জাভা নেওয়ার আগে সি এর মতো সরল" " আপনি আমাকে "সি এর মতো সরল" এ হারিয়েছেন।
কর্সিকা

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

প্রকৃতপক্ষে, "সিনট্যাক্স" ভাষাগুলিতে সঠিকভাবে "সহজতম" বিষয়গুলির বর্ণনা দেয়, যেগুলি পরমাণুগুলি থেকে রচিত হয়।
ইরা

সিনট্যাক্সটি বৈধ প্রোগ্রাম কী তা পুরোপুরি ক্যাপচার করে না, উদাহরণস্বরূপ একটি সিনট্যাক্টিক্যালি সঠিক প্রোগ্রাম টাইপ চেক করতে ব্যর্থ হতে পারে। এসি প্রোগ্রাম যা বিবৃতি x = ++x;কার্যকর করে বৈধ নয় যদিও একটি সাধারণ সংকলক তা গ্রহণ করে।
গিলস 21'27

0

এটি সঠিক কিনা তা আমি জানি না, তবে বিভাগটি আমি যেভাবে বুঝি তা নিম্নরূপ:

আদিম ভাব , এগুলি হবে >> >>, +, *, /, ইন, বুলিয়ান, ভেরিয়েবল, পদ্ধতি ইত্যাদি things

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

বিমূর্তনের মাধ্যম, এটি ভেরিয়েবল এবং পদ্ধতিগুলির পাশাপাশি ইন্টারফেস, ক্লাস, স্ট্যাটিক ক্লাস, ওভারলোডিং পদ্ধতি ইত্যাদি তৈরির উপায় হিসাবে ব্যবহৃত সিনট্যাক্স would

যাইহোক, এর সম্ভাব্য আপনার বইটি থেকে আমাদের আরও তথ্য দেওয়ার প্রয়োজন যাতে আমরা জানতে পারি সেখানে কী বোঝানো হয়েছে।


বইটি অনলাইনে বিনামূল্যে; ওপিতে একটি লিঙ্ক দেওয়া আছে। আমি এক ধরণের সম্পর্কে একইভাবে অনুভূত হয়েছিল means of combination- যে সেখানে ঠিক কী আছে তা নির্ধারণ করা শক্ত। ভাল উত্তর, যদিও।

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