কেন অনেক প্রোগ্রামিং ভাষায় বিবৃতি সেমিকোলন দ্বারা সমাপ্ত হয়?


130

কোনও কারণ আছে যে একটি অর্ধ-কোলন একটি পৃথক চিহ্নের পরিবর্তে লাইন টার্মিনেটর হিসাবে নির্বাচিত হয়েছিল?

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


6
এরলং এবং প্রোলোগ ফুলস্টপ ব্যবহার করে।
ডেভ ক্লার্ক

13
আমি ভাবছি আপনি কতটি প্রোগ্রামিং ভাষা জানেন? অনেকগুলি ভাষা রয়েছে যা সেমিকোলন ব্যবহার করে না।
নিভিল

50
আমি বাজি ধরব উত্তরটি এমন কিছু হয়ে যাবে যে "80-চরিত্রের পাঞ্চ-কার্ডের শেষ অক্ষর হিসাবে ব্যবহৃত হলে সেমিকোলনের ASCII মানটি বিশেষত টেকসই হয়।"
রায়ান থম্পসন

22
আপনার প্রশ্নটি যথেষ্ট পরিমাণে যায় না। আসল প্রশ্নটি হ'ল, "কেন কোনও চিহ্ন?"
কনরাড রুডল্ফ

5
কারণ এটি একটি কিওয়ার্টি কীবোর্ডের হোম সারি হয়?
উইম

উত্তর:


132

ইংরেজিতে সেমিকোলনটি বিবৃতিগুলির তালিকায় আইটেমগুলি পৃথক করতে ব্যবহৃত হয়, উদাহরণস্বরূপ

তিনি তিন জনকে দেখেছিলেন: জেমি, যিনি নিউজিল্যান্ড থেকে এসেছিলেন; জন, দুধের ছেলে; এবং জর্জ, একজন ভুতুড়ে ধরণের মানুষ।

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

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

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

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

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


19
পুরোপুরি সঠিক নয়। অর্ধ কোলন বাক্যগুলিকে ব্লকগুলিতে পৃথক করে: প্রতিটি ব্লক একটি কার্যক্ষম বাক্য হওয়া উচিত তবে আমরা দুটি বাক্যটির মধ্যে একটি শক্তিশালী লিঙ্ক রয়েছে তা বোঝাতে আধা-কোলন ব্যবহার করি। এটি একটি কমা এবং একটি সম্পূর্ণ স্টপের মাঝামাঝি পথ তাই এটি প্রকৃতপক্ষে একটি বিরতির পয়েন্ট তবে এটি একটি বাক্যকে পরের সাথে যুক্ত করে। উপরোক্ত বাক্যটি হ'ল: "তিনি তিন জনকে দেখেছিলেন; জেমি: যিনি নিউজিল্যান্ড থেকে এসেছিলেন, জন: দুধওয়ালার পুত্র এবং জর্জ: একজন ধরণের ধরণের মানুষ" " আপনার আধা-কোলনের ব্যবহারটি কমা দ্বারা প্রতিস্থাপিত হতে পারে। বিট অফ টপিক কিন্তু গিস্টটি মূলত একই রকম; এটি বিবৃতি বিচ্ছেদ।
alex.p

40
@ অ্যালেক্স.পি আসলে একটি কমাের জায়গায় একটি অর্ধিকোলনের একটি গ্রহণযোগ্য ব্যবহার যখন এটি একটি বাক্যকে বিভ্রান্তিকর করে তোলে, যা এটি সঠিক করে তোলে।
রাইথাল

13
সেমিকোলন সম্পর্কে সমালোচনামূলক তথ্য: theoatmeal.com/comics/semicolon
এড জেমস

7
@ অ্যালেক্স.পি: মনে হচ্ছে আপনি ইয়ান এর ব্যবহার ভুল বলছেন তবে আপনি কীভাবে আধা-কলোন ব্যবহার করবেন সে সম্পর্কে তার ব্যাখ্যাটি কেবল অসম্পূর্ণ বলে যাচ্ছেন। যদি আপনি বলছেন যে সে ভুল, তবে আপনি মৃত ভুল। তাঁর অর্ধ-কলোন ব্যবহার পুরোপুরি প্রচলিত এবং আপনি যে উদাহরণটি দিয়েছেন তার চেয়ে আমি অনেক বেশি সাধারণ অনুমান করতে পারি। যদি আপনি কেবল বলছেন যে তিনি একটি বিস্তৃত ব্যাখ্যা দেন না, তবে আমি কেন নিশ্চিত যে এটি এমনকি উল্লেখ করার মতোও নয়।
আইকনোক্লাস্ট

17
@ ইয়ান "এটি অনুমান করা উচিত, আমি তখন সেখানে ছিলাম না" আপনি সেখানে একটি সেমিকোলন (সঠিকভাবে) ব্যবহারের জন্য একটি নিখুঁত সুযোগটি হাতছাড়া করেছেন :)
ট্র্যাভিস ক্রিশ্চান

70

অনেক ভাষা সি-র পরে মডেল করা সিনট্যাক্স ব্যবহার করে (যা বি এর পরে মডেল করা হয়েছিল - ধন্যবাদ @ ক্রোলসটার)। মন্তব্যে যেমন দেখা যায়, এই জাতীয় ভাষার একটি দীর্ঘ শৃঙ্খলা রয়েছে ... বি পিএল / আই দ্বারা অনুপ্রাণিত হয়েছিল, যা ;পৃথককারী হিসাবে পৃথক হিসাবে ব্যবহার করার আগে আ’লজিওএল দ্বারা অনুসরণ করা হয়েছিল ।

যেহেতু সিতে বিবৃতি টার্মিনেটর হয় ;, এই ভাষাগুলি অনুসরন করে।

কেন এটি সি-তে স্টেটমেন্ট টার্মিনেটর হিসাবে নির্বাচিত হয়েছিল - সম্ভবত ইংরেজিতে এর ব্যবহার "আন্তঃনির্ভর বিবৃতি নির্দেশ করার জন্য"

সি পিডিপি -11 এ এমন এক সময় আবিষ্কার করা হয়েছিল যেখানে অক্ষর সেটগুলির জন্য সীমিত পরিমাণে মেমরি উপলব্ধ ছিল, তাই ভাষার সন্ধানকারীদের এই সীমাবদ্ধতার মধ্যে কাজ করতে হয়েছিল।


8
সি তার পূর্বসূরি 'বি' দ্বারা ব্যবহৃত সেমিকোলনগুলি ব্যবহারের কনভেনশনটি অনুসরণ করেছে
ক্রোলস্টার

8
বি তার পূর্বসূরি 'পিএল / আই' দ্বারা ব্যবহৃত সেমিকোলন ব্যবহারের সম্মেলনটি অনুসরণ করেছে :)
স্কুমস্কি

15
@ স্ককমসকি - কোনটি অনুসরণ করেছে? আমি সেই শেষ কচ্ছপটি আসার অপেক্ষায় রয়েছি;)
ওডেড

26
-1; আসুন ছেলেরা, আমরা সবাই কি বিশাল প্রভাবশালী ALGOL কে ভুলে গেছি? আপনি উল্লেখ করছেন এমন সমস্ত কিছুর আগে এটিতে বিবৃতি বিভাজক হিসাবে সেমিকোলন ছিল। (যদিও এটি অন্য কোথাও থেকে ধারণাটি নিয়েছে কিনা তা আমি জানি না)
hugomg

13
@ ওડેড - আমি মনে করি আপনি এটি কচ্ছপগুলি পুরো পথ ধরেই পেয়ে যাবেন । * 8 ')
মার্ক বুথ

54

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

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

বিবৃতি বিভাজক বা টার্মিনেটর হিসাবে সেমিকোলন দ্রুত কম্পিউটার বিজ্ঞান সম্প্রদায় একটি দরকারী স্বরলিপি হিসাবে স্বীকৃত হয়েছিল এবং যতদূর আমি জানি, পরবর্তী প্রতিটি ব্লক-কাঠামোগত ভাষা ALGOL এর নেতৃত্ব অনুসরণ করে এবং বিবৃতি পৃথক বা সমাপ্ত করতে সেমিকোলন ব্যবহার করে।

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


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

2
" পাস্কাল এবং আদার তুলনায় যথেষ্ট কম চিন্তা-ভাবনা " এর জন্য +1
আদিত্য

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

5
@ কেভিঙ্কলাইন: আপনি বোয়িং common 77 77 কে সাধারণ ব্যবহার হিসাবে বিবেচনা করবেন? বিমানটি উড়ে আসা এভিওনিক্স সফ্টওয়্যারটির প্রতিটি লাইন অ্যাডায় লেখা হয়।
জন আর স্ট্রোহম

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

14

অন্য কোনও প্রতীক কেন নয়?

কয়েকটি ভাষায় অন্যান্য চিহ্ন ব্যবহার করা হয়েছে - বেসিকের পুরানো সংস্করণগুলির পরিবর্তে একটি উদাহরণ ব্যবহার করা হয়েছে colon

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

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

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

আমি অনেকগুলি ভাষায় একই ঘটনাকে যুক্ত করব, কেবল আমাদের বেশিরভাগ লোক প্রোগ্রামিংয়ের আগে এতটাই অভ্যস্ত যে খুব কম লোকই এটি সম্পর্কে ভাবেন। সংযোজন নির্দেশ করতে সবাই কেন "+" বা বিয়োগফলকে নির্দেশ করতে "-" ব্যবহার করে? কারণ প্রতীকটির আকৃতি খুব বেশি গুরুত্ব দেয় না, তবে প্রত্যেকে প্রতিটি প্রতীকের জন্য একই অর্থ প্রয়োগ করতে সম্মত হয় তার পক্ষে অনেক গুরুত্বপূর্ণ।


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

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

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

7

সেমিকোলন মূলত আলগোলে 60 তে একটি বিবৃতি বিভাজক হিসাবে প্রস্তাবিত হয়েছিল , কোনও টার্মিনেটর নয়।

আলগোল 60০ এর আগে অস্তিত্বের একমাত্র উচ্চ-স্তরের প্রোগ্রামিং ভাষা ছিল ফোর্টরান, যার প্রতিটি বিবৃতি পৃথক লাইনে থাকা দরকার। ডু-লুপগুলির মতো একাধিক লাইনের বিস্তৃত বিবৃতিগুলি একটি বিজোড়তা হিসাবে বিবেচিত হয়েছিল এবং সেগুলি 'স্টেটমেন্ট ব্লক' হিসাবে বিবেচিত হত।

আলগোল 60 এর ডিজাইনাররা বুঝতে পেরেছিলেন যে বিবৃতিগুলির একটি শ্রেণিবদ্ধ কাঠামোর প্রয়োজন (যদি তা-হয় অন্যথায়, ডু-লুপগুলি, কেস স্টেটমেন্ট ইত্যাদি) এবং তারা একে অপরের ভিতরে বাসা বেঁধে রাখতে পারে। সুতরাং, পৃথক লাইনে বসে প্রতিটি বক্তব্যটির ধারণাটি আর কোনও অর্থ দেয় না। এস 1 ফর্মের বিবৃতিগুলির ক্রমিক রচনা; আছে S2; ...; SN ঐচ্ছিকরূপে ঘিরা মধ্যে শুরু - শেষ বন্ধনী বলা হয়েছে যৌগ বিবৃতি , এবং কম্পিউটারে কাজ করার একটি ভাষা 60 দ্বারা envisaged বিবৃতি হায়ারারকিকাল কাঠামো মধ্যে মাপসই করা সুতরাং, এখানে, সেমিকোলন পরিষ্কারভাবে একটি বিবৃতি হল বিভাজক , না একটি টারমিনেটর।

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

    a [i]: = 0;
    i: = i + 1

এবং সেমিকোলনটি সত্যই প্রথম বিবৃতিটির জন্য একটি টার্মিনেটরের মতো দেখায়। যদি প্রোগ্রামাররা সেমিকোলনকে একটি টার্মিনেটর হিসাবে বিবেচনা করে, তবে এর জাতীয় বিবৃতি একটি সিনট্যাক্স ত্রুটি দেয়:

    যদি i> 0 হয়
      a [i]: = 0;
    আর
      a [i]: = 1;

কারণ সেমিকোলন "if" টিমিনেট করে এবং তাই, "অন্য" ঝুঁকিতে পরিণত হয়। প্রোগ্রামাররা পুরোপুরি বিভ্রান্ত হয়েছিল।

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

[দ্রষ্টব্য যোগ করা হয়েছে: প্রোগ্রামিং ভাষার তুলনা সম্পর্কিত উইকিপিডিয়া নিবন্ধে বিভিন্ন প্রোগ্রামিং ভাষায় সেমিকোলনকে কীভাবে আচরণ করা হয় তার সংক্ষিপ্ত বিবরণে একটি দুর্দান্ত টেবিল রয়েছে।]


6

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

সেমিকোলনটি বেছে নেওয়া হয়েছিল কারণ এটি অলসতা এবং সরলতার ভিত্তিতে সেরা চরিত্র ছিল।


আপনার এখানে একটি ভাল পয়েন্ট আছে; আমি কেবল "নির্বাচিত" (যা প্রমাণ করা মুশকিল) এর মতো কিছুতে আবারও উচ্চারণ করতে চাই "... সেমিকোলন জিতেছে কারণ এটি অলসতা এবং সরলতার ভিত্তিতে সেরা চরিত্র ছিল"
gnat

2
কষ্টসহকারে। বিবৃতি টার্মিনেটর / বিভাজক হিসাবে সেমিকোলন ALGOL (1958) এ শুরু হয়েছিল, যা ASCII এর পূর্বাভাস করেছিল (কাজ শুরু হয়েছিল 1960, প্রথম প্রকাশ 1963, প্রধান মুক্তি 1967, সর্বশেষ আপডেট 1986)।
জন আর স্ট্রোহম

@ জনআর.স্ট্রোহম ভাল এটা আমার কাছে খবর, তবে
এগুলি

6
এটি একটি দুর্দান্ত তত্ত্ব, তবে বাস্তবতাটি হ'ল 70 এর দশকে আধুনিক কীবোর্ড ইনপুট উপস্থিত না হওয়া অবধি কিপঞ্চগুলি সেমিকোলনে পৌঁছানোর জন্য একটি শিফট কী প্রয়োজন। (উইকির নিবন্ধের নীচে বেশ কয়েকটি ভাল ছবি রয়েছে: এন.ইউইউইকিপিডিয়া.র.উইকি / কিপঞ্চ ) এটি সম্ভবত সম্ভবত প্রাকৃতিক ইংরেজি ভাষার নিয়মের উপর ভিত্তি করে তৈরি করা হয়েছে, যা একই সময়ে বিশেষত জনপ্রিয় ছিল। (আমি 50 এর দশকের শেষেরগুলিতে সমস্ত ভাষা অন্তর্ভুক্ত করব: এলজিপি, ফোরট্রান, কোবল এবং এসকিউএল, এলআইএসপি বাদে)) ALGOL এর আধা-কোলন ব্যবহৃত বহু ইংরাজী ভাষার কনভেনশনগুলির মধ্যে একটি, যা পরে বেসিক আরও প্রসারিত হয়েছিল।
সিলভারব্যাক

@ সিলভারব্যাক নেট যে কারণে "বিশুদ্ধ অনুমানের কাজ" সম্ভবত এখানে কোনও উত্তরের ভিত্তি হওয়া উচিত নয়।
ব্যবহারকারী 1717828

6

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

;একটি বিবৃতি বিভাজক / টার্মিনেটর হিসাবে মূল কারণটি এত জনপ্রিয় যে আজকের বেশিরভাগ জনপ্রিয় ভাষা ALGOL এর উপর ভিত্তি করে তৈরি হয়েছিল , যা সেই কনভেনশনটি ব্যবহার করেছিল।

পরিবর্তে ভিন্ন প্রতীক?

আপনি আর কি প্রতীক নিতে পারেন?

ASCII টি অক্ষর # $ @ [[] ^ _ `{|} ISO সর্বদা ISO 646 এর মতো প্রাথমিক অক্ষর এনকোডিংগুলিতে উপস্থিত ছিল না ।

অক্ষরগুলি ()*+-/<=>সাধারণত গাণিতিক অপারেটর হিসাবে ব্যবহৃত হয় এবং বিবৃতি টার্মিনেটর হিসাবে ব্যবহৃত হলে পার্সিং অস্পষ্টতা তৈরি করে।

product = a * b *  // If '*' were a statement terminator,
c * d *            // Are there two factors, or four?

অনুরূপ সমস্যাগুলি প্রযোজ্য 'এবং "যা সাধারণত স্ট্রিং ডিলিমিটার হিসাবে ব্যবহৃত হয়; ,, যা সাধারণত ফাংশন আর্গুমেন্টগুলি পৃথক করতে ব্যবহৃত হয়, এবং ., যা সাধারণত দশমিক পয়েন্ট হিসাবে ব্যবহৃত হয় (বা এর মতো নির্মাণে ডিলিমিটার হিসাবে some_struct.some_field)।

যে পাতা !%&:;?

পছন্দ করা !বা ?সম্ভবত প্রযুক্তিগত অসুবিধা না ঘটায়, তবে তাদের ইংরেজি অর্থ প্রোগ্রামটিকে ভুল মেজাজ দেয়।

print(x)?  # Yes, you should.
           # It's an IMPERATIVE language; stop questioning my commands.
print(x)!  # OK!  You don't have to shout!

&এক বিবৃতিতে বিভাজক (না টারমিনেটর) নামে আরো একটি যুক্তিসম্মত পছন্দ হতে কারণ

do_thing_a() &
do_thing_b()

জিনিস এ এবং তারপরে বি বি করার জন্য একটি কমান্ড হিসাবে পড়া যেতে পারে তবে বেশিরভাগ &অপারেটর সহ ভাষা এটি লজিকাল বা বিটওয়াইস এবং পরিবর্তে ব্যবহার করে।

%সাইন মত বিবৃতি বিভ্রান্তি কারণ হতে পারে interest_rate = 2.99%(যা পরিবর্তনশীল সেট হবে 2.99প্রত্যাশিত পরিবর্তে 0.0299)। অবশ্যই, সুপরিচিত গাণিতিক অর্থ সিটিকে %অবশিষ্ট অপারেটর হিসাবে ব্যবহার করা থেকে বিরত রাখেনি।

যাতে যে পাতা :এবং ;

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

তবে ;এর ইংরেজি ব্যাকরণ রয়েছে; এটি একটি বাক্যটির মধ্যে পৃথক ধারা ব্যবহার করতে ব্যবহৃত হতে পারে।


3

আপনার শিরোনাম প্রশ্নের উত্তর দেওয়ার চেষ্টা করার পরিবর্তে, আমি মনে করি আপনার অন্তর্নিহিত প্রশ্নে ফোকাস করা ভাল:

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

আপনি যদি প্রোগ্রামিং ভাষার নকশা এবং বাস্তবায়নের ইতিহাস সম্পর্কে জানতে চান এবং প্রক্রিয়াটি সম্পর্কে আরও অন্তর্দৃষ্টি অর্জন করতে চান তবে প্রোগ্রামিং ভাষা সম্মেলনের ইতিহাসের কার্যক্রম শুরু করার জন্য খুব ভাল জায়গা to (আমি মনে করি যদিও এই প্রক্রিয়াটি অ্যাক্সেস করতে সক্ষম হওয়ার জন্য আপনার একটি এসিএম সদস্যতার প্রয়োজন হবে))

কেন অনেক প্রোগ্রামিং ভাষায় বিবৃতি সেমিকোলন দ্বারা সমাপ্ত হয়? কোনও কারণ আছে যে একটি অর্ধ-কোলন একটি পৃথক চিহ্নের পরিবর্তে লাইন টার্মিনেটর হিসাবে নির্বাচিত হয়েছিল?

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

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


2

এটি দৃশ্যমানতার বিষয়ে।

প্রাথমিক বিবৃতি বিভাজকরা ছিল '।' কোবল এবং নতুন লাইনের মতো, গাড়িতে করে ফরটারনে ফিরে আসে।

সিআর সীমাবদ্ধ প্রমাণিত করেছে যে এটি বেশ কয়েকটি লাইনে একটি বিবৃতি প্রবাহিত করা শক্ত করে তোলে।

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

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


1

এটি আমার বোঝার কারণ ছিল যে এটি বেছে নেওয়া হয়েছিল কারণ একটি গাড়িবহর-ফেরত / নতুন-লাইন ব্যতীত স্পষ্ট বক্তব্য-টার্মিনেটরের প্রয়োজন ছিল। ৮০-কলামের পর্দার দিনগুলিতে, একাধিক লাইন জুড়ে কোড র্যাপের একক লাইনে থাকা যথেষ্ট সাধারণ যে স্টেটমেন্ট টার্মিনেটরের জন্য \ r বা using n ব্যবহার করা কাজ করবে না।

সেমিকোলনগুলি কেবল সুবিধাজনক ছিল কারণ তারা যুক্তি / গণিতের বিবৃতিতে ব্যবহৃত হয় না। যেমন, তারা কোনও উল্লেখযোগ্য পরিমাণে বিবৃতিগুলির আসল সামগ্রীর সাথে বিরোধ করে না।


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


3
অন্ধকার যুগে ফিরে, কোনও "80-কলামের পর্দা" ছিল না। এখানে ৮০-কলামের পাঞ্চ কার্ড ছিল এবং সেখানে বিভিন্ন সংখ্যক কলাম সহ প্রিন্টার ছিল। (প্রায় 130 বা তার বেশি সাধারণ ছিল)) কার্ডের শেষে ফরটারান বিবৃতি বাতিল করে, তবে ধারাবাহিকতা কার্ডগুলিকে বিবৃতি অবিরত করার অনুমতি দেওয়া হয়। ধারাবাহিকতা কার্ডগুলি কার্ডের 6 কলামে খোঁচা করা একটি অক্ষর দ্বারা চিহ্নিত করা হয়েছিল। (যে কোনও চরিত্রই কাজ করবে local স্থানীয় সম্মেলনের উপর নির্ভর করে আপনি সাধারণত একটি + চিহ্ন বা একটি একক সংখ্যা দেখতে পাবেন, একাধিক ধারাবাহিকতার জন্য অঙ্কগুলি অঙ্ক করে।)
জন আর। স্ট্রোহম

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

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

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

1
@ জিগাট্রন: ফরট্রান একই কম্পিউটারে চলেছিল এবং এটি পৃথক স্টেটমেন্টগুলিতে নিউলাইনগুলি ব্যবহার করে (মাল্টি-লাইন স্টেটমেন্টের জন্য বিশেষ সিনট্যাক্স সহ)।
dan04

0

এখানে দুটি প্রশ্ন রয়েছে: ALGOL কেন সেমিকোলন পেয়েছে এবং অন্যান্য ভাষা কেন এর পরে চলেছে।

প্রথম প্রশ্নের উত্তর ইতিমধ্যে এখানে বিভিন্নভাবে দেওয়া হয়েছে।

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


0

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

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

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

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

ইনবি 4: না, এটি কোনও historicalতিহাসিক বিবরণ নয়। আমার কাছে কোনও প্রমাণ নেই যে এটিই সেমিকোলনগুলি জীবনে আসার আসল উপায়। এটি সম্ভবত আমি কীভাবে কল্পনা করেছি এটি সম্ভবত ঘটেছে।


-1

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

এবং চয়ন করার জন্য প্রথম ভাষা বিবেচনা করে, আপনাকে বিকল্পগুলি কী তা বিবেচনা করতে হবে। কোনও ভাষা নকশা করার সময় আপনি প্রয়োজনীয় অক্ষরগুলি উপলব্ধ থাকতে চান এবং অক্ষর সেটগুলি এই সময়ে 6 টি বিটকে কোড করা হয়েছিল, প্রায়শই কিছু নিদর্শন সংরক্ষিত থাকে, প্রায়শই কিছু অক্ষর দৃ firm়ভাবে সংজ্ঞায়িত হয় না (এটি পরবর্তী ঘটনার জন্য, এটি সম্পর্কে চিন্তা করুন আইএসও -৪66 এর জাতীয় রূপগুলি - মার্কিন রূপটি ASCII নামে ভালই জানে - যা "সাধারণ" অক্ষরের যেমন কোডগুলি পুনরায় ব্যবহার করে [, #বা $, এবং এমন প্রসঙ্গে এমন প্রভাব দেখায় যেখানে অনেকগুলি কোড পজিশনের অর্ধেক থাকে এর অর্ধেকেরও বেশি সংরক্ষণ করে চিঠি এবং অঙ্কগুলি)।

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


-1

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

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

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

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