টিসিএসের জন্য কীভাবে প্রোগ্রাম করবেন তা জেনে রাখা কতটা গুরুত্বপূর্ণ?


66

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

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

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


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

6
"গণিতবিদরা প্রায়শই করেন না with" কিনা একজন গণিতবিদ একটি আলগোরিদিম বর্ণনা কি কখনো সত্যিই প্রোগ্রাম হয়েছে একটি সরল পরীক্ষা জিজ্ঞাসা করা হল "কি ঠিক আপনি 'একটি এক্স দেওয়া ...' দ্বারা কি বোঝাতে চেয়েছেন?"
জেফি

4
প্রোগ্রামিং, এটা কি? উপপাদ্যগুলি আমার প্রোগ্রাম are একটি রান্নার পদ্ধতি রান্না শিল্প থেকে আলাদা is দুঃখিত, 20 বছরেরও বেশি সময় আমি কোনও প্রোগ্রামের কোড পড়তে পারি না। আসলে, আমি এই "পিসিতে অনুধাবন করা" জগাখিচুড়ি ঘৃণা করি। (ইতিমধ্যে এই স্বরলিপিটি অসুস্থ করে তোলে)) ইউক্লিড প্রোগ্রাম করতে পারেনি। তবুও সে শতাব্দী ধরে প্রোগ্রাম করেছে।
স্টাসিস

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

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

উত্তর:


55

তাত্ত্বিক কম্পিউটার বিজ্ঞান একটি বিস্তৃত ক্ষেত্র এবং আপনি টিসিএসে কী করেন তার উপর প্রোগ্রামিংয়ের গুরুত্ব নির্ভর করে। আমি এই দুটি উপায় উল্লেখ করব যে কীভাবে প্রোগ্রামিং আপনাকে সহায়তা করতে পারে, কেবল এটিই একমাত্র উপায় lying

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

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

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

উপায় দ্বারা, প্রোগ্রামিং মজাদার হতে পারে।


2
@ সুরেশভেনক্যাট: আসলে, প্রোগ্রামিংটি মজাদার হলে, "প্রোগ্রামিং কতটা গুরুত্বপূর্ণ?" প্রশ্নটি খুব প্রাসঙ্গিক নাও হতে পারে। তবে তারপরে আমার উত্তরটির বেশিরভাগ অংশ অপ্রাসঙ্গিক হয়ে উঠবে। দুঃখজনক! :)
Tsuyoshi Ito

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

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

3
সমস্যা সমাধানের ক্লাসে নথের নোটগুলির অনুমান এবং কোডের মধ্যে ইন্টারপ্লেরের দুর্দান্ত উদাহরণ রয়েছে (সমস্যা 1 দেখুন): www-cs-factory.stanford.edu/~knuth/papers/cs1055.pdf (আমি বিশেষত কারও চিত্র পছন্দ করি প্রিন্টআউটের স্তুপ বহন করে শ্রেণিকক্ষে ছুটে যাওয়া)
সুরেশ ভেঙ্কট

47

আমি এ বিষয়ে ডোরন জিলবার্গারের উদ্ধৃতি দিতে বাধ্য বোধ করি:

মতামত ৩৩ : প্রোগ্রামিং প্রমাণের চেয়ে আরও মজাদার এবং আরও গুরুত্বপূর্ণভাবে এটি অনেকটা দেয়, যদি না হয় তবে অন্তর্দৃষ্টি এবং বোঝাপড়া।

মতামতটি পড়ুন, এটি রত্ন দ্বারা পূর্ণ (বিটিডব্লিউ তিনি ইচ্ছাকৃতভাবে উস্কানিমূলক হতে থাকে)। উদাহরণস্বরূপ, "কিছু বোঝার সর্বোত্তম উপায় হ'ল এটি শেখানো But তবে এরপরে আরও ভাল তা মানুষের কাছে শেখানো হয় এটি কম্পিউটারকে শেখানো"।

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

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


10
"কার্যকরী প্রোগ্রামিং অ্যালগরিদম ডিজাইন এবং চলমান সময়ের বিষয়গুলিকে অস্পষ্ট করে এবং যুক্তি এবং শব্দার্থবিজ্ঞানের বিষয়গুলিকে জোর দেয়"। মারামারি শব্দ :)
সুরেশ ভেঙ্কট

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


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

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

33

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

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

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

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


2
আমি আপনার তৃতীয় অনুচ্ছেদে সত্যটি দেখছি :)।
গোপি

1
"তবে, বেশিরভাগ লোকের জন্য, প্রোগ্রাম শেখা বিশেষভাবে কঠিন নয়" - আমার অভিজ্ঞতা আমাকে এর সাথে একমত হতে পরিচালিত করে, তবে বেশিরভাগ লোকেরা টিসিএস গবেষক নন।
সর্বোচ্চ

2
সেজের উত্থানের সাথে সাথে পাইথনের মতো একটি দুর্দান্ত, জনপ্রিয় ভাষার সাথে কাজ করা সম্ভব যখন এখনও ম্যাথমেটিকা ​​/ ম্যাপেল / মতলব স্টাইলের গাণিতিক গ্রন্থাগারগুলি তাত্ক্ষণিকভাবে উপলব্ধ having
আন্দ্রেস সালামন

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

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

33

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

এমনকি সঠিক ক্ষতিকারক সময় অ্যালগরিদমের ক্ষেত্রেও, একটি অনুপ্রেরণা তৈরি করে এমন অ্যালগরিদম তৈরি করে যা আসলে কাজ করতে পারে। স্যাট সলভারগণ এটির ক্যানোনিকাল উদাহরণ।

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


আপনার উত্তরটি টিসিএস-এর অভিজ্ঞতা সংক্রান্ত ফলাফল সম্পর্কে প্রশ্নে সহায়তা করতে পারে ।
গোপী

হতে পারে: তবে সেই থ্রেডটি অনেক আগেই মারা গেছে :)
সুরেশ ভেঙ্কট

প্রকৃতপক্ষে, আমি তারিখটির দিকে নজর দিইনি, এটি "গত সপ্তাহের সর্বকালের সেরা হিট" =) বিভাগে আমার প্রাপ্ত সর্বশেষ নিউজলেটারে ছিল।
গোপি

18

তিনটি বিষয়:

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

AL(X,Y)BL(Y,C)

3) আপনি যখন "প্রোগ্রাম" বলছেন তখন আপনার অর্থ কি " রৈখিক প্রোগ্রাম থেকে " বা " সেমিাইডেফিন্ট প্রোগ্রাম "? :)


2
আমি জানি না কেউ "টু প্রোগ্রাম" থেকে "লিনিয়ার প্রোগ্রাম" বা "সেমিাইডেফাইনেট প্রোগ্রাম" ব্যবহার করে। আপনি তার পরিবর্তে "লিনিয়ার প্রোগ্রামটি নির্মাণ / সমাধান করতে" বলবেন।
পিটার শর

2
@ পিটারশোর পয়েন্ট 3 গুরুতর ছিল না
আলেসান্দ্রো

3
এবং অবশ্যই, আপনার রৈখিক প্রোগ্রাম এবং সেমাইডাইফিনেট প্রোগ্রাম ... উভয় দরকারী দক্ষতা শিখানো উচিত
পিটার শর

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

4
আমি গতিশীল প্রোগ্রাম !
জেফি

16

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

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

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


"আপনি যদি ভাগ্যবান হন তবে আপনাকে এমন কোর্স শিখতে হবে যা আপনার বিশেষত্বের ক্ষেত্র থেকে অনেক দূরে are" কি ভাগ্যবান ...?
Tsuyoshi Ito

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

@ শুয়োশিআইটো: হ্যাঁ!
জেফি

13

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

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

প্রোগ্রামিংয়ের ভাষাটি শিখার জন্য: "তাদের সমস্ত" আমার (জিভ-ইন-গাল) উত্তর।


2
প্রোগ্রামিং এর বিরুদ্ধে যুক্তি শেষ করুন :)।
গোপি

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

6
বিভিন্ন ধারণা সম্পর্কে আপনার উপলব্ধি উন্নত করার জন্য উপপাদ্য প্রমাণ করাও একটি ভাল উপায়, তবে এটি একটি বিপজ্জনক সময় ডুবন্ত।
জেফি

@ জে ff ই, আমার মতামত প্রতিস্থাপনের দ্বারা [সিউডোকোড-> কাগজে প্রমাণ, কোড-> একটি প্রুফ সহকারীতে প্রমাণ] দ্বারা সংরক্ষিত আছে
রাদু গ্রেগোর

12

আমি পার্টিতে দেরি করেছি, এবং এগুলি সবই দুর্দান্ত উত্তর, তবে আমার আরও একটি কারণ রয়েছে:

ভিজুয়ালাইজেশান।

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


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

@ পিটারশোর: কারণ আপনি সি ++ ব্যবহার করেন না! (স্রেফ ঠাট্টা করা)
স্যুইশি ইতো

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

@ জন ... আপনি ঠিক বলেছেন, আমি মনে করি না যে আপনি এটি অন্য কোনও উপায়ে করতে পারতেন।
পিটার শর

7

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


স্যুওশি ইতো তার উত্তরে (দ্বিতীয় বিষয় :)) তে অনুরূপ যুক্তি লিখেছিল।
গোপী

উফ আপনি ঠিক বলেছেন - আমি এটি মিস করেছি।
লেভ রেইজিন

5

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

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

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

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

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

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


0

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

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

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

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

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

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

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

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


4
আমি জানি না আপনি কতটা মূল প্রশ্নের উত্তর দিচ্ছেন: আমি "কীভাবে" জিজ্ঞাসা করিনি, তবে আরও "কীসের জন্য"।
গোপি

0

একটি ইন্টারেক্টিভ প্রুফ সিস্টেমের সি ++ প্রয়োগের একটি উদাহরণ নিম্নোক্ত কাগজ: জাস্টিন থ্যালার লিখেছেন সার্কিট মূল্যায়নের জন্য সময়-অনুকূল ইন্টারেক্টিভ প্রুফ। এটি http://people.seas.harvard.edu/~jthaler/ এ উপলব্ধ । এটি সাধারণ-উদ্দেশ্যমূলক ইন্টারেক্টিভ প্রুফ সিস্টেমগুলির ব্যবহারিক প্রয়োগের উন্নয়নের লক্ষ্যের দিকে এক ধাপ বলে মনে হয়।

অনুরূপ কাগজপত্র এবং সম্পর্কিত উত্স কোড উপরে উল্লিখিত ওয়েবসাইটে প্রদর্শিত হবে।


3
এই কাগজটি কীভাবে প্রশ্নের সাথে সম্পর্কিত তা আপনি ব্যাখ্যা করতে পারবেন, কীভাবে টিসিএসের জন্য প্রোগ্রাম করবেন তা জানা কতটা গুরুত্বপূর্ণ ?
scaaahu

এমনকি যদি এটি তাত্ত্বিক ফলাফলের উদাহরণও ছিল যা প্রোগ্রামিং দ্বারা উপকৃত হয়েছিল, তবে এটি মূল প্রশ্নের উত্তর দেবে না?
জেরেমি

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