প্রোগ্রামিং ভাষার জন্য কেন ভার্বোসিটি খারাপ? [বন্ধ]


98

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

আমি কেবলমাত্র অসুবিধেটির কথা ভাবতে পারি তা হ'ল এটি আপনাকে আরও বেশি টাইপ করে, তবে আমার অর্থ, বেশিরভাগ লোক আইডিই ব্যবহার করেন যা আপনার জন্য সমস্ত কাজ করে।

সুতরাং, একটি ভার্বোজ প্রোগ্রামিং ভাষার সম্ভাব্য ডাউনসাইডগুলি কী কী?


20
আপনি কি সম্প্রতি এপিএলে কোডিং করছেন?
এসকে-লজিক

5
পরীক্ষা করে দেখুন ভাষাসমূহ, শব্দব্যবহার, এবং জাভা Dhanji আর প্রসন্ন দ্বারা
জেরেমি Heiler

66
"একজন বিকাশকারীদের মৃত্যুর আগে তাদের মধ্যে কেবল কয়েকটি সংখ্যক কীস্ট্রোক থাকে"
ক্যামেললিউজ

10
সম্ভবত আপনার "কারণ জিজ্ঞাসা করা অনেক লোককে" তাদের কারণগুলি জিজ্ঞাসা করা উচিত।
এরিক লিপার্ট

29
@ এরিকলিপার্ট, আমি বিশ্বাস করি পিএএসই হ'ল বিপুল সংখ্যক "অভিযোগকারী" বিকাশকারীকে জিজ্ঞাসা করার উপযুক্ত জায়গা।
কেভিন ম্যাককর্মিক

উত্তর:


168

লক্ষ্য দ্রুত বোধগম্যতা

"ভারবোজ" এর অর্থ "অনেক বেশি শব্দ ব্যবহার করা হয়"। প্রশ্নটি "খুব বেশি" কী।

ভাল কোডটি এক নজরে বোঝা সহজ হওয়া উচিত। এটি বেশ সহজ যদি বেশিরভাগ অক্ষর কোডের উদ্দেশ্যে সরাসরি পরিবেশন করে

সিগন্যাল বনাম শোরগোল

যদি কোনও ভাষা ভার্বোস হয় তবে আপনার কোডের আরও শব্দ রয়েছে noise জাভার "হ্যালো ওয়ার্ল্ড" এর সাথে তুলনা করুন :

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

... রুবির সাথে:

print "Hello World!"

গোলমাল মানসিক শক্তি অপচয় করে।

ক্রিপ্টিক বনাম সাফ

অন্যদিকে, একটি ভাষায় অত্যধিক পরিশ্রমের জন্য মানসিক শক্তিও ব্যয় হয়। কমন লিস্পের এই দুটি উদাহরণের তুলনা করুন :

(car '(1 2 3))   # 3 characters whose meaning must be memorized
# vs
(first '(1 2 3)) # 5 characters whose meaning is obvious

19
আমি বলব যে আধুনিকটি মাইক্রো স্তরে পাঠযোগ্যতার বিষয়ে (যেখানে আমরা সাধারণত আরও ভার্বোস স্বরলিপি পছন্দ করি) যেখানে প্রাক্তন হিসাবে ম্যাক্রো স্তরে পাঠযোগ্যতা সম্পর্কে (যেখানে আমরা সাধারণত আরও ব্রেভিটি পছন্দ করি)
জে কে।

67
যে কোনও প্রোগ্রামের জন্য জাভা ঘন ঘন কিছু করার জন্য বিশেষত ভাল লাইব্রেরির ব্যবহারের সাথে আরও অনেক বেশি পাঠযোগ্য।

9
প্রকৃতপক্ষে ম্যাক্রো স্কেল ভার্বোসিটির আরও ভাল উদাহরণ হতে পারে এমন নিদর্শন যা অনুপস্থিত ভাষার বৈশিষ্ট্য
জে.কে.

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

27
সিগন্যাল বনাম নয়েজ এবং ক্রিপ্টিক বনাম পরিষ্কারের
স্পোইক

118

আপনি একক নজরে কতটি কোড দেখতে এবং পার্স করতে পারবেন তা এটি প্রভাব ফেলে

x++ বরং set(x,Integeradd(get(x),1))

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


19
আমি বিশ্বাস করি এটি চূড়ান্ত কারণ। কাগজের টুকরো বা মনিটরের মতো সীমিত জায়গায় পাঠযোগ্যতা।

1
+1, এবং সম্পূর্ণরূপে একমত, এবং আমি একটি 13 "ল্যাপটপে কোড করি, তবে তারপরে আবার এই সাইটের লোগো হিসাবে 3 মনিটর রয়েছে ... অবশ্যই কিছুটা সম্পর্কিত হতে হবে :)
জেডজেআর

1
@ জেডজেআর - সম্পাদনা দেখুন।
মার্টিন বেকেট

3
তাহলে setপদ্ধতিটি এখানে কী করে ? এটি কি আসলে কিছু সেট করে (অর্থাত্ প্রথম xপ্যারামিটার) বা এটি কোনও কিছু ফেরত দেয় (অর্থাত্ xকল করার পরে অ্যাসাইনমেন্ট )? আমি বলব ভার্বোজের উদাহরণে কিছু অদ্ভুত সদৃশ চলছে।
জেসি সি স্লিকার

8
এখানে একটি জিনিস যা অনুপস্থিত তা হ'ল আদর্শগ্রন্থগুলির উপযোগিতা - চিহ্নগুলি শব্দের চেয়ে আরও অর্থবহ হতে পারে। যেমন +তুলনায় আরও অর্থবহ plus=চেয়ে ভাল equals। অবশ্যই এটি খুব দূরে নেওয়া যেতে পারে (এবং বেশ কয়েকটি ভাষা দ্বারা এটি করা হয়েছে) তবে যখন সংযম ব্যবহৃত হয় তখন খুব শক্তিশালী।
এমসিএমসিসি

29

ভাষার পাঠ্যক্রম যদি কোড পাঠযোগ্যতা থেকে বিরত থাকে তবে তা খারাপ then

কিছু ভাষায় এমন ভার্জোজ সিনট্যাক্স থাকে যা কোডটির অর্থ বুঝতে পারা বেশি সময় নেয় (আমি ভি বি। নেট সম্পর্কে বনাম সি #):

If something Then
End If

if(something)
{}

এটি একটি কোডার যার সাথে পরিচিত এবং আরামদায়ক তা সত্যিই সেদ্ধ হয়।


6
আমি বেশিরভাগ সি # তে কাজ করি তবে আমি যখন ভিবি পড়ি তখন আমি দেখতে পেলাম যে এটি সি # এর মতোই ছিল। আমি সমস্তগুলিকে উপেক্ষা করি If .. Then .. End Ifএবং কেবল গুরুত্বপূর্ণ যা কেবল তা পড়ি।
অ্যান্ডি হান্ট

7
অ্যান্ডির মতোই আমি উভয়ই সমান পাঠযোগ্য বলে মনে করি। এমনকি আমি এটিও বলতে চাই যে আমি একটু ভিবি'র রূপ পছন্দ করি (যদিও আমি সি # তে বেশি অভ্যস্ত)।
ড্যাজলেটগুলি

9
অন্য কিছু খারাপ অপরাধীদের তুলনায় VB.NET ভার্চুয়াল নয় !

3
@ অ্যান্ডিবার্স - ঠিক আমার বক্তব্য ভিবি.এনইটি পড়ার সময় আপনি কোডটি বোঝার উপরে এবং তার বাইরে কিছু মানসিক অনুবাদ করেন do
ওডে

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

27

যান তাকান AppleScript , সবচেয়ে বাগাড়ম্বরপূর্ণ ভাষায় আমি মনে করতে পারেন যে বন্ধ বিবেচনা করা যেতে পারে এক বর্তমান , এর চেষ্টা কিছু trival লিখতে এটা এবং ফিরে আসা এবং চেষ্টা করুন এবং যুক্তি দেন যে ভারবোসিটি একটি ভাষা একটি ভাল বৈশিষ্ট্য।

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

এই তুচ্ছ উদাহরণে সমস্ত কীওয়ার্ডের শব্দটি দেখুন :

tell application "Finder"
    if folder "Applications" of startup disk exists then
        return count files in folder "Applications" of startup disk
    else
        return 0
    end if
end tell

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


15
return the 0আপনি এটি টাইপ করার সময় চান না ? অ্যাপলস্ক্রিপ্ট হ'ল একমাত্র ভাষা যা আমি জানি যা আপনার বিরোধীদের কী-ওয়ার্ড-শোক করার অনুমতি দেয় ... মানে সহকর্মী।
ccoakley

অ্যাপলস্ক্রিপ্ট আইডিই, স্ক্রিপ্ট সম্পাদক 90 এর দশকে, অ্যাপ্লিকেশন কর্মের রেকর্ডিংয়ের সাহায্যে ভার্বোসটির মোকাবেলায় সহায়তা করতেন , এটি মারাত্মকভাবে স্মার্ট ছিল না, তবে স্ক্রিপ্টিং ফাইন্ডারের সময় খুব সহজ ছিল ... 1998 এর কাছাকাছি রেকর্ডিং বিভাজক ঘটেছিল এবং এটি আর কখনও ঠিক করা হয়নি । (ওএসএক্স ট্রানজিশন যদি এটি স্থির করে দেয় তবে
ডান্নো

3
অ্যাপলস্ক্রিপ্টের জটিলতার ওএসএক্স উত্তরটি অটোমেটার or আসুন ট্রেগেবল, ভার্ভোসালি-বর্ণিত, এবং দুর্বল-ব্যাখ্যাযোগ্য কার্যকারিতা ব্লকগুলির একটি বিশাল গ্রন্থাগারের সাথে সহজ-প্রকারের পাঠ্যটি প্রতিস্থাপন করা যাক!
ফ্লফি

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

1
অ্যাপ্লিক্রিপ্ট লিখতে অসুবিধে হয়, তবে মানুষের উপলব্ধি করা সহজ ... প্রোগ্রামারদের সীমার মধ্যে অ্যাপ্লিক্রিপ্ট হুকগুলি চালিত অ্যাপ্লিকেশনটিতে স্বচ্ছ সিনট্যাক্স সহ রেখে দেয়।
aramis

23

আমার মনে হয় আপনার প্রশ্নটি মাথা ঘুরিয়ে নেওয়ার দরকার আছে এবং জিজ্ঞাসা করুন: কিছু লোক কেন সংক্ষেপ কোডটি ভাল বলে মনে করেন?

আমার উত্তরটি হ'ল দুটি মূল কারণ রয়েছে:

কেন কর্ষণ আরও ভাল হতে পারে asons

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

কেন কর্ষণ সবচেয়ে খারাপ হতে পারে

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

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


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

6
terseএর verboseterse

1
@JarrodRoberson: আমি সব কিছুর একটি শুক্রবার রাতে গোঁড়া হবে ঘৃণা, কিন্তু আমার কিছু অনলাইন থিসেরাসে এর উপর তাকিয়ে তাদের কেউ আছে terseএকজন বিপরীত শব্দ হিসেবে verbose(অথবা তদ্বিপরীত)। / হাঁস
স্কট মিচেল


15

@ ফ্রয়েং, আমি পরামর্শ দিচ্ছি যে ভারবোসিটি ইস্যুটি দেখার একটি উপায় হ'ল বুঝতে হবে যে প্রোগ্রামিং হ'ল সমাধান খুঁজে বের করার এবং প্রকাশ করার জন্য দুটি ভিন্ন ভিন্ন শৈলীর কিছুটা মিশ্রণ।

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

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

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

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

তাহলে আমি কি সুপারিশ করব?

উভয় শৈলী ব্যবহার করুন, তবে আপনি কেন প্রতিটি শৈলী ব্যবহার করছেন সেদিকে মনোযোগ দিন ।

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

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

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


8

বেশ কিছু লোক এমন কিছু ইঙ্গিত দিয়েছিল যা আমি মনে করি সম্ভবত স্পষ্ট করে বলা উচিত।

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

সংক্ষিপ্ত বিপরীত দিকে ঝোঁক: এটি ম্যাক্রোস্কোপিক স্তরে বুঝতে সহায়তা করে, বিশেষত সেই নির্দিষ্ট ভাষার সাথে সবচেয়ে ঘনিষ্ঠ পরিচিতি সহ প্রোগ্রামারদের দ্বারা। একই সময়ে, নির্দিষ্ট ভাষার সাথে পরিচিতির অভাব এমনকি প্রোগ্রামাররাও অন্যথায় বেশ অভিজ্ঞ অভিজ্ঞ এমনকি এমনকি প্রাথমিক বোঝার প্রতিরোধ করতে পারে।

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

কম-বেশি বিপরীত চূড়ান্তভাবে, এমন একটি প্রকল্প বিবেচনা করুন যা যথেষ্ট সরল (যদিও সম্ভবত এখনও অনেক বড়) মূলত এমন লোকেরা রক্ষণাবেক্ষণ করে যা সত্যিকারের সফ্টওয়্যারটির পরিবর্তে এই সফ্টওয়্যারটির সাথে যুক্ত ব্যবসায় বিশেষত বিশেষজ্ঞরা থাকে। এটি অবশ্যই আরও অনেক বেশি ভার্বোজ ভাষার পক্ষে যাবে।


6

কোনও প্রযুক্তিগত বইয়ের পরিবর্তে আমি স্ট্রিংক এবং হোয়াইট দ্বারা এলিমেন্টস অফ স্টাইল * এ ফিরে যাই । অন্তর্নিহিত ধারণাটি হ'ল "যথাযথ হোন" এবং "প্রয়োজনের চেয়ে বেশি কিছু বলবেন না।" বাকি সবই কমেন্ট্রি।

প্রোগ্রামিংয়ে প্রয়োগ করা হয়েছে, এটি খুব সুনির্দিষ্ট হওয়ার কথা, তবে অপ্রয়োজনীয় ফ্লাফ নেই। অতিরিক্ত ফ্লাফ সিনট্যাক্স হতে পারে তবে এটি বোঝাতে প্রয়োজনের চেয়ে বেশি শব্দও হতে পারে। (অবশ্যই অস্পষ্টতার অনুমতি দেওয়ার জন্য খুব কম নয়)

  • আমি মূল সংস্করণটি উদ্ধৃত করি কারণ এটি সবচেয়ে সংক্ষিপ্ত। :-)

5

দিনের শেষে, যে কোনও কিছু 'আলাদা' হ'ল লোকেরা হাহাকার করে। আমি সি স্টাইলের সিনট্যাক্সের সাথে স্বাচ্ছন্দ্য বোধ করি এবং তাই অন্য ভাষার মতো যা অনুরূপ সিনট্যাক্স ভাগ করে (সি ++, জাভা, সি #)। সুতরাং আমি এই বিশেষ শৈলীর পক্ষে চান।

ভাষাগুলি বর্ণনামূলক পর্যায়ে বর্ণনামূলক নয় এবং বর্ণনাকারীর মধ্যে ভারসাম্য খুঁজে পায়।

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

সিওবিওএল খুব ভার্বোজের উদাহরণ।


5
কিভাবে এই প্রশ্নের উত্তর দেয়?
ChrisF

ভার্বোসিটি সবার জন্য আলাদা। এটাই ছিল আমার মন্তব্যের অভিপ্রায়। আপনি যদি সি / সি ++ শিবিরে থাকেন তবে পার্ল ক্যাম্পে থাকলে তার তুলনায় স্বীকৃত ভার্বোসিটি আলাদা।
নাসির

পার্ল নিনজা দ্বারা লিখিত কোডটি কি যাদু থেকে কম নয়? সিরিয়াসলি, আমি মনে করি এটি দুঃস্বপ্ন।
কেভিন

আমি পার্ল পরিষ্কার করে রেখেছি :)
নাসির

প্রোগ্রামারদের ক্ষেত্রে সিওবিএল অন্যান্য ভাষার তুলনায় খুব ভার্জোজ হতে পারে। তবে ব্যবসায়ের ক্লায়েন্টদের পক্ষে ভাল লিখিত সিওবিএল পড়া সহজ হতে পারে। এটি কোড পড়ার মাধ্যমে যা যা প্রয়োজন তা যাচাই করার অনুমতি দেয়।
বিলথোর

4

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

আমার এবং সহকর্মীর মধ্যে এটি সত্য বলে আমি খুঁজে পেয়েছি। তিনি কোডের লাইনগুলি কী তা ব্যাখ্যা করে প্রচুর মন্তব্য সহ প্রচুর মন্তব্য করেছেন এবং প্রচুর সাদা জায়গা লিখেছেন। আমি যদি এটি পড়ছি তবে আমি দেখতে পাচ্ছি যে কেবলমাত্র একটি স্ক্রিনে আমি কয়েকটি লাইন কোডের জন্য এটি ফিট করতে পারি because এটি প্রতিটি স্বতন্ত্র রেখাকে বোঝা আরও সহজ করে তোলে তবে পুরো ফাংশনটি ছাঁটাই করা আরও শক্ত হয়ে যায়।

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


কারও বিরুদ্ধে মন্তব্য করা হয়নি। সমস্যাটি জাভা, অ্যাপলস্ক্রিপ্ট, বা ভিজ্যুয়াল বেসিকের মতো ভাষার, যার প্রচুর রিলান্ড্যান্ট তবে বাধ্যতামূলক উপাদান রয়েছে।
মার্সিন

2
@ মার্সিন আমি মন্তব্যগুলির বিরোধী নই, তবে তারা যখন এ জাতীয় হয়: i++; //this is adding one to var iএটি অনর্থক ।
স্পেন্সার রথবুন

প্রশ্ন যদিও প্রোগ্রামিং ভাষা সম্পর্কে।
ব্রেন্ডন লং

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

এটি যুক্তিযুক্ত হতে পারে যে কোনও ক্রিয়াকলাপ যাইহোক কয়েক লাইনের বেশি হওয়া উচিত নয়। যদি ফাংশনটি কীভাবে কাজ করে তা উপলব্ধি করা শক্ত হয় তবে এটি সম্ভবত খুব বেশি মন্তব্যের কারণে নয়। তবে আমি সম্মত হলাম যে মন্তব্যগুলি যা কেবল তাত্ক্ষণিকভাবে পরিষ্কার হয় তা আরও ভাল এড়ানো উচিত।
23:01 '

4

আইনস্টাইন এটি সঠিকভাবে পেয়েছেন: "যতটা সম্ভব জিনিস সহজ করুন, তবে সহজ নয়"।

এটি কোডেও প্রযোজ্য। আপনি যদি পুনরাবৃত্ত এবং অযথা ভার্চুজের উপাদানগুলি সরিয়ে কোডকে সহজ করতে পারেন তবে এটি ভাল জিনিস।

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

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

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

সত্যিকারের দক্ষতা জটিল জিনিসকে জটিল উপায়ে তৈরি করার মধ্যে নিহিত, জটিল জিনিসগুলিকে সহজ পদ্ধতিতে তৈরি করার ক্ষেত্রে নয়।


3

আপনি যে কোনও স্ক্রিনে ফিট করতে পারেন তার পরিমাণে অন্য কেউ হিট না করে। এটি বিভিন্ন কারণে সহায়তা করে:

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

যথাযথভাবে পঠনযোগ্য ফন্ট আকারের সাথে 1920 এক্স 1080 স্ক্রিনে কতটা স্ক্রোলিং করা হয়? এগুলি নেভিগেশনের জন্য কীবোর্ড শর্টকাটগুলিও বলা হয়।

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

আপনার আইডিই স্প্লিট ভিউ সমর্থন করে না?
বাম দিকের বাইরে

2
আপনি উভয়ই বিন্দুটি মিস করছেন - আমার আইডিই স্ক্রোলটি কম খারাপ করতে পারে কিনা , এটি কখনই স্ক্রোল না করার মতো হবে না (বা হটকিজ, বা স্প্লিটস্ক্রিন ব্যবহার করা) মোটেও নয় । এটি "স্ক্রীন কীবোর্ডগুলি ঠিক আছে বলে বলার মতো, আপনি কি কখনও জিনিসগুলিতে ক্লিক করার কথা শুনেছেন?"; স্পষ্টতই আমার কাছে আছে, তবে এটি একটি সত্যিকারের কীবোর্ডের সাথে পরাজিত হয় না।
ব্রেন্ডন লং

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

1

কারণ আরও কোড মানে আরও উন্নয়নের সময় এবং আরও বেশি বাগ।

আপনি যদি 300 লাইন কোডের পরিবর্তে 100 টি লাইন কোড লিখেন। এর অর্থ আপনার প্রয়োজন প্রায় 1/3 বিকাশ সময় এবং আপনার সাথে মিলিত হতে পারে 1/3 সম্ভাব্য বাগ।

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


2
আমি আদার 300 লাইনের তুলনায় পার্লের 100 টি সাধারণ লাইনে আরও বেশি লুকানো বাগগুলি আশা করব। - "যেহেতু কম কোড লেখার অর্থ মেশিনকে আরও বেশি কিছু করা দরকার এবং এর দক্ষতা হ্রাস পাবে", এই জাতীয় সম্পর্ক থাকতে পারে তবে এটি কার্যকারণ নয়। এটি কেবলমাত্র রুবি, পার্ল এবং পাইথনের মতো সংক্ষিপ্ত গতিশীল এবং / অথবা ব্যাখ্যামূলক ভাষাগুলি সি বা ফোর্টরানের মতো আরও ভার্জোজ স্ট্যাটিক সংকলিত ভাষার চেয়ে ধীরে ধীরে থাকে। তবে সংশ্লেষিত হাস্কেল, পাইথন ডাব্লু / পাইপাই বা সি ++ প্রোগ্রামগুলি ভার্বোজের তুলনায় অনেক দ্রুত হতে পারে উদাহরণস্বরূপ বেসিক, গ্রোভি, স্মলটাক, এমনকি সি # কোডও।
বাম দিকের চৌকো

1

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

এই ক্ষেত্রে: while(<>){print if($.==2 || $& && !$x++); $.=0 if (/^--+$/)}

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

অন্যান্য উচ্চারণের ক্ষেত্রে হ'ল http://en.wikedia.org/wiki/Literate_programming , যা আমি একটি সুন্দর আকর্ষণীয় ধারণা বিবেচনা করি।

অন্য একটি দিক হ'ল "অবাঞ্ছিত ভার্বোসিটি", যাকে "গোলমাল" বলা হয়। প্রযুক্তিগত কারণে, সিনট্যাকটিক চিনির অভাব, ফুলে যাওয়া এপিআই, এবং এর জন্য আপনাকে যে জিনিসগুলি যুক্ত করতে হবে

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


4
আপনি [সংক্ষিপ্ত অর্থ] ( en.wiktionary.org/wiki/concise ) দ্বিগুণ পরীক্ষা করতে চাইতে পারেন , কারণ এটি প্রায় ক্রিপ্টিকের একটি প্রতিশব্দ। আপনি সম্ভবত জাভা কোড করবেন?
জোশুয়া ড্রেক

2
আমি সংক্ষিপ্ত ভাষায় লিখিত ভার্বোজ কোড পছন্দ করি।
ব্রেন্ডন লং

@ জোশুয়া: হ্যাঁ, আমি লক্ষ্য করেছি যে এটি খুব আলাদা উপায়ে ব্যাখ্যা করা যেতে পারে, তাই আমি আমার উত্তরটি সম্পাদনা করেছি। ... এবং এর সাথে জাভা কী করবে?
ডাগনলিজ

1
কেন এটি ডাউনভোট করা হয়েছিল তা বলার জন্য একটি মন্তব্য ডাউনটাতে নিজের চেয়ে আরও আকর্ষণীয় হতে পারে।
ডাগনলিজ

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

1

ভার্বোসিটি বিস্তৃত পরিমাণে পাঠ্য ব্যবহারের প্রবণতা, এবং খুব অল্প পাঠ্যের ব্যবহারকে অস্পষ্টতা বলে ...

ভার্বোসিটি খারাপ কারণ:

  1. এটি টাইপোগ্রাফিক ত্রুটির জন্য আরও সুযোগের পরিচয় দেয়
  2. স্ক্রিন বা কাগজে কোড পড়া এবং / অথবা পাঞ্চকার্ডে প্রবেশ করা আরও শক্ত করে তোলে
    1. এটি ডিবাগ বার বৃদ্ধি
    2. এটি আপগ্রেড / রক্ষণাবেক্ষণের জন্য কোডকে বোঝা শক্ত করে তোলে
    3. এটি অনিচ্ছাকৃত কোড সদৃশ হতে পারে
  3. এটি কিছুটা সিনট্যাক্স ত্রুটির সম্ভাবনা বাড়িয়ে তোলে
  4. এটি কোডিংয়ের নমনীয়তা হ্রাস করে, এটিতে, বেশিরভাগ ভার্বোজ ভাষা অত্যন্ত কাঠামোগত এবং একই জিনিস বলার একাধিক উপায় নেই।
  5. এটি কোডিং এবং সংকলনের বার বৃদ্ধি করে
  6. এটি আরও সঞ্চয় স্থান নিতে পারে।

স্পষ্টতার জন্য ভারবোসিটির একটি নির্দিষ্ট স্তর প্রয়োজনীয়, তবে ...

ভার্বোসিটির একটি সর্বনিম্ন স্তর ভাল কারণ:

  1. নিখুঁত প্রতীকী কোডের চেয়ে মনস্তাত্ত্বিক মূল্য পড়ার এবং সংজ্ঞা দেওয়া সহজ easier
  2. পরিবর্তনশীল এবং ফাংশন নামকরণে, এটি ডিবাগ, পোর্ট এবং কোড বজায় রাখা সহজ করে
  3. বেস লেভেল ল্যাংগুয়েজ অপারেশন এবং জটিল ভাষার কীওয়ার্ডগুলিতে এটি কম অপারেশন / কীওয়ার্ড অ্যাসাইনমেন্টের দিকে নিয়ে যায়।

অনেক মানুষের জন্য মাত্রাতিরিক্ত বাহুল্যবর্জিত কমান্ড কিছু বিস্ময়কর উদাহরণ পুরোনো বেসিক standbys অন্তর্ভুক্ত val(x$), str$(x)এবং, chr$(x)... তার স্ট্রিং উপস্থাপনা থেকে একটি নম্বরে ফিরে একটি সংখ্যা জন্য একটি স্ট্রিং ফিরে আসুন, এবং একটি স্ট্রিং হিসাবে আসতে একটি অক্ষর থাকার ASCII মান x।

অথবা সি / সি ++ পয়েন্টার এবং রেফারেন্স অপারেটর &এবং *বনাম বেসিক byrefকীওয়ার্ড দ্বারা। সি / সি ++ এ আমার একটি ভেরিয়েবল এক্স থাকতে পারে এবং সেই ভেরিয়েবলের কাছে একটি পয়েন্টারও থাকতে পারে তবে আমাকে মনে রাখতে হবে কোনটি পয়েন্টার এবং কোনটি "ভেরিয়েবল হিসাবে এটি পয়েন্টার হিসাবে পয়েন্টার ব্যবহার করে"; প্রাথমিকভাবে, আমি কেবল ফাংশন কলে একটি বাইরেফ কীওয়ার্ড সহ রেফারেন্সটি পাস করি, যা আরও স্পষ্ট, তবে কম নমনীয়:

def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)

এই কোডে, এক্সের সামগ্রীগুলি বাইরেফ পতাকার কারণে সংশোধিত হবে। কিছু স্বাদ ফোনটিতে বাইরেফকে, অন্যদের সংজ্ঞায়, কিছুকে মঞ্জুরি দেয়।

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

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

পুরানো দিনগুলিতে

অতীতে আরেকটি গুরুত্বপূর্ণ বিবেচনা, তবে শখ কোডারের পক্ষে এটি আর গুরুত্বপূর্ণ নয়, এটি অপারেশন এবং স্টোরেজ স্পেস। (এটি এখনও উচ্চ প্রান্তে গুরুত্বপূর্ণ)

বেশ কয়েকটি সমাধান বিদ্যমান ছিল - বেসিকে টোকেনাইজেশন অত্যন্ত সাধারণ ছিল; পৃথক ভাষার কীওয়ার্ডগুলি উপরের 128 বা নিয়ন্ত্রণ অক্ষরের জায়গার মধ্যে 1 বা 2 বাইট শব্দে হ্রাস পেয়েছিল। টোকেনাইজেশন বাইটোকোড সংকলনেও লিড করে (ইনফর্ম এবং জেড-মেশিন হিসাবে)।

একাধিক অবজেক্ট ফাইল সংকলন এবং লিঙ্কিংও স্থান সীমাবদ্ধতা পেতে ব্যবহার করা হয়েছিল। একটি 100KiB পাসকাল কোড বিভাগটি কেবল 5KiB তে সংকলন করতে পারে; একাধিক সংকলিত ফাইলগুলি সংযুক্ত করে, কেউ বড় ফর্ম্যাট ড্রাইভে অ্যাক্সেস না করেই বিশাল অ্যাপ্লিকেশন তৈরি করতে পারে (মনে করে যে 10MiB আশ্চর্যজনকভাবে বড় ছিল এবং একটি নতুন গাড়ি কিনে)।

আরও সংক্ষিপ্ত ভাষাগুলি, তবে উভয় ডিস্ক এবং মেষের একটি প্রদত্ত অংশে আরও কোড পেয়েছিল এবং এভাবে এক সময় বৃহত্তর অংশগুলি সংকলন করে। মাথায় রেখে: ১৯ 1970০ এর দশকের গোড়ার দিকে "মিনি কম্পিউটারগুলি" কেবলমাত্র 64KiB মেষ থাকতে পারে (হানিওয়েল 800 এর প্রতিটি 8 বি এর 2048 শব্দের প্রত্যেকটিতে 4 টি ব্যাঙ্কের বেস ইনস্টল ছিল)। এপিএল এবং অনুরূপ প্রতীকী ভাষাগুলি নির্দেশ প্রতি প্লাস অপারেন্টগুলির তুলনায় আরও বড় 3B-10B বনাম প্রতি নির্দেশাবলীর সাথে তার অপারেশনগুলিতে 1B এর কাছে পৌঁছেছিল। (পাঞ্চকার্ডগুলিতে টাইপ করা একটি দুঃস্বপ্ন ছিল, বিশেষত যেহেতু প্রতীকগুলি মূলত টাইপ-বলের ফন্ট ছিল এবং অনেকগুলি কার্ডপঞ্চগুলিতে কীগুলিতে চিহ্ন ছিল না ...)

এছাড়াও, মনে রাখবেন যে কার্ডগুলি মোছা যায়নি ... এবং কার্ডগুলিতে অনেকগুলি প্রোগ্রাম প্রবেশ করা হয়েছিল। স্বতন্ত্র ব্যয়বহুল না হলেও, আপনার কোডটি কার্ডে যত বেশি সংকোচিত হতে পারে আপনার প্রয়োজন কম হবে এবং প্রোগ্রামগুলি বৃহত্তর বা কম ব্যয়বহুল হতে পারে। এটি বেসিকের বেশিরভাগ স্বাদে প্রতি লাইন একাধিক নির্দেশনার একত্রিত হওয়ার কারণগুলির একটি অংশ - এটি পাঞ্চ কার্ডগুলিতে সংরক্ষণের জন্য প্রবর্তিত হয়েছিল। (বা আমার ভ্যাক্স বেসিক প্রোগ্রামিংয়ের পাঠ্যটি তাই বলেছে I've) যদিও আমি কার্ড-পাঠকের জন্য প্রোগ্রামিং করি নি, আমি ফরট্রান, বেসিক, এপিএল এবং অন্যান্য কয়েকটি উচ্চ প্রতীকী ভাষায় একটি হানিওয়েল 800 এর জন্য কার্ড পাঞ্চিং করেছি done


অনেক ক্ষেত্রে ভারবোসিটি কেবল ভুল আচরণের পরিবর্তে কমপাইল সময়ে টাইপোগ্রাফিক ত্রুটি সনাক্ত হওয়ার সম্ভাবনা বাড়িয়ে তোলে ।
সুপারক্যাট

-1

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


1
ভারসাম্য বন্ধনী এবং সেমিকোলনগুলি অপ্রয়োজনীয়, কারণ অনেকাংশে প্রকারের ঘোষণা।
মার্সিন

1
@ মার্সিন: হ্যাঁ, তবে তারা ভাষার জন্য পার্সার / বিশ্লেষক লেখা সহজ করে তোলে। আমি মোটামুটি নিশ্চিত যে ভাষা প্রয়োগকারীটির সুবিধার জন্য এ জাতীয় বাক্য গঠন বিদ্যমান, ভাষা ব্যবহারকারী প্রোগ্রামার নয়।
ccoakley

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

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

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

-1

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


এই "দেরি বাইন্ডিং" এর সাথে আপনি সম্ভবত ভার্চুয়াল ফাংশন কলগুলি বোঝায়। তবে কোড পুনরায় ব্যবহারের জন্য এটি অন্য অনেকের মধ্যে কেবল একটি উপায়। ডায়নামিক টাইপিং অন্যটি, এবং সম্ভবত সি ++ 'ভার্চুয়াল কলগুলির চেয়ে অনেক বেশি ওভারহেড নিয়ে আসে বলে আপনার পয়েন্টে আরও ভাল উদাহরণ তৈরি করতে পারে। তবে এমনও রয়েছে যেগুলি রানটাইম পারফরম্যান্সকে মোটেই প্রভাবিত করে না কারণ সংকলন সময়ে এগুলি সম্পূর্ণরূপে সমাধান করা যেতে পারে: আধুনিক অবজেক্ট-ওরিয়েন্টেড ভাষায় আপনার টেম্পলেট / জেনেরিকগুলি রয়েছে, স্ট্যাটিক ফাংশনাল ল্যাঙ্গুয়েজে প্যারাম্যাট্রিক পলিমারফিজমে।
বাম দিকের বাইরে

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

-1

আমি বিশ্বাস করি প্রশ্নটি আরো মৌলিক এবং তাত্ত্বিক ইস্যু readibility চেয়ে মূলী উত্তর নেই এবং এই উত্তর আলগোরিদিমিক তথ্য তত্ত্ব গ্রেগরি Chaitin প্রতিষ্ঠা সঙ্গে সম্পর্কযুক্ত: http://en.wikipedia.org/wiki/Algorithmic_information_theory । কয়েকটি শব্দে উল্লেখ করা হয়েছে, "একটি স্ট্রিংয়ের তথ্য বিষয়বস্তু সেই স্ট্রিংয়ের স্বল্পতম স্ব-উপস্থাপনের দৈর্ঘ্যের সমতুল্য", এটি সূচিত করে যে সংক্ষিপ্ততম প্রোগ্রামটি (যথা তার অভিধানের দৈর্ঘ্যের নিরিখে) প্রদত্ত সমস্যাটিকে ঘনিষ্ঠভাবে সমাধান করা সমস্যার অন্তর্নিহিত জটিলতার সাথে এটি মেলে যা এটি একটি সমাধান দেয় এবং এইভাবে, এটি সমস্যার প্রকৃতির উপর বেশি এবং সমস্যার প্রতিনিধিত্বের উপর কম নির্ভর করে less

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