স্পেস ইঙ্গিত করার জন্য হোয়াইটস্পেস বনাম {} 's ব্যবহার করে কোনও ভাষার উপকারিতা কি? [বন্ধ]


17

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

টোকেনের মতো সাদা জায়গার যে কোনও ভাষাতেই মারা যেতে হবে।

একই উত্তর পরে পোস্ট করা:

আমি প্রকৃতপক্ষে এন্টি-হোয়াইটস্পেস-এ-টোকেন হিসাবে বাছাই করেছিলাম, যতক্ষণ না আমি আসলে এটি চেষ্টা করেছি। এটি সম্ভবত সাহায্য করেছিল যে আমার ব্যক্তিগত সাদা-স্থানের লেআউটটি পাইথন-জমির প্রত্যেকে যা ব্যবহার করে তার সাথে অনেকটা মেলে। সম্ভবত এটি আমি কিছুটা ন্যূনতম, তবে আপনি যদি যাইহোক ইন্ডেন্ট করতে চলেছেন তবে কেন {with এর সাথে বিরক্ত করবেন?

আমি প্রতিটি পক্ষের জন্য কিছু পরিষ্কার যুক্তি দেখতে পাচ্ছি:

সাদা স্থান ব্যবহার:

  • কোডে বেমানান ইনডেন্টেশন হ্রাস করতে সহায়তা করে
  • একই উদ্দেশ্যে পরিবেশন করতে হোয়াইটস্পেসের সাথে দৃশ্যমান টোকেনগুলি প্রতিস্থাপন করে স্ক্রিন সাফ করে

টোকেন ব্যবহার:

  • বিভিন্ন স্তরে কোড কাটা এবং পেস্ট করা অনেক সহজ (আপনাকে ইন্ডেন্টেশনটি ঠিক করতে হবে না)
  • আরও সামঞ্জস্যপূর্ণ। কিছু পাঠ্য সম্পাদকরা আলাদাভাবে সাদা স্থান প্রদর্শন করেন।
  • বর্তমানে আরও জনপ্রিয়

আমি কোন পয়েন্ট মিস করেছি? আপনি কোনটি পছন্দ করেন? দীর্ঘদিন ধরে একজন বা অন্যের সাথে কাজ করার পরে জ্ঞানের কোনও শব্দ?


পুনশ্চ. ভাষাগুলি যখন প্রতিটি নিয়ন্ত্রণ কাঠামোর জন্য একই টোকেন ব্যবহার করে না তখন আমি এটিকে ঘৃণা করি। ভিবি এর End Ifএবং End Whileবিবৃতিগুলির সাথে সত্যিই বিরক্তিকর , বেশিরভাগ অন্যান্য ভাষা কেবল সমস্ত কিছুর জন্য ব্যবহার করে। তবে সম্ভবত এটি ভিন্ন প্রশ্নের জন্য একটি বিষয় ...


2
আমি বলব না এটি "কাটা এবং পেস্ট করা অনেক সহজ"। এটি কেবল সামান্য সহজ।
কুগেল

1
যতক্ষণ আপনি কোডের ব্লকগুলি ছোট এবং সংগঠিত
স্কট

"কিছু পাঠ্য সম্পাদক সম্পাদনা পৃথকভাবে সাদা স্থান দেখায়" ": ?? "বর্তমানে আরও জনপ্রিয়" ": জনপ্রিয়তা প্রায়শই কোনও ধারণার মানের সাথে সম্পর্কিত নয়।
জর্জিও

আমি হোয়াইটস্পেস সিনট্যাক্স পছন্দ করি এবং আমি কফিস্প্রিপ্ট এবং হাস্কেলকে কোডিং পছন্দ করতাম (হ্যাঁ আমি এর শক্ত জানি)। আমি জাভাস্ক্রিপ্ট এবং সিতে একটি গোছা কোড করেছি এবং আমি কেবল} এ ফিরে যেতে পারি না} যাইহোক, লিস্পের এস-এক্সপ্রেশনগুলি যখন বাক্স
ডিভগুলির

আমি মনে করি যদি আপনার একা সাদা অংশে নির্ভর করতে হয় তবে ত্রুটিগুলি চিহ্নিত করা আরও শক্ত করে তোলে। উদাহরণস্বরূপ: stackoverflow.com/questions/21205836/… ওপির কোড এবং উত্তরের মধ্যে একমাত্র পার্থক্য হল অতিরিক্ত স্থান। লুপের ভিতরে কোন কোডটি রয়েছে এবং কোনটি খুব বেশি পরিষ্কার নয় তা সীমানা নির্ধারণ করতে} থাকা।
প্রাচীনকালে

উত্তর:


15

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

এটি মনে রেখে, আমি মনে করি এর সহজ উত্তরটি হ'ল "কিছু লোককে ধনুর্বন্ধনী পছন্দ হয়, কিছু লোক হোয়াইটস্পেস পছন্দ করে" এবং এটিকে রেখে দেয়।



এছাড়াও, এমন কিছু যা কারও পক্ষে একটি পক্ষে অন্যের পক্ষে শঙ্কিত হতে পারে।
ল্যারি কোলম্যান

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

8
আমি আপনার উপমা সঙ্গে একমত না। হোয়াইটস্পেস-নির্ভর নির্ভর সিনট্যাক্স প্রোগ্রামার উত্পাদনশীলতায় বাধা দেয় এমনকি এমন প্রোগ্রামারগুলিতেও এটি বিশ্বাস করার যথেষ্ট উদ্দেশ্যমূলক কারণ রয়েছে। এটি কিছুটা বলার মতো যা লোকেরা কেবল সায়ানাইডের স্বাদ পছন্দ করে না - যখন তারা বলে যে এটি বিষাক্ত তখন সবার ঠিক "যৌক্তিকতা"। না, আপনি এটি কতটা পছন্দ করেন তা বিবেচ্য নয়, এটি এখনও আপনাকে হত্যা করবে।
টিমউই

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

11

একেবারে ফ্যানবয়ের মতো শোনার ঝুঁকিতে, আমি মনে করি যে যারা দাবি করেন যে হোয়াইটস্পেস "কোডের সাথে অসঙ্গতিযুক্ত ইনডেন্টেশন হ্রাস করতে সহায়তা করে" তারা কখনও ভিজ্যুয়াল স্টুডিও ব্যবহার করেনি। একটি একক কমান্ডের সাথে (আমি মনে করি ডিফল্ট শর্টকাটটি Ctrl + K, D), সমস্ত ইনডেন্টেশন তাত্ক্ষণিকভাবে ধারাবাহিক ¹ তদ্ব্যতীত, কোড পেস্ট করার সময় ইনডেন্টেশনটি কিছু না করে তাত্ক্ষণিকভাবে সংশোধন করা হয় এবং নতুন কোড লেখার সময় ifবা কোনও বা অন্য কোনও ব্লকে মোড়ানোর সময় একই রকম হয় ( }টাইপ করার সাথে সাথে ফর্ম্যাটটি ঘটে )। তদ্ব্যতীত, একটি সম্পূর্ণ বিবৃতি দেওয়ার পরে এন্টার টিপলে পরবর্তী বিবৃতিটির জন্য সর্বদা সঠিক ইনডেন্টেশন স্তরে কার্সারটি রাখা হয়, এমনকি যদি পূর্ববর্তী বিবৃতিটির কারণে আরও ইন্টেন্ট করা হতifবা অনুরূপ, দুর্ঘটনাক্রমে ভাবতে খুব কঠিন করে তোলে যে কোনও বিবৃতি তখনও এর অধীনে রয়েছে ifযখন তা নেই।

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


Know (আমি জানি যে একটি বিশেষ কেস রয়েছে যা ভিএস পুনরায় ফর্ম্যাট করতে অস্বীকার করেছে, একাধিক লাইনের বিস্তৃত অ্যারে লিটারালগুলি কিন্তু এটি বিন্দুর পাশে রয়েছে।)


8
পাইথন ইন্ডেন্টেশন ফিক্সিংয়ের প্রয়োজন হয় না কারণ এটি ভেঙে যায় না (কাউকে লক্ষ্য না করে!)। সি # এর জন্য পিউরিফাই (প্রোগ্রাম যা মেমরি ফাঁস সনাক্ত করতে সহায়তা করে) লেখা অসম্ভব, এর অর্থ এই নয় যে সি ++ মেমরি পরিচালনা উচ্চতর।
dbkk

2
@ ডিয়ান: কেন এত লোকেরা মনে করে যে তাদের সমস্ত কিছুর জন্য পুনঃভাগ দরকার? আপনি যা বর্ণনা করেছেন তা রিশার্পার ছাড়াই ভিজ্যুয়াল স্টুডিওতে রয়েছে।
টিমভি

2
@dbkk: আপনি ifযে কোনও জায়গায় লাইন যুক্ত করার সাথে সাথে আপনার ইন্ডেন্টেশনটি ভেঙে যায়। তারপরে আপনাকে ম্যানুয়ালি ইন্ডেন্টেশনটি ঠিক করতে এগিয়ে যেতে হবে।
টিমভি

2
আপনি সম্ভবত এমন একটি দলে কাজ করেননি যেখানে ইন্ডেন্টেশনটি অলস, অসঙ্গতিপূর্ণ ইত্যাদি ছিল এবং এটি ঠিক করা নিরুৎসাহিত হয়েছিল কারণ এটি কোডকে আলাদা করা অসম্ভব করে তোলে।
কেভিন 15

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

3

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

পাইথন লোকেরা গেলে আমি এটিকে ঘৃণা করি:

if something
    do something
    do somethingelse

    cleanup
else
    do the other thing

টোকেন জমিতে থাকাকালীন আমি ঘৃণা করি যখন লোকেরা অনুলিপি করে পেস্ট করে এবং খালিটি সাফ করে না ,

if something
{
I have been too lazy
      {
            to clean up
            }
what I pasted
}

বা টোকেনের জন্য আলাদা লাইন ব্যবহার করবেন না

if something {
    I find this confusing
}
else {
especially when combined with the previous 
do something
}

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


3

প্রো: আমি জানি যতদূর পাইথন বিশ্বে কোনও ইন্ডেন্টেশন / কোঁকড়ানো-ব্রেস-প্লেসমেন্টের পবিত্র যুদ্ধ নেই। বিকাশকারীদের পক্ষে এই সিদ্ধান্ত নেওয়া সম্ভবত কিছুটা ব্যথা বাঁচিয়েছে।

কন: অনামিকার ফাংশনগুলি এক লাইনে সীমাবদ্ধ। ঠিক আছে মনে হচ্ছে, তবে আমি প্রায়শই নিজেকে lambdaস্কিমে বহু-লাইন লিখতে দেখি (বেশিরভাগ ক্ষেত্রে একত্রে খাওয়াতে mapবা applyঠিক একই জায়গায় খাওয়ানোর জন্য , তাই আলাদাভাবে ঘোষণার অর্থ হবে না)।



পাইথনে মাল্টি লাইন এক্সপ্রেশন সমর্থিত - কেবল একটি লাইনের শেষে \ রাখুন।
dbkk

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

@ দ্রষ্টব্য - ওকে, হ্যাঁ, ফর্সা পাইথন হ'ল একমাত্র হোয়াইটস্পেস সীমিত ভাষা যার সাথে আমার কোনও অভিজ্ঞতা আছে। @dbkk তাই আপনি বলছেন যে সিনট্যাক্স ত্রুটিটি ফিরিয়ে lambda n: a = n \\na.sort() \\na[0:3] দেবে না ? `\` কৌশলটি আপনাকে একক লাইন ল্যাম্বদা একাধিক লাইনে ছড়িয়ে দিতে দেয় তবে আপনি এখনও একের বেশি প্রকৃত লাইন পান না।
ইনাইমাঠি

হাস্কেল, কফিস্প্রিপ্ট সাদা স্থান ব্যবহার করে তবে একক লাইন ল্যাম্বডিয়া সীমাবদ্ধতা নেই।
aoeu256

3

und red অতিরিক্ত কাজ যোগ করে। খুব বেশি রিডানডেন্সি খারাপ, খুব কম লোকই খারাপ। এবং ম্যানুয়ালি এটি প্রবেশ করা খারাপ, esp। যদি এটি ব্যবহার করা শক্ত হয়।

সুতরাং খারাপ / আইডিইর সময়ে হোয়াইটস্পেসের স্টাইলটি আরও ভাল হতে পারে। তবে পাওয়ারফুল আইডিই দিয়ে ব্রেসগুলি আরও ভাল।


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

"গোলমাল" শব্দটি হ্যাশেল ভিডিওগুলিতে এরিক মেইজার ব্যবহৃত হয়েছিল।
ব্যবহারকারী16764

আপনি যদি কোনও ব্লক মুছে ফেলেন এবং বিপরীতটি করার সময় আপনি ভুল করে delete বা মুছতে forget মুছে ফেলতে ভুলে যান তবে? অপ্রয়োজনীয়তা DRY IMO এর বিপরীতে against
aoeu256

2

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

IMHO "{{{{{" is more reliable than "     ".

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

1
সিরিয়াসলি, শর্তযুক্ত একাধিক পৃষ্ঠাগুলি দীর্ঘ?
উইনস্টন ইওয়ার্ট

2

আমি সত্যিই এটি একটি বনাম মনে করি না ।
পাইথনিয়াররা প্রায়শই ব্রেস প্রোগ্রামারদের সমালোচনা করে যেমন তারা সহজেই ইনডেন্টেশন লঙ্ঘন করবে কারণ তারা পারে।
আসলে আমি পাইথন এবং এর ইনডেন্টেশন স্কোপিং সম্পর্কে জানার আগেও আমি সর্বদা 100% ধারাবাহিক ইনডেন্টেশন ব্যবহার করি।

সত্যটি হ'ল ধনুর্বন্ধনী ভাষাও সংকলকটিতে সঠিক ইন্ডেন্টেশন চাপিয়ে দিতে পারে এবং আমাদের উভয় বিশ্বের সেরা হবে best দেখা? মোটেই বনাম নয়।

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

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

if condition:
    statement
    other_statement()
end

PS2: 2019, এই উত্তরের 4 বছর পরে। আমি পাইথন শিখেছি এবং সম্পূর্ণরূপে এর সিনেমিক ইনডেন্টেশনে অভ্যস্ত হয়ে পড়েছি এবং পড়তে মোটেই অসুবিধা মনে হয় না। বিশেষত আধুনিক আইডিইগুলির সাহায্যে যা ইনডেন্ট ব্লকগুলি সনাক্ত করতে সহায়তা করতে উল্লম্ব বারগুলি আঁকেন।


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

নেস্টের পরিবর্তে যদি ... এলিফ আপনি অভিধান ব্যবহার করে চেষ্টা করতে পারেন, এবং / অথবা, চালিয়ে
যাবেন

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