সফটওয়্যার ইঞ্জিনিয়ারদের কি আসলেই নিম্ন স্তরের জিনিসগুলি জানতে হবে? [বন্ধ]


23

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

ইন্টারনেটে এই বিষয়টি দেখার পরে আমি সংক্ষেপে সংক্ষেপে এই সাধারণ ধারণা। আপনি কি মনে করেন এটি অদূর ভবিষ্যতে বাস্তব হয়ে উঠবে? তার মানে কি আমরা নিম্ন স্তরের স্টাফগুলি সম্পর্কে যা শিখি তা কী আর সফ্টওয়্যার শিল্পের জন্য ব্যবহারিক নয়? এর অর্থ কি, সমাবেশের ভাষা এবং সি / সি ++ কেবল বৈদ্যুতিক প্রকৌশলীদের জন্য প্রাসঙ্গিক হয়ে উঠবে, যেহেতু কেবল তারাই কেবল তাদের বৈদ্যুতিক উপাদানগুলির জন্য প্রোগ্রাম করার প্রয়োজন হবে?


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

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


1
"সি / সি ++ এবং জাভার মধ্যে পারফরম্যান্স তাৎপর্যপূর্ণ হবে না"। যদি খুব শীঘ্রই এটি ঘটে তবে দয়া করে আমার জাভা দক্ষতা সংশোধন করার জন্য আমাকে একটি প্রধানমন্ত্রী পাঠান। আমি এই কারণে কয়েক বছর আগে জাভা ব্যবহার বন্ধ করেছি।
সাকিস্ক

3
বেশিরভাগ সি / সি ++ কোড হার্ডওয়্যার অ্যাক্সেস করে না। এটি এটিকে সহজ করে তোলে তবে এটি সাধারণত ডিভাইস ড্রাইভারদের দ্বারা লুকানো থাকে। আমি এমনকি এটি বলার উদ্যোগ নিতে চাই যে 95% সি বা সি ++ কোড কখনও হার্ডওয়ারের সাথে সরাসরি যোগাযোগ করে না।
পেমদাস

1
আমি নিম্ন স্তরের ভাষায় শিরোনাম পরিবর্তনের পরামর্শ দেব suggest প্রচুর নিম্ন স্তরের জিনিস রয়েছে (থ্রেডগুলি কীভাবে কাজ করে .. আপনার ওএস কীভাবে কাজ করে .. তাই আরও অনেক কিছু) যা এখনও সি ++ বা অ্যাসেমব্লানি না জানা থাকলেও মান রয়েছে।
শানেসি

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

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

উত্তর:


18

আকর্ষণীয় প্রশ্ন। আমি দীর্ঘ সময় সি ++ প্রোগ্রামার যিনি এখন সি # তে কর্মরত রয়েছেন (পারফরম্যান্স সমালোচনামূলক কাজের জন্য কিছুটা নিয়ন্ত্রণহীন সি ++ সহ) এবং performanceতিহাসিকভাবে সাধারণত পারফরম্যান্সের কারণে মাঝে মাঝে বিধানসভা কোড যুক্ত করতে হয়েছিল।

প্রশ্নের জবাব প্রস্তুত করার কয়েকটি বিষয়:

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

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

  • সি ++ স্তরগুলিতে আমি অবজেক্টিভ-সি যুক্ত করব কারণ এটি সি # / জাভার চেয়ে সি ++ এর চেয়ে বেশি অনুরূপ। পরিশেষে, আমি লক্ষ করব যে শেয়ার্ড_পিটার <> এবং অন্যান্য স্বয়ংক্রিয় সংস্থান ব্যবস্থাপনার বৈশিষ্ট্যগুলি যুক্ত করার সাথে এই ভাষাগুলিতে আবর্জনা সংগ্রহের কাছাকাছি কিছুতে সমর্থন রয়েছে।

ঠিক আছে - আপনার মূল প্রশ্নটিতে: সফ্টওয়্যার ইঞ্জিনিয়ারদের কি আসলেই আর নিম্ন স্তরের জিনিসগুলি জানতে হবে?

আমার উত্তর: হ্যাঁ

কারণ:

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

ভাল প্রশ্ন - তবে আমি অচিরেই শব্দহীন ভাষাগুলি সরে যেতে দেখছি না।


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

1
নিম্ন স্তরে কী চলছে তা সম্পর্কে আরও গভীর ধারণা থাকা আপনার সিদ্ধান্তগুলি জানাতে সহায়তা করবে।
ডায়েটবুদ্ধ

1
আমার 0.02 যোগ করার জন্য, যখন আপনি দাবি করেন যে কিছু ঘটেছিল তখন কীভাবে করা হয় তা জেনে রাখা ভাল usually আপনার দাবিকে আরও যুক্তিসঙ্গত এবং দক্ষ করতে সহায়তা করতে পারে (উচ্চ-স্তরের প্রোগ্রামিং এবং সম্ভবত বসদের ক্ষেত্রে প্রযোজ্য;))।
ssube

43
  • যে কেউ বৈধভাবে হবে না সম্পর্কে এবং শিখতে না নিম্ন স্তরের কার্যকারিতা বুঝতে, এবং এখনও হতে একটি খুব উত্পাদনশীল এবং মূল্যবান ডেভেলপার, ইতিমধ্যে ক্ষেত্রে দেখা যায়।
  • নিম্ন স্তরের কার্যকারিতা কারও শিখতে বা বোঝার প্রয়োজন হবে না, এটি সর্বদা সময় নষ্ট হবে, তা কখনই হবে না।

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

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


7

নিম্ন স্তরের জিনিসগুলি না জেনে আপনি আজ প্রোগ্রামার হিসাবে জীবিকা নির্বাহ করতে পারেন। আমি মনে করি এটি এটি আপনাকে আরও ভাল প্রোগ্রামার করে তোলে।

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


3

আমি মনে করি না, কার্নেল বিকাশকারীদের সর্বদা নিম্ন স্তরের স্টাফের প্রয়োজন হবে। সবকিছু কীভাবে কাজ করে তাও বুঝতে ক্ষতি হয় না, যদি আপনি মৌলিকভাবে বুঝতে পারেন যে আপনি যে কোডটি লিখছেন তা আসলে আপনি আরও ভাল কোড লিখতে শিখবেন। আমি মনে করি নিম্ন স্তরের জিনিসগুলি অপসারণ করা একটি ভয়াবহ ধারণা কারণ এই বিমূর্ত চিন্তাভাবনাটি সময়ে সময়ে দরকারী তবে আপনি যদি সমস্যার সর্বোত্তম উপায়ে সমাধান করতে চান তবে বাস্তবে বাধা হয়ে উঠতে পারে। উদাহরণস্বরূপ বোঝার জন্য যে আপনি যখন স্ট্রিংগুলি কাটাচ্ছেন আপনি আসলে নতুন স্ট্রিং তৈরি করছেন তা গুরুত্বপূর্ণ তবে আপনি কীভাবে স্ট্রিংগুলি প্রয়োগ করা হয়েছে তা বুঝতে না পারলে আপনি কেবল কনটেনেট করতে পারেন এবং আপনার প্রোগ্রামটি চালাতে 5 মিনিট অপেক্ষা করতে পারেন। এটি এর মতো জিনিসের উপর এটি একটি দুর্দান্ত নিবন্ধ: http://www.joelonsoftware.com/articles/fog0000000319.html


3

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

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

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


2

"হার্ডওয়্যার উন্নতি অব্যাহত রাখার সাথে সাথে সি / সি ++ এবং জাভা এর মধ্যে পারফরম্যান্স তাত্পর্যপূর্ণ হবে না এবং বড় খেলাটি এই জাতীয় জাভা ভাষায় প্রোগ্রাম করতে সক্ষম হতে পারে।"

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

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

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


@ অ্যাডাম টিউলিপার "পুরোপুরি সমাবেশে লেখা একটি ওএস" আকর্ষণীয়। আপনি আমাকে ওএস এর নাম দিতে পারেন? সমস্যা সমাধানের বিষয়ে আপনি ভাল বক্তব্য রেখেছেন।
আমুমু

@ অ্যাডাম: একটি অ্যাসেম্বলি-কেবল "ওএস" এর মধ্যে সম্ভবত অনেকগুলি ঘণ্টা এবং হুইসেল নেই (যেমন অভিনব অ্যানিমেটেড জিইউআই এবং একটি পেইন্ট প্রোগ্রাম), বরং এটি কেবল এক বা দুটি ব্যবহারকারী-মোড প্রক্রিয়া চালাতে সক্ষম হতে পারে ...
ম্যাক 25'11

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

1
@ বিট-টুইডলার: আপনি কি নিশ্চিত? আমি যে উত্সগুলি দেখেছি সেগুলির বেশিরভাগই ছিল বিলিএসএএস ...
টিএমএন

@ টিএমএন: বিলিএসইএস কেবলমাত্র উচ্চ-স্তরের ওএস স্টাফের জন্য ব্যবহৃত হত। পুরো ভিএমএস কার্নেলটি ম্যাক্রো -32-এ লেখা হয়েছিল। আমি কাঁটা-স্তরের প্রসেসিং কোডের একটি তালিকা বছরের পর বছর ধরে রেখেছি কারণ আমি ভেবেছিলাম এটি একটি দুর্দান্ত ধারণা। ফর্ক-লেভেল প্রসেসিং এমন একটি প্রক্রিয়া ছিল যার মাধ্যমে একটি বাধা হ্যান্ডলারটি তার কোডের অ-সময়-সমালোচনামূলক অংশটিকে একটি নিম্ন বিঘ্নিত অগ্রাধিকার স্তরে চালানোর জন্য সময় নির্ধারণ করতে পারে। কাঁটাচামচ স্তরের প্রক্রিয়াকরণটির নাম পরিবর্তন করে এনটি কার্নেলের ডিফার্ড প্রক্রিয়া কল করা হয়েছিল।
বিট-টুইডলার ২ '

2

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


একমত। আমি প্রায় ৩০ বছর যাবত এম্বেড প্রোগ্রামিং করছি এবং আমি নিজেকে সমাবেশের কোডটি খুব বেশি লেখার দরকার খুঁজে পাই না (সবকিছুই সি-তে রয়েছে), আমি প্রায়শই নির্দেশের ভিত্তিতে একটি নির্দেশনার উপর একটি প্রোগ্রামে পদক্ষেপ করি।
tcrosley

হেক, আমি প্রায়শই উইন্ডোজ সিপিইউ মোডে সি এবং সি ++ কোড ডিবাগ করি। আর্কিটেকচার সম্পর্কে জ্ঞান এবং প্রসেসরের জন্য প্রয়োজনীয় সেট এবং সেইসাথে ব্যবহৃত সংকলকটির রান-টাইম সংগঠনটি কারও ঝুলিতে থাকা দক্ষতার একটি শক্তিশালী সেট। : দয়া করে নিম্নলিখিত programmers.stackexchange.com প্রশ্ন আমি কোথায় বিস্তারিত জিসিসি কোডটি দেখতে programmers.stackexchange.com/questions/59880/...
বিট-খেলাকারী

2

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

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

যে কাজগুলি স্বয়ংক্রিয় করা যেতে পারে, সেগুলি স্বয়ংক্রিয় হবে। সমস্ত কাজ স্বয়ংক্রিয় করা যায় না। সমস্ত অটোমেশন নিখুঁত নয়। সুতরাং, সমাবেশ গুরুত্বপূর্ণ? অবশ্যই. এটি কি "প্রোগ্রামার" হওয়া দরকার? অবশ্যই না.


0

হুঁ আমি আসলে নিম্ন স্তরের জিনিসগুলি শিখতে উপভোগ করি।

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

সম্ভবত খুব দরকারী না (আমি এই সমস্ত কিছু জেনে গাড়ি ঠিক করতে সক্ষম হবো না), অবশ্যই পেশাদারভাবে ব্যবহারিক নয়, তবে ভাল, মজাদার। L'art pourালা l'art: la connaissance pour la connaissance।


0

আমি মনে করি থাম্বের একটি দরকারী নিয়ম - এটি যত তাড়াতাড়ি হওয়া দরকার, আপনার নিম্ন স্তরেরটি প্রয়োজন।

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


1
-1: আমি মনে করি থাম্বের একটি কার্যকর নিয়ম - এটি যত তাড়াতাড়ি হওয়া দরকার, আপনার নিম্ন স্তরেরটি প্রয়োজন। - শুধু কৌতূহলী, তোমার বয়স কত? আরও ভাল অ্যালগরিদম, আরও ভাল আর্কিটেকচার এবং আরও ভাল হার্ডওয়্যার বেশিরভাগ আধুনিক সফ্টওয়্যার অ্যাপ্লিকেশনগুলিকে ত্বরান্বিত করবে। কম্পিউটার গেমস এবং এম্বেড থাকা সিস্টেমগুলি এই নিয়মের ব্যতিক্রম।
জিম জি।

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

0

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

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


-1

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


-1

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


-1

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

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


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

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

1
-1: আপনি কখনও শিখেন এমন সমস্ত কিছুই সমান ব্যবহারিক। - কি দারুন. হতে পারে আমার সমস্ত 'তুচ্ছ অনুসন্ধান' প্রশ্ন কার্ডের উত্তরগুলি মুখস্ত করে নেওয়া উচিত! ;)
জিম জি।

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

-1

সংখ্যাগরিষ্ঠের দরকার নেই। যদিও নিম্ন স্তরের কৌশলগুলি অনুশীলন করা সামগ্রিকভাবে চক্রকে কীভাবে প্রভাবিত করতে পারে সে সম্পর্কে বিকাশকারীকে আরও ভাল জ্ঞান দেয়, আজকাল বিকাশকারী নতুন প্রযুক্তিগুলি অধ্যয়নের জন্য সেই সময়টিকে কাজে লাগাতে পারে, যার ফলস্বরূপ নিম্ন স্তরের স্টাফগুলির বিকাশ প্রয়োজন তবে নির্ভর করা যায় না উপর.


-1

আমার দৃষ্টিতে, আপনি যখন "ইঞ্জিনিয়ার" শব্দটি ব্যবহার করেন, আপনি বোঝাচ্ছেন যে পুরুষ / মহিলা সেই ব্যক্তি যিনি খুব স্ক্র্যাচ থেকে জিনিসগুলি ডিজাইন করেন এবং তৈরি করেন। একটি সফটওয়্যার ইঞ্জিনিয়ারদের আসল সমস্যাটি কোনও সমস্যা সমাধান করা, তবে কী সমস্যা? এটা একটা বড় প্রশ্ন।

একজন বিকাশকারী বিভিন্ন দিক থেকে একজন প্রকৌশলী থেকে আলাদা। একজন "বিকাশকারী" এমন ব্যক্তি যিনি সাধারণত ইতিমধ্যে বিদ্যমান প্ল্যাটফর্মগুলিতে জিনিসগুলি তৈরি করেন। তিনি বিদ্যমান প্ল্যাটফর্মগুলি বিকাশ করেন বা এটি অবশ্যই প্যারেন্ট সিস্টেমের উপাদানটি ব্যবহার করে বয়স্কদের কাছ থেকে নতুন প্ল্যাটফর্মের উত্তরাধিকার সূচনা করে।

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

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

প্রকৃতপক্ষে, কোনও সফ্টওয়্যার ইঞ্জিনিয়ারকে নিম্ন স্তরের স্টাফগুলির সাথে দক্ষতা অর্জন এবং শেখার প্রয়োজন ... :)

যদিও একজন বিকাশকারী এটি সম্পূর্ণ তার আগ্রহের উপর নির্ভর করে। :)


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