কম্পিউটার বিজ্ঞান তত্ত্বের এক বিটটি আমার জানা উচিত? [বন্ধ]


27

কম্পিউটার সায়েন্স ডিগ্রির চেয়ে বৈদ্যুতিন ইঞ্জিনিয়ারিংয়ের সাথে কথা বলার পরে, আমাকে আরও ভাল বাস্তব ওয়ার্ল্ড প্রোগ্রামার বানানোর জন্য কম্পিউটার বিজ্ঞানের এক বিট আমার কী জানা উচিত ?

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


42
1 (দুঃখিত, আমার ছিল)
হাইলেম

5
ওহ, বা সবচেয়ে গুরুত্বপূর্ণ এক! (আমি এখন যাব ...)
হাইলেম

তাত্ত্বিক কম্পিউটার বিজ্ঞান স্ট্যাকেক্সচেঞ্জইন এখানে অন্য প্রত্যেকে যা উল্লেখ করেছে তা নিশ্চিত করে: জটিলতা, ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলি। cstheory.stackexchange.com/tags
chrisaycock

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

1
আপনার যদি ইতিমধ্যে আপনার ইঙ্গিতটি না থাকে তবে আমি বুলিয়ান যুক্তি এবং / অথবা পৃথক সংখ্যার তত্ত্বটি বলতাম। প্রায় লিখিত প্রতিটি ifএবং loopবিবৃতি অধ্যয়নের সেই দুটি ক্ষেত্রের একটি উপসেট ব্যবহার করে ।
স্টিভেন ইভার্স

উত্তর:


52

যদি আমাকে মাত্র একটি বিট বেছে নিতে হয়, যা একটি কঠিন সিদ্ধান্ত, আমি বলব যে বিগ ও নোটের জন্য যান । O (n), O (ln n), O (n²), O (2 ^ n), O (n!) এর প্রভাবগুলি বোঝা আপনাকে প্রচুর ব্যয়বহুল ভুল এড়াতে সহায়তা করে, যে ধরণের ক্ষেত্রে ভাল কাজ করে পরিবেশের পরীক্ষার তবে ধ্বংসাত্মকভাবে উত্পাদন ব্যর্থ।


2
+1 এবং আমি এটিকে আরও গুরুত্বপূর্ণ বলব যে ও (এন ^ 2) ও (এলজি এন) এর চেয়ে খারাপ (যেমন উদাহরণস্বরূপ) প্রদত্ত কোডের টুকরোটির জন্য কীভাবে বিগ-ও পেতে হবে তা জেনে রাখা ।
ডিন হার্ডিং

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

ম্যাগনাস: আমার অভিজ্ঞতায়, বেশিরভাগ নন-প্রোগ্রামিং লোক জটিলতার বিষয়ে মোটেই ভাবেন না, তারা স্বজ্ঞাতসারে সমস্ত সমস্যার জন্য ও (এন) ধরে নেন।
ব্যবহারকারী 281377

আমি এখনও এটি আনুষ্ঠানিকভাবে প্রয়োজন।
ক্যাফগিকে

1
চ্যাড: অত্যধিক আনুষ্ঠানিকতাযুক্ত বিগ ও-স্বরলিপি সম্পর্কে কিছুই নেই তবে জিনিসগুলির নাম না থাকলে আপনি এই বিষয়গুলি সম্পর্কে খুব কমই ভাবতে পারেন, আপনার সমবয়সীদের সাথে এ সম্পর্কে কথা বলতে দিন।
ব্যবহারকারী 281377

19

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


আমি যুক্ত করব যে আপনি যদি এমন একটি সমস্যা সমাধান করছেন যা সহজেই সহজ ভাষায় পুনরুদ্ধার করা যায় তা জানতে এটি অনেকটাই সহায়তা করে।
ফিলসোডাড

জটিলতা একটি ধারণা হিসাবে গুরুত্বপূর্ণ, কিন্তু আসলে এটি গণনা করা প্রায়শই হয় না। কী কম জটিল তা বোঝা গুরুত্বপূর্ণ বিট।
বিল

@ বিল: হুবহু তবে সেই অংশটি হ'ল এক জিনিস যা আপনি অগত্যা অনুশীলনের মাধ্যমে পান না। তত্ত্বটি সেই অংশটিতে খুব সহায়ক।
Mnementh

12

ডেটা স্ট্রাকচার, অ্যালগরিদম এবং জটিলতা সম্পর্কে জানুন।

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

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

ডাটাবেস মডেলিংয়ের জ্ঞানও প্রয়োজনীয়।

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


বৈশিষ্ট্য - এখানে প্রচুর অ্যালগরিদম এবং ডেটা স্ট্রাকচার রয়েছে।
জন হপকিন্স

জিনিসগুলির ধারণা পাওয়ার জন্য কেবলমাত্র প্রাথমিক বিষয়গুলি। খুব ঘন-ঘন কিছু বই বাছাই করুন এবং এটির মাধ্যমে কাজ করুন।

1
এক বিট চেয়ে বেশ কিছুটা বেশি ।

7

এটি কিছুটা কঠিন প্রশ্ন।

কম্পিউটার বিজ্ঞানের সব দিকই একরকম বা অন্যভাবে গুরুত্বপূর্ণ।

আপনি প্রতিদিন কীভাবে উপকৃত হবেন সে ক্ষেত্রে, কোড থেকে সিপিইউতে আপনার কোড "হুডের নীচে" কীভাবে কাজ করে তার একটি সাধারণ সংক্ষিপ্ত বিবরণ।

বিগ হে নোটেশন বোঝা গুরুত্বপূর্ণ এবং আপনার কোড কীভাবে কার্যকর করা যেতে পারে তা বোঝা বাস্তব বিশ্বের পরিস্থিতিতেও খুব গুরুত্বপূর্ণ।


7

হ্যাঁ, এটি আমাকে কয়েক ঘন্টা ধরে ভাবতে বাধ্য করে।

প্রক্রিয়াতে, আমাকে ইতিমধ্যে এখানে দেওয়া কিছু সাধারণ উত্তরগুলি সরিয়ে ফেলতে হয়েছিল।

কোনও তালিকা নেই

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

  2. কার্যকরী ভাষা না, ভাষার একক পরিবার সমস্যা সম্পর্কে চিন্তাভাবনার একমাত্র পন্থা। কেন শুধুমাত্র এই বিট বিষয়টি বিবেচনা করা উচিত?

  3. হ্যালটিং সমস্যা কিছু কিছু খুব সুনির্দিষ্ট এবং লোকেরা অস্তিত্ব না জেনে জীবনযাপন করে।

  4. শোনো আপনি যদি না শুনছেন তবে আপনি নিজের জগতে বাস করেন। অগত্যা ক্ষতিকর!

  5. সফটওয়্যার ডেভলপমেন্ট চক্র নাহ! আমরা এখনও কিছু অবিশ্বাস্য সফ্টওয়্যার বা একক বৌদ্ধিক প্রচেষ্টায় আমাদের পথকে ভোলাতে পারি।

  6. জটিলতা তত্ত্ব আমার ধারণা এটি এটি হতে পারে তবে সমস্ত আনুষ্ঠানিকতা ছাড়াই

কমপ সায়েন্স থেকে যে এক বিট

আমি বলব - " বিমূর্ততা বিমূর্ততা বিমূর্ততা ... "। এটি সম্পর্কে জানুন। এর চারপাশে উদাহরণগুলি দেখুন এবং এটি ব্যবহার করে কীভাবে তৈরি করবেন তা শিখুন। এটা যেখানেই আছে। পুরো কম্পিউটার সায়েন্স, ইঞ্জিনিয়ারিং এবং অ্যাপ্লিকেশনগুলিকে বিমূর্ততার স্তরগুলির উপর স্তরগুলির মতো দেখাচ্ছে looks

একবার আপনি এটি জানাজানি হয়ে গেলে, আপনি চারপাশের ভালভাবে দেখতে শিখতে শুরু করেন।

আপনি যখন কেউ ব্যবহার list insertionকরছেন pythonএবং দেখছেন তখন আপনি not appendহাসেন কারণ আপনি জানেন যে পাইথন তালিকাগুলি অ্যারে অ্যাবস্ট্রাকশন ব্যবহার করে তৈরি করা হয়েছে যেখানে সন্নিবেশগুলি ব্যয়বহুল এবং কম ব্যয় করা হয়।

এটি কিন্তু একটি উদাহরণ।


একটি জবাবের জন্য +1 আপনি স্পষ্টতই অনেক চিন্তাভাবনা করেছেন।
জন হপকিন্স

হ্যালটিং সমস্যার বিষয়ে আপনার মন্তব্যে কেবলমাত্র একটি মন্তব্য: "কম্পিউটারের অস্তিত্ব না জেনে জীবনযাপন" যে কোনও কম্পিউটার বিজ্ঞানের বিষয়ের পক্ষে সত্য।


3

ডেটা স্ট্রাকচারের প্রতিযোগিতামূলক ব্যবহারের কেস।

এমন পরিস্থিতিতে রয়েছে যেখানে লাল-কালো গাছের সাথে একটি মানচিত্রের কার্যকারিতা এবং অন্যদের যেখানে আপনি কোনও অ্যারে ব্যবহার করতে পারবেন না তার গ্যারান্টি দেওয়ার প্রয়োজন হয়, আবার কার্য সম্পাদনের গ্যারান্টি দিতে। কখন কী ডেটা স্ট্রাকচার চয়ন করবেন তা জানা এক অমূল্য দক্ষতা।


3

এখানে কেবল তিনটি সংখ্যা রয়েছে:

  • শূন্য
  • এক
  • অনেক

কিন্তু এর অর্থ কি এই বোঝা যায় না যে '3' কি গুরুত্বপূর্ণ?
জাভিয়ের

এটি শূন্য, এক এবং অনন্ত হওয়ার কথা: en.wikedia.org/wiki/Zero_One_Infinity
থমাস ওয়ানস

@ জাভিয়ার: 3 হ'ল অনেকের একটি উপসেট
স্টিভেন এ লো লো

@ থমাস: কে বলে?
স্টিভেন এ লো।

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

3

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


অস্থিরতা বলতে কী বোঝ?
আমারা

3

হাল্টিং সমস্যা

কম্পিউটার সম্পর্কিত সমস্যাগুলি এমন একটি অস্তিত্ব রয়েছে যে কেবল কম্পিউটার দ্বারা সমাধান করা যায় না


3

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

প্রথাগত ভাষার সর্বাধিক গুরুত্বপূর্ণ স্তরগুলি হ'ল দুর্বল থেকে শক্তিশালী পর্যন্ত:

  1. একটি সীমাবদ্ধ অটোমেটা বা একটি রেগেক্স (REGEX (ব্যাকরিফারেন্স সহ REGEX বাস্তবায়নগুলি এই বিভাগের চেয়ে আরও শক্তিশালী, তবে তারা এখনও বিভাগ 2 এর সমস্ত কিছুকে বিশ্লেষণ করতে পারে না) দ্বারা পার্স করা যায় এমন ভাষাগুলি

  2. স্ট্যাক মেমোরি, বা একটি প্রসঙ্গমুক্ত ব্যাকরণ সহ অটোমেটা দ্বারা পার্স করা যায় এমন ভাষাগুলি।

  3. যে ভাষাগুলি টুরিং মেশিন, বা এলোমেলো অ্যাক্সেস মেমোরি সহ একটি অটোমেটা দ্বারা পার্স করা যায়।


উম, না। একটি নিয়মিত প্রকাশ একটি নিয়মিত ব্যাকরণকে বিশ্লেষণ করে। এটি হ'ল ব্যাকরণের বিভাগ যা একটি সীমাবদ্ধ রাষ্ট্র অটোমেটা দ্বারা গৃহীত হতে পারে। এবং একটি 'চমস্কি ব্যাকরণ' প্রসঙ্গমুক্ত ব্যাকরণগুলিকে একচেটিয়াভাবে উল্লেখ করে না, যা স্ট্যাক মেশিনগুলি প্রক্রিয়া করে।
ফিলসোডাড

@ ফিলোসোডাড - প্রসঙ্গ নিখরচ্য ব্যাকরণটি আরও সুনির্দিষ্ট এবং আমি শব্দটি ব্যবহার করতে পোস্টটি আপডেট করেছি। আমি নিয়মিত অভিব্যক্তি সম্পর্কে যা বলেছিলাম তা দিয়ে আমি আপনার সমস্যাটি বুঝতে পারি না।
ড্যান মোনেগো

@ ড্যান - আমার সমস্যাটি হ'ল একটি নিয়মিত প্রকাশটি সীমাবদ্ধ রাষ্ট্র অটোমাতার মতোই শক্তিশালী এবং আপনি যদি কোনও মেশিনের সাথে কোনও নির্বিচারবাদী প্রসঙ্গমুক্ত ব্যাকরণকে পার্স করতে পারেন তবে আপনি সমস্ত নির্মাতারা প্রসঙ্গে মুক্ত ব্যাকরণকে পার্স করতে পারেন।
ফিলোসোডাড

অথবা, আরও স্পষ্ট করে বলার জন্য: হয় আপনার একটি স্ট্যাকের প্রয়োজন বা আপনার দরকার নেই। যদি কোনও ভাষার বিশ্লেষণের জন্য আপনার যদি স্ট্যাকের প্রয়োজন হয়, তবে আপনার অবশ্যই ভাষাটি বিশ্লেষণের জন্য একটি স্ট্যাক থাকতে হবে, এবং তাই কোনও ভাষার পার্স করার জন্য যদি কোনও ভাষার একটি স্ট্যাকের প্রয়োজন হয় তবে আপনি সেই ভাষাটি বিশ্লেষণ করতে পারেন।
ফিলসোডাড

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

2

ওয়েল, আমি আপনাকে একটি নিস্তেজ উত্তর দিতে পারলাম: অটোমেটা তত্ত্ব এবং তথ্য তত্ত্ব।

অথবা আমি আপনাকে বলতে পারি যে আমি অনেক আগে একজন হার্ডওয়্যার পরামর্শদাতার কাছ থেকে কী শিখেছি:

  • "গুড ইনফ" যথেষ্ট ভাল নয়।

1

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


2
মার্ফির আইন: যে কোনও কিছু ভুল হতে পারে, সে ভুল হয়ে যাবে
রিচার্ড

এটি সিএস তত্ত্ব নয়, তবে এটি একটি দুর্দান্ত উত্তর।
justkt

1

প্রোগ্রামিং

গণিত ও কম্পিউটার বিজ্ঞান বিভাগ থেকে হোবার্ট এবং উইলিয়াম স্মিথ কলেজ এসেছে কম্পিউটার সায়েন্স 124 প্রোগ্রামিংয়ের পরিচিতি :

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

আপনি যদি প্রোগ্রাম করতে না পারেন, আপনি রিয়েল ওয়ার্ল্ড কম্পিউটিংয়ে খুব বেশি এগিয়ে যাচ্ছেন না।

এবং, হ্যাঁ, আমি উল্লেখ করেছি যে আপনি প্রোগ্রামার। এটি আপনার প্রোগ্রামিং তত্ত্ব সম্পর্কে সামগ্রিক জ্ঞান এবং সেখানে কী কী অন্যান্য পদ্ধতির জন্য আপনার কাছে উপলব্ধ তা উন্নত করা।

আমরা জানি যে কম্পিউটার প্রোগ্রামিং কম্পিউটার বিজ্ঞান?

@ থমাস ওয়ানসের মন্তব্যের জবাবে, যিনি উল্লেখ করেছিলেন (বেশ সঠিকভাবে) যে প্রোগ্রামিং কঠোরভাবে কম্পিউটার বিজ্ঞান নয়, আমি উইকিপিডিয়ায় কম্পিউটার বিজ্ঞানের নিবন্ধ থেকে উদ্ধৃত করতে চাই :

... কম্পিউটার বিজ্ঞানের ফোকাস হ'ল গেমস এবং ওয়েব ব্রাউজারগুলির মতো সফ্টওয়্যার বাস্তবায়নের জন্য ব্যবহৃত প্রোগ্রামগুলির বৈশিষ্ট্যগুলি বোঝার উপর এবং সেই বোঝাপড়াটি নতুন প্রোগ্রাম তৈরি করতে বা বিদ্যমানগুলি উন্নত করার জন্য ...

সুতরাং, আমি যেমন এটি পড়ছি, প্রোগ্রামিংয়ের মাধ্যমে আপনি প্রোগ্রামিং তত্ত্ব সম্পর্কে আপনার বোঝার প্রদর্শন করছেন। এর ফলে আপনাকে সহজ, মার্জিত কোড তৈরি করতে সহায়তা করা উচিত যা অন্যদের সাথে কাজ করার জন্য একটি আনন্দ joy


প্রোগ্রামিং সিএস তত্ত্ব নয়। আসলে, আমি সহজেই তর্ক করতে পারি যে প্রোগ্রামিং মোটেই কম্পিউটার বিজ্ঞান নয়।
টমাস ওয়েন্স

@ থমাস ওনস আমি আমার দাবিটি বৈধ বলে দাবি করার জন্য আমার উত্তর আপডেট করেছি। আপনি কি এটি পর্যালোচনা করতে পারেন এবং আমাকে আপনার চিন্তাভাবনা জানান?
গ্যারি রোয়ে

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

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

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

1

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

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

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


3
এই উত্তরটি সিএস তত্ত্বের সাথে মোকাবিলা করে না, যা হপকিন্স যা সম্পর্কে জিজ্ঞাসা করেছিল।
জেমস

1

কার্যকরী ভাষা!

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

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


0

কম্পিউটারগুলি মূলত প্যাটার্ন ম্যাথচার, আরও কিছু নয়। ট্যুরিং মেশিনে সমস্ত কিছু ফুটতে থাকে - প্যাটার্ন মেশিন ব্যাখ্যা করার ক্লাসিক কম্পিউটার সায়েন্স কনসেপ্ট।


-2

সমস্যা সমাধান এবং শেখার চালিয়ে যাওয়ার ইচ্ছা!

তারা দ্রুত বাছাই এবং ডাটাবেস স্বাভাবিককরণ জানার চেয়ে অনেক বেশি আমাকে পরিবেশন করে।


6
এটি কম্পিউটার বিজ্ঞানের তত্ত্ব নয়, তারা ইলেকট্রনিক (বা অন্য কোনও রূপের) প্রকৌশলতে সমানভাবে প্রয়োগ করে।
জন হপকিন্স

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

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