সিনট্যাকটিক চিনির কঠোর সংজ্ঞা? [বন্ধ]


9

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

উত্তর:


19

এটি সম্পর্কে কীভাবে: "সিনট্যাকটিক চিনি এমন কিছু কার্যকারিতার জন্য একটি সুবিধা শর্টহ্যান্ড যা বিমূর্তির কোনও অর্থবহ স্তরকে প্রবর্তন করে না।"

নিন a->b, যা আপনি উল্লেখ হিসাবে, সমান (*a).b। এই স্বরলিপিটি আপনাকে কোডটি কোনও কার্যকর, অন্যথায় গোপনীয়ভাবে বিবেচনা করার অনুমতি দেয়? না, সুতরাং এটি সিনট্যাকটিক চিনি।

এখন বিবেচনা করুন a[i] == *(a + i)। যে কোনও সি প্রোগ্রাম সম্পর্কে ভাবুন যা কোনও অ্যারেটিভ উপায়ে অ্যারে ব্যবহার করে। আপনি স্বীকৃতি ছাড়া এটি বোঝার চেষ্টা কল্পনা করতে পারেন []? বহুমাত্রিক অ্যারে দিয়ে? অ্যারেগুলিকে পুরো ইউনিট হিসাবে বিবেচনা করা অর্থবহ, স্মৃতিতে একটি অবিচ্ছিন্ন ব্লকের সূচনা হিসাবে উল্লেখ করে নয়। আপনি যদি এগুলির সাথে জটিল জিনিসগুলি করার পরিকল্পনা করে থাকেন তবে অ্যারে কীভাবে কাজ করে তা জানতে সাহায্য করে তবে সর্বদা এটি ভাবনা অনুচিত হয় "আমাকে মেমোরির দুটি বিট সংরক্ষণ করতে হবে 2 * আমি বাইটগুলি ডানদিকে রেখেছি দ্বারা স্মরণ মেমরি অবস্থান a। " অ্যারের পুরো বিন্দুটি একটি সুসংগত ইউনিট হিসাবে ক্রম সংরক্ষণের প্রক্রিয়াটি বিমূর্ত করার ক্ষমতা। []স্বরলিপি এই বিমূর্ততা সমাধা। এটা না অন্বিত চিনি।

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

টেরিনারি অপারেটর, এটির <pred> ? <cnsq> : <alt>আরও একটি উদাহরণ। সিনট্যাকটিক চিনি প্রোগ্রামগুলি সংগঠিত করতে এবং রিডানড্যান্ট কোড অপসারণ করতে সহায়তা করতে পারে যা লাইনের নিচে রক্ষণাবেক্ষণে সঞ্চয় করতে পারে। সিন্ট্যাকটিক চিনির মাঝে মাঝে যদি "প্রোগ্রামিংয়ের ক্ষেত্রে সিনট্যাকটিক বাধাগুলি অপসারণ করতে সহায়তা করে তবে" বাস্তব বৈশিষ্ট্যগুলিতে "পাইলিং করা ভাল।

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


7

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

এর BS কারণ "বাস্তব বৈশিষ্ট্যগুলি" বা "সিনট্যাকটিক চিনি" ধারণাটি সত্যিকারের স্কটসম্যানের ত্রুটির মতো নয় । এতে বাক্যাংশগুলি হ'ল "অযৌক্তিক দৃser়তা ধরে রাখার চেষ্টা করা হয়"। এখানে দৃ The়তা হ'ল এখানে একটি বৈশিষ্ট্য তুচ্ছ কারণ আপনি পরিবর্তে একটি "বাস্তব বৈশিষ্ট্য" ব্যবহার করতে পারেন।

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

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

এর বিএস কারণ লোকেরা প্রায়শই ভুল বা সমতা সম্পর্কে ভুল হয়ে যায়। উদাহরণস্বরূপ এই প্রশ্নটি দৃser়ভাবে জানায় যে একটি সি # স্ট্রিং একটি চর অ্যারের জন্য চিনি। তারা না

তবে আপনি যদি দুটি জিনিস চিনতে চান তবে সেগুলি শব্দার্থগতভাবে সমতুল্য এবং এটি এগিয়ে যেতে এবং যেভাবেই আপনি চান এটি সংজ্ঞায়িত করতে সহায়তা করে।

আপনি যদি কাউকে বরখাস্ত করতে চান তবে আপনি বাক্যাংশটিও ব্যবহার করতে পারেন।


2
"আপনি যদি কাউকে বরখাস্ত করতে চান তবে আপনি বাক্যাংশটিও ব্যবহার করতে পারেন।" - যেমনটি: "আপনি কি বার্বারার সাথে দেখা করেছেন? তিনি আমাদের সিনট্যাকটিক চিনি?"
মল্ফ

@molf। এটা বেশ মজার। আমি মনে করি আমার অর্থ কারও ধারণা বা কাজ বা সরঞ্জাম। পছন্দ: "আপনি কি বার্বারার সাথে দেখা করেছেন, তিনি মনে করেন তিনি সত্যিকারের কোডার তবে তিনি খুব বেশি চিনি ব্যবহার করেছেন।" বা "বারব্রা বার ++ ভি 8.0-তে বিশেষজ্ঞ, তবে 8.0 এটি প্রচুর চিনির সাথে সত্যই মাত্র 7.0" "
কনরাড ফ্রিক্স

7

সম্পর্কিত ধারণার জন্য এখানে একটি অত্যন্ত কঠোর সংজ্ঞা দেওয়া হয়েছে: ম্যাথিয়াস ফেলেলিসেনের দ্বারা প্রকাশ করা
:

প্রোগ্রামিং ল্যাঙ্গুয়েজের এক্সপ্রেসিভ পাওয়ারে [পোস্টস্ক্রিপ্টটি কেবলমাত্র ফ্রি ফর্মটি খুঁজে পেলাম।]

জাভা ভাষা এবং সমাপনীতে এই এন্ট্রিটিও দেখুন ।

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

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


5
+1: সিনট্যাকটিক চিনি গুরুত্বপূর্ণ। আধুনিক বীজগণিত স্বরলিপিটি এটি প্রতিস্থাপন করা লাতিন গদ্যের জন্য কেবল সিনট্যাকটিক চিনি, তবে এটি গাণিতিকভাবে যুক্তি দেখানোর আমাদের দক্ষতায় একটি বড় পার্থক্য করে।
কেভিন

3

আমি মনে করি সিনট্যাকটিক চিনির শব্দটি একই অন্তর্নিহিত শব্দার্থকে প্রকাশ করার জন্য একটি বিকল্প সিনট্যাক্স নির্দেশ করে।

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

sum []
sum [3, 4, 5, 1]
sum [2, 7]

যার ফলাফল যথাক্রমে 0, 13 এবং 9।

এখন, ধরুন যে আমরা বুঝতে পারি যে আমরা 90% বার sumদুটি আর্গুমেন্ট দিয়ে ব্যবহার করি , এবং সেইজন্য আমরা সুবিধার জন্য, নতুন স্বরলিপি প্রবর্তন করি

2 + 7

যা কেবল সিনট্যাকটিক চিনির জন্য sum [2, 7]

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

2 + 7

যা যথারীতি সংখ্যা যুক্ত করে।

ভাষার A এর প্রসঙ্গে, +স্বরলিপিটি সিনট্যাকটিক চিনির (এটি একটি বিকল্প, সরলিকৃত এবং অ্যাডহক স্বরলিপি যা স্বরলিপিটির পরিবর্তে ব্যবহার করা যেতে পারে sum [...])। একইভাবে, হোয়া লং ট্যামের উত্তরে যেমন উল্লেখ করা হয়েছে, সি তে স্বরলিপিটি p->fieldসিনট্যাকটিক চিনি (*p).field

ভাষা B এর প্রসঙ্গে, +স্বরলিপিটি সিনট্যাকটিক চিনি নয় (যোগফলের জন্য এটি কেবলমাত্র বৈধ বাক্য গঠন)। একইভাবে, সি যদি কেবলমাত্র পয়েন্টারগুলির মাধ্যমে স্ট্রাক্ট সদস্যদের অ্যাক্সেস করতে পারে এবং যদি স্বরলিপিটি না থাকে (*p).field, তবে স্বরলিপিটি p->fieldসিনট্যাকটিক চিনি নয়।

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

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

উপরোক্ত যুক্তির লাইনটি "সিনট্যাকটিক চিনির সঠিকভাবে সংজ্ঞা দেওয়া যায় না" এর মতো জেনেরিক দৃser়তার দিকে পরিচালিত করে, এটি একটি "স্বাদের বিষয়" বা "প্রতিটি প্রোগ্রামিং ভাষার বৈশিষ্ট্য, কেবল সিনট্যাকটিক চিনি"।

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

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

আমি এই বিবরণটি কিছুটা দীর্ঘ করেছি তবে আমি মনে করি এটি একটি গুরুত্বপূর্ণ দিক যা আমি অন্যান্য উত্তরে সম্বোধন করতে দেখিনি।

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


0

সিনট্যাকটিক চিনি এমন একটি বৈশিষ্ট্য যা ভাষার স্বাতন্ত্র্যকেই প্রসারিত করে না, অতএব অপ্রয়োজনীয় এবং কখনও কখনও স্বরলিপি ব্যবহারের অপব্যবহার হয় তবে উভয়ই লেখকের জীবনকে সহজতর করে এবং পাঠককে আরও অন্তর্দৃষ্টি দেয়।


0

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

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

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

যে জিনিস উদাহরণ হয় অন্বিত চিনি:

a[i] পরিবর্তে *(a + i)

a -> b পরিবর্তে (*a).b

foreach ম্যানুয়ালি পুনরুক্তি সিনট্যাক্স টাইপ না করে বাক্য গঠন।

সমস্ত অপারেটর ওভারলোডিং খাঁটি সিনট্যাকটিক চিনি।

এই শব্দটি কি নিখুঁত এবং যুক্তিসঙ্গতভাবে দ্ব্যর্থহীন সংজ্ঞা মত?


3
অপারেটর ওভারলোডিং সিনট্যাকটিক চিনি নয়। এটিই সি ++ কে টেমপ্লেটগুলি সক্ষম করে যা মূলত উভয় ধরণের (যেমন int) এবং আমার নিজস্ব ক্লাসগুলির জন্য কাজ করে।
কেট গ্রেগরি

@ কেটগ্রিগরি: যদি কেউ স্বীকার করে যে ফাংশন ওভারলোডিং সিনট্যাকটিক চিনি নয় তবে অপারেটর ওভারলোডিংকে কেবলমাত্র নির্দেশিত মানগুলিতে ওভারলোডযোগ্য ফাংশনগুলি কল করার জন্য সিনট্যাকটিক চিনিরূপে বিবেচনা করা যেতে পারে।
সুপারক্যাট

0

"সিনট্যাকটিক চিনি" কোনও কঠোরভাবে সংজ্ঞায়িত শব্দ নয়। আপনি কাকে জিজ্ঞাসা করছেন তার উপর নির্ভর করে আপনি সম্ভবত নিম্নলিখিত ধরণের সংজ্ঞাগুলির মধ্যে একটি পাবেন:

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

-3

আমি কম্পিউটার বিজ্ঞানের ক্ষেত্রগুলির মধ্যে নিশ্চিত নই, তবে যুক্তির ক্ষেত্রের সাথে রক্ষণশীলতা এবং সংজ্ঞাগুলির নির্মূলকরণের ধারণা রয়েছে [ 1 ] একই শিরায় রয়েছে বলে মনে হয়।

কারি-হাওয়ার্ডের চিঠিপত্র প্রয়োগ করে, কেউ একটি "সিনট্যাকটিক চিনি" সম্পর্কিত একটি সমান্তরাল ধারণা নিয়ে আসতে সক্ষম হতে পারেন।

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