ডিজাইন দ্বারা প্রোগ্রামিং ভাষা "ক্লিন কোড" প্রয়োগ করতে পারে? [বন্ধ]


19

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

যা আমাকে ভাবতে পেয়েছে,

কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইন দ্বারা ক্লিন কোড প্রয়োগ করতে পারে? এই জাতীয় ভাষা ইতিমধ্যে আছে?

এছাড়াও, কীভাবে এটি প্রোগ্রামিং ভাষার বিকাশ / তত্ত্বের নকশার নীতি হিসাবে অন্তর্ভুক্ত? কোন ধরণের ব্যবস্থা ব্যবহার করা হয়?


14
প্রচুর ভাষা চেষ্টা করেছে। প্রত্যেকেই আমার মতে দূর থেকে সফল হয়নি।
রোবট

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

9
না, আপনি যে কোনও ভাষায় ফোরট্রান লিখতে পারেন।
কিছুর

4
আপনি জিজ্ঞাসা করছেন যে কোনও ভাষা নির্বোধ-প্রমাণ করা সম্ভব কিনা? তারা যেমন বলে, বোকা বুদ্ধিমান
রোবট

2
এই প্রশ্নটির উদ্দেশ্যগুলির জন্য "ক্লিন কোড" এর কোন বৈশিষ্ট্য রয়েছে? আপনাকে এটি সংজ্ঞায়িত করতে হবে, অন্যথায় কোনও ন্যায়সঙ্গততার সাথে কোনও উত্তর বৈধ হতে পারে।
থিওডোরোস চ্যাটজিগিয়ানানাকিস

উত্তর:


20

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

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

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

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


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

7

ভাষা প্রোগ্রামারদের কিছু নির্দিষ্ট বাগের সম্বোধন করতে বাধ্য করতে বা উত্সাহিত করতে পারে, যা পরিষ্কার কোডের সংজ্ঞার অংশ। উদাহরণস্বরূপ, বিভিন্ন ভাষা সম্বোধনের তুলনামূলকভাবে শালীন কাজ করে:

  • নাল পয়েন্টার ব্যতিক্রম।
  • ভাগ করা রাষ্ট্রের বাগগুলি।
  • সংহত সমস্যা।
  • চেক করা ব্যতিক্রম

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

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


6

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

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


3

আপনি যদি এটির পরিমাণ নির্ধারণ করতে পারেন তবে আপনি এমন একটি ভাষা তৈরি করতে পারেন যা এটি অনুকূল করতে পারে।

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

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

উদাহরণস্বরূপ, লোকেরা লিখতে বাধ্য করা সি-এর সেরা আগ্রহের মধ্যে নয়

if (condition)
{

পরিবর্তে

if (condition) {

তবে স্টাইলের চেকাররা একটি পিকে হিসাবে মতামত জানাতে পারে কারণ তারা এগুলিই ডিজাইন করেছেন।

সুতরাং, প্রশ্নের উত্তর দিতে

কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইন করে ক্লিন কোড প্রয়োগ করতে পারে ?

জোর আমার

অবশ্যই, যতক্ষণ আপনি "ক্লিন কোড" এর অর্থের জন্য একটি দৃ definition় সংজ্ঞা প্রদান করেন।

উদাহরণস্বরূপ, আমি বলতে চাই "ক্লিন কোড" সংজ্ঞায়িত করতে পারি:

  • লাইনের দৈর্ঘ্য 80 টি অক্ষরের বেশি নয়
  • 100 টিরও বেশি লাইনের সমন্বয়ে ফাংশনগুলি
  • ইন্ডেন্টেশন দুটি স্পেস হতে হবে
  • ওপেন কোঁকড়া ধনুর্বন্ধনী অবশ্যই ঠিক এক স্পেসের পূর্ববর্তী লাইনের শেষে অনুসরণ করতে হবে
  • প্রতি লাইনে দু'জন অপারেটর নেই

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


1

না, আপনি যে অর্থে বর্ণনা করেছেন তা নয়। "কদর্যতা" সনাক্তকরণ স্বয়ংক্রিয়ভাবে করা যায় না!

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

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

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