কোনও প্রোগ্রামার অপরিচিত ভাষায় কোড কীভাবে বুঝতে পারে তা নিয়ে অধ্যয়নগুলি? [বন্ধ]


15

এক্স এবং ওয়াইয়ের মতো বহুল ব্যবহৃত ভাষা ব্যবহারের জন্য এক্স ভাষা এবং ভাষা ব্যবহার করে কোনও দক্ষ প্রোগ্রামার দ্বারা রচিত কোডটি কতটা ভালভাবে বুঝতে পারে এমন অভিজ্ঞ প্রোগ্রামার কীভাবে বুঝতে পারে সে সম্পর্কে কোনও গুরুতর অধ্যয়ন রয়েছে?

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

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

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


1
আমি কোন গবেষণা আছে কিনা জানি না, তবে আমার ব্যক্তিগত অভিজ্ঞতা থেকে আমি হ্যাঁ বলি, আমি ভাষা না জেনে কোনও প্রোগ্রাম বুঝতে পেরেছি।
সুপারম

2
এটি একজোড়া ভাষার উপর নির্ভর করবে: সি # বনাম জাভা বেছে নিন - এবং আপনি প্রায় তাত্ক্ষণিক পরিচিতি পাবেন; অ্যালগোল বনাম সি সিটি চয়ন করুন - এবং আপনি পরিচিতি পেয়ে যাবেন একটি একক পৃষ্ঠার চিট শীট। ভাগ্য ভাল সি বনাম প্রোলগ বা হোয়াইটস্পেস বনাম অ্যাডা - এটি হতাশ হতে চলেছে। যাইহোক, ভাষা কেবল একটি প্রোগ্রামকে বোঝার জন্য চালায় না: সি তে লিখিত এমএফসি কোড বোঝার চেষ্টা এম্বেডড ডিজাইনে বিশেষজ্ঞ এক বিশেষজ্ঞ এটি বরং দুঃখজনক দৃষ্টি (এটি প্রথম হাতের অভিজ্ঞতা)।
ডেসব্লিংকনলাইট

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

উত্তর:


9

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

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

তবে তারা কী পরিমাণ নিয়ন্ত্রণের প্রবাহ পেতে চাইছে তা ভাবছেন, স্ক্রিনে কিছু আঁকছে এমন জায়গাটি আবিষ্কার করুন

কোডের মানটি এত কম, বা ব্যবহৃত কাঠামোটি এত জটিল, বা কোড বেসটি খুব বড় হওয়ায় ভাষাটির সাথে আপনি খুব পরিচিত হওয়ার পরেও তা শক্ত হতে পারে।


6

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

প্রকল্পের মধ্যে এবং সাধারণত সফ্টওয়্যার বিকাশে নামকরণ কনভেনশন একটি খুব গুরুত্বপূর্ণ দিক। যাইহোক,its importanceএবং মানের সফ্টওয়্যার তৈরির সাথে প্রাসঙ্গিকতা প্রায়শই একসাথে উপেক্ষা করা বা উপেক্ষা করা হয়।

.NET ফ্রেমে ওয়ার্কে ব্যবহৃত নামকরণের নির্দেশিকা এবং .NET এ ব্যবহৃত জেনারেল নামকরণ কনভেনশনগুলি দেখতেও ভাল রেফারেন্স।


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

3

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

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

int x = getCorrectValueForX();
if (x = 2)
   doSomethingWhenXIsTwo();

আপনি ভাষাটি না জেনে সনাক্ত করা সনাক্ত করা খুব কঠিন হতে পারে।


1

এটি কেবলমাত্র অন্যান্য প্রোগ্রামের মতোই প্রোগ্রামারের উপর নির্ভর করে না, সিনট্যাক্স, দর্শন এবং বাস্তবায়ন উভয় ক্ষেত্রেই ভাষার সাদৃশ্যগুলির উপরও নির্ভর করে।

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

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

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

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