ডোনাল্ড নথ কেন সমাবেশের ভাষা ব্যবহার করে টিএওসিপি লেখেন?


20

আমি সমাবেশের ভাষা ব্যবহার করে ঘৃণা করি না, যেহেতু আমি আমার ওএস কোর্সে কিছু লিখেছি। তবে স্পষ্টতই, সমাবেশ ভাষার বিমূর্ততা নেই, আপনাকে বিশদগুলিতে আরও মনোযোগ দিতে হবে।

টিএওসিপি লেখার জন্য কি সমাবেশের ভাষাটি প্রয়োজনীয়?


6
শয়তান কোথায় তা বিশদ।
blrfl

5
@ ব্লারফ্লায় আমি শয়তানকে বিশ্বাস করি না। (যদিও আমি কাঁপুন ... বিস্তারিতগুলিতে বিশ্বাস করি )
জিমি হোফা ২

3
টিএওসিপিটির প্রথম খণ্ড ১৯৮৮ সালে প্রকাশিত হয়েছিল। যদিও উচ্চ স্তরের ভাষাগুলি অবশ্যই বিদ্যমান ছিল, তখন হাতে হাতে লেখা এসেমব্লার তখন অনেক গুরুত্বপূর্ণ ছিল এবং মেইনফ্রেমগুলিতে কম্পিউটিং সংস্থানগুলি তখন 1980 এর দশকের 8-বিট মাইক্রো হিসাবে একই ক্রম হতে পারে। নথ একবারে গোটো রাখার জন্যও বেশ গুরুত্বের সাথে যুক্তি দেখিয়েছিলেন কারণ কিছু অ্যালগরিদম কিছু অদক্ষতা ছাড়াই নেস্টেড কন্ট্রোল ফ্লো স্ট্রাকচার ব্যবহার করে লেখা যায় না। তিনি আসলে আইআইআরসি এরপরেও অকাল অপটিমাইজেশনের পক্ষে ছিলেন না, অপ্টিমাইজেশনের প্রয়োজনের জন্য তিনি কেবল বিকল্পটি চেয়েছিলেন।
স্টিভ 314

3
@ জিমিহোফা: ওহ, ভাল, আপনার ক্ষেত্রে, ডি ভিল কোথায় রয়েছে তার বিশদটি ।
blrfl

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

উত্তর:


22

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

তিনি যদি অন্য প্রোগ্রামিং ভাষা ব্যবহার করতেন (কোনটি, আপনি কি মনে করেন যে এটি উপযোগী হত?), এনপিএল বলুন (নিফটি প্রোগ্রামিং ল্যাঙ্গুয়েজ), তাকে ম্যাক্স ব্যবহারের ধারণাটি ত্যাগ করতে হবে বা একটি প্রবর্তন করতে হবে কিছু কম্পিউটারের পছন্দের সংকলক (যা তিনি ভোল 1 এ যা করছেন তার থেকে অনেক জটিল বিষয়)। সেভাবে এটি টিওওসিপি না হয়ে টিওএনপিএলপি হয়ে উঠত। প্রথমটি এই জাতীয় পছন্দ থেকে স্বতন্ত্র এবং এই কারণেই প্রোগ্রামিং সম্পর্কে কয়েকটি বই কখনই সময় কাটবে না। দ্বিতীয়টি সম্ভবত এখনই ভুলে যাবে ...

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


নোট যে "কম্পাইলার কৌশল" আনুষ্ঠানিকভাবে অভিক্ষিপ্ত ভলিউম 7. এটা বিষয় হতে পারে এখনো হয়ে থাকে, কিন্তু আমার মনে হয় সবাই যে Knuth পর্যন্ত তিনি একটি কম্পাইলার প্রকাশ শুরু করার জন্য ছিল অপেক্ষা করেননি আনন্দিত হয়।
কিলিয়ান ফুট

@ কিলিয়ানফথ হ্যাঁ আমি জানি। তবে আমি প্রত্যাশা করতাম যে এই জাতীয় বইতে কৃত্রিম প্রোগ্রামিং ভাষা ব্যবহার করা হবে। সম্ভবত কোনও এমএমআইএক্সকে লক্ষ্য করা (দ্বিতীয় এম টাইপো :-) ভিত্তিক কম্পিউটার নয়। এবং খণ্ডের ইটিএ 5 2020 ....
টমাস

56

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

টিএওসিপি, খণ্ড 1, "মৌলিক অ্যালগরিদম", 1 ম সংস্করণ, 1968 সালে প্রথম মুদ্রিত হয়েছিল That's এটি 45 বছর আগে ago এর আগে নুথ সিরিজটির পরিকল্পনা শুরু করেছিলেন।

রেফারেন্সের জন্য: ইন্টেল 8086 প্রথম দশ বছর পরে 1978 সালে হাজির হয়েছিল। পাস্কাল ভাষাটি ১৯AL১ সালে প্রথম প্রকাশিত হয়েছিল; ভাষার দ্বিতীয় সংস্করণ সম্পর্কে জেনসন ও রাইথ বইটি ১৯ 197৪ সালে প্রকাশিত হয়েছিল C সি এর প্রাথমিক বিকাশ ছিল ১৯69 -19 -১৯73৩: কে অ্যান্ড আর ১৯ 197৮ সালে প্রকাশিত হয়েছিল।

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

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

এখন আমার লন নামবো!


নুথ 1960 সালে একটি ALGOL সংকলক বাস্তবায়ন করেছিলেন এবং ALGOLটি অ্যালগরিদম প্রকাশের জন্য উপযুক্ত হওয়ার উদ্দেশ্যে হয়েছিল, সুতরাং আমি মনে করি না এটি সত্যিই প্রশ্নের উত্তর দেয়।
পিটার টেলর

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

1
এ কারণেই আমার স্কুল একটি historicalতিহাসিক কম্পিউটিং ক্লাস অফার করেছিল যেখানে আপনি আল্টায়ার এবং কিছু পিডিপি প্রোগ্রাম করতে পারেন।
রিগ

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

6
মজাদার অভিজাত পাশাপাশি প্রাসঙ্গিক তথ্যের কারণে +1।
লুসার droog

43

প্রবন্ধটিতে নুথ তার যুক্তি নিয়ে আলোচনা করেছেন। আমি কয়েক বিট এবং টুকরা উদ্ধৃত করব:

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

  1. বীজগণিতীয় ভাষাগুলি এখানে বিবেচিত সংখ্যাসূচক সমস্যার চেয়ে সংখ্যাগত সমস্যার পক্ষে বেশি উপযুক্ত to [...]
  2. ... একটি মেশিন-ভিত্তিক ভাষায় লিখে, প্রোগ্রামার অনেক বেশি দক্ষ পদ্ধতি ব্যবহার করতে ঝোঁক করবে; এটি বাস্তবের অনেক কাছাকাছি।
  3. আমাদের প্রয়োজনীয় প্রোগ্রামগুলি হ'ল কয়েকটি ব্যতিক্রম ব্যতীত ছোট ...
  4. কম্পিউটারে আকস্মিকভাবে আগ্রহী এমন ব্যক্তিকে মেশিনের ভাষায় ভালভাবে স্কুল করা উচিত ...
  5. কিছু মেশিন ভাষা যেভাবেই প্রয়োজন হবে ...

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

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


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

2
আমি কিভাবে পয়েন্ট 4 upvote করতে পারি ??
জাভিয়ের

5
@ জাভিয়ার একটি অনুলিপি পাবেন এবং মার্জিনে +1 লিখুন।
লুসার droog

29

Knuth তার আপডেট করেছে যুক্তিপূর্ণ পাশাপাশি:

মেশিনের ভাষা কেন?

অনেক পাঠক নিঃসন্দেহে ভাবছেন, `Kn নুথ কেবলমাত্র উচ্চ-স্তরের প্রোগ্রামিং ভাষার প্রতি আটকে থাকার পরিবর্তে অন্য কোনও মেশিন দ্বারা এমআইএক্সকে কেন প্রতিস্থাপন করবেন? আজকাল খুব সহজেই কেউ এসেমব্লার ব্যবহার করেন '' '

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

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

তদুপরি, আমি যদি উচ্চ-স্তরের ভাষা ব্যবহার করি তবে এটি কোন ভাষা হওয়া উচিত? 1960 এর দশকে আমি সম্ভবত আলগোল ডাব্লু বেছে নিয়েছি; 1970নসত্তর দশকে আমাকে তখন পাস্কাল ব্যবহার করে আমার বইগুলি আবার লিখতে হত; ১৯৮০ এর দশকে, আমি অবশ্যই সমস্ত কিছু সিতে পরিবর্তন করতাম; 1990 এর দশকে, আমাকে সি ++ এবং তার পরে সম্ভবত জাভাতে যেতে হবে। 2000 এর দশকে, অন্য একটি ভাষা অবশ্যই সন্দেহ করবে ডি রিগার। ভাষাগুলি ফ্যাশনের অভ্যন্তরে চলে যাওয়ার সাথে সাথে আমার বইগুলি পুনরায় লেখার জন্য আমি সময় দিতে পারি না; ভাষাগুলি আমার বইগুলির বিন্দু নয়, মূল বিষয়টি আপনি নিজের পছন্দসই ভাষায় কী করতে পারেন তা নয়। আমার বইগুলি নিরবধি সত্যকে কেন্দ্র করে।

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

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

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