প্রোগ্রামিং ভাষা, বিশেষত সি, কেন কোঁকড়া ধনুর্বন্ধনী ব্যবহার করে স্কোয়ারগুলি নয়?


96

"সি-স্টাইল ভাষা" এর সংজ্ঞাটি ব্যবহারিকভাবে নীচে "কোঁকড়ানো ধনুর্বন্ধনী ব্যবহার করে ( {}") ব্যবহার করা যেতে পারে ified আমরা কেন সেই নির্দিষ্ট চরিত্রটি ব্যবহার করব (এবং কেন আরও যুক্তিসঙ্গত কিছু না, যেমন [], যার জন্য কমপক্ষে মার্কিন কীবোর্ডে শিফট কী প্রয়োজন হয় না)?

এই ধনুর্বন্ধনী থেকে আসা প্রোগ্রামার উত্পাদনশীলতার কোনও আসল উপকার আছে কি, বা নতুন ভাষা ডিজাইনারদের বিকল্পগুলি অনুসন্ধান করা উচিত (অর্থাত পাইথনের পিছনের লোকেরা)?

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

মোটা কথা বলতে গেলে সি-পারিবারিক ভাষা হ'ল সি-এর মতো ব্লক সিনট্যাক্স ব্যবহার করে (ব্লকটি শুরু করতে এবং শেষ করতে কোঁকড়া ধনুর্বন্ধনী সহ ) ...


35
একমাত্র ব্যক্তি যিনি এর উত্তর দিতে পারেন তিনি হলেন ডেনিস রিচি এবং তিনি মারা গেছেন। একটি যুক্তিসঙ্গত অনুমান যে [] ইতিমধ্যে অ্যারে জন্য নেওয়া হয়েছিল।
ডার্ক হোলসোপ্পল

2
পছন্দ করেছেন বিরক্তি প্রকাশ করতে ব্যবহৃত। এছাড়াও: এমন কিছু বিষয়ে দুটি ডাউনভোট যা সম্পর্কে সত্যই আমি আগ্রহী? ধন্যবাদ ছেলেরা ....
সোমকিটটেনস

1
এই মেটা প্রশ্নের এই প্রশ্নটি সম্পর্কে দয়া করে আলোচনা চালিয়ে যান ।
টমাস ওয়েন্স

2
আমি এই পোস্টটি আনলক করেছি। মেটা প্রশ্নের যথাযথতা সম্পর্কে প্রশ্ন এবং আলোচনা সম্পর্কে কোনও মন্তব্য রাখুন ।
থমাস Owens

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

উত্তর:


102

সি এর দুটি প্রধান প্রভাব ছিল ভাষার আলগোল পরিবার (আলগোল 60 এবং আলগোল 68) এবং বিসিপিএল (যার থেকে সি এর নাম নেয়)।

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

Http://www.princeton.edu/~achaney/tmve/wiki100k/docs/BCPL.html থেকে

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

Http://progopedia.com/language/bcpl/ থেকে

বিসিপিএল-এর মধ্যে একজন প্রায়শই কোঁকড়ানো ধনুর্বন্ধনী দেখতে পান তবে সবসময় তা নয়। এটি তখনকার কীবোর্ডগুলির সীমাবদ্ধতা ছিল। চরিত্রগুলি $(এবং $)অভিধানের সমতুল্য {এবং এর সমতুল্য ছিল }ডিগ্রাফ এবং ট্রাইগ্রাফগুলি সিতে বজায় ছিল (যদিও কোঁকড়া ধনুর্বন্ধনী প্রতিস্থাপনের জন্য আলাদা সেট - ??<এবং ??>)।

কোঁকড়া ধনুর্বন্ধনী ব্যবহার আরও বি পরিমার্জন করা হয়েছিল (যা সি এর আগে)।

থেকে বি ব্যবহারকারীদের রেফারেন্স কেন থম্পসন দ্বারা:

/* The following function will print a non-negative number, n, to
  the base b, where 2<=b<=10,  This routine uses the fact that
  in the ASCII character set, the digits 0 to 9 have sequential
  code values.  */

printn(n,b) {
        extern putchar;
        auto a;

        if(a=n/b) /* assignment, not test for equality */
                printn(a, b); /* recursive */
        putchar(n%b + '0');
}

আলগোলের জন্য beginএবং এর endমধ্যে কোঁকড়ানো ধনুর্বন্ধনী সংক্ষিপ্ত হাত হিসাবে ব্যবহৃত হয়েছিল এমন ইঙ্গিত রয়েছে ।

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

Http://www.bobbemer.com / BRACES.HTM থেকে


বর্গাকার বন্ধনীর ব্যবহার (প্রশ্নে প্রস্তাবিত প্রতিস্থাপন হিসাবে) আরও পিছনে চলে যায়। উল্লিখিত হিসাবে, আলগোল পরিবার সি-কে প্রভাবিত করেছিল আলগোল 60 এবং 68 এর মধ্যে (সি 1972 সালে লেখা হয়েছিল এবং 1966 সালে বিসিপিএল), বর্গাকার বন্ধনীটি একটি সূচককে অ্যারে বা ম্যাট্রিক্সে মনোনীত করতে ব্যবহৃত হত।

BEGIN
  FILE F(KIND=REMOTE);
  EBCDIC ARRAY E[0:11];
  REPLACE E BY "HELLO WORLD!";
  WRITE(F, *, E);
END.

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


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

আরও দেখুন: স্ট্যাক ওভারফ্লো কী এমন স্ট্যাটিস্টিকাল স্টাডি রয়েছে যা ইঙ্গিত দেয় যে পাইথন "আরও উত্পাদনশীল"?

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

এর চেয়ে ভাল তুলনা হবে {}এবং begin/ endযেটি ছিল সেই দিনের বিকল্পগুলি (অনুভূমিক স্থানটি মূল্যবান ছিল)। অনেক রাইথ ল্যাঙ্গুয়েজগুলি একটি beginএবং endস্টাইল (আলগোল (উপরে উল্লিখিত), পাস্কেল (অনেকের সাথে পরিচিত) এবং মোডুলা পরিবারের উপর ভিত্তি করে ছিল ।

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

কেন পাস্কাল আমার প্রিয় প্রোগ্রামিং ভাষা নয় From

সি এবং রেটফোর প্রোগ্রামাররা begin এবং} এর তুলনায় 'শুরু' এবং 'শেষ' বাল্কি আবিষ্কার করে}

যা বলা যায় তার সম্পর্কে যা তার পরিচিতি এবং পছন্দ।


14
এখন এখানের প্রত্যেকে কাজ করার পরিবর্তে বিসিপিএল শিখছে :)
36

জন্য trigraphs (1989 আইএসও সি মান চালু) {এবং }হয় ??<এবং ??>। Digraphs (1995 সংশোধনী দ্বারা সূচিত) হয় <%এবং %>। ত্রিগ্রাফগুলি খুব প্রারম্ভিক অনুবাদ পর্যায়ে সমস্ত প্রসঙ্গে প্রসারিত হয়। ডিগ্রাফগুলি টোকেন এবং স্ট্রিং আক্ষরিক, চরিত্রের ধ্রুবক বা মন্তব্যে প্রসারিত হয় না।
কিথ থম্পসন

সি-তে এর জন্য 1989-এর পূর্বে কিছু ছিল (এটিতে একটি তারিখ পেতে আমাকে আমার প্রথম সংস্করণ বইটি খনন করতে হবে)। সমস্ত EBCDIC কোড পৃষ্ঠাগুলিতে তাদের মধ্যে কোঁকড়ানো ধনুর্বন্ধনী (বা স্কোয়ার বন্ধনী) ছিল না এবং প্রাথমিক সি সংকলকগুলিতে এটির জন্য বিধান ছিল।

@ নিউভিলিডিএনজেড বিসিপিএল ১৯66 in সালে কোঁকড়া ধনুর্বন্ধনী ব্যবহার করেছে Where টেরিনারি অপারেটর এমন একটি জিনিস যা আমি আগ্রহী এবং এটি সিপিএলে ফিরে পেয়েছি (১৯63৩) (বিসিপিএলের পূর্বসূর) যা লিস্পের (১৯৫৮) ধারণা ধার নিয়েছিল।

1968: Algol68 অনুমতি দেয় বৃত্তাকার একজন সংক্ষেপে বন্ধনী (~) শুরু ~ শেষ সাহসী প্রতীক ব্লক। এগুলিকে সংক্ষিপ্ত চিহ্ন, সিএফ ডাব্লুপি বলা হয় : অ্যালগল 68 বোল্ড প্রতীক , এটি কোডের ব্লকগুলিকে ঠিক মতপ্রকাশের মতো আচরণ করতে দেয় । A68 এছাড়াও আছে সংক্ষিপ্ত সি এর মত shorthands ? তিন অপারেটর: যেমন x:=(c|s1|s2)পরিবর্তে সি এর x=c?s1|s2। একইভাবে এটি যদি & কেস স্টেটমেন্টে প্রযোজ্য । ¢ বিটিডাব্লু: এ 68 হ'ল শেলটি এ্যাসাকফাই পেয়েছে সেখান থেকে ¢
নেভিলিডিএনজেড

24

স্কোয়ার ধনুর্বন্ধনী []টাইপ করা সহজ, যখন থেকে আইবিএম 2741 টার্মিনালটি "মাল্টিক্সে ব্যাপকভাবে ব্যবহৃত হয়েছিল" ওএস, যার ফলশ্রুতিতে দেব দলের সদস্য হিসাবে সি ভাষা নির্মাতাদের মধ্যে একজন ছিলেন ডেনিস রিচি ।

http://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/APL-keybd2.svg/600px-APL-keybd2.svg.png

আইবিএম 2741 লেআউটে কোঁকড়ানো ধনুর্বন্ধনীগুলির অনুপস্থিতিতে নোট করুন !

সি-তে স্কোয়ার ব্রেসেসগুলি "নেওয়া" হয় কারণ এগুলি অ্যারে এবং পয়েন্টারগুলির জন্য ব্যবহৃত হয় । ভাষা ডিজাইনাররা যদি কোড ব্লকের চেয়ে আরও বেশি ঘন ঘন অ্যারে এবং পয়েন্টারগুলি বেশি গুরুত্বপূর্ণ / ব্যবহৃত হওয়ার প্রত্যাশা করেন (যা তাদের পাশে যুক্তিসঙ্গত অনুমান হিসাবে মনে হয়, নীচে কোডিং শৈলীর historicতিহাসিক প্রসঙ্গে আরও), এর অর্থ কোঁকড়া ধনুর্বন্ধনী "কম গুরুত্বপূর্ণ" " বাক্য গঠন.

রিচির সি ভাষার উন্নয়নের নিবন্ধে অ্যারেগুলির গুরুত্ব বেশ স্পষ্ট । "সি প্রোগ্রামগুলিতে পয়েন্টারগুলির বিস্তৃতি" সম্পর্কে একটি স্পষ্টভাবে বিবৃত ধারণাও রয়েছে ।

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


সি ভাষা তৈরির সময় contextতিহাসিক প্রসঙ্গ এবং কোডিং শৈলীর আরও বোঝার জন্য, আমাদের বিবেচনা করা উচিত যে "সি এর উত্সটি ইউনিক্সের বিকাশের সাথে ঘনিষ্ঠভাবে জড়িত" এবং বিশেষত, পিডিপিতে ওএসকে পোর্ট করে- 11 "সি এর প্রাথমিক সংস্করণ বিকাশের দিকে পরিচালিত করেছে" ( উদ্ধৃতি উত্স )। উইকিপিডিয়া অনুসারে , "১৯ 197২ সালে ইউনিক্সকে সি প্রোগ্রামিং ভাষায় নতুন করে লেখা হয়েছিল"

ইউনিক্সের বিভিন্ন পুরানো সংস্করণের উত্স কোড অনলাইনে উপলব্ধ, যেমন দ্য ইউনিক্স ট্রি সাইটে। সেখানে উপস্থাপিত বিভিন্ন সংস্করণগুলির মধ্যে, সর্বাধিক প্রাসঙ্গিক বলে মনে হচ্ছে দ্বিতীয় সংস্করণ ইউনিক্সের 1972-06 তারিখ:

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

সময়ের সাধারণ কোডিং শৈলীর ধারণা পেতে আপনি দ্বিতীয় সংস্করণ ইউনিক্স (ভি 2) পৃষ্ঠা থেকে সি উত্স কোডটি ব্রাউজ এবং অধ্যয়ন করতে পারেন ।

একটি বিশিষ্ট উদাহরণ যা এই ধারণাকে সমর্থন করে যে প্রোগ্রামাররা তখন সহজেই স্কোয়ার বন্ধনী টাইপ করতে সক্ষম হয়েছিলেন V2 / c / ncc.c উত্স কোডে পাওয়া যায় :

/* C command */

main(argc, argv)
char argv[][]; {
    extern callsys, printf, unlink, link, nodup;
    extern getsuf, setsuf, copy;
    extern tsp;
    extern tmp0, tmp1, tmp2, tmp3;
    char tmp0[], tmp1[], tmp2[], tmp3[];
    char glotch[100][], clist[50][], llist[50][], ts[500];
    char tsp[], av[50][], t[];
    auto nc, nl, cflag, i, j, c;

    tmp0 = tmp1 = tmp2 = tmp3 = "//";
    tsp = ts;
    i = nc = nl = cflag = 0;
    while(++i < argc) {
        if(*argv[i] == '-' & argv[i][1]=='c')
            cflag++;
        else {
            t = copy(argv[i]);
            if((c=getsuf(t))=='c') {
                clist[nc++] = t;
                llist[nl++] = setsuf(copy(t));
            } else {
            if (nodup(llist, t))
                llist[nl++] = t;
            }
        }
    }
    if(nc==0)
        goto nocom;
    tmp0 = copy("/tmp/ctm0a");
    while((c=open(tmp0, 0))>=0) {
        close(c);
        tmp0[9]++;
    }
    while((creat(tmp0, 012))<0)
        tmp0[9]++;
    intr(delfil);
    (tmp1 = copy(tmp0))[8] = '1';
    (tmp2 = copy(tmp0))[8] = '2';
    (tmp3 = copy(tmp0))[8] = '3';
    i = 0;
    while(i<nc) {
        if (nc>1)
            printf("%s:\n", clist[i]);
        av[0] = "c0";
        av[1] = clist[i];
        av[2] = tmp1;
        av[3] = tmp2;
        av[4] = 0;
        if (callsys("/usr/lib/c0", av)) {
            cflag++;
            goto loop;
        }
        av[0] = "c1";
        av[1] = tmp1;
        av[2] = tmp2;
        av[3] = tmp3;
        av[4] = 0;
        if(callsys("/usr/lib/c1", av)) {
            cflag++;
            goto loop;
        }
        av[0] = "as";
        av[1] = "-";
        av[2] = tmp3;
        av[3] = 0;
        callsys("/bin/as", av);
        t = setsuf(clist[i]);
        unlink(t);
        if(link("a.out", t) | unlink("a.out")) {
            printf("move failed: %s\n", t);
            cflag++;
        }
loop:;
        i++;
    }
nocom:
    if (cflag==0 & nl!=0) {
        i = 0;
        av[0] = "ld";
        av[1] = "/usr/lib/crt0.o";
        j = 2;
        while(i<nl)
            av[j++] = llist[i++];
        av[j++] = "-lc";
        av[j++] = "-l";
        av[j++] = 0;
        callsys("/bin/ld", av);
    }
delfil:
    dexit();
}
dexit()
{
    extern tmp0, tmp1, tmp2, tmp3;

    unlink(tmp1);
    unlink(tmp2);
    unlink(tmp3);
    unlink(tmp0);
    exit();
}

getsuf(s)
char s[];
{
    extern exit, printf;
    auto c;
    char t, os[];

    c = 0;
    os = s;
    while(t = *s++)
        if (t=='/')
            c = 0;
        else
            c++;
    s =- 3;
    if (c<=8 & c>2 & *s++=='.' & *s=='c')
        return('c');
    return(0);
}

setsuf(s)
char s[];
{
    char os[];

    os = s;
    while(*s++);
    s[-2] = 'o';
    return(os);
}

callsys(f, v)
char f[], v[][]; {

    extern fork, execv, wait, printf;
    auto t, status;

    if ((t=fork())==0) {
        execv(f, v);
        printf("Can't find %s\n", f);
        exit(1);
    } else
        if (t == -1) {
            printf("Try again\n");
            return(1);
        }
    while(t!=wait(&status));
    if ((t=(status&0377)) != 0) {
        if (t!=9)       /* interrupt */
            printf("Fatal error in %s\n", f);
        dexit();
    }
    return((status>>8) & 0377);
}

copy(s)
char s[]; {
    extern tsp;
    char tsp[], otsp[];

    otsp = tsp;
    while(*tsp++ = *s++);
    return(otsp);
}

nodup(l, s)
char l[][], s[]; {

    char t[], os[], c;

    os = s;
    while(t = *l++) {
        s = os;
        while(c = *s++)
            if (c != *t++) goto ll;
        if (*t++ == '\0') return (0);
ll:;
    }
    return(1);
}

tsp;
tmp0;
tmp1;
tmp2;
tmp3;

এটি লক্ষণীয় আকর্ষণীয় যে লক্ষ্যযুক্ত ব্যবহারিক প্রয়োগগুলিতে ব্যবহারের উপর ভিত্তি করে ভাষা সিনট্যাক্স উপাদানগুলিকে বোঝাতে চরিত্রগুলি বাছাইয়ের ব্যবহারিক অনুপ্রেরণা এই ভয়ঙ্কর উত্তরে বর্ণিত হিসাবে জিপফের আইনের সাথে সাদৃশ্যপূর্ণ ...

ফ্রিকোয়েন্সি এবং দৈর্ঘ্যের মধ্যে পরিলক্ষিত সম্পর্ককে জিপফের আইন বলা হয়

... উপরের বিবৃতিতে দৈর্ঘ্যটি টাইপিংয়ের গতি হিসাবে / সাধারণীকরণ দ্বারা প্রতিস্থাপিত হয় only


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

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

3
@ গ্যাनेट: আধুনিক কীবোর্ডগুলিতে স্কোয়ার ধনুর্বন্ধনী টাইপ করা সহজ, এটি কি ইউনিক্স এবং সি প্রথম কার্যকর হওয়ার সময় আশেপাশে থাকা কীবোর্ডগুলির সাথে প্রযোজ্য? তারা একই কীবোর্ডটি ব্যবহার করছে, বা তারা ধরে নিয়েছে যে অন্যান্য কীবোর্ডগুলি তাদের কীবোর্ডগুলির মতো হবে, বা তারা ভাবেন যে টাইপিংয়ের গতি একটি চরিত্রের দ্বারা অনুকূলকরণের উপযুক্ত হবে I
মাইকেল শ

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

1
@gnat FWIW, grep -Foআমাকে *.cসিপিথন সোর্স কোডের ফাইলগুলি বলছে (Rev. 4b42d7f288c5 কারণ এটি আমার হাতে রয়েছে), যার মধ্যে লিবিফি অন্তর্ভুক্ত রয়েছে, এতে 39511 {(39508 {, দু'টি কেন বন্ধনী বন্ধ করা হয়নি) রয়েছে, তবে কেবল 13718 [(13702) [)। স্ট্রিংগুলিতে এবং এই প্রশ্নের সাথে সম্পর্কিত না হওয়া প্রসঙ্গে ঘটনাগুলি গণনা করা হচ্ছে, সুতরাং কোড বেইজটি প্রতিনিধিত্বমূলক নাও হতে পারে আমরা এড়িয়ে গেলেও এটি সত্যই সঠিক নয় (নোট করুন যে এই পক্ষপাত উভয় দিকেই যেতে পারে)। এখনও, 2.8 এর একটি ফ্যাক্টর?

1

সি (এবং পরবর্তীকালে সি ++ এবং সি #) এর ব্র্যাকিং শৈলীটি তার পূর্বসূরি বি থেকে উত্তরাধিকার সূত্রে পেয়েছে , যা কেন টম্পসন লিখেছিলেন (ডেনিস রিচি এর অবদানের সাথে) ১৯69৯ সালে।

কেন থম্পসনের ( উইকিপিডিয়া মাধ্যমে ) বি এর ব্যবহারকারীদের রেফারেন্স থেকে এই উদাহরণটি পাওয়া যায় :

/* The following function will print a non-negative number, n, to
   the base b, where 2<=b<=10,  This routine uses the fact that
   in the ASCII character set, the digits 0 to 9 have sequential
   code values.  */

printn(n,b) {
        extern putchar;
        auto a;

        if(a=n/b) /* assignment, not test for equality */
                printn(a, b); /* recursive */
        putchar(n%b + '0');
}

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

GET "LIBHDR"

LET START() = VALOF $(
        FOR I = 1 TO 5 DO
                WRITEF("%N! = %I4*N", I, FACT(I))
        RESULTIS 0
)$

AND FACT(N) = N = 0 -> 1, N * FACT(N - 1)

বি এবং পরবর্তী ভাষাগুলিতে "{...}" ব্যবহৃত কোঁকড়া ধনুর্বন্ধনী হ'ল বিসিপিএল "$ (...) $" এর মূল যৌগিক ব্রেস শৈলীর উপরে কেন থম্পসন তৈরি একটি উন্নতি।


1
নং মনে হচ্ছে যে বব বামার ( এন.ইউইকিপিডিয়া. org / উইকি / বোবি_বিমার ) এর জন্য দায়ী - "... আপনি প্রস্তাব করেছিলেন যে সেগুলি আলগোলের 'আর্ট' এবং 'শেষ' কীওয়ার্ডের জায়গায় ব্যবহার করা যেতে পারে, যা হ'ল সেগুলি কীভাবে পরে সি ভাষায় ব্যবহৃত হয়েছিল। " ( bobbemer.com / BRACES.HTM থেকে )
শেচপুরিন

1
$( ... $)বিন্যাস সমতূল্য { ... }BCPL মধ্যে lexer মধ্যে, যেমনটা ??< ... ??>সমতূল্য থেকে { ... }সি দুটি শৈলী মধ্যে উন্নতি কীবোর্ড হার্ডওয়্যার হয় - না ভাষা।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.