আমার মতে লোকেরা কথোপকথনে একটি "প্রোগ্রামিং ভাষা" বিবেচনা করে সেগুলি আসলে তিনটি পৃথক জিনিস:
- ভাষার ধরণ এবং বাক্য গঠন
- ভাষা আইডিই
- একটি ভাষার জন্য উপলব্ধ গ্রন্থাগার
উদাহরণস্বরূপ, যখন কেউ আলোচনায় সি # নিয়ে আসে আপনি ভাবতে পারেন তিনি / সে ভাষার বাক্য গঠন (1) সম্পর্কে কথা বলছেন তবে এটি 95% নিশ্চিত যে আলোচনায় জড়িত থাকবে। নেট ফ্রেমওয়ার্ক (3)। আপনি যদি কোনও নতুন ভাষা ডিজাইন না করে থাকেন তবে এটি কঠোর এবং সাধারণত (1) বিচ্ছিন্ন করা এবং (2) এবং (3) উপেক্ষা করার পক্ষে অর্থহীন। আইডিই এবং স্ট্যান্ডার্ড লাইব্রেরি হ'ল "আরামের কারণ", এমন জিনিস যা কোনও নির্দিষ্ট সরঞ্জাম ব্যবহারের অভিজ্ঞতাকে সরাসরি প্রভাবিত করে।
গত কয়েক বছর আমিও গুগল কোড জ্যামে অংশ নিয়েছি। প্রথমবার আমি সি ++ এর জন্য নির্বাচন করেছি কারণ এতে ইনপুটটি পড়ার জন্য সুন্দর সমর্থন রয়েছে। উদাহরণস্বরূপ সি ++ তে স্ট্যান্ডার্ড ইনপুট থেকে তিনটি পূর্ণসংখ্যা পড়ার মত দেখাচ্ছে:
int n, h, w;
cin >> n >> h >> w;
সি # তে থাকা অবস্থায় এটির মতো দেখতে হবে:
int n, h, w;
string[] tokens = Console.ReadLine().Split(' ');
n = int.Parse(tokens[0]);
h = int.Parse(tokens[1]);
w = int.Parse(tokens[2]);
এটি একটি সাধারণ কার্যকারিতার জন্য অনেক বেশি মানসিক ওভারহেড। মাল্টিলাইন ইনপুট সহ সি # তে জিনিসগুলি আরও জটিল হয়ে ওঠে। হয়তো আমি তখন আর ভাল উপায় খুঁজে না। যাইহোক, আমি প্রথম রাউন্ডটি পাস করতে ব্যর্থ হয়েছি কারণ আমার একটি বাগ ছিল যা রাউন্ড শেষ হওয়ার আগে আমি সংশোধন করতে পারিনি। হাস্যকরভাবে ইনপুট রিডিং পদ্ধতিটি বাগটিকে অবিচ্ছিন্ন করেছে। সমস্যাটি সহজ ছিল, ইনপুটটিতে এমন একটি সংখ্যা রয়েছে যা 32 বিট পূর্ণসংখ্যার জন্য খুব বড়। সি # তে int.Parse(string)
একটি ব্যতিক্রম ছুঁড়ে ফেলা হবে তবে সি ++ এ ফাইল ইনপুট স্ট্রিমটি একটি নির্দিষ্ট ত্রুটি পতাকা নির্ধারণ করবে এবং নিঃশব্দে অসম্পর্কিত বিকাশকারীকে কোনও সমস্যা সম্পর্কে অজানা করতে ব্যর্থ হবে।
উভয় উদাহরণই দেখায় যে লাইব্রেরিটি ভাষাটির পরিবর্তে ভাষা বাক্য বিন্যাসের জন্য কীভাবে ব্যবহৃত হয়েছিল। প্রথমটি ভার্বোসটি প্রদর্শন করে এবং অন্যটি নির্ভরযোগ্যতা প্রদর্শন করে। অনেক লাইব্রেরি একাধিক ভাষায় পোর্ট করা হয় এবং কিছু ভাষাগুলি তাদের জন্য বিশেষভাবে নির্মিত না এমন লাইব্রেরি ব্যবহার করতে পারে (সি লাইব্রেরির সাথে পাইথন সম্পর্কে @ ভার্টেকের উত্তর দেখুন)।
এটি মোড়ানোর জন্য, সঠিক অ্যালগরিদম জেনে যাওয়া সহায়তা করে। কোডিং প্রতিযোগিতাগুলিতে এটি অত্যন্ত গুরুত্বপূর্ণ, বিশেষত যখন মৃত্যুর সময় এবং মেমরির মতো সংস্থানগুলি উদ্দেশ্যমূলকভাবে সীমাবদ্ধ থাকে। অ্যাপ্লিকেশন বিকাশে এটি স্বাগত তবে সাধারণত গুরুত্বপূর্ণ নয়। রক্ষণাবেক্ষণ সেখানে গুরুত্বপূর্ণ। সঠিক নকশার নিদর্শন প্রয়োগ করে, ভাল আর্কিটেকচার, পঠনযোগ্য কোড এবং প্রাসঙ্গিক ডকুমেন্টেশন এবং এগুলি সমস্ত পদ্ধতি ভারী-ইন-হাউস এবং তৃতীয় পক্ষের লাইব্রেরির উপর নির্ভর করে অর্জন করা যায়। সুতরাং, আমি ইতিমধ্যে কী ধরণের চাকা উদ্ভাবিত হয়েছে এবং কীভাবে সেগুলি খাপ খায় তারপরে কীভাবে আমার নিজের তৈরি করা যায় তা আরও গুরুত্বপূর্ণ more