আমি সি জানি না এবং কেন আমি এটি শিখব? [বন্ধ]


58

আমার প্রথম প্রোগ্রামিংয়ের ভাষাটি ছিল পিএইচপি ( হাঁপা )। এর পরে আমি জাভাস্ক্রিপ্ট নিয়ে কাজ শুরু করি। আমি সম্প্রতি সি # তে কাজ করেছি।

আমি একবারও সি ​​এর মতো নিম্ন বা মাঝারি স্তরের ভাষার দিকে একবারও দেখিনি

প্রোগ্রামিং-কমিউনিটি-এ-লার্জ-এ সাধারণ sensক্যমত্যটি হ'ল "এমন প্রোগ্রামার যিনি সি এর মতো কিছু শিখেননি, তিনি কেবল পয়েন্টার, ডেটা টাইপ, রেফারেন্স অনুসারে মানগুলি পাস করার মতো প্রোগ্রামিং কনসেপ্টগুলি পরিচালনা করতে পারবেন না।"

আমি একমত না. আমি তর্ক করছি যে:

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

কিছু লোকের সি জানা দরকার; এই লোকদের এমন চাকরি রয়েছে যা তাদের কম-মাঝারি স্তরের কোডে লেখার প্রয়োজন। আমি নিশ্চিত যে সি দুর্দান্ত, এবং আমি নিশ্চিত যে এমন কয়েকজন খারাপ প্রোগ্রামার আছেন যারা সি জানে know

পক্ষপাত কেন? একজন ভাল, সৎ, ক্ষুধার্ত প্রোগ্রামার হিসাবে যদি আমাকে সি শিখতে হত (কোনও অপ্রত্যাশিত কারণে), আমি সি শিখতাম সেখানকার বিভিন্ন ভাষা বিবেচনা করে, ভাল প্রোগ্রামাররা কী আমাদের অগ্রগতি শেখার দিকে মনোনিবেশ করে না? আমাদের কী আগ্রহ আমাদের শেখা উচিত নয়? আমাদের সীমাবদ্ধ সময়কে এগিয়ে নিয়ে যাওয়া উচিত নয় ? কিছু প্রোগ্রামাররা এর সাথে কেন একমত নন?

আমি বিশ্বাস করি যে আপনি যা করেন তার মধ্যে শ্রেষ্ঠত্ব অর্জনের চেষ্টা করা ভাল প্রোগ্রামার এবং খারাপদের মধ্যে মৌলিক নির্মূল বৈশিষ্ট্য।

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


@ স্টেফেন ওহ, দুঃখিত ... আমি ভুল বুঝেছি। (তবে আপনি দেখতে পাচ্ছেন কেন আপনাকে সি / সি ++ শিখতে হবে কেন?)
অ্যাপ্রেন্টিসহ্যাকার

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

@ বার্নিং প্রোডিজি আসুন আমরা এই আলোচনাটি এই
স্টিফেন

আপনি কি আমাদের এমন কিছু প্রসঙ্গ (url) দিতে পারেন যেখানে "পয়েন্টারের মতো প্রোগ্রামিং ধারণাগুলি পরিচালনা করতে পারে না ..." কোথা থেকে আসে?
বি

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

উত্তর:


113

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

সি এর নীচের একমাত্র স্তরটি হ'ল একটি নির্দিষ্ট সিপিইউ দ্বারা কথিত সমাবেশ।

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


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

12
যদিও আমি এর সাথে একমত, সি: আপনাকে মাটির সমস্ত পথ নয়, ঘাসের শিকড়গুলির কয়েক ধাপ কাছাকাছি নিয়ে আসে। ঠিক আছে, মেমরি লেআউট বলে একটি জিনিস আছে। তবে এটি শারীরিক অর্থ কী? আপনি কী বোঝেন যে কম্পিউটার আপনি কীভাবে কাজ করেন যদি আপনি ইলেকট্রনিক্স না বুঝতে পারেন? কোয়ান্টাম বলবিজ্ঞান? ইত্যাদি। আমি নিশ্চিত নই যে পৃথিবীতে এমন একক মন আছে যারা কোয়ান্টাম মেকানিক্স পর্যন্ত সি এর মাধ্যমে উচ্চ স্তরের ভাষা থেকে পুরো খাদ্য শৃঙ্খলা গভীরভাবে বুঝতে পারে।
জুনাস পুলক্কা

14
আমার প্রশ্ন হল একটি কম্পিউটার অভ্যন্তরীণভাবে কীভাবে কাজ করে তা জেনে আপনি কীভাবে উপকৃত হতে পারেন? কি লাভ? আপনার কাছে যা আছে তা উপলব্ধি করা সি এর মতো খুব নিচু স্তরের ভাষা শেখার পক্ষে খুব ভাল কারণ নয় কারণ এটি বলার মতো আমার এখন যা আছে তার প্রশংসা করার জন্য
ফোর্টরান

18
@TheLQ আমি নির্বাক। কম্পিউটার কীভাবে অভ্যন্তরীণভাবে কাজ করে তা আপনি কীভাবে উপকৃত হতে পারেন? আপনি কী করছেন তার একটি পরিষ্কার বোঝা অর্জন করছেন, আপনি যা অর্জন করছেন তা। বরং: আপনি প্রথমে মেশিনে আসলে এটি কী করছেন তা শিখছেন।
ফ্র্যাঙ্ক শেয়ার

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

72

আমি মনে করি না যে এখানে উত্তরগুলির কোনওটিই ওপি যা খুঁজছিল তা সত্যই তাই আমি নিজের মতামতটিতে ফেলে যাচ্ছি।

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

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

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

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

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

সুতরাং, আপনার সিটি শিখানো উচিত কিনা তা প্রোগ্রামার হিসাবে আপনার কেরিয়ার থেকে আপনি কী চান তার উপর নির্ভর করে।


5
আপনি যে মাতাল শব্দ না । ঠিক আছে হয়তো কিছুটা। :)
স্টিফেন

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

3
সি এর জ্ঞান সম্পর্কে এসও এর অন্যান্য স্রষ্টা যে কিছু কথা বলতে চাইছেন তা এখানে রয়েছে: joelonsoftware.com/articles/ThePerilsofJavaSchools.html joelonsoftware.com/articles/CollegAdvice.html joelonsoftware.com/articles/fog0000000319.html
আইজাক ক্লিনম্যান

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

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

12

থাম্বের ব্যবহারিক নিয়মটি হ'ল আপনি সাধারণত যেভাবে কাজ করছেন তার নীচে বিমূর্ততার কমপক্ষে একটি স্তরটি বুঝতে হবে Consider বিবেচনা করুন যে আপনার পিএইচপি বা জাভাস্ক্রিপ্ট ইন্টারপ্রেটারটি আসলে সি বা সি ++ এ প্রয়োগ করা যেতে পারে। শেষ পর্যন্ত আপনি দোভাষী বা একটি সি রানটাইম ত্রুটিতে একটি বাগ আঘাত করতে চলেছেন। আপনি যদি সি বুঝতে না পারেন তবে আপনি এটির পুনরুত্পাদন করতে এবং এটি সম্পর্কে যত্নবান হতে পারেন এবং তারপরে আপনার থাম্বগুলিকে পাকান এমন আশা করে আপনি রক্ষণাবেক্ষণকারীকে বাগ রিপোর্ট প্রেরণে সীমাবদ্ধ থাকবেন। আপনি যদি সি জানেন তবে সমস্যাগুলি কোথায় এবং এটি কী তা আপনি তাদের ঠিক বলতে পারেন।

এর অর্থ হ'ল আপনি যদি সি / সি ++ এ কাজ করেন তবে আপনার প্ল্যাটফর্মে কমপক্ষে সমাবেশটি পড়তে সক্ষম হওয়া উচিত।

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


9
ঠিক আছে, "সি / সি ++" আমি সাথে থাকতে পারি (ভাষার আইনজীবীদের নিন্দিত করা যেতে পারে)। এবং "পার্ল / পাইথন / জাভাস্ক্রিপ্ট" পুরোপুরি যুক্তিসঙ্গত। তবে Godশ্বরের ভালবাসার জন্য, কেন "এসেম্বলার / সি / লিস্প"? এটি "আপেল / কমলা / ব্যারাক ওবামা" বলার মতো। এই তিনটি ভাষার একে অপরের সাথে কোনও সম্পর্ক নেই।
জেসন বেকার

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

আমি আর একমত হতে পারি না। অন্য উপায়ে, বিমূর্ততার উচ্চ স্তরের দিকে যেতে, "অফিসের আইটি লোক / গ্যাল" যিনি কমপক্ষে কিছু প্রোগ্রামিং করতে পারেন সে সাধারণত তার চেয়ে ভাল হবে যিনি পারেন না।
এমমেট

7

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

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


2
এএন এসেম্বলির ভাষা পড়তে শিখুন। সমস্যাটি হ'ল আমার কাছে 10 টি পৃথক প্রসেসর পরিবারের wardsর্ধ্বমুখী রয়েছে যা আমি ব্যবহার করি এবং একেবারে ভিন্ন ভিন্ন রূপগুলি শিখি তা বিভ্রান্তি এবং বিশৃঙ্খলার জন্য একটি রেসিপি। এটিএম এভিআর 32 এবং টিআই এমএসপি 430 এর সাথে এএমডি SHARC তুলনা করার চেষ্টা করুন।
uɐɪ

@ আইয়ান: ঠিক আছে। আদর্শভাবে আপনি যে আর্চটির জন্য সর্বাধিক বিকাশ করেন তা সমাবেশ ভাষা শেখা উচিত। বেশিরভাগ লোকের জন্য আমার ধারণা এটি x86 বা এআরএম হয়।
dsimcha

3
"সমস্ত গুরুতর প্রোগ্রামারদের শেষ পর্যন্ত কমপক্ষে এসেমব্লার পড়া শিখতে হবে" এই মত মন্তব্যগুলি আমাকে এই প্রশ্নটি দিয়ে শুরু করেছিল। আমার মনে হয় আপনি সরল পক্ষপাতদুষ্ট, স্যার। যদিও, আপনি ফাঁসী বিমূর্ততা সম্পর্কে যা বলেছিলেন তা আমি পছন্দ করি। এটা বোধগম্য. অন্যদিকে, এই জিনিসগুলি আমার অঙ্গনে পুরোপুরি "রিয়েল-ওয়ার্ল্ড" পার্থক্য করে না। আমি এখনও উচ্চ স্তরের বিমূর্ততা ব্যবহার করছি, ফাঁস বা না।
স্টিফেন

1
@ স্টিফেন, আপনার কিছু সংঠক ভাষা লেখার চেষ্টা করা উচিত 8 বিট সিপিইউ খুব সহজ নয় এবং small৫০২ (সি like৪ এর মতো) এবং জেড ৮০ (সিপি / এম বিজনেস মেশিনের মতো) উভয় ক্ষেত্রে একই ছোট জিনিস বাস্তবায়নের চেষ্টা করছে না এটি আসলে খুব শিক্ষামূলক কিছু খুব প্রাথমিক নকশার পার্থক্যের কারণে অভিজ্ঞতা (রেজিস্টারগুলির তুলনায় সূচক পৃষ্ঠা)।

স্পষ্টত মিথ্যা All abstractions are leakyবক্তব্য থাকা সত্ত্বেও +1 ।
টমাস এডিং

7

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

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


6
"জব স্পেসগুলি এখনও 25 বছর আগে লেখা স্ট্যান্ডার্ড টেম্পলেট থেকে এসেছে বলে মনে হয়।" আপনি আরও সঠিক হতে পারে না।
স্টিফেন

অভিনন্দন, জন!
সি সি

6

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

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


হাঃ হাঃ হাঃ. লিঙ্কযুক্ত কলামে জোয়েলের পরামর্শ: "আমি এখানে যা বলছি তা উপেক্ষা করার পরিবর্তে আপনি এমন এক ধরণের অনলাইন সফ্টওয়্যার জিনিস তৈরি করা ভাল যা অন্য শিক্ষার্থীদের যাতে তারিখগুলিতে লোকদের বেরিয়ে যেতে দেয়।"
স্টিফেন

3
@ স্টেফেন: আপনি যদি চান যে লোকেরা আপনাকে সত্যিই লক্ষ্য করে, তবে সেগুলি পাথর দেওয়া বা অর্থ দিয়ে দিন।
ফ্রেড নূরক

@ ফ্রেড দুর্দান্ত পরামর্শ, LOL।
স্টিফেন

6

কি দুর্দান্ত স্লাগ-ফেস্ট! (যেমন তারা অনুমান করে: এটি কি কোনও ব্যক্তিগত লড়াই, বা যে কেউ এতে যোগ দিতে পারে?)

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

অন্য শিক্ষকরা একই জায়গায় এসেছিল তা বলার অপেক্ষা রাখে না। এগুলি উচ্চ-স্তরের ভাষায় শুরু হয়েছে (বেসিক :-) এবং স্পষ্ট কোনও খারাপ প্রভাব ছাড়াই সেখান থেকে এগিয়ে গেছে।

সুতরাং নীচের লাইন, স্টিফেন, আপনি সঠিক হতে পারে। আমি এটা ভাবব না, তবে আমি আগে ভুল ছিলাম।


4

আমার ধারণা এটি অগ্রগতি।

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

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

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

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

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


আমার ধারণা "প্রশংসা" এটিকে রাখার একটি উপায়। আমার উচ্চ বিদ্যালয়ের প্রোগ্রামিং ক্লাসে, এটি বেশিরভাগ ক্ষেত্রে কেবল "আমার এই ফাংশনটি ব্যবহার করা দরকার questions এর প্রশ্ন ছিল a আমি কীভাবে লোলমগচার * কে ডব্লিউটিএফবিবিকিচার * রূপান্তর করব?"
কাতানা 314

আমি মনে করি সি শিখতে সহজ ছিল। কমপক্ষে এটি কেবল কার্নিগান এবং রিচি পড়ে আমার পক্ষে ছিল।
রবার্ট ব্রিস্টো-জনসন

2

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

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


1
এটি দুর্দান্ত ... তবে সবাই তা করে না। এর প্রভাবটি মনে হয় যে এম্বেড থাকা সিস্টেমগুলির জন্য লেখেন না তারা কেবল বাজছে এবং মারাত্মক বিকাশ করছে না - কমপক্ষে আপনার এম্বেড থাকা সিস্টেমের পয়েন্টের প্রসঙ্গে আপনার মডেল উপমাটি গ্রহণ করছেন। এটি স্পষ্টভাবে কেস নয় এবং সি
কে

অবশ্যই সি এর কাছাকাছি না গিয়ে বড় আকারের উত্পাদন অ্যাপ্লিকেশনগুলি লেখা সম্ভব আমি সি ব্যবহার করার আগে আমি 10 বছর কোড লিখেছিলাম আমি পিএল / এম, পাস্কাল, এডিএ পাশাপাশি এসেম্বলার ব্যবহার করেছি। এগুলি মেশিনের অন্তর্নিহিত যান্ত্রিকগুলি শেখার জন্য সি হিসাবে সহজেই ছিল এবং ত্রুটিমুক্ত কোড উত্পাদন করার জন্য প্রায়শই ভাল ছিল।
uɐɪ

দুর্দান্ত - যদিও আপনার উপরের উত্তরটি আমাকে সেভাবে ভেবেছিল এমন ধারণা
দেয়নি

এম্বেড ব্যবহারের লক্ষ্যবস্তু করে জাভা ইঞ্জিনগুলি নিয়ে আপনার কি কোনও অভিজ্ঞতা আছে?

2

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

কাজের বাজারে, যদিও হার্ড-কোর কোডার (প্রাক্তন সি / সি ++) এবং পর্যটকদের মধ্যে পার্থক্য করার মতো খুব বেশি কিছু ছিল না।

যেমন, আপনার জীবনবৃত্তান্তে সি বা সি ++ থাকা আপনাকে রিফ-রাফ থেকে আলাদা করতে সহায়তা করতে পারে।


2

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

কোনও পিএইচপি প্রোগ্রামারটির জন্য প্রদত্ত মেশিনে কোড কীভাবে কার্যকর করা হয় তার ঠিক কম স্বচ্ছ। পিএইচপি প্রোগ্রামারটির পক্ষে এটি গুরুত্বপূর্ণ নয় কারণ নেটওয়ার্ক ট্রান্সফারটি অ্যাপ্লিকেশনটির বোতল ঘাড় ইত্যাদি etc.

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

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

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


2

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

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

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

হার্ড স্টাফ ঘাম।


1

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

আপনি যদি সি না জানেন তবে অন্যান্য ভাষা কীভাবে ফলাফল অর্জন করে তা আপনি জানেন না।

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

4-স্ট্রোক ইঞ্জিন কীভাবে কাজ করে বা স্টিক শিফট (ম্যানুয়াল গিয়ার বক্স) ব্যবহার না করে আপনি কীভাবে কাজ করে তা না বুঝে এখন আপনি গাড়ি চালনা করতে পারেন।

যাইহোক, যদি আপনি বুঝতে পারেন যে হুডের নীচে কী চলছে আপনি, সময়ে সময়ে, ব্যতিক্রমী ফলাফল অর্জন করতে সক্ষম হবেন যে অজান্তে কেউ প্রতিলিপি করতে লড়াই করবে।


1

সি (এবং সম্ভবত সি ++) হ'ল সমুদ্র যা আপনি সাঁতরে চলেছেন The আপনার কোডটি চালিত করে ওএস সম্ভবত সি (এবং সি ++) তে কোডড। সুতরাং ওএস পরিষেবাগুলি অ্যাক্সেস করার জন্য আপনার নেটিভ এপিআই সিতে হবে will

নীচে কী আছে তা না জেনে যদি আপনি করতে পারেন তবে সি জানার দরকার নেই তবে বেশিরভাগ প্রোগ্রামারদের তাদের জীবনের কিছু সময় নীচের স্তরে ডুব দেওয়া দরকার।

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

আপনার পেশার জন্য এত মৌলিক কিছু শিখতে কয়েক সপ্তাহ ব্যয় করা কখনই ব্যাথা করে না।


1

সি এর অনেক সুবিধা রয়েছে:

  1. সি একটি নিম্ন স্তরের ভাষা You আপনি কার্নেল এবং ড্রাইভার বিকাশ করতে সি ব্যবহার করতে পারেন।
  2. সি দ্রুততম ভাষা M বহু শক্তি সফ্টওয়্যার সি দ্বারা তৈরি করা হয়। উদাহরণস্বরূপ: মেমক্যাচড, রেডিস, এনগিনেক্স, অ্যাপাচি, মাইএসকিএল ইত্যাদি
  3. সি একটি ক্রস প্ল্যাটফর্মের ভাষা। সি দ্বারা নির্মিত প্রোগ্রামটি প্রতিটি প্ল্যাটফর্মে চলতে পারে। অন্যান্য ক্রস প্ল্যাটফর্মের ভাষা এটি করতে পারে না। জাভা, পাইথন, পিএইচপি ইত্যাদি আইওএস প্ল্যাটফর্মে চলতে পারে না।
  4. সি ++ অনেক এম্বেড থাকা সিস্টেমে চলতে পারে না।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.