আমি বিশ্বাস করি প্রোগ্রামিংয়ের পিছনে নীতিগুলি শিখতে সি একটি ভাল ভাষা। আপনি নিম্ন স্তরের ভাষাগুলিতে কী শিখতে দাঁড়ান যা রুবি যেমন উচ্চ স্তরের ভাষা থেকে দূরে থাকে?
আমি বিশ্বাস করি প্রোগ্রামিংয়ের পিছনে নীতিগুলি শিখতে সি একটি ভাল ভাষা। আপনি নিম্ন স্তরের ভাষাগুলিতে কী শিখতে দাঁড়ান যা রুবি যেমন উচ্চ স্তরের ভাষা থেকে দূরে থাকে?
উত্তর:
কম্পিউটার বিজ্ঞানের সাধারণ বিমূর্ত অর্থে কোনও নীতি নেই, যা সিতে উপস্থিত রয়েছে যা উচ্চ স্তরের ভাষাগুলিতেও উপস্থিত নেই। সমস্ত কম্পিউটার বিজ্ঞান অ্যালগরিদমগুলিতে উত্সাহিত হয়, এবং সমস্ত অ্যালগরিদম সি-তে যেমন টুরিং-সম্পূর্ণ যে কোনও ভাষায় প্রয়োগ করা যেতে পারে।
সি পার্থক্যটি উচ্চ স্তরের ভাষাগুলি গঠন করে যা মেশিন কোড সি থেকে পৃথক করে: মেশিনের কোডের সাথে সম্পর্ক।
আপনি উচ্চ-স্তরের ভাষাগুলিতে কোড লেখার সময়, আপনার কোডটি কীভাবে মেশিনের সাথে ইন্টারঅ্যাক্ট করে সে সম্পর্কে আপনি (সাধারণত) নিজেকে উদ্বিগ্ন করবেন না। ভাষাটি নিজের জন্য যে ভার্চুয়াল মেশিনটি সংজ্ঞায়িত করে কোড প্রয়োগের সেই দিকগুলির মধ্যে অনেকগুলি লুকিয়ে রাখে।
সি তে, মেমরির সাথে আপনার প্রোগ্রামটির মিথস্ক্রিয়াটি সামনের দিকে অনুষ্ঠিত হয়। এটি আপনাকে কেবল স্তূপের ব্যবহার পরিচালনা করতে হবে তার চেয়েও বেশি এটি এতে স্ট্যাকের সাথে আপনার কোডের মিথস্ক্রিয়াকে অন্তর্ভুক্ত করে এবং কীভাবে আপনার কোডটির কেবল মেমরির অ্যাক্সেস আপনার কোডের আচরণ এবং কার্য সম্পাদনকে প্রভাবিত করে - এমনকি মেমরি অ্যাক্সেসের ক্রমও নয় not আপনার দৃষ্টি এড়ানোর অনুমতি দেওয়া যেতে পারে, কারণ ভুল সময়ে ভুল মেমরিটি কার্যকরভাবে কার্যকরভাবে পঙ্গু করতে পারে।
উচ্চ-স্তরের ভাষাগুলিতে, এই বিষয়গুলি কেবল এতটা স্পষ্ট নয়। মেমরি বরাদ্দ করা হয় এবং আপনার অজান্তেই এবং কিছু সময় আপনাকে অনুরোধ ছাড়াই বরাদ্দ দেওয়া হয়। প্রায়শই এটি আপনার নিয়ন্ত্রণের বাইরে চলে যায়। কখন, কোথায়, কীভাবে এবং কেন বেশিরভাগ মেমরি বরাদ্দ থাকে তা কেবল আপনার কাছ থেকে লুকানো থাকে।
তেমনিভাবে, অন্য দিকে, মেশিন কোড বা অ্যাসেমব্লিং কোড লেখার ফলে অগ্রভাগে আরও বিশদ আনা হয়েছে: আপনার পরিদর্শনের বাইরে প্রায় কিছুই অবশিষ্ট নেই, এবং আপনার কোড অবশ্যই প্রতিটি বরাদ্দ, প্রতিটি সংস্থান, প্রতিটি ডাটা যা পাস করে সে সম্পর্কে অবহিত থাকতে হবে সিপিইউ'র রেজিস্টারগুলির মাধ্যমে - এমন জ্ঞান যা এখনও পর্যন্ত উচ্চ স্তরের ভাষাগুলি থেকে আরकेেন হিসাবে সরানো হয়েছে।
আমি জানি সি প্রোগ্রামিংয়ের পিছনে নীতিগুলি শিখার জন্য একটি ভাল ভাষা।
আমি একমত নই সি প্রোগ্রামিংয়ের পিছনে নীতিগুলি শিখতে অনেকগুলি বৈশিষ্ট্য অনুপস্থিত। বিমূর্ততা তৈরির জন্য সি এর বৈশিষ্ট্যগুলি ভয়ানক, এবং বিমূর্ততা প্রোগ্রামিংয়ের পিছনে অন্যতম মূল নীতি।
আপনি যদি হার্ডওয়্যারটি কীভাবে কাজ করে তা শিখতে চান এবং মেশিনের জন্য কিছু যান্ত্রিক সহানুভূতি দেখানোর জন্য আপনার মেশিন কোড শিখতে হবে, নির্দেশ নির্দেশক আর্কিটেকচারটি, এবং আধুনিক সিপিইউগুলির ক্যাশে নির্মাণও অধ্যয়ন করতে হবে। মনে রাখবেন যে আমি অ্যাসেম্বলি ভাষার প্রস্তাব দিচ্ছি না, কেবল হার্ডওয়্যার নির্দেশাবলী বুঝুন, তাই আপনি বুঝতে পারেন যে একটি সংকলক কী উত্পন্ন করে।
আপনি যদি প্রোগ্রামিং নীতিগুলি শিখতে চান তবে জাভা, সি #, বা সুইফ্টের মতো একটি আধুনিক ভাষা ব্যবহার করুন বা রাস্টের মতো আরও কয়েক জনের মধ্যে একটি ব্যবহার করুন। এছাড়াও, কার্যকরী সহ বিভিন্ন ধরণের প্রোগ্রামিং দৃষ্টান্ত অধ্যয়ন করুন।
বেশিরভাগ প্রোগ্রামিং ভাষা বিমূর্ত মেশিনের ক্ষেত্রে বর্ণিত হয়। তারপরে, তারা সংকলক, লাইনকার্স, এসেম্বলার্স, দোভাষী, স্ট্যাটিক বিশ্লেষক, অন্তর্বর্তী ভাষা এবং হার্ডওয়্যারের মতো সরঞ্জামগুলির সেট ব্যবহার করে কার্যকর করা হয়েছে যা সম্মিলিতভাবে একটি ফলাফল তৈরি করবে যা কোনও প্রোগ্রামের দ্বারা পর্যবেক্ষণ অনুসারে অ্যাবস্ট্রাক্ট মেশিনের কমপক্ষে সমস্ত প্রত্যাশিত আচরণকে সম্মান করে will ।
সি উপরের নিয়মের ব্যতিক্রম নয়। এটি একটি বিমূর্ত মেশিনের ক্ষেত্রে বর্ণিত হয়েছে যা আপনার প্রকৃত হার্ডওয়্যার সম্পর্কে কোনও ধারণা নেই।
যেমন, লোকেরা যখন বলে যে আপনার কম্পিউটারটি আসলে কীভাবে কাজ করে তা সি শিখায়, তাদের সাধারণত বোঝার অর্থ হ'ল সি আপনাকে শিখায় যে সি কীভাবে কাজ করে। কিন্তু সি সিস্টেমস প্রোগ্রামিংয়ের ক্ষেত্রে এতটাই বিস্তৃত, এটি বোধগম্য যে প্রচুর লোকেরা এটি কম্পিউটারের সাথেই বিভ্রান্ত করতে শুরু করে। এবং আমি ব্যক্তিগতভাবে যতদূর বলতে পারি যে সি কিভাবে কাজ করে তা জেনে রাখা কম্পিউটার নিজেই কীভাবে কাজ করে তা জানার চেয়ে প্রায়শই গুরুত্বপূর্ণ knowing
কিন্তু এখনও, সি এবং কম্পিউটার হয় ভিন্ন জিনিস। আসল হার্ডওয়্যারটি আসলে জটিল - এমন কোনও উপায়ে যাতে সি স্পিকে বাচ্চাদের বইয়ের মতো পড়তে পারে। আপনি যদি আপনার হার্ডওয়্যারটি কীভাবে কাজ করেন সে বিষয়ে আগ্রহী হন, আপনি সর্বদা একটি ম্যানুয়াল সন্ধান করতে পারেন এবং কোনও এসেম্বেলারে কোড লেখা শুরু করতে পারেন। অথবা আপনি সর্বদা ডিজিটাল সার্কিট সম্পর্কে শিখতে শুরু করতে পারেন যাতে আপনি নিজেরাই কিছু হার্ডওয়্যার ডিজাইন করতে পারেন। (খুব কমপক্ষে, আপনি উচ্চ স্তরের সি কত তা প্রশংসা করবেন))
ঠিক আছে, আসলে হার্ডওয়্যার সম্পর্কে শেখার সাথে সি ব্যতীত অন্যান্য জিনিস জড়িত তবে সি আজ প্রোগ্রামারদের কি অন্য কিছু শেখাতে পারে?
আমি মনে করি এটি নির্ভর করে।
এই সম্ভাবনার একটি চয়ন করার জন্য খুব তাড়াতাড়ি করবেন না। আমি বহু বছর ধরে কোড লিখছি এবং এখনও এখনও আমার কোনও ধারণা নেই যে কোনটি সঠিক উত্তর, বা সঠিক উত্তর দুটির মধ্যে একটি মাত্র কিনা, বা এই বিষয়ে সঠিক উত্তর হিসাবে এমন কোনও বিষয় রয়েছে কিনা তা এখনও আমার জানা নেই।
আমি কিছুটা বিশ্বাস করতে চাইছি যে শেষ পর্যন্ত আপনার দুটি বিকল্পই প্রয়োগ করা উচিত, আমি যেভাবে বর্ণনা করেছি সেভাবে looseিলে .ালাভাবেই। তবে আমি মনে করি না এটি সত্যিই কোনও প্রযুক্তিগত বিষয়, আমি মনে করি এটি বেশিরভাগ শিক্ষামূলক। প্রতিটি ব্যক্তি উল্লেখযোগ্যভাবে বিভিন্ন উপায়ে শিখতে বলে মনে হচ্ছে।
কমপক্ষে আমি প্রস্তাবিত দ্বিতীয় বিকল্পটি অন্তর্ভুক্ত করে যদি আপনি উপরের প্রশ্নের উত্তর দিয়ে থাকেন তবে ইতিমধ্যে আপনার বেল্টের নীচে আপনার কাছে কয়েকটি উত্তর রয়েছে: উচ্চ-স্তরের ভাষাগুলিতে যা কিছু শিখতে পারে তা সিতে বা এটি পুনরায় উদ্ভাবন করে আরও ভালভাবে শিখতে পারে কমপক্ষে মিশ্রণ সি যুক্ত করে প্রসারিত।
তবে, আপনার উত্তর নির্বিশেষে, অবশ্যই কয়েকটি জিনিস রয়েছে যা আপনি সি থেকে প্রায় একচেটিয়াভাবে শিখতে পারেন (এবং সম্ভবত অন্যান্য কয়েকটি ভাষাও)।
সি historতিহাসিকভাবে গুরুত্বপূর্ণ। এটি এমন একটি মাইলফলক যা আপনি কোথায় থেকে এসেছিলেন তা দেখতে এবং প্রশংসা করতে পারেন এবং আমরা কোথায় যাচ্ছি সে সম্পর্কে সম্ভবত আরও কিছু প্রসঙ্গ পেতে পারেন। নির্দিষ্ট সীমাবদ্ধতা কেন বিদ্যমান তা আপনি প্রশংসা করতে পারেন এবং আপনি যে নির্দিষ্ট সীমাবদ্ধতা প্রত্যাহার করে নিয়েছেন তা প্রশংসা করতে পারেন।
সি আপনাকে অনিরাপদ পরিবেশে কাজ করতে শেখাতে পারে। অন্য কথায়, ভাষা যখন কোনও কারণে (কোনও ভাষা) আপনার পক্ষে এটি করতে না পারে বা করতে পারে না তখন এটি আপনার পিছনে দেখার প্রশিক্ষণ দিতে পারে। এটি নিরাপদ পরিবেশে আপনাকে আরও উন্নত প্রোগ্রামার করে তুলতে পারে কারণ আপনি নিজের থেকে কম বাগ তৈরি করবেন এবং অন্যথায় নিরাপদ প্রোগ্রামের বাইরে কিছু বাড়তি গতি নিচে রাখতে সাময়িকভাবে সুরক্ষা বন্ধ করতে সক্ষম হবেন (যেমন পয়েন্টারের ব্যবহার) সি #) তে, সেই ক্ষেত্রে যেখানে রানটাইম ব্যয় সহ সুরক্ষা আসে।
সি আপনাকে শিখিয়ে দিতে পারে যে প্রতিটি বস্তুর স্টোরেজ প্রয়োজনীয়তা, একটি মেমরি লেআউট, সীমাবদ্ধ ঠিকানা জায়গার মাধ্যমে মেমরিটি অ্যাক্সেস করা যায় এমন সত্য fact যদিও অন্যান্য ভাষাগুলি এই বিষয়গুলিতে আপনার মনোযোগের প্রয়োজন নেই, তবে কয়েকটি ক্ষেত্রে এমন কিছু ঘটনা রয়েছে যেখানে কিছু অর্জিত অন্তর্দৃষ্টি আপনাকে আরও জ্ঞাত সিদ্ধান্ত নিতে সহায়তা করতে পারে।
সি আপনাকে এর বিল্ড সিস্টেমের মাধ্যমে লিংকেজ এবং অবজেক্ট ফাইল এবং অন্যান্য জটিলতার বিশদ সম্পর্কে শিখিয়ে দিতে পারে। কোনও দেশীয় সঙ্কলিত প্রোগ্রাম কীভাবে প্রায়শই উত্স কোড থেকে শুরু করে কার্যকর হয় on
সি আপনার অপরিবর্তিত আচরণের ধারণার মাধ্যমে অভিনব উপায়ে চিন্তা করতে আপনার মনকে বাঁকতে পারে। সফ্টওয়্যার বিকাশের ক্ষেত্রে অপরিজ্ঞাত আচরণটি আমার পছন্দের ধারণাগুলির মধ্যে একটি, কারণ অ-শাস্ত্রীয় সংকলকগুলির সাথে এর এর প্রভাব সম্পর্কে অধ্যয়ন করা একটি অনন্য মানসিক অনুশীলন যা আপনি অন্য ভাষা থেকে বেশিরভাগ ক্ষেত্রেই পেতে পারেন না। তবে, আপনাকে এই দিকটি পুরোপুরি উপলব্ধি করার আগে আপনাকে বিচার-ও-ত্রুটি বাতিল করতে হবে এবং যত্ন সহকারে এবং ইচ্ছাকৃতভাবে ভাষা অধ্যয়ন শুরু করতে হবে।
তবে সম্ভবত সবচেয়ে গুরুত্বপূর্ণ উপলব্ধি যে সি আপনাকে একটি ছোট ভাষা হিসাবে মঞ্জুর করতে পারে, এটি এই ধারণাটি যা সমস্ত প্রোগ্রামিং ডেটা এবং ক্রিয়াকলাপে স্ফীত হয় । আপনি ভার্চুয়াল প্রেরণের সাথে হায়ারারচি এবং ইন্টারফেসগুলির সাথে মডিউলার ক্লাস হিসাবে দেখতে পছন্দ করতে পারেন বা খাঁটি গাণিতিক ফাংশনগুলি ব্যবহার করে পরিচালিত মার্জিত অপরিবর্তনীয় মানগুলি। এবং এটি সব ঠিক আছে - তবে সি আপনাকে স্মরণ করিয়ে দেবে যে এটি কেবলমাত্র ডেটা + অপারেশন । এটি একটি দরকারী মানসিকতা কারণ এটি আপনাকে বেশ কয়েকটি মানসিক বাধা হ্রাস করতে দেয়।
সি শেখার জন্য ভাল কারণ এটি কোনও নীতি শেখায় না । এটি আপনাকে শেখায়, কীভাবে জিনিসগুলি কাজ করে ।
সি এর সাথে 70 বা 80 এর দশকের ভাল পুরানো গাড়িগুলির সাথে একটি তুলনা করা যেতে পারে, যা কেবল গাড়ি চালানোর জন্য নির্মিত হয়েছিল। আপনি এগুলি ছিন্ন করতে পারেন, স্ক্রু দ্বারা স্ক্রু করতে পারেন এবং বুঝতে পারবেন যে প্রতিটি অংশ কীভাবে কাজ করে এবং এটি অন্য অংশগুলির সাথে কীভাবে কাজ করে যা আপনি নিজের হাতে নিতে পারেন। একবার আপনি সমস্ত অংশগুলি বুঝতে পারলে, আপনার সম্পূর্ণ চিত্রটি কীভাবে পরিচালনা করে তা খুব পরিষ্কার ছবি।
আধুনিক ভাষাগুলি আরও বেশি আধুনিক গাড়ির মতো যেখানে ইঞ্জিনটি মূলত একটি কালো বাক্স, গড় গাড়ির মালিকের দ্বারা বোঝার পক্ষে এটি খুব জটিল। এই গাড়িগুলি প্রচুর পরিমাণে করতে পারে, হেক, এই দিনগুলিতে তারা সক্রিয়ভাবে নিজেরাই গাড়ি চালানো শিখছে। এবং সেই জটিলতা এবং স্বাচ্ছন্দ্যের সাথে, ব্যবহারকারীর ইন্টারফেসটি ইঞ্জিনে আসলে যা চলছে তার থেকে অনেক দূরে সরে গেছে।
আপনি যখন সি তে প্রোগ্রামিং শিখেন, আপনি কম্পিউটারের তৈরি অনেক স্ক্রু এবং বাদামের সংস্পর্শে আসেন। এটি আপনাকে নিজেই মেশিনের বোঝার বিকাশ করতে দেয়। উদাহরণস্বরূপ, এটি আপনাকে বুঝতে দেয় যে কেন এটির মতো দীর্ঘ স্ট্রিং তৈরি করা ভাল ধারণা নয়:
java.lang.String result = "";
for(int i = 0; i < components.size; i++) {
result = result + components[i];
};
(আমি আশা করি, এটি সঠিক জাভা, আমি এটি কিছুক্ষণের জন্য ব্যবহার করি নি ...) এই কোড উদাহরণ থেকে, এটি কেন স্পষ্ট নয় যে লুপটির চতুর্ভুজ জটিলতা রয়েছে। তবে কেসটি হ'ল এবং এই কারণেই যখন আপনার কয়েক মিলিয়ন ছোট ছোট উপাদান সংযুক্ত করার জন্য এই কোডটি গ্রাইন্ডিং স্টলটিতে আসবে। অভিজ্ঞ সি প্রোগ্রামার সমস্যাটি কোথায় তা তাত্ক্ষণিকভাবে জানে এবং সম্ভবত প্রথমে এই জাতীয় কোড লেখা এড়ানো হবে।
for(int i = 0; i < strlen(s); i++)
সিটিতে লিখেন তবে লুপটিতেও চতুর্ভুজ সংক্রান্ত জটিলতা থাকবে এবং এটি আপনার জাভা উদাহরণের মতোই অস্পষ্ট; ;)
"প্রোগ্রামিংয়ের পিছনের নীতিগুলি", বিশেষত তাত্ত্বিক নীতিগুলি শেখার জন্য সি এর চেয়ে আরও ভাল ভাষা রয়েছে তবে ক্র্যাফটওয়ার্ক সম্পর্কে কিছু ব্যবহারিক, গুরুত্বপূর্ণ বিষয়গুলি শিখতে সি ভাল হতে পারে। গ্রেফ্যাডের উত্তর অবশ্যই নিশ্চিতভাবে সঠিক, তবে কীভাবে নিজের দ্বারা মেমরি পরিচালনা করবেন তার চেয়ে আপনি আইএমএইচও থেকে আরও বেশি কিছু শিখতে পারেন। উদাহরণ স্বরূপ,
ব্যতিক্রমগুলির অভাবে সম্পূর্ণ ত্রুটি পরিচালনা সহ প্রোগ্রামগুলি কীভাবে তৈরি করবেন
অবজেক্ট অরিয়েন্টেশনের জন্য কোনও ভাষা সমর্থন না করে কোনও প্রোগ্রামে কীভাবে কাঠামো তৈরি করা যায়
গতিশীল আকারের তালিকা, অভিধান বা একটি দরকারী স্ট্রিং বিমূর্তকরণের মতো ডেটা স্ট্রাকচারের অভাবে কীভাবে ডেটা মোকাবেলা করতে হয়
সংকলক বা রান টাইম এনভায়রনমেন্ট আপনাকে স্বয়ংক্রিয়ভাবে সতর্ক করে না এমন সময়ে কীভাবে অ্যারে ওভারফ্লোসের মতো সাধারণ ত্রুটিগুলি এড়ানো যায়
টেমপ্লেট বা জেনেরিকের ভাষা সমর্থন না করে জেনেরিক সমাধান কীভাবে তৈরি করা যায়
এবং আমি কী উল্লেখ করেছি যে আপনি অবশ্যই নিজের দ্বারা মেমরি পরিচালনা করতে শিখতে পারেন? ;-)
তদুপরি, সি শিখার মাধ্যমে আপনি শিখবেন যে সি ++, জাভা, সি #, অবজেক্টিভ সি এর সিনট্যাক্টিকাল সাধারণতা এসেছে।
2005 সালে, জোয়েল স্পলস্কি অন্য কোন উচ্চ স্তরের ভাষার আগে সি শেখার জন্য একটি প্রস্তাবনা লিখেছিলেন । তার যুক্তিগুলো হ'ল
"আপনি কখনও উচ্চ স্তরের ভাষাগুলিতে দক্ষ কোড তৈরি করতে পারবেন না।"
"আপনি কখনই সংকলক এবং অপারেটিং সিস্টেমগুলিতে কাজ করতে সক্ষম হবেন না, যা প্রায় সেরা প্রোগ্রামিং কাজ are"
"বড় আকারের প্রকল্পগুলির জন্য আর্কিটেকচার তৈরি করার জন্য আপনাকে কখনই বিশ্বাস করা যায় না"
"যদি আপনি ব্যাখ্যা করতে না পারেন কেন while(*s++ = *t++);
একটি স্ট্রিং অনুলিপি করে, বা যদি এটি পৃথিবীর সবচেয়ে প্রাকৃতিক জিনিস না হয় তবে ভাল, আপনি কুসংস্কারের ভিত্তিতে প্রোগ্রামিং করছেন
অবশ্যই তিনি যা লিখেছেন তা অবশ্যই বিতর্কিত, তবে আইএমএইচও তাঁর প্রচুর যুক্তি আজও বৈধ।
কম্পিউটিংয়ের দুটি মূল বিমূর্ততা হ'ল টুরিং মেশিন এবং ল্যাম্বদা ক্যালকুলাস, এবং সি হল টিউরিং মেশিনের গণনার দৃষ্টিভঙ্গি নিয়ে পরীক্ষা করার উপায়: বেশিরভাগ নিম্ন স্তরের ক্রিয়াকলাপ যা একটি পছন্দসই ফলাফল হিসাবে উদ্ভূত হয় emerge তবে আপনাকে মনে রাখতে হবে যে সি তার নিজস্ব মডেল গণনার সাথে আসে। সুতরাং, সি শিখানো আপনাকে সি-অ্যাবস্ট্রাক্ট মেশিনের নিম্ন-স্তরের বিশদটি শিখিয়ে দেবে, যা প্রকৃত আর্কিটেকচার থেকে একেবারে পৃথক হয়ে উঠছে। সিতে আমাকে যে প্রথম জিনিসটি শেখানো হয়েছিল তার মধ্যে একটি ছিল "চতুর" কৌশল প্রয়োগ করে সংকলককে কখনই আউটস্মার্ট করার চেষ্টা করা হয়নি এবং মনে হয় যে প্রবণতাটি সংকলকগুলিতে আরও এবং বেশি অপ্টিমাইজেশনের দিকে রয়েছে। অন্যান্য উচ্চ-স্তরের ভাষাগুলির মতো, আপনি যখন সি-তে লিখেন, সংকলকগণ বিমূর্ত সি মেশিনে আপনার কী করা হবে বলে প্রত্যাশা করে তা প্রকৃত হার্ডওয়্যারে ঘটায়,
সুতরাং আমি যা বলতে চাইছি তা হল সি শেখার প্রয়োজনীয়তাটি আপনাকে হার্ডওয়্যারে আসলে কী ঘটে তার একটি ভাল চিত্র দেয় না। "সি মেশিনের কাছাকাছি" "বেশিরভাগ উচ্চ-স্তরের ভাষার চেয়ে কাছে" হিসাবে বোঝা উচিত। সরাসরি "সফটওয়্যার আর্কিটেকচার শেখা আরও ফলপ্রসূ হতে চলেছে যদি আপনি" এটি কীভাবে কাজ করে "এর আরও সঠিক চিত্র চান।
অন্যদিকে, শিখতে সি আপনাকে সিস্টেম প্রোগ্রামিং, নিম্ন-স্তরের প্রকার, পয়েন্টার এবং বিশেষভাবে মেমরির বরাদ্দের সাথে পরিচিত করতে পারে। অ্যালগোরিদম এবং ডেটা স্ট্রাকচার শেখার ক্ষেত্রে, আমি অন্যান্য ভাষাগুলির চেয়ে সিতে সেগুলি শেখার কোনও সুবিধা পাই না।
এটি খুব মুক্ত সমাপ্ত প্রশ্ন, চূড়ান্ত উত্তর নাও পেতে পারে। আপনি ভাষার কাঠামোর অভ্যন্তরীণ বিষয়গুলি বুঝতে পারলে আপনি প্রতিটি ভাষার বেশ কিছু শিখতে পারেন। সি আপনাকে নিম্ন বিবরণ বুঝতে বাধ্য করে কারণ এটি প্রাথমিকভাবে একটি অপারেটিং সিস্টেম লেখার জন্য তৈরি করা হয়েছিল। এমনকি এত বছর পরেও এটি এখনও সর্বাধিক ব্যবহৃত ভাষাগুলির মধ্যে একটি যা মূলত এম্বেডড সিস্টেম এবং ওপেন সোর্স প্রকল্পগুলির জন্য ধন্যবাদ thanks সুতরাং, প্রশ্ন আপনি শিখতে চান কি? এবং কোন ডোমেইনে?