এলিস্পের নামস্থান নেই কেন?


40

প্রশ্ন: এলিস্পের নাম স্থান কেন নেই এবং আমরা কীভাবে সেগুলি পেতে পারি?

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

বিরক্তিকর বিষয়টিকে বাদ দিয়ে, এটি আমাকে একটি ক্রমবর্ধমান ইস্যু হিসাবে আঘাত করে যা ১) প্রদত্ত ক্রমবর্ধমান দুর্দান্ত গ্রন্থাগার এবং প্যাকেজগুলির সংখ্যা, এবং ২) উত্তরাধিকারের ক্রিয়াকলাপ এবং ভেরিয়েবলগুলির অবিচ্ছিন্ন অস্তিত্ব যা উপসর্গের কনভেনশনকে সম্মান করে না, বা যথেষ্ট পরিমাণে আইডিসিঙ্ক্র্যাটিক যে তারা ব্যবহার করতে পারে এমন সত্যিকারের উপসর্গের বিকল্পটি আসলে নেই। একই সাথে এর পর্যায়ক্রমিক প্রচেষ্টা পুরোনো কোড যুক্তিপূর্ণ ভাবে ব্যাখ্যা করার (থেকে রূপান্তরটি সঙ্গে clথেকে cl-lib) কাজের একটি অ-তুচ্ছ পরিমাণ। (যদিও আমি পরিষ্কার-পরিচ্ছন্নতার জন্য খুশি, তবুও প্রতিবার যখনই আমি টাইপের মতো টাইপ করি তখনই একটি টিয়ার বর্ষণ করি cl-find)।

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

আমি অনুমান করি যে, যদি নেমস্পেস যুক্ত করা সহজ হয় তবে এটি ইতিমধ্যে হয়ে গিয়েছিল। তাই:

  • এলিজপেতে নেমস্পেস যুক্ত করার প্রযুক্তিগত বাধাগুলি কী কী?
  • নেমস্পেস যুক্ত করার ফলে প্রচুর বিদ্যমান কোডটি ভেঙে যাবে?
  • এই কার্যকারিতাটি এমন কি এমন কিছু যা এলিসপ করার জন্য জৈবিক হতে হবে (দোভাষীর নিজেরাই পরিবর্তন হতে পারে), বা এটি ম্যাক্রোগুলির মাধ্যমে সত্যই উপরে তৈরি করা যেতে পারে?

6
আপনি এটি দেখতে পারেন: github.com/Bruce-Connor/names এটি একটি পিছনের সামঞ্জস্যপূর্ণ (নাম পৃথক করার বর্তমান ম্যানুয়াল পদ্ধতির সাথে) স্বয়ংক্রিয় নেমস্পেসগুলি প্রয়োগ করে বলে মনে হচ্ছে। (এবং আমি নিশ্চিত 99৯% আমি এরকম আরও একটি গ্রন্থাগার দেখেছি, বিকাশকারীকে কিছু ইম্যাক ব্লগে সাম্প্রতিক উল্লিখিত নেমস্পেসগুলি সহ একটি ফাংশনের একটি উপসেট রফতানি করার অনুমতি দিয়েছিল, তবে আমি এটি আর খুঁজে পাইনি))।
টি ভেরন

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

1
আমার ধারণা, নেমস্পেসগুলি বিভিন্ন জিনিস বোঝায়। আমি বলতাম যে ইমাক্সের বেশ কয়েকটি নেমস্পেস রয়েছে: একটি ভেরিয়েবলের জন্য, অন্যটি ফাংশন এবং ম্যাক্রোর জন্য, অন্যটি মুখের জন্য এবং থিমগুলির জন্য এবং ...
হ্যারাল্ড হানচে-ওলসেন

1
@ হারাল্ডহানচে-ওলসেন আপনি অবশ্যই এটি বলতে পারেন। সেই প্রসঙ্গে তিনি জিজ্ঞাসা করছেন প্রতি প্যাকেজ নেমস্পেস কেন নেই?
মালবারবা

উত্তর:


28

নেইমস্পেস কেন?

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

এর মধ্যে আমি নিজের সমাধান লিখেছি (বিকল্পগুলির তালিকার জন্য নীচে দেখুন)।

প্রযুক্তিগত বাধা কি?

দরজার বাইরে আপনার 3 টি বড় বাধা রয়েছে, যা আপনাকে অতিক্রম করতে হবে যাতে নামের স্থানগুলি এমনকি বর্তমান ইম্যাক্সে কাজ করার সুযোগ পেতে পারে:

  • আপনাকে কীভাবে প্রতীকগুলি অভ্যন্তরীণ করা হবে তা পরিবর্তন করতে হবে (এটি সহজ অংশ)।
  • বাইট-সংকলকটির নামের জায়গাগুলি বুঝতে হবে।
  • অটোল্যাড প্রজন্মের দ্বারা ব্যবহৃত package.elনামগুলির স্থানগুলি বোঝা দরকার।

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

এর বাইরেও অনেকগুলি alচ্ছিক বাধা রয়েছে। Elisp সরঞ্জাম আপনার এবং এর কাছে উপলব্ধ সকল ক্ষমতার কারণ মহান সব নামব্যবধান সঙ্গে কাজ করার patched করা প্রয়োজন হবে এগুলোর। সর্বাধিক গুরুত্বপূর্ণগুলির মধ্যে রয়েছে:

  • edebug
  • Eval-defun
  • Eval-শেষ sexp
  • পাঁক

এটি কি প্রচুর বিদ্যমান কোডটি ভেঙে দেবে?

যদি আপনি এটি সঠিকভাবে না।

এটি কি এমন কিছু যা জৈবিক হওয়া প্রয়োজন, বা এটি ম্যাক্রোগুলির মাধ্যমে সত্যই উপরে তৈরি করা যেতে পারে?

আদর্শভাবে এটি জৈব হবে, এটি সাধারণত যখন દેવ তালিকায় আসে তখন আলোচিত হয়। তবে উপরে তৈরি হওয়ার সময় এটি যথেষ্ট ভাল তৈরি করা যায়। এই তালিকা
থেকে নেওয়া এখানে এর কয়েকটি উদাহরণ দেওয়া হল :


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

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

আপনার namelessএই তালিকায় সত্যই যুক্ত হওয়া উচিত :) এটি একটি উজ্জ্বল ধারণা এবং এটি খুব সুন্দরভাবে সমস্যার সমাধান করে।
ক্লাইমেন্ট

22

গতবার এটি ইমাস-ডেভেলে আলোচনা হয়েছিল, যখন লার্সের মতো লোকেরা কোনও কিছুর M-x grepজন্য সক্ষম হতে চান বলে চিহ্নিত করে আলোচনাটি থেমে যায় । এলিস্পে নেমস্পেস যুক্ত করা খুব কঠিন হওয়া উচিত নয়, তবে তাদের সঠিকভাবে পরিচালনা করার জন্য সমস্ত পরিচিত সরঞ্জামগুলি পাওয়া অন্য সমস্যা another


আমি মনে করি যে সর্বাধিক ব্যবহৃত সাধারণ ফাংশনগুলির (বা তাদের
জেসি

1
প্যাকেজ তৈরি করার সময় "গ্রেপ" করার প্রয়োজনীয়তাটি সাধারণত দেখা যায়, যেখানে অন্যান্য প্যাকেজগুলিতে ভেরিয়েবল / ফাংশনটি কোথায় ব্যবহৃত হতে পারে তা আপনার জানতে হবে, সুতরাং এটি নির্দিষ্ট নির্দিষ্ট গুরুত্বপূর্ণগুলির পরিবর্তে কোনও যথেচ্ছ পরিবর্তনশীল / ফাংশনে প্রয়োগ করতে পারে। এই কারণে, কয়েকটি এলিয়াস যুক্ত করা কোনও তাত্পর্য তৈরি করবে না। এমআইটি সাহায্য না করার আরেকটি কারণ হ'ল একটি উপনাম যুক্ত করা আপনাকে এই উপনামটি ব্যবহার না করে এমন ব্যবহারগুলি সন্ধান করতে সহায়তা করবে না।
স্টেফান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.