[সঙ্গীত বাজানো] 

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

এর কি কটাক্ষপাত করা যাক মিডিয়া চালু করা এবং তারপর এটি একটি বিট ব্যাখ্যা এখানে আমাদের জন্য টেকনিক্যালি. 

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

ওয়েল, worringly, কোন কোন বিশ্লেষক এটি একটি বড় হুমকি হতে পারে সতর্ক, Shellshock সম্পূর্ণ পারবেন, কারণ একটি সংক্রামিত মেশিন নিয়ন্ত্রণ, Heartbleed যেহেতু কেবল অনুমোদিত হ্যাকার কম্পিউটার গুপ্তচর. এটা, তাই গুরুতর 10 একটি 10 ​​বিপরিতে হয়েছে জাতীয় তীব্রতা জন্য আক্রমণ্যতা ডাটাবেস. সমস্ত ওয়েব সার্ভার 2/3 হয় কিছু ম্যাক কম্পিউটার সহ ঝুঁকি,. হ্যাঁ, আপনি নিশ্চিত করুন আপনার সিস্টেমের প্যাচ. একটি ওয়েবসাইট চলমান হোস্টিং কেউ প্রভাবিত অপারেটিং সিস্টেম যত তাড়াতাড়ি সম্ভব ব্যবস্থা গ্রহণ করা উচিত. এটা হওয়া উচিত সামর্থ যে কেউ যিনি তাদের পর্যবেক্ষণ এবং ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল কোনো হামলার জন্য আউট হওয়া. স্পিকার 3: সবচেয়ে খারাপ জিনিস ঘটতে পারে কারো কোড লিখতে হবে যে স্বয়ংক্রিয়ভাবে যান এবং স্ক্যান করবে ইন্টারনেট এবং প্রভাবিত করবে এই কম্পিউটারের সব. এবং পাশাপাশি তারা যে কি, একবার, তারা কাজ করতে পারে সবচেয়ে খারাপ জিনিস শুধু সবকিছু মুছে দিন হয়, বা ডাউন সাইট বন্ধ. তাই আমরা ক্ষতি দেখতে পারে দেখুন যে বিন্দু থেকে, আমরা দূষিত মানুষ আছে যেখানে যারা শুধু ক্ষিতি কারণ সিদ্ধান্ত সিস্টেম নিচে আনয়ন বা মুছে যে ফাইল, এবং জিনিষ. স্পিকার 2: কিছু এই এক বলে সবচেয়ে কঠিন পরিমাপ বছর বাগ, এবং এটি সপ্তাহের নিতে বা এমনকি হতে পারে মাস তার চূড়ান্ত প্রভাব নির্ধারণ করা. 

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

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

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

[অডিও প্লেব্যাক] 

-Hello. হ্যালো. 

সততা সুতরাং,: স্পিকার 1 এটি "হ্যালো." আসলে ছিল না এটি সাধারণত কিছু কিন্তু যে আরো সমগোত্রীয় [অডিও প্লেব্যাক] -হুইসেল. বক্তা 1: আমি would-- --that তাই তার কম্পিউটার হবে তিনি আসলে তাকে যে কোনো সময় শপথ তার কীবোর্ড এ বসলেন. এবং খুব দ্রুত তিনি মূর্ত আউট তার পর্দা উদ্ঘাটিত ছেড়ে না. কিন্তু এই ধরণের প্রস্তাব দেওয়া হয় মূঢ় মজা যে আপনি ব্যাশ ভালো কিছু করতে পারেন. কিন্তু এটি একটি সামান্য আরো গুরুতর, যে, তা নিশ্চিত করা. এবং সত্য, এই এক সবচেয়ে বিপজ্জনক এবং দীর্ঘ দীর্ঘস্থায়ী বাগ যে সত্যিই বিশ্বব্যাপী বিশ্বের আঘাত করেনি. এই বাগ হয়েছে প্রায় কিছু 20 বছর, এবং আপনি শুধুমাত্র একটি আঘাত করা হবে তার আত্মীয় সরলতা দ্বারা মুহূর্ত. 

সুতরাং এই একটি প্রতিনিধি যে কমান্ড আপনি যদি আক্ষরিক ডান এখন, একটি ম্যাক মালিক আপনি আপনার ঢাকনা খোলা আছে, আপনি যে টাইপ চেষ্টা করতে পারেন টার্মিনাল নামক প্রোগ্রাম. টার্মিনাল অধীন হয় অ্যাপ্লিকেশন Utilities-- একবার জন্য, উইন্ডোজ ব্যবহারকারীদের করতে হবে না এই বিশেষ threat-- সম্পর্কে চিন্তা কিন্তু Macs-সঙ্গে আপনি তাদের টাইপ করতে পারেন একটি উইন্ডো মধ্যে এই আমি এখানে চেষ্টা করব মত, এবং আপনি টাইপ না যদি এই প্রোগ্রামের মধ্যে যে আমি এখন কি করব মত, টার্মিনাল বলা হয়, আপনি শব্দ দেখতে হলে, "অরক্ষিত," আপনার কম্পিউটার শোষণ প্রবন. 

এখন যে আসলে এর মানে কি? এবং এই নিঃসন্দেহে হয় কিছু সুন্দর ছবি বাক্য গঠন, কিন্তু এর অন্তত বহিষ্কার আকর্ষণীয় দিক কিছু. তাই দেখে মনে হচ্ছে যে কিছু সিনট্যাক্স আছে অন্তত সি থেকে, একটু পরিচিত এবং আরো সাধারণভাবে প্রোগ্রামিং. আমি কিছু প্রথম বন্ধনী দেখুন, সেমিকোলন, কোঁকড়া ধনুর্বন্ধনী, এবং যেমন, কিন্তু এটা এই যে দেখা যাচ্ছে হলুদ এখানে মূঢ় জিনিস একটি ফাংশন মূলত যে কিছুই না. কোলন মানে কিছুই না, এবং সেমিকোলন কিছুই কাজ বন্ধ মানে. এই ভিতরে তাই কোঁকড়া ধনুর্বন্ধনী, আসলে আমি একটি সমান আছে বাম, এই সাইন ইন মূলত তৈরি হয় একটি কমান্ড, অথবা একটি পরিবর্তনশীল, নামক এক্স, এবং এটি বরাদ্দ সেখানে কোড যে হলুদ বিট. যে "প্রতিধ্বনি ভালো কিছু হতে পারে হ্যালো "বা" বলতে বিপ "বা কিছু যে সদৃশ. কিন্তু আপনার চোখ যদি লক্ষ্য অধিকার আরও বেড়ান, আর এই লাইন আরো আছে যে সেমিকোলন শুধু শেষ. তারপর ", অরক্ষিত ইকো" এবং তার পরেও যে এমনকি আরো আছে. অন্য সেমিকোলন, ব্যাশ -c :. 

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

তাই কি সংশ্লেষ যে শেষ পর্যন্ত? আমি শুধু "হ্যালো প্রতিধ্বনি" তিনি বলেন, বা ", অরক্ষিত echo" কিন্তু আপনি কি কিছু না হলে আসলে দূষিত, RM -rf * মত, যা আপনি না পারে আগের টাইপ করেছেন, এবং অকপটে আপনি সম্ভবত খুব শীঘ্রই উচিত, আপনি একটি করতে পারেন, কারণ এটা দিয়ে ক্ষতি অনেক. কেন? RM অবশ্যই, কি করে? মুছে ফেলা হবে. * মানে কি? সমস্ত. সুতরাং এটি একটি তথাকথিত এর ওয়াইল্ড কার্ড, এটা মানে তাই সবকিছু মুছে দিন বর্তমান ডিরেক্টরির. -r রিকার্সিভ মানে হবে, আপনি মুছে ফেলার তা যদি যার মানে একটি ডিরেক্টরি, এবং সেখানে এর ভিতরে অন্যান্য ফাইল এবং অন্যান্য ডিরেক্টরি হয় যাও recursively আছে মধ্যে আকর্ষণীয় এবং যে সব মুছে দিন. এবং -f তাদের সমস্ত খারাপ হয়. যে কেউ -f এখানে মানে কি জানেন? ফোর্স. তাই, এমনকি, মানে বাধ্য এই একটি খারাপ ধারণা হয়, আমাকে প্ররোচনা ছাড়া এটা করতে আরও নিশ্চিতকরণ জন্য. সুতরাং, আপনি কি জানেন, আমরা উপহাস এই, কিন্তু সত্যি, আমি সম্ভবত এই একাধিক বার টাইপ একটি দিন, বাস্তবতা কারণ এটা দ্রুত উপায় হয় স্টাফ আভা মুছে দিন. কিন্তু আমি কিছু ক্ষতি করা হয়েছে. 

কিন্তু আপনি যদি একটি কম্পিউটার রত ছিল কিছু মূঢ় পরিবর্তনশীল সংজ্ঞা মধ্যে বা ফাংশন নামক এক্স, কিন্তু তারপর নির্বাহ মধ্যে কম্পিউটার tricking যে সীমানা অতিক্রম ফাংশন, যে সেমিকোলন বহুদূরে, আপনি প্রকৃতপক্ষে একটি কম্পিউটার রত পারে RM ভালো কিছু নির্বাহ মধ্যে -rf অথবা ইমেইল কমান্ড বা কপি কমান্ড. কিছু আক্ষরিক আপনি করতে পারেন কম্পিউটার, এটি ফাইল মুছে ফেলা হচ্ছে কিনা, ফাইল তৈরি কেউ স্প্যামিং, দূরবর্তী কিছু সার্ভার আক্রমণ, আপনি এটা প্রকাশ করতে পারেন যদি একটি কমান্ড সঙ্গে, আপনি যে কাজ মধ্যে একটি কম্পিউটার রত পারেন. 

এখন একটি উদাহরণ কি আপনি কিভাবে এই কি হতে পারে? ওয়েল, কম্পিউটারের একটি অনেক আছে ইন্টারনেট চলমান ব্যাশ উপর. আমাদের ম্যাক ব্যবহারকারীদের সব তাদের মধ্যে আছে. লিনাক্স সার্ভার অনেক মধ্যে হয় তাদের হিসাবে ভাল, এবং ইউনিক্স সার্ভার. উইন্ডোজ আবার পায় অপেক্ষাকৃত হুক বন্ধ আপনি ইনস্টল করেছি, যদি না বিশেষ সফটওয়্যার. সার্ভারের এখন অনেক জন্য উদাহরণস্বরূপ, রান ওয়েব সার্ভার, এবং আসলে লিনাক্স সম্ভবত হয় সবচেয়ে জনপ্রিয় অপারেটিং সিস্টেম ইন্টারনেট কম্পিউটার চালানো যে ওয়েব পেজ পরিবেশন করা হয়. এখন আমরা পরে দেখতে পাবেন সেমিস্টারে, যখন আপনার কাছ থেকে একটি অনুরোধ পাঠান আপনার browser-- ক্রোম, ইন্টারনেট এক্সপ্লোরার, যাহা একটি দূরবর্তী সার্ভারে, এটি সক্রিয় যে যদিও আপনি শুধু টাইপ www.example.com, আপনার ব্রাউজার একটি বার্তা প্রেরণ করা হয় যে একটু বেশি রহস্যময়, এই মত. 

কিন্তু অদ্ভুত সামান্য কিছু লক্ষ্য করা. প্রথম দুই লাইন আমি আগে কখনও দেখা করেছি কিন্তু তারা তাকান না বিশেষ করে হুমকি. কিন্তু আমি চুরি করেছি বিজ্ঞপ্তি এখানে তৃতীয় লাইন জন্য. একটি খারাপ লোক একটি বার্তা পাঠান ছিল তার বা তার কম্পিউটার থেকে ভালো একটি প্রবন ম্যাক বা একটি থেকে প্রবন লিনাক্স সার্ভার, মজার ব্যাপার, যে ব্যাশ হয় যে সহজ সামান্য কমান্ড প্রম্পট, সর্বত্র বিরাজমান এবং প্রায়ই হয় মূলত চালানো ব্যবহৃত একটি বিষয়বস্তু এটা গ্রহণ করে যে বার্তা. এবং যে যুক্তি দ্বারা, আপনি যা করতে পারেন সুতরাং, একটি ওয়েব সার্ভার রত, ভালো কিছু পাঠিয়ে ব্যবহারকারী এজেন্ট, সাধারণত যা বলে অনুমিত হয় আপনার ব্রাউজার এর নাম দিন. ব্যবহারকারী এজেন্ট ক্রোম, ব্যবহারকারী এজেন্ট ইন্টারনেট এক্সপ্লোরার, ব্যবহারকারী এজেন্ট ফায়ারফক্স, এই শুধু আপনার ব্রাউজার এর নিজের পরিচয় পথে. কিন্তু যদি একটি খারাপ লোক খুব চালাকি মিমি মিমি, আমি বলে, আপনি বলা যাচ্ছে না কি আমার ব্রাউজার, আমি এর পরিবর্তে আপনি পাঠাতে যাচ্ছে না একটি RM -rf সঙ্গে জিনিস রহস্যপূর্ণ সুদর্শন * এটা, আপনি আক্ষরিক একটি রত পারেন ইন্টারনেট প্রবন ওয়েব সার্ভার ঠিক যে নির্বাহ মধ্যে সেখানে সব ফাইল মুছে ফেলার জন্য. এবং সত্যি, যে না এটা এমনকি খারাপ. আপনি কিছু করতে পারেন. আপনি শুরু করতে পারে একটি বিতরণ সেবা আক্রমণ অস্বীকার আপনি এই বার্তা পাঠানো যদি ওয়েব সার্ভার পুরো কাঁদি এবং তারপর তাদের সব জন্য, নামা ছিল উদাহরণস্বরূপ, Harvard.edu সার্ভার, এবং আপনি ঠুং ঠুং শব্দ বাছাই করতে পারেন তাদের নরক আউট ছিল একটি নেটওয়ার্ক ট্রাফিক দ্বারা অন্যথায় এই খারাপ লোক দ্বারা আলোড়ন সৃষ্টি. 

সুতরাং, দীর্ঘ সংক্ষিপ্ত বিবরণ, প্রায় একটি ম্যাক মালিক এই রুমে সবাই এই প্রবন. রূপালী আস্তরণের আপনি যদি না হয় আপনার ল্যাপটপ উপর একটি ওয়েব সার্ভার চলমান, এবং আপনি আসলে কনফিগার করেছি, যদি না এটা, তা SSH 'র মত কিছু করার অনুমতি দেয় আপনি আসলে নিরাপদ. এটা জেয়, কিন্তু কোন আছে এক আপনার ল্যাপটপ পাওয়ার চেষ্টা, তাই আপনি ধরণের বিশ্রাম করতে পারেন. তবে, অ্যাপল শীঘ্রই হবে এই জন্য একটি ফিক্স আপডেট হতে. লিনাক্স বিশ্বের ইতিমধ্যে মুক্তি হয়েছে ফেডোরা এবং উবুন্টু জন্য সংশোধন করা হয়েছে একটি নম্বর এবং অন্যান্য Linux সংস্করণ, এবং প্রকৃতপক্ষে আপনি প্রয়োগ আপডেট 50 রান, খুব হবে, এমনকি যে আপডেট এবং সংশোধন করা. কিন্তু যে খুব আছে না সত্যিই, অরক্ষিত হয়েছে আপনি করেছি, যদি না কারণ যন্ত্র সঙ্গে tinkered এবং প্রকাশ্যে আপনার ল্যাপটপ তৈরি না, যা ইন্টারনেট, প্রবেশযোগ্য ডিফল্টরূপে, আপনি করেছি আসলে কারণ জরিমানা হয়েছে ফায়ারওয়ালের জন্য এবং অন্যান্য কৌশল. 

কিন্তু এটি একটি বাগ একটি চরম উদাহরণ আমরা আক্ষরিক 20 জন্য বাস করেছি বছর, এবং কেউ যদি জানেন এই সব সময় এটা সম্পর্কে পরিচিত হয়েছে? এবং সত্য, এই এক মৌলিক চ্যালেঞ্জ আমরা পরে দেখতে পাবেন যে নিরাপত্তা সম্পর্কে সেমিস্টারে, যে, শুধু বাস্তব জগতে ভালো হয় ভাল না অসুবিধা না হয়. খারাপ না রাখা, আমরা আছে প্রত্যেক দরজা লক করা নিশ্চিত করুন যে, প্রতি উইন্ডোতে যে, নিরাপদ একটি বাড়ির মধ্যে প্রবেশ প্রতি বিন্দু খারাপ না রাখা নিরাপদ. কিন্তু কি খারাপ লোক আছে আসলে আপনার বাড়িতে আপোষ করতে এবং আপনার কাছ থেকে চুরি করা? তিনি উদ্ঘাটিত এক খুঁজে পেতে হয়েছে দরজা, এক ভাঙা জানালা, বা কিছু যারা লাইন বরাবর, এবং এটা কম্পিউটার নিরাপত্তা একই জিনিস. আমরা লক্ষ লক্ষ লিখতে পারেন প্রোগ্রামিং কোড লাইন এবং শত শত বা হাজার হাজার ব্যয় এটা সঠিক পেতে চেষ্টা ঘন্টা, কিন্তু যদি আপনি শুধু এক করা শুদ্ধি মধ্যে ভুল, আপনি সম্পূর্ণ সিস্টেম করা এবং প্রকৃতপক্ষে এই ক্ষেত্রে, সমগ্র ইন্টারনেট এবং ঝুঁকি বিশ্ব. 

আপনি আরো জানতে চান, তাই যদি এই সম্পর্কে, এখানে এই URL যান. কর্মের জন্য কোন প্রয়োজন নেই আজ রাতে আপনি যদি না ঐ যে আরো আরামদায়ক মধ্যে আপনার নিজের ওয়েব চলমান হয়েছে সার্ভার, যা আপনি উচিত ক্ষেত্রে, আসলে, আপনার সফ্টওয়্যার আপডেট করুন. 

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

কিন্তু এখন জন্য, অন্তত, বুঝতে পারছি প্রশ্ন এখানে বলা হচ্ছে যে একটি কম্পাইলার মধ্যে ঝনঝন শব্দ হয়. কেন আমরা ঝনঝন বিশ্বাস করা হয়েছে বিগত দুই বা তিন সপ্তাহের জন্য? কে যে কেহ ঝনঝন শব্দ লিখেছে বলে এর সেখানে একটি "যদি" শর্ত আছে কি না যে মূলত কিছু শূন্য ইনজেকশনের এবং প্রতি প্রোগ্রাম বেশী প্রনয়ন যে দেওয়া হবে তাকে বা তার এক্সেস আপনার কম্পিউটার যখন আপনি ঘুমিয়ে আছেন এবং আপনার ল্যাপটপ ঢাকনা খোলা এবং আপনার কম্পিউটারে চলমান হয়? রাইট? আমরা সম্মান সিস্টেম অধিকার এই সাজানোর আছে এখন আমরা ঝনঝন শব্দ হয় legit বিশ্বাস যেখানে. আপনি প্রয়োগ পাঠ্য যে বিশ্বাস. আপনি বিশ্বাস যে আক্ষরিক প্রতি প্রোগ্রাম আপনার Mac বা PC উপর বিশ্বাসযোগ্য. এবং এই সহজ বাগ হিসাবে সুপারিশ, এটি দূষিত না, এমনকি যদি, যে একেবারে না কেস হতে পারে. 

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

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

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

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

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

Pset3 উপর কোন প্রশ্ন, ShellShock, বা অন্যথায়? 

শ্রোতা: এটা ভালো লাগে ব্রেকআউট দিয়ে যাচ্ছে কোড প্রায় যে একটি অবজেক্ট ওরিয়েন্টেড শৈলী, কিন্তু আমি সি একটি ছিল অবজেক্ট ওরিয়েন্টেড প্রোগ্রাম. বক্তা 1: একটি চমৎকার প্রশ্ন. সুতরাং মাধ্যমে এখানে ক্লিক করুন বন্টন কোড, কোড আমরা, হবে, pset3 জন্য লেখেন যারা পরিচিত জন্য, এটা এটি একটি ভালো দেখায় সামান্য অবজেক্ট ওরিয়েন্টেড. সংক্ষিপ্ত উত্তর হল এটা করা হয়. এটা আপনি কিভাবে একটি পড়তা এর ব্যবহার করে অবজেক্ট ওরিয়েন্টেড কোড কি হতে পারে সি মত একটি ভাষা, কিন্তু এটা এখনও পর্যন্ত পদ্ধতিগত. এর ভিতরে কোন পদ্ধতি আছে ভেরিয়েবল, হিসাবে আপনি দেখতে পাবেন. কিন্তু এটা যে স্মরণ করিয়ে দেয়. এবং আমরা আবার যে বৈশিষ্ট্য দেখতে পাবেন আমরা পিএইচপি এবং জাভাস্ক্রিপ্ট পেতে শেষ সেমিস্টারে দিকে. কিন্তু এখন জন্য, হিসাবে মনে করি কি একটি ইঙ্গিতটি আসা. ভাল প্রশ্ন. ঠিক আছে. তাই কেমন ছিল একত্রীকরণ কিভাবে আমরা বাম জিনিস শেষ সময়. এবং সাজানোর মধ্যে ছিল শান্ত একত্রীকরণ অনুভূতি এটা এত দ্রুত ছিল যে, অন্তত দ্রুত পরীক্ষার উপর ভিত্তি করে আমরা বুদ্বুদ, বলে, আর, গত সপ্তাহে সাজানোর, নির্বাচন সাজানোর, সন্নিবেশ সাজানোর. এবং কি খুব ঝরঝরে ছিল মাত্র কিভাবে সংক্ষিপ্ত এবং পরিচ্ছন্নভাবে আপনি এটা প্রকাশ করতে পারেন. এবং আমরা এটি একটি ঊর্ধ্ব কি ছিল বলে নি একত্রীকরণ চলমান সময় উপর আবদ্ধ বাছাই? হ্যাঁ? 

শ্রোতা: এন এন লগ ইন? 

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

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

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

কিভাবে আপনি, এখন একটি তালিকা বাছাই না হলুদ, বাছাই মার্জ ব্যবহার করে আকার দুই, এর? ভাল অর্ধেক এটি বিভক্ত করা, এবং বাম অর্ধেক বাছাই. এবং এই জিনিষ যেখানে ছিল একটু মূঢ় সংক্ষেপে পেয়েছিলাম. আপনি যে একটি তালিকা বাছাই করবেন আকার এক, এখানে এই চার নম্বর মত? এটা সাজানো. আপনি সম্পন্ন করেছেন. 

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

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

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

এবং এখন শুধু জিনিষ একটু করতে শুধু একটা মুহূর্ত জন্য আনুষ্ঠানিক আরো কি, আপনি যদি এখন এই বিশ্লেষণ ছিল উচ্চ স্তরের কেমন এ এবং কিভাবে ভাল, সিদ্ধান্ত নিতে চেষ্টা আপনি প্রকাশ সম্পর্কে যেতে পারে এই অ্যালগরিদম চলমান সময় এটা এ এবং খুঁজছেন দ্বারা একটি কল্পিত উদাহরণ ব্যবহার করে? ওয়েল, কিভাবে অনেক সময় আপনি একটি বলতে হবে হলুদ এই নিতে হবে ভালো ধাপে, এন <2 বিনিময়ে যদি? এটা কি একটি বড় হে? তাই আমি এক, তাই এক ধাপ এইজন্য করছি হয়তো দুই ধাপ এটা যদি কারণ এবং তারপর ফিরে, কিন্তু এটা ধ্রুব সময়, ডান? তাই আমরা আউটপুট (1), এবং যে বলেন আমি এই প্রকাশ করব কিভাবে. টি, ঠিক সময় চলমান হবে. এন, ইনপুট আকার তাই টি (ঢ), শুধু একটি অভিনব উপায় চলমান বলছে আকার n সময় দেওয়া ইনপুট আদেশ হতে যাচ্ছে ধ্রুব সময়, হে (1). 

কিন্তু নিয়োগ, এই সম্পর্কে কি? আপনি প্রকাশ হবে এই হলুদ লাইন চলমান সময়? কি টি? আপনি এখানে কোন ধরনের প্রতারণা করতে পারেন এবং cyclically আমার প্রশ্নের উত্তর দিতে. তাই চলমান সময় যদি আমরা শুধু বলে সাধারণ টি (n). এবং এখন আপনি এখানে কোন ধরনের punting করছি এবং , ভাল, শুধু বাম অর্ধেক বাছাই বলছে, এবং তারপর ডান অর্ধেক বাছাই. আমরা প্রতীকী উপস্থাপন করা হতে পারে কিভাবে এই হলুদ লাইন চলমান সময়? কি টি? ইনপুট আকার কি? দুই এন. কেন আমি যে না বলে? এবং তারপর এই অন্য টি (n / 2) এবং তারপর আবার, আমি দুই সাজানো আংশিক একত্রীকরণ যদি, কিভাবে অনেক উপাদান আমি যাচ্ছি মোট স্পর্শ আছে? এন. তাই আমি এই প্রকাশ করতে পারেন শুধু ধরনের অভিনব হতে হবে সাধারণ চলমান সময়. টি (ঢ), টি (ঢ / 2) শুধু চলমান সময় প্লাস টি (ঢ / 2), এবং ডান অর্ধেক অর্ধেক বাকি প্লাস সম্ভবত n ধাপ, যা হে (ঢ),, কিন্তু হয়তো, আমি দুই আঙ্গুলের ব্যবহার করে করছি, এটা অনেক দুবার হিসাবে পদক্ষেপ, কিন্তু এটি রৈখিক না. এটা ধাপ কিছু নম্বর যে, n এর একটি ফ্যাক্টর তাই আমরা এই হিসাবে এই প্রকাশ হতে পারে. এবং এই আমরা পান্ট যেখানে এখন হয় আমাদের উচ্চ বিদ্যালয় গণিত পাঠ্যপুস্তক আমরা শেষ পর্যন্ত পুনরাবৃত্তি যে আছেন শেষ পর্যন্ত, এই equaling, এন এন বার লগ ইন আপনি আসলে আউট না গণিত আরো আনুষ্ঠানিকভাবে. 

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

সুতরাং এর আসলে একটি আরো আকর্ষক আঁকা নিতে দূরে থেকে হিসাবে অনুসরণ করে. আমার জন্য gedit মধ্যে যান এবং একটি নিতে আজ এর সোর্স কোড কিছু তাকান, এই যেমন এখানে বিশেষ করে. দৃশ্যত যা যোগ সিগমা 0, সংখ্যা এন মাধ্যমে এক. তাই পরিচিত দেখুন এখানে এবং অপরিচিত. প্রথম আমরা একটি দম্পতি আছে রয়েছে, তাই কিছুই নতুন আছে. প্রোটোটাইপ. আমি একটু অস্পষ্ট আছি এই কয়েক দিন পরে, কিন্তু আমরা একটি কি বলে নি একটি ফাংশন প্রোটোটাইপ? শ্রোতা: [শ্রবণাতীত]. বক্তা 1: কি যে? শ্রোতা: আমরা এটা ঘোষণা করেছে. বক্তা 1: আমরা এটা ঘোষণা করেছে. তাই আপনি যদি, হেই, ঝনঝন শিক্ষাদান করা হয় আসলে এখনো এই বাস্তবায়নের না, কিন্তু কোথাও এই ফাইলের মধ্যে, সম্ভবতঃ, একটি ফাংশন কি বলা যেতে যাচ্ছে? সিগমা. এবং শুধু এই একটি প্রতিশ্রুতি যে এটা এই মত চেহারা যাচ্ছে. এটি একটি পূর্ণসংখ্যা নিতে যাচ্ছে ইনপুট এবং আমি আরো স্পষ্ট হতে পারে এবং int-n এবং এটা বলতে কোন int ফিরে যাচ্ছে, কিন্তু সেমিকোলন মানে, মিমি, আমি কাছাকাছি পাবেন একটু পরে এই রূপায়ণকারী. আবার, ঝনঝন শব্দ বোবা. এটা শুধুমাত্র কি জানেন যাচ্ছে আপনি, উপর থেকে নিচ বলতে তাই আমরা অন্তত দিতে হবে এটা কি একটি ইঙ্গিতটি আসা. 

এখন এখানে মূল তাকান. এর এখানে স্ক্রল ডাউন এবং করছে প্রধান তা দেখতে. এটি একটি ফাংশন যে দীর্ঘ না, এবং আসলে এখানে কনস্ট্রাক্ট পরিচিত. আমি তখন একটি পরিবর্তনশীল n ঘোষণা, এবং আমি আবার এবং আবার ব্যবহারকারী লাগা GetInt ব্যবহার একটি ধনাত্মক পূর্ণসংখ্যা জন্য, এবং এই লুপ আউট শুধুমাত্র প্রস্থান একবার ব্যবহারকারী মেনে করেনি. যদিও না, আমরা ব্যবহার করেছি যে ভাবে ব্যবহারকারী লাগা. এখন এই আকর্ষণীয়. আমি কোন int নামক ঘোষণা "উত্তর." আমি এটা ফেরত মান নির্ধারণ করুন একটি ফাংশন বলা হয় "সিগমা". আমি যে এখনো আছে কি না জানি না, কিন্তু আমি একটি মুহূর্ত আগে এটি প্রকাশক মনে রাখবেন. এবং তারপর আমি পার করছি মান ব্যবহারকারী টাইপ, এন যে এবং তারপর আমি উত্তর রিপোর্ট. ওয়েল এর ফিরে স্ক্রল শুধু একটা মুহূর্ত জন্য. এর এই ডিরেক্টরির মধ্যে এগিয়ে যান, করা সিগমা 0, এবং আসলে এই প্রোগ্রাম চালানো এবং দেখুন সেখানে কি ঘটছে. আমি এগিয়ে যান এবং রান সুতরাং যদি এই প্রোগ্রাম, ./sigma-0, এবং আমি একটি ইতিবাচক টাইপ দুই মত পূর্ণসংখ্যা, সিগমা, গ্রিক প্রতীক হিসাবে বোঝা শুধু সব থেকে নম্বর যোগ করা যাচ্ছে দুই পর্যন্ত শূন্য. সুতরাং 0 প্লাস 1 প্লাস 2. তাই এই আশা আমার 3 দিতে হবে. যে এটা করছে সব. এবং একইভাবে, যদি আমি আবার এই রান এবং আমি এটা তিন নম্বর দিতে যাতে যে, 3 প্লাস 2 5, প্লাস 1 আমার 6 দিতে হবে. এবং আমি সত্যিই পাগল পেতে তারপর যদি বড় সংখ্যায় টাইপ করা শুরু, এটা আমার করা উচিত এবং বড় বড় অঙ্কের. সুতরাং যে সব. 

তাই কি সিগমা কেমন হয়েছে? ওয়েল, এটা বেশ সহজবোধ্য. এটা আমরা বাস্তবায়িত হতে পারে কিভাবে গত কয়েক সপ্তাহ ধরে এই. "Int-" রিটার্ন টাইপ হতে যাচ্ছে. সিগমা নাম, এবং এটা লাগে পরিবর্তে n এর একটি পরিবর্তনশীল মি. আমি উপরে যে পরিবর্তন করব. তারপর এই একটি মানসিক সুস্থতা চেক করা হয়. আমরা একটি মুহূর্ত কেন দেখতে পাবেন. এখন আমি অন্য ভেরিয়েবল ডিক্লেয়ার, সমষ্টি, শূন্য এটি আরম্ভ. তারপর আমি লুপ জন্য এই আছে দৃশ্যত স্বচ্ছতার জন্য, iterating, আমি = 1 থেকে একটি = মি, যা যাই হোক না কেন ব্যবহারকারী টাইপ, এবং তারপর আমি ভালো সমষ্টি বাড়ায়. এবং তারপর সমষ্টি ফিরে. 

তাই প্রশ্নগুলির একটি দম্পতি. এক, আমি এই যে আমার মন্তব্যে দাবি একটি অসীম লুপ ঝুঁকি এড়াতে. কেন একটি ঋণাত্মক সংখ্যা ক্ষণস্থায়ী হবে সম্ভাব্য একটি অসীম লুপ প্রবৃত্ত? 

শ্রোতা: আপনি মি পৌঁছানোর করব না. 

বক্তা 1: M পৌঁছাতে না. কিন্তু মি গৃহীত হয়, তাই এর দেওয়া হয় একটি সহজ উদাহরণ বিবেচনা. মি দ্বারা পাস করা হয় নেতিবাচক এক হিসাবে ব্যবহারকারী. নির্বিশেষে প্রধান. প্রধান থেকে আমাদের রক্ষা করে এই খুব, তাই আমি ঠিক করছি সত্যিই পোঁদ হচ্ছে সিগমা নিশ্চিত করতে যে ইনপুট নেতিবাচক হতে পারে না. মি নেতিবাচক সুতরাং, যদি নেতিবাচক মত কিছু. কি ঘটতে যাচ্ছে? ওয়েল, আমি যাচ্ছে এক সক্রিয়া পেতে, এবং তারপর আমি হতে যাচ্ছে কম বা মিটার সমান? 

পাশে দাঁড়ানো. যে, এর না was-- এর এই গল্প কিসসু না. আমি কারণ, যে প্রশ্ন জিজ্ঞাসা করা হয়নি আমি alluding করছি যে ঝুঁকি আমি কারণ ঘটতে যাচ্ছে না সবসময় বেশী than-- ঠিক হয়ে যাচ্ছে, আমি যে প্রশ্ন প্রত্যাহার. ঠিক আছে. এখানে শুধুমাত্র এই অংশ উপর ফোকাস করা যাক. কেন আমি কিছু ঘোষণা লুপ বাইরে? লাইন আমি করেছি 49 নোটিশ লুপ এর ভিতরে আমি ঘোষণা, কিন্তু অনলাইন 48 আমি করেছি কিছু বাইরে ঘোষণা করেন. হ্যাঁ. শ্রোতা: [শ্রবণাতীত]. বক্তা 1: অবশ্যই. তাই প্রথম এবং সর্বাগ্রে আমি অবশ্যই না ঘোষণা এবং সমষ্টি আরম্ভ করতে চান শূন্য ভিতরে প্রতি পুনরাবৃত্তির লুপ, এই পরিষ্কারভাবে সর্বনাশ হবে, কারণ নম্বর আপ summing উদ্দেশ্য. আমি পরিবর্তন রাখতে হবে ফিরে শূন্য মান. এবং এছাড়াও, কি অন্য আরো রহস্যময় করে যে একই নকশা সিদ্ধান্ত জন্য কারণ? হ্যাঁ. 

শ্রোতা: [শ্রবণাতীত]. বক্তা 1: ঠিক. আমি বাইরে এটি অ্যাক্সেস করতে চান খুব কি লাইন লুপ? 53. এবং চলতি আমাদের নিয়ম উপর ভিত্তি করে বক্তৃতা দুয়েক আগে থেকে, ভেরিয়েবল, সত্যিই, scoped হয় তাদের পরিবেষ্টন যে কোঁকড়া ধনুর্বন্ধনী. আমি ভিতরে সমষ্টি ডিক্লেয়ার না, তাই যদি এই বাইরের কোঁকড়া ধনুর্বন্ধনী, আমি লাইন 53 এটি ব্যবহার করতে পারবেন না. আমি ঘোষণা, অন্য উপায় রাখুন এখানে, অথবা এমনকি মধ্যে সমষ্টি লুপ জন্য, আমি 53 সালে এটি অ্যাক্সেস করতে পারে না. পরিবর্তনশীল কার্যকরভাবে সর্বস্বান্ত করা হবে. তাই সেখানে কারণে কয়েক. কিন্তু এখন এর ফিরে যান এবং দেখুন সেখানে কি ঘটছে. তাই সিগমা বলা হয়. এটি 1 প্লাস 2, বা 1 প্লাস 2 অ্যাডস আপ প্লাস 3, এবং তারপর, মান প্রদান করে থাকে উত্তর দোকানে এটি, এবং এখানে printf, আমি পর্দায় দেখছি না কেন. তাই এই আমরা একটি পুনরাবৃত্ত ডাকবো কি পদ্ধতি, যেখানে পুনরাবৃত্তির মাত্র একটি লুপ ব্যবহার করে মানে. লুপ, যখন একটি লুপ, একটি যখন জন্য একটি লুপ, আবার কিছু কাজ এবং আবার এবং আবার. 

কিন্তু সিগমা একটি ঝরঝরে ফাংশন ধরনের আমি ভিন্নভাবে এটা বাস্তবায়ন করতে পারে যে. এই সম্পর্কে কি, যা শুধু শীতল ধরনের হতে আমাকে সত্যিই পরিত্রাণ পেতে ক্ষোভ অনেক এই ফাংশন কারণ সত্যিই বেশ সহজ. চলুন শুরু করা যাক ছুরিবিশেষ এটা নিচে তার চার কোর লাইন এবং পরিত্রাণ পেতে সব মন্তব্য এবং কোঁকড়া ধনুর্বন্ধনী. এই একটি মন ফুঁ ধরনের বিকল্প বাস্তবায়ন. সমস্ত অধিকার, হয়তো মন, ফুঁ না, কিন্তু এটা sexier নেই, সব ঠিক ধরনের, এর এত আরো succinctly এই তাকান. কোড মাত্র চার লাইন, আমি প্রথম এই বৈধতা পরীক্ষা আছে. মি কম বা সমান হয়, তাহলে শূন্য, সিগমা কোন অর্থে তোলে. এটা শুধুমাত্র হতে অনুমিত এর ইতিবাচক সংখ্যার জন্য এই ক্ষেত্রে, তাই আমি ঠিক করছি যাচ্ছে ইচ্ছামত শূন্য ফিরে আমরা অন্তত আছে তাই কিছু বেস ক্ষেত্রে তথাকথিত. 

কিন্তু এখানে সৌন্দর্য. যোগ এই ধারণা সম্পূর্ণতা, এন 1 থেকে নম্বর, বা এই ক্ষেত্রে মি, ছাগ ক্ষণস্থায়ী ধরনের কাজ করা যেতে পারে. ওয়েল, মি 1 এর সমষ্টি কি? হ্যাঁ, আপনি কি জানেন? এটা মি এর সমষ্টি হিসাবে একই প্লাস মি বিয়োগ 1 1 এর সমষ্টি. আচ্ছা আপনি কি জানেন? মি বিয়োগ 1 সিগমা কি? ওয়েল, যদি আপনি এই ধরনের অনুসরণ যুক্তি, এটা মি বিয়োগ 1 হিসাবে একই প্লাস মি বিয়োগ 2 সিগমা. তাই আপনি যদি ধরনের না শুধু করতে পারেন আপনি শুধু যদি এই মত, একটি বন্ধু বিরক্ত করার চেষ্টা এবং তারা আপনাকে একটি প্রশ্ন জিজ্ঞাসা করুন, আপনি ধরনের একটি প্রশ্ন প্রতিক্রিয়া আপনি ধরনের হরিণ ক্ষণস্থায়ী রাখতে পারেন. কিন্তু কি কি আপনি রাখা হয় প্রশ্ন ছোট ছোট এবং উপার্জন এবং ছোট, আপনি আছেন সিগমা কি জিজ্ঞাসা না n এর, সিগমা কি এন, এন এর সিগমা কি? আপনি কি বলছি n এর সিগমা, কি সিগমা এর এন 1 বিয়োগ, এন বিয়োগ 2 সিগমা কি? অবশেষে আপনার প্রশ্ন কি হয়ে যাচ্ছে? এক বা সিগমা কি শূন্য, কিছু খুব ছোট মান, এবং যত তাড়াতাড়ি আপনি , যে, আপনার বন্ধু পেতে আপনি জিজ্ঞাসা করতে যাচ্ছে না আবার একই প্রশ্ন, আপনি শুধু উহু এটা শূন্য, বলে যাচ্ছেন. আমরা এই ধরণের খেলার সম্পন্ন মূঢ় চক্রাকার খেলা. 

তাই হার্ড প্রোগ্রামিং আইন একটি ফাংশন নিজেই কলিং. কম্পাইল এবং রান যখন এই প্রোগ্রাম,, হয় ঠিক একই ভাবে আচরণ করে যাচ্ছে, কিন্তু কি কি যে ভিতরে হয় সিগমা নামক একটি ফাংশন, কোড যাহাতে একটি লাইন আছে আমরা নিজেদেরকে আহ্বান করছি যা সাধারণত খারাপ হবে. উদাহরণস্বরূপ, কি প্রথম আমি যদি এই কম্পাইল, তাই sigma-- করা সিগমা 1 ./sigma-1 করা. ধনাত্মক পূর্ণসংখ্যা, দয়া করে, 50 1275. তাই কি ফাংশন বলে মনে হয় সঠিক এক পরীক্ষা, উপর ভিত্তি করে, হতে হবে. কিন্তু আমি একটু বিপজ্জনক কি পেতে হলে এবং তথাকথিত বেস কেস মুছে দিন, এবং শুধু ভাল আমি তৈরি করছি, বলে তুলনায় এটা এই জটিল. এর ঠিক সিগমা গণনা করা যাক মি গ্রহণ এবং তারপর যোগ করে মি বিয়োগ এক সিগমা মধ্যে? ভাল, কি এখানে ঘটতে যাচ্ছে? এর জুম আউট. এর প্রোগ্রাম কম্পাইল করা যাক, , এটি সংরক্ষণ করুন কম্পাইল, এবং তারপর প্রস্তুত ./sigma-1, zooming মধ্যে 50 ইতিবাচক পূর্ণসংখ্যা দয়া করে লিখুন. কিভাবে আপনি অনেক ইচ্ছুক এইজন্য যে পর্যন্ত fess কিভাবে? 

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

শ্রোতা: [শ্রবণাতীত]. বক্তা 1: আহ. ভাল প্রশ্ন. সংখ্যা মাপ তাই আমি summing ছিল এটা ছাড়িয়ে গেছে, তাই বড় যে পেয়েছিলাম মেমরি স্পেস মাপ. ভাল, কিন্তু না মৌলিকভাবে একটি ক্র্যাশ হতে যাচ্ছে. যে পূর্ণসংখ্যা ওভারফ্লো কারণ হতে পারে, বিট ঠিক উপর টুসকি যেখানে এবং তারপর আমরা সত্যিই একটি বড় ভুল একটি ঋণাত্মক সংখ্যা মত নম্বর, কিন্তু নিজেই একটি ক্র্যাশ হতে হবে না. কারণ শেষে দিন কোন int এখনও 32 বিট. আপনি যাচ্ছেন না ঘটনাক্রমে একটি 33 তম বিট চুরি করা. কিন্তু একটি ভাল চিন্তা. হ্যাঁ. 

শ্রোতা: [শ্রবণাতীত]. বক্তা 1: পদ্ধতি না স্টপ চলমান, এবং প্রকৃতপক্ষে এটা আবার নিজেই কল এবং আবার এবং আবার এবং আবার এবং আবার, এবং কেউ কখনও যারা ফাংশন তাদের একমাত্র লাইন কারণ শেষ কোড আবার এবং আবার নিজেদেরকে আহ্বান এবং আবার. এবং সত্যিই কি আমরা এখানে কী ঘটছে, এবং এখন ধরনের pictorially এই আহরণ করতে পারে. আমাকে একটি নিয়ে যান শুধু একটা মুহূর্ত জন্য ছবি. এই যে, একটি ছবি অবশেষে আউট প্রাণিবর্গ হবে আরো বিস্তারিতভাবে, কি ঘটছে এর আপনার কম্পিউটার এর মেমরি ভিতরে. এবং এটা যে সক্রিয় আউট এই ছবি নীচে স্ট্যাকের কিছু বলা হয়. এই একটি খণ্ড মেমরি, উপস্থিত RAM একটি খণ্ড, যে ঠিক কোন সময় ব্যবহার করা হচ্ছে একটি ফাংশন বলা হয়. কোন সময় আপনি একটি প্রোগ্রামার, একটি ফাংশন কল, অপারেটিং সিস্টেম, মত ম্যাক অপারেটিং সিস্টেম, উইন্ডোজ, লিনাক্স বা, grabs বাইটের একটি গুচ্ছ, হয়ত একটি কয়েক কিলোবাইট, হয়তো কয়েক মেগাবাইটের মেমরি, তাদের হাতে আপনি, এবং তারপর দেয় আপনি ব্যবহার করে আপনার ফাংশন চালানো যাই হোক না কেন ভেরিয়েবল আপনি প্রয়োজন. এবং তারপর আপনি অন্য কল ফাংশন এবং অন্য ফাংশন, আপনি মেমরি অন্য ফালি পেতে এবং মেমরি অন্য ছে. 

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

এখন একটি সরাইয়া, এই ধারণা হিসাবে ইনস্টলেশনের মধ্যে, অতএব, পরিষ্কারভাবে, সমস্যা হতে পারে কিন্তু এটি একটি খারাপ জিনিস অগত্যা না. বিবেচনা করুন, কারণ পরে সব how-- এবং হয়ত এই সময় লাগে কিছু ব্যবহার --how মার্জিত বা কিভাবে সহজ সিগমা যে বাস্তবায়ন ছিল. এবং আমরা ব্যবহার করছি যাচ্ছে না CS50 মধ্যে সব যে অনেক ইনস্টলেশনের, কিন্তু CS51 মধ্যে, এবং সত্যিই কোনো শ্রেণী আপনি ডাটা স্ট্রাকচার নিপূণভাবে যেখানে গাছ, বা পরিবার গাছ মত, যে, কিছু অনুক্রমের আছে এটি সুপার দরকারী, সুপার. এখন, একটি সরাইয়া হিসাবে, যাতে আপনি যে কম্পিউটার বিজ্ঞানীরা উচ্চাকাঙ্ক্ষী হিসাবে Google এর কিছু পরিচিত আপনি Google এ যান, তাহলে ভিতরে ঢামালি, এবং আপনি কি সন্ধান , এর সংজ্ঞা বলতে জন্য, recursion, লিখুন. উহ তাই. একটি সরাইয়া হিসাবে, আমি কয়েক গুটান. এই 10 মিনিটের মত ছিল দীর্ঘসূত্রতা এই সকালে. আপনি যদি গুগল "বাঁকাভাবে," বিজ্ঞপ্তি আপনার মাথা কাত দ্বারা slightly-- এবং তারপর এই এক সম্ভবত হয় সব সবচেয়ে নৃশংস কেউ মত ব্যয় থেকে এই বাস্তবায়নের তাদের দিন কিছু বছর আসা ago--. ওহ, wait-- একটি বাগ আছে. 

তাই এক চলমান বিশ্বের বৃহত্তম ওয়েবসাইট এই মূঢ় সামান্য ইস্টার ডিম আছে. তারা সম্ভবত একটি গ্রাস কোড লাইনের nontrivial সংখ্যা শুধু আমরা করতে পারেন, যাতে যে মত সামান্য মজার জিনিষ. কিন্তু অন্তত এখন আপনি পেতে যারা ভিতরে ঢামালি কিছু. 

এখন কিছু কটাক্ষপাত করা যাক সাদা, আমরা দেরী কহন করা হয়েছে এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ এবং ছুলা ফিরে যাও শুরু কিছু স্তর টেকনিক্যালি আপনি কি সত্যিই বুঝতে যাতে কি যাওয়া হয়েছে এবং আপনি বুঝতে পারেন হুমকি কিছু, Shellshock মত, যে এখন হয়ে শুরু করেছেন সবাই এর সামনের সারিতেই উপর মনোযোগ, অন্তত মিডিয়া. তাই এখানে একটি খুব সহজ ফাংশন যে অকার্যকর, কিছুই ফেরৎ. তার নাম ও swap 'র হয়. এটা দুই ভেরিয়েবল লাগে এবং এটা কিছুই ফেরৎ. A এবং B লাগে. সুতরাং একটি দ্রুত বিক্ষোভের. আমরা এই পর্যন্ত আনা. আমরা পাশাপাশি একটু সময় নিতে পারে শুধু একটা মুহূর্ত জন্য এখানে বিরতি এবং পান করতে সামান্য কিছু আছে. কেউ যোগদান কিছু মনে করবেন না এখানে শুধু একটা মুহূর্ত জন্য আমাকে. কিভাবে তুবড়ি শার্ট আপনি? উপর আসা. শুধু এক আজ. যদিও, আপনাকে ধন্যবাদ. সমস্ত অধিকার, এবং আমরা যারা এখানে আসছে? আপনার নাম কি? 

স্পিকার 4: লরা. 

বক্তা 1: লরা. উপর আসা. তাই লরা খুব সহজ চ্যালেঞ্জ আজ. আ দেখা হওয়ায় খুশী হলাম. ঠিক আছে. তাই আমরা এখানে কিছু দুধ আছে এবং আমরা এখানে কিছু কমলার রস আছে এবং কিছু কাপ যে আমরা আজ Annenberg এ থেকে ধার করা. 

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

স্পিকার 4: আমি অন্য কাপ পেতে পারি? বক্তা 1: আমি যদিও,, আপনি জিজ্ঞাসা তাই খুশি এটা অনেক ভাল ফুটেজ হয়েছে আপনি জিজ্ঞাসা না করে যদি. তবে হ্যাঁ, আমরা আপনাকে একটি তৃতীয় দিতে পারে অবশ্যই, খালি যে কাপ. ঠিক আছে. তাই সেখানে বিষয়বস্তু অদলবদল. অত্যন্ত চমৎকার. খুব ভাল. আপনি সাতিশয় সাবধানে এই কাজ করছি. এবং তিন ধাপে. ঠিক আছে. চমৎকার. সাধুবাদ বড় বৃত্তাকার লরা জন্য ভাল হবে. ঠিক আছে. আমরা একটু বিভাজিকা উপহার আছে আপনার জন্য, কিন্তু আমার এই গ্রহণ করা. তাই আপনাকে অনেক ধন্যবাদ. তাই একটি সহজ উদাহরণ, যদিও, যদি আপনি না যে প্রকট বিষয়বস্তু অদলবদল করতে চান দুই পাত্রে, বা এর ভেরিয়েবল তাদের কল করা যাক, আপনি কিছু অস্থায়ী সংগ্রহস্থল প্রয়োজন তাই বিষয়বস্তু এক পর্যায়ে আপনি আসলে swap 'র কি করতে পারেন যে. তাই প্রকৃতপক্ষে, এখানে এই সোর্স কোড আপ সি ঠিক যে প্রতিনিধি. কমলার রস একটি এবং দুধ ছিল , বো, এবং আমরা দুই অদলবদল করতে চেয়েছিলেন আপনি সৃষ্টিশীল কিছু করার চেষ্টা করতে পারে অন্যান্য মধ্যে এক ঢালাও দ্বারা, কিন্তু যে সম্ভবত হবে না বিশেষ করে ভাল শেষ. এবং তাই আমরা একটি তৃতীয় কাপ, কল ব্যবহার এটা কনভেনশন দ্বারা, টি এম পি tmp এবং এর বিষয়বস্তু করা OJ যে, তারপর এক কাপ অদলবদল, তারপর মধ্যে OJ করা মূল কাপ, যার ফলে ঠিক যেমন, অর্জন লরা, swap 'করেনি. 

তাই এর কি ঠিক যে. আমাকে এগিয়ে যান এবং খুলুন যে একটি উদাহরণ আপ আসলে কোন "বলা এই না, কারণ, "অদলবদল আপনার মনে হতে পারে হিসাবে হিসাবে কেবল কাজ. তাই এই প্রোগ্রাম, যে লক্ষ্য আমি stdio.h, আমাদের পুরনো বন্ধু ব্যবহার করছি. আমি প্রোটোটাইপ আছে , আপ আছে swap 'র জন্য যা তার বাস্তবায়ন এর মানে সম্ভবত নিচে নিচে, এবং এর দেখতে দিন প্রধান কি এই প্রোগ্রাম আমার জন্য কি করতে যাচ্ছে. আমি প্রথম int-x পায় ঘোষণা এক, এবং y দুটি পায় int. তাই OJ হিসাবে যারা মনে যথাক্রমে এবং দুধ,. এবং তারপর আমি একটি আছে printf, এক্স এই বলছে এবং y ঠিক তাই আমি করতে পারেন, এই হল দৃশ্যত উপর কি ঘটছে তা দেখতে. তারপর আমি দাবি printf আছে , আমি দুই সোয়াপিং করছি এবং তারপর আমি একটি প্রিন্ট আউট তারা আনা করছেন দাবি করে যে, এবং আমি আবার x এবং y প্রিন্ট আউট. তাই নিচে এখানে swap 'হয় ঠিক লরা কি, এবং আমরা দেখেছি ঠিক কি একটি মুহূর্ত আগে পর্দা. 

সুতরাং এর এগিয়ে যান এবং দারুণভাবে হতাশ হতে. কোন অদলবদল করতে, এবং কোন swap 'র চালানোর জন্য, এখানে আউটপুট মধ্যে zooming. লিখুন এক্স Y আনা সোয়াপিং, 2, 1. এখনও x 1, এবং y এখনও 2. সুতরাং যদিও, অকপটে, এই দেখায় ঠিক আরো টেকনিক্যালি, যদিও চাই, লরা কি, কাজ বলে মনে হচ্ছে না. সুতরাং কেন হল? ওয়েল, এটা যখন দেখা যাচ্ছে যে আমরা এই মত একটি প্রোগ্রাম লিখুন যে উভয় প্রধান, এখানে হাইলাইট করা হয়েছে এবং তারপর অন্য ফাংশন, swap 'র মত, এখানে হাইলাইট করা যা এটি বিশ্বের, কল ভালো সামান্য কিছু দেখায় একটি মুহূর্ত আগে এই ট্রে. যখন প্রধান বলা পরার প্রথম, যে অপারেটিং সিস্টেম চাওয়ার মত কোন স্থানীয় জন্য মেমরি একটি বিট জন্য x এবং প্রধান যে y মত ভেরিয়েবল, এবং তারা অধিকার আছে শেষ. প্রধান কল বিনিময়, এবং প্রধান কিন্তু যদি দুটি আর্গুমেন্ট, A এবং B বিনিময় করা পাস, কমলার রস এবং দুধ, এটা চাই না কমলার রস এবং দুধ হস্তান্তর লরা. একটি কম্পিউটার আছে কি, এটা কমলার রস কপি পাস যাতে লরা দুধ এবং কপি, কি এই ট্রে ভেতরে শেষ পর্যন্ত এর মূল্য এক এবং দুই, বা OJ হয় এবং দুধ, কিন্তু কপি উহার, তাই যে এই সময়ে গল্প আছে, এই ট্রে প্রতিটি OJ এবং দুধ হয়. একটি এক এবং একটি দুই আছে এই ট্রে প্রতিটি, এবং swap ফাংশন প্রকৃতপক্ষে কাজ করছে. এটা ভিতরে তাদের সোয়াপিং এর দ্বিতীয় আগ ট্রে, কিন্তু যে সোয়াপিং কোন প্রভাব রয়েছে. এবং কিছু কিছু উপর ভিত্তি করে আমরা করেছি মৌলিক নীতি আগে স্বপ্ন, এবং প্রকৃতপক্ষে মাত্র কয়েক মিনিট আগে, কি পরিবর্তন কেন ব্যাখ্যা হতে পারে swap 'র ভেতরে একটি এবং খ যদিও, x এবং y উপর কোনো প্রভাব নেই আমি ও swap 'র ফাংশন x এবং y পাস. এখানে যে মূল শব্দ কী সরলভাবে ব্যাখ্যা হতে পারে? আমি এটা এখানে শোনা মনে করেন? শ্রোতা: ফিরুন. বক্তা 1: ফিরে? ফিরে না. এর অন্য এক সাথে যেতে দাও. কি যে? 

শ্রোতা: [শ্রবণাতীত]. 

বক্তা 1: ঠিক আছে, আমরা পারা রিটার্ন তাই গল্প ফিরে কাজ করতে, কিন্তু একটি এমনকি সহজ ব্যাখ্যা আছে. শ্রোতা: ব্যাপ্তি. বক্তা 1: ব্যাপ্তি. আমি সুযোগ নেব. তাই সুযোগ, যেখানে আপনি মনে আমাদের x এবং y ঘোষণা করেন. তারা ভিতরে ঘোষণা করছি প্রধান অধিকার এখানে. A এবং B এদিকে, হয় কার্যকরভাবে ঘোষণা swap 'র ভিতর, না পুরোপুরি মধ্যে কোঁকড়া ধনুর্বন্ধনী কিন্তু এখনও swap 'র সাধারণ এলাকায়. তাই প্রকৃতপক্ষে, একটি এবং খ শুধুমাত্র এই ট্রে মধ্যে উপস্থিত Annenberg এ থেকে, এই কোড দ্বিতীয় খণ্ড. তাই আমরা প্রকৃতপক্ষে কপি পরিবর্তন, কিন্তু করছি যে সত্যিই সব যে সহায়ক নয়. 

সুতরাং এর কটাক্ষপাত করা যাক এই একটি সামান্য নিম্ন স্তরের. আমি ফিরে যেতে চলেছি উত্স ডিরেক্টরি, এবং আমি প্রথম যাচ্ছি এখানে জুম, এবং মাত্র আমি এই আছি তা নিশ্চিত করতে বড় টার্মিনাল উইন্ডোর, প্রোগ্রাম এখনও যে মত ব্যবহার করে. এখন যে এই ধরুন ইচ্ছাকৃত নয়. স্পষ্টত: আমি ও swap 'র চেয়েছিলেন কাজ, তাই এটি একটি বাগ মত মনে. এখন আমি একটি যোগ শুরু করতে পারে আমার কোড printf এর অনেক, এখানে উপর y, x উপর মুদ্রণ এখানে, এখানে, এখানে বো একটি. কিন্তু অকপটে, যে সম্ভবত কি আপনি কয়েক সপ্তাহ জন্য কাজ করছি এখন, অফিসে ঘন্টা এবং বাড়িতে যখন কাজ কিছু বাগ খুঁজে বের করার চেষ্টা psets উপর. আপনি ইতিমধ্যে আছে কিন্তু যদি আপনি দেখতে পাবেন, যে সমস্যা তিন আপনাকে প্রবর্তন করে সেট , GDB নামে একটি কমান্ড, যেখানে, GDB, গনু ডিবাগার, নিজেই একটি আভা আছে বৈশিষ্ট্য যে আসলে করতে পারেন আমাদের পরিস্থিতিতে বুঝতে ভালো, কিন্তু আরো compellingly, সমস্যার সমাধান এবং বাগ খুঁজে. তাই আমি এই কাজ করতে যাচ্ছি. পরিবর্তে ./noswap, আমি পরিবর্তে করছি , GDB ./noswap চালানো যাচ্ছে. অন্য কথায়, আমি চালানো যাচ্ছে না আমার প্রোগ্রাম না ব্যাশ, আমাদের নতুন বন্ধু আজ. আমি চালানো যাচ্ছে না আমার ভিতরে প্রোগ্রাম noswap নামক এই অন্যান্য প্রোগ্রাম একটি ডিবাগার যা GDB, যা সাহায্য করার জন্য ডিজাইন করা একটি প্রোগ্রাম যা আপনি খুঁজে পেতে এবং বাগ অপসারণ মানুষের. আমি এখানে রান আঘাত সুতরাং, যদি আছে টেক্সট একটি নৃশংস পরিমাণ আপনি কি সত্যিই পড়া আছে না যে. এটি মূলত একটি ক্ষোভ আছে প্রম্পট থেকে যা আমি কন্ট্রোল-এল আঘাত করা যাচ্ছে না সেখানে উপরের আপ পেতে. এই GDB প্রম্পট হয়. আমি এখন এই প্রোগ্রাম চালাতে চান তাহলে, আজকের এই সামান্য Cheat শীট হিসাবে স্লাইড রান প্রথম সুপারিশ, আমরা পরিচয় করিয়ে দিতে যে কমান্ড. এবং আমি টাইপ করা যাচ্ছে না GDB- র ভিতরে এখানে রান আপ, এবং প্রকৃতপক্ষে এটা আমার প্রোগ্রাম স্থাপিত হয়. এখন কিছু অতিরিক্ত আছে ভালো পর্দার আউটপুট, কিন্তু যে, GDB ঠিক হচ্ছে পোঁদ এর এবং কি ঘটছে তা আমাদের বলার. আপনি সত্যিই চিন্তা করতে হবে না ডান এখন এই বিবরণ সম্পর্কে. কিন্তু সত্যিই শীতল কি আমি যদি, GDB, এই again-- কন্ট্রোল-এল আমাকে যেতে পর্দায় মুছে ফেলা হবে এগিয়ে এবং টাইপ যার ফলে ", প্রধান বিরতি", আমি আঘাত লিখুন, যখন কি সেটিং একটি বিরতি বিন্দু noswap.c এ বলা হয়, যেখানে, GDB, যা লাইন 16, আসলে আমার প্রোগ্রাম মূর্ত আউট , আমার ফাংশন আসলে. আমরা এখন জন্য উপেক্ষা করব এই কিন্তু যে ঠিকানা আছে বিশেষভাবে এই ফাংশন মেমরি. তাই এখন আমি রান টাইপ করেন, তখন এখানে কি শীতল বিজ্ঞপ্তি. আমার প্রোগ্রাম লাইন আমি বিরতি এ মৃত্যুদন্ড বিরতি, GDB বলেন. তাই আমি এখন আমার কোড পরিবর্তন করতে হবে না, কিছু printf এর যোগ এটি পুনরায় কম্পাইল, পুন: প্রকাশ এটা,,, পরিবর্তন কিছু printf এর যোগ এটি সংরক্ষণ করুন এটি পুনরায় কম্পাইল, এটি চালানোর জন্য. আমি শুধু আমার প্রোগ্রামের মাধ্যমে পদব্রজে ভ্রমণ করতে পারেন মানুষের গতিতে ধাপে ধাপে দ্বারা ধাপে, না গতি ইন্টেল ভিতরে ধরনের. 

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

এবং এখন এই নিঃসন্দেহে বিভ্রান্তিকর. $ 2, শুধু একটি অভিনব উপায় আপনি যদি পরে যে মান পড়ুন চাই, যদি আপনি "ডলার দুই সাইন ইন করুন." বলতে পারেন এটা একটি রেফারেন্স মত. কিন্তু এখন জন্য, শুধু এটি উপেক্ষা করা. কি আকর্ষণীয় কি হয় সমান সাইন অধিকার. এবং এখন আমি আবার পরের টাইপ এবং মুদ্রণ y, আমি 2 দেখতে পাবেন. আমি এখন মুদ্রণ করতে পারেন এক্স আবার, এবং উন্মুক্তভাবে, আমি হিসাবে একটু বিভ্রান্ত না পেয়ে যদি আমি কোথায়, আমি তালিকা জন্য তালিকা টাইপ করতে পারেন এবং ঠিক কাছাকাছি কিছু প্রসঙ্গ দেখতে বিন্দু আমি আসলে এ আছি. এবং এখন আমি টাইপ করতে পারেন পরবর্তী, এবং সেখানে x 1. এখন আমি পরের টাইপ করুন. ওহ, Y 2. এবং আবার, এটা বিভ্রান্তিকর , GDB এর আউটপুট কারণ আমার নিজের আউটপুট সঙ্গে commingled করা হচ্ছে. কিন্তু আপনি মনে রাখা পিছনে আপনার কোড এ নেত্রপাত বা দিকে এটি ডিম্বপ্রসর সম্ভবত পার্শ্ব দ্বারা, আপনি সত্যিই আমি আছি দেখতে আমার প্রোগ্রামের মাধ্যমে পদবিন্যাস. 

কিন্তু আক্ষরিক, পরবর্তী লক্ষ্য কি. এখানে লাইন 22 এর. যার ফলে চলন্ত, আমাকে এটা নিয়ে যান 23, এবং আমি এখন, এখনও এক এক্স মুদ্রণ. এবং আমি এক এখনও, এখন Y মুদ্রণ. সুতরাং এই একটি দরকারী ব্যায়াম হয় না. তাই এর এই পুনরায় যাক. আমার কাছে ফিরে যাওয়া যাক আবার উপরের এবং টাইপ রান. এবং এটি প্রোগ্রাম বলছে যে debugged হচ্ছে ইতিমধ্যে শুরু হয়েছে, শুরু থেকে শুরু. হ্যাঁ, এর আবার এই কাজ করা যাক. এবং এই সময়, এর পরের কাজ করতে দিন পরের, পরবর্তী, পরের, পরবর্তী, কিন্তু এখন কিছু আকর্ষণীয় পেতে. এখন আমি ভাগ দিতে চান swap ', তাই আমি পরবর্তী টাইপ না. আমি এটা লক্ষ্য এখন ধাপে টাইপ করুন, এবং noswap.c লাইন 33 আমার jumped হয়েছে. আমি gedit ফিরে যান, লাইন 33 কি? যে প্রকৃত প্রথম swap 'র ভেতরে কোড লাইন. কোন কারণ এখন আমি করতে পারেন, চমৎকার ধরনের প্রায় অকর্মা এবং অদ্ভুত পেতে হিসাবে কি আছে সত্যিই যাচ্ছে. আমার tmp মুদ্রণ. ঐখানে. কেন tmp কিছু আছে পাগল, বাজে আবর্জনা মান? শ্রোতা: এটা সক্রিয়া করা হয়েছে. বক্তা 1: এটা সক্রিয়া করা হয়েছে. এবং প্রকৃতপক্ষে, আপনি একটি প্রোগ্রাম চালানো যখন, আপনি মেমরি আভা দেওয়া করছি অপারেটিং সিস্টেম দ্বারা, কিন্তু আপনি কোনো মান সক্রিয়া করা হয়নি, তাই যাই হোক না কেন বিট আপনি এটা, যদিও এখানে দেখছি এই পাগল বড় নেতিবাচক সংখ্যা, শুধু অর্থ যারা যে অবশিষ্টাংশ থেকে যে র্যাম কিছু পূর্ববর্তী ব্যবহার, আমি না, যদিও নিজেকে এখনো এটি প্রয়োজন. তাই এখন আমি এগিয়ে এবং টাইপ যেতে চলেছি পরবর্তী, এবং এখন আমি মুদ্রণ tmp টাইপ করুন, আমি কি দেখতে হবে? যাই হোক না কেন একটি মান ছিল, একটি মাত্র প্রথম যুক্তি x ভালো ছিল প্রথম জিনিস, পাস হচ্ছে তাই একটি এবং এক্স একই হতে হবে, তাই প্রিন্ট tmp আমাকে এক মুদ্রণ উচিত. 

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

[ভিডিও প্লেব্যাক] -আরে, Binky অনলাইন. ওয়েক আপ. এটা মজা করার জন্য পয়েন্টার সময়. 

যে -কি আছে? পয়েন্টার সম্পর্কে জানুন? ওহ, বুড়ি! [END টি ভিডিও প্লেব্যাক] বক্তা 1: বুধবার আপনি awaits. আমরা তখন আপনি দেখতে পাবেন. [ভিডিও প্লেব্যাক] -এবং এখন, ডিপ চিন্তা, Daven Farnham দ্বারা. 

-কেন আমরা সি শেখার? কেন না একটি A +? 

[হাস্য] 

[END টি ভিডিও প্লেব্যাক]