ইউনিক্স / পসিক্স সিস্টেম কল নামকরণ কেন এত অযৌক্তিক?


43

কি ধরনের untelling সিস্টেম কল নাম মত ব্যবহার করতে কারণ নেই timeএবং creatপরিবর্তে getCurrentTimeSecsএবং createFileবা, ইউনিক্স উপর হয়তো আরো উপযুক্ত get_current_time_secsএবং create_file। যা আমাকে পরবর্তী পয়েন্টে নিয়ে আসে: কেন কেউ cfsetospeedউটের কেস ছাড়া বা কমপক্ষে আন্ডারস্কোর ছাড়া এমন কিছু চায় যাতে এটি পাঠযোগ্য হয়? অবশ্যই কলগুলিতে আরও অক্ষর থাকবে তবে আমরা সবাই জানি যে কোডের পাঠযোগ্যতা আরও গুরুত্বপূর্ণ?


42
কারণ এগুলি হাঙ্গেরীয় স্বরলিপি, উটের কেস, সাপের কেস এবং এর মতো কয়েক বছর আগে আবিষ্কার করা হয়েছিল fashion এছাড়াও কারণ এরপরে সংকলকগুলির খুব কম সংস্থান ছিল এবং সনাক্তকারী নামগুলি (আইআইআরসি) 8 টি অক্ষরের মধ্যে সীমাবদ্ধ ছিল।
lcd047

3
@ ফ্রেসনেল নিশ্চিত না যে আপনি ফাইলের নাম এবং ভেরিয়েবল আইডিগুলির মধ্যে কী সম্পর্ক দেখেন তবে হ্যাঁ, আমি 8, 12 এবং 14 এর মধ্যে দ্বিধা বোধ করছি vari ভেরিয়েবল আইডিগুলির জন্য সীমাও 14 ছিল Maybe এটি অবশ্যই 256+ ছিল না। স্বীকৃতি হিসাবে: দয়া করে "সর্বদা" সংজ্ঞায়িত করুন। আরমিনিয়াস কি ক্যামেলকেস শব্দ ব্যবহার করেছেন ? হয়তো না. আফয়ার, হাঙ্গেরিয়ান স্বরলিপিটি 1990 এর দশকের গোড়ার দিকে উইন্ডোজের জন্য চালু হয়েছিল। উট কেস এবং স্নেক_কেস পরবর্তীকালের বিভিন্নতা ছিল। উভয় অবশ্যই এর আগে ব্যবহৃত হয়েছিল। আমি যা বলছি তা হ'ল তারা 1990 এর দশকের মাঝামাঝি সময়ে জনপ্রিয় হয়ে উঠেছে
lcd047

6
@ ফ্রেসনেল: নোট করুন আপনার লিঙ্কটি প্রথম ইউনিক্স ফাইল সিস্টেমের সীমাবদ্ধতা সম্পর্কে কথা বলে । যখন থম্পসন, রিচি এবং অন্যান্য। সেটা নকশা ইউনিক্স, তারা ছিল বুটস্ট্র্যাপ মেশিনে ইউনিক্স যে ইউনিক্স এখনো চালানো হয়নি সম্ভবত আরও বেশি সীমাবদ্ধ পরিবেশে, অর্থাত্।
দেবসোলার

11
আপনি পাশাপাশি জিজ্ঞাসা করতে পারেন কেন তারা জার্মান ভাষায় লিখিত হয় না, কারণ এটি প্রায় নিকটতম প্রাকৃতিক ভাষার সান্নিধ্যের কথা যা জাভা প্রোগ্রামারদেরকে গ্রহণ করতে শিখিয়েছে এমন দীর্ঘ -কালীন বিপর্যয়ের জন্য আমি ভাবতে পারি ...
আর ..

12
আমি এরকম খুশি। কল্পনা করুন একটি কিভাবে ls -la | grepঅনুরূপ হবে: listAllHiddenAndNormalFiles() | globallySearchARegularExpressionAndPrint()
পৌয়া

উত্তর:


61

এটি সময়ের প্রযুক্তিগত বাধাগুলির কারণে। পসিক্স স্ট্যান্ডার্ডটি তৈরি করা হয়েছিল ১৯৮০ এর দশকে এবং ইউএনআইএক্সের সাথে উল্লেখ করা হয়েছিল, যা ১৯ 1970০ সালে জন্মগ্রহণ করেছিল that তখন বেশ কয়েকটি সি সংকলক সনাক্তকারীগুলির মধ্যে সীমাবদ্ধ ছিল যা or বা ৮ টি অক্ষর দীর্ঘ ছিল, ফলে পরিবর্তনশীল এবং ফাংশনের দৈর্ঘ্যের মানটি স্থির হয়েছিল নাম থাকবে না।

সম্পর্কিত প্রশ্নাবলী:


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

41
@ ফ্রেসনেল: তিনি ফাইলের আকার, লাইন সংখ্যা বা সিনট্যাক্স ট্রি গভীরতার বিষয়ে কথা বলছেন না। সি ল্যাঙ্গুয়েজ পুরানো সংস্করণ হয়নি না কম্পাইলার এবং linkers অভ্যন্তরীণ দুটো ঘটনার সঙ্গে অভিন্ন পরিচয় প্রথম 31 বেশী অক্ষর রাখার প্রয়োজন অথবা বাইরের শনাক্তকারী জন্য 6 টিরও বেশি । এইভাবে, get_current_date()এবং get_current_time()এগুলির কয়েকটি প্রাথমিক সরঞ্জামচেইন দ্বারা পৃথক করা যায়নি। কারণ হ'ল এই সিস্টেমগুলি কয়েকটি কিলোবাইটের ক্ষুদ্র পদচিহ্নগুলিতে কাজ করছিল ।
দেবসোলার

34
তবে আপনি ঠিক আছে creat()। কেন থম্পসনকে একবার জিজ্ঞাসা করা হয়েছিল যে তিনি ইউএনআইএক্স সিস্টেমটি নতুন করে ডিজাইন করছেন তবে তিনি আলাদাভাবে কী করবেন? তার জবাব: "আমি একটি ই দিয়ে সৃষ্টিশীল বানান করব।"
দেবসোলার

8
@ ফ্রেসনেল: কেবলমাত্র সীমাবদ্ধ মেমরি থাকা শক্ত সীমা নয়। সনাক্তকারীদের কেবলমাত্র সীমিত গ্যারান্টিযুক্ত সমর্থিত দৈর্ঘ্য হ'ল । যদি আপনি কেবল 6 টি গুরুত্বপূর্ণ চরিত্রের গ্যারান্টিযুক্ত হন তবে আপনি যদি আপনার লবণের জন্য মূল্যবান হন তবে এটিই কাজ করছেন।
দেবসোলার

6
FWIW, পুরানো ফোর্টরান মানগুলি 6 টি অক্ষরের সীমাবদ্ধ করে। এই বইটি থেকে : "এক সনাক্তকারী ছয় অক্ষরের ফোর্টরান নিয়মটি এই সত্য থেকে উদ্ভূত যে ছয়টি অক্ষর একটি আইবিএম 704 শব্দের মধ্যে উপস্থাপিত হতে পারে।" আমি সি এর পক্ষে কথা বলতে পারি না, তবে আমি কল্পনা করেছিলাম যে সীমাবদ্ধতার খুব মিল রয়েছে (বা সম্ভবত, অভিন্ন উত্স)
tpg2114

26

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

এর অর্থ এটি এমনকি 6-8 অক্ষরের সীমাতে থাকা সত্ত্বেও আপনি আপনার আদেশগুলি যতটা সম্ভব সংক্ষিপ্ত রাখার চেষ্টা করেছিলেন। এজন্য আপনার lsপরিবর্তে listএবং creatপরিবর্তে রয়েছে create। যে যুগের থেকে কোডের মত ভেরিয়েবল পূর্ণ a, xএবং iএবং অবশ্যই, - x2এবং বন্ধুদের। টাইপিং অনেক কাজ ছিল - আজকে আপনি টাইপিংয়ের listIndexচেয়ে কম "টাইপিং" এর চেয়ে কম ব্যবহার করেছেন i- এবং এটি এতটা ধীর হয় না (বিশেষত স্বতঃ-সমাপ্তির মতো অতিরিক্ত প্রযুক্তিগুলির সাথে)।

আসল প্রশ্নটি হল - এতগুলি ইউনিক্স প্রতিভা কেন এখনও পছন্দসই নয় তবুও কেন তারা বহাল থাকে?


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

11
@Benjoyo unRootlyLongNamed.Packaged.nonsensicalFunctionহয় কুশ্রী আমাকে, এবং আমি বরং নিশ্চিত কি এটা করে না হতে চাই man 2 timeএটা করতে কি মনে এ অনুমান করে।
মুরু

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

4
@ জোহানডাব্লুএইচএসমিথ নিশ্চিত যে কার্নেল মোড বিকাশকারীরা তাদের সিস্টেম এবং এর ডক্সগুলি জানতে পারবেন তবে সংক্ষিপ্ত এবং নাম না বলার কোনও কারণ নেই ।
বেনজয়ো

7
@ জোহানডাব্লুএইচএসমিথ একজন নিচু দেব হিসাবে যিনি কেবল কার্নেল ড্রাইভার লিখেছেন এবং অর্থপূর্ণ নাম পছন্দ করেন যা সংক্ষেপে পূর্ণ নয় আমাকে অসম্মতি জানাতে হবে। তবে এটি ঠিক আছে, কারণ যদি আপনি মূল গিট উত্স কোডটিতে উদাহরণস্বরূপ সন্ধান করেন তবে আপনি কমপক্ষে একটি কার্নেল দেব আমার সাথে একমত হবেন। যদি আপনি লিনাস বলুন যে তার যদিও get_Xবা remove_file_from_cache(আমি উত্থাপন পারে rmfc?) ডেভেলপারদের কার্নেলের অবাঞ্ছিত, দয়া করে এটি প্রকাশ্যে না - আমি চাই ভালবাসেন তার প্রতিক্রিয়া দেখতে।
ভু

22

অন্যান্য উত্তরগুলির পাশাপাশি, আমি এটি উল্লেখ করতে চাই যে ইউনিক্স মাল্টিক্স, সিটিএসএস এবং অন্যান্য সমসাময়িক অপারেটিং সিস্টেমগুলির প্রতিক্রিয়া হিসাবে বিকশিত হয়েছিল, যা তাদের নামকরণের কনভেনশন সম্পর্কে উল্লেখযোগ্যভাবে আরও ভার্জোজ ছিল। আপনি এই ওএসগুলির জন্য http://www.multician.org/devdoc.html এ অনুভূতি পেতে পারেন । উদাহরণস্বরূপ, http://www.multicians.org/mspm-bx-1-00.htmlchange_name কোনও ফাইলের নাম পরিবর্তনের জন্য আদেশ দেয় ; ইউনিক্স তুলনা করুন mv

এছাড়াও, খুব সংক্ষিপ্ত সিস্টেমের কল নামগুলি বজায় থাকার মূল কারণটি পিছনের সামঞ্জস্য। আপনি লক্ষ্য করবেন যে নতুন এপিআইগুলি আরও সুস্পষ্ট হয়ে থাকে; যেমন gettimeofdayএবং clock_gettimeপরিবর্তে ন্যায়বিচার time

(আজও লুপ ইনডেক্সের whateverIndexপরিবর্তে ব্যবহার করা আমার বইতে iএকটি স্বয়ংক্রিয় কোড-রিভিউ ব্যর্থতা ;-)


2
হ্যাঁ। যখন এলআইএসপি মেশিনগুলি ইউএনআইএক্স-কে প্রাক্কলিত করে তখন হার্ডওয়্যার ক্ষমতা সম্পর্কে প্রযুক্তিগত যুক্তি শুনে মজার বিষয়। অবশ্যই, ইউনিক্স মেশিনগুলি কিনতে সস্তা ছিল , তবে এটি প্রায়। রক্ষণাবেক্ষণ ব্যয় যুক্ত করা (যা অবশ্যই * নিক্স জমিতে গণনা করা হয় না) তারপরেও টেবিলগুলি ঘুরিয়ে দিয়েছে, তবে এটি কোনওভাবেই উত্সাহী যথেষ্ট তর্ক ছিল না। (এবং হ্যাঁ, i।? জরিমানা একটি সূচক যখন আপনি, বলুন, একটি বিন্যাস স্থানাঙ্ক ব্যবহার iterating হয় xএবং yকিছু পূরণবাচক ঢোঁড়ন বর্ণনামূলক হতে।?।)
Luaan

@ লুয়ান এলআইএসপি মেশিনগুলি ইউনিক্সের পূর্বসূরি নয়। আপনি ব্যর্থ.
pizdelect

@ পিজডেলেক্ট এটি প্রযুক্তিগতভাবে সত্য, তবে কারিগরি সত্যকে কারও কাছে ছড়িয়ে দেওয়ার যথেষ্ট কারণ নয়।
zwol

@ পিজডেলিট দুঃখিত, আমার অর্থ লিস্প ইউনিক্স (এবং সি) এর পূর্বাভাস দেয়। তবে এলআইএসপি মেশিনগুলি মূলত সমসাময়িক ছিল, যদি আপনি তাদের বাণিজ্যিক প্রভাবের তুলনা করেন (ইউএনআইএক্সের প্রায় তিন বছর শুরু হয়েছিল, তবে এলআইএসপি মেশিনগুলি আসার পরে, বাণিজ্যিক ইউএনআইএক্স মেশিনগুলি এখনও অল্প কিছুটা দূরে ছিল; বেশিরভাগ ইউএনআইএক্স একাডেমিতে ছিল বা কোনও সমর্থন ছাড়াই)। যাই হোক না কেন, এটি সেই সময়কার সাধারণ প্রযুক্তিগত যুক্তির প্রতিক্রিয়া, যা ছিল ৮০ এর দশক, যখন মানুষ আসলে ইউএনআইএক্স মেশিন এবং এলআইএসপিএমগুলির মধ্যে সিদ্ধান্ত নিচ্ছিল এবং তারা ভুল ছিল were এটি মাইক্রো কম্পিউটারগুলির সাথে পরিবর্তিত হয়েছে যা যাইহোক LISP দ্রুত চালাতে পারে।
লুয়ান

10

ডেনিস রিচি নিজেকে সি-র সাথে একটি প্রতিবন্ধকতা তৈরি করেছিলেন যে এটি কোনও লিঙ্কার বৈশিষ্ট্যগুলির উপর নির্ভর করবে না যা ফোর্টরানেরও প্রয়োজন ছিল না। সুতরাং বাহ্যিক নামের উপর 6 অক্ষর সীমা।


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