আমি মনে করি সিনট্যাকটিক চিনির শব্দটি একই অন্তর্নিহিত শব্দার্থকে প্রকাশ করার জন্য একটি বিকল্প সিনট্যাক্স নির্দেশ করে।
উদাহরণস্বরূপ একটি প্রোগ্রামিং ভাষা এ নিন যার একটি অপারেশন রয়েছে 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়তার দিকে পরিচালিত করে, এটি একটি "স্বাদের বিষয়" বা "প্রতিটি প্রোগ্রামিং ভাষার বৈশিষ্ট্য, কেবল সিনট্যাকটিক চিনি"।
আমি মনে করি উপরে যুক্তি প্রধান সমস্যা হল শব্দার্থবিদ্যা শুধুমাত্র সম্পর্কে নয় কি নির্ণিত করা যেতে পারে একটি প্রোগ্রাম দ্বারা নয়, কিন্তু এছাড়াও কিভাবে এটি নির্ণয় করা হয় , অর্থাত্ কি আদিম নির্মান ব্যবহার করা হয় এবং কিভাবে তারা মিলিত হয়।
সুতরাং উদাহরণস্বরূপ, অবজেক্টগুলি অন্তর্নিহিত বিট কনফিগারেশন এবং বিট ট্রান্সফর্মেশনের জন্য সিনট্যাকটিক চিনি নয়, এগুলি এমন একটি নির্মাণ যা ডেটা এবং ক্রিয়াকলাপকে মডেল করতে এবং গণনাগুলি বর্ণনা করার অনুমতি দেয়। বস্তু, পদ্ধতি, পদ্ধতি কলগুলির সাথে কম্পিউটিং বাইটস, প্রসেসর রেজিস্ট্রার, মেমরি অ্যাড্রেসগুলির সাথে কম্পিউটিংয়ের সমান নয় (এমনকি যদি দুটি গণনাটির একই ফলাফল হয়, এবং দ্বিতীয় গণনা প্রথমটি প্রয়োগ করার জন্য ব্যবহৃত হয়)।
আমি এই বিবরণটি কিছুটা দীর্ঘ করেছি তবে আমি মনে করি এটি একটি গুরুত্বপূর্ণ দিক যা আমি অন্যান্য উত্তরে সম্বোধন করতে দেখিনি।
নীচের লাইন: সিনট্যাকটিক চিনি একটি কনস্ট্রাক্টের জন্য বিকল্প (সম্ভবত আরও সুবিধাজনক) সিনট্যাক্স যা ইতিমধ্যে একটি ভাষায় রয়েছে এবং ইতিমধ্যে একটি সুসংজ্ঞায়িত বাক্য গঠন এবং শব্দার্থক শব্দ রয়েছে। নতুন সিনট্যাক্স (সিনট্যাকটিক চিনি) বিদ্যমান একের থেকে পৃথক হলেও একই শব্দার্থবিজ্ঞান রয়েছে । আপনি যদি কোনও ভাষাতে একটি নতুন নির্মাণ এবং এর জন্য নতুন সিনট্যাক্স উপস্থাপন করেন তবে আপনার সিনট্যাকটিক চিনি নেই।