1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate HARDISON: যখন আপনি পেয়েছেন একাধিক প্রোগ্রাম একটি খোলা 2 00:00:09,360 --> 00:00:11,250 কম্পিউটার, সবকিছু এর মত মনে হচ্ছে 3 00:00:11,250 --> 00:00:12,880 একই সময়ে চলমান. 4 00:00:12,880 --> 00:00:15,350 উদাহরণস্বরূপ, আপনি একটি ওয়েব ব্রাউজারের মত কাজ করা হতে পারে 5 00:00:15,350 --> 00:00:19,360 ফায়ারফক্স বা ইন্টারনেট এক্সপ্লোরার, আই টিউনস গান শুনতে শুনতে, 6 00:00:19,360 --> 00:00:21,490 এবং শব্দ সঙ্গে একটি প্রবন্ধ লেখা. 7 00:00:21,490 --> 00:00:24,240 যাইহোক, অধীন ফণা, আসলে প্রোগ্রাম 8 00:00:24,240 --> 00:00:25,830 একটি সময়ে এক রান. 9 00:00:25,830 --> 00:00:29,750 এটি অপারেটিং সিস্টেমের কাজ, Windows, Mac OSX, অথবা 10 00:00:29,750 --> 00:00:33,070 Linux-এ এই প্রক্রিয়ার প্রতিটি পৃথক পরিচালনা হিসাবে, 11 00:00:33,070 --> 00:00:35,900 প্রোগ্রাম, পরিচিত এবং তাদের মধ্যে তাই সুইচ হয় যে যখন আপনি 12 00:00:35,900 --> 00:00:38,610 আপনার রচনার কাজ আপনার Facebook পাতা চেক থেকে যান 13 00:00:38,610 --> 00:00:41,590 আবার, শব্দ হয় যে একটি চলমান এর. 14 00:00:41,590 --> 00:00:44,890 >> যদিও কখনও কখনও,, আমরা নিজেরাই করতে সক্ষম প্রোগ্রাম চাই 15 00:00:44,890 --> 00:00:47,440 এই মত একাধিক জিনিষ, খুব না. 16 00:00:47,440 --> 00:00:49,630 আপনি যদি আমার মত হন, সম্ভবত আপনার একটি গুচ্ছ আছে 17 00:00:49,630 --> 00:00:52,730 বিভিন্ন ট্যাব প্রদর্শন করে আপনার ওয়েব ব্রাউজার, ইমেইলের জন্য একটি খোলা, 18 00:00:52,730 --> 00:00:55,070 এক একটি ক্যালেন্ডার সঙ্গে, এবং তাই. 19 00:00:55,070 --> 00:00:58,270 আমরা একটি পৃথক প্রোগ্রাম বা প্রক্রিয়া হিসাবে প্রতিটি ট্যাব আচরণ করতে পারে, 20 00:00:58,270 --> 00:01:01,300 Google Chrome-এর মত আছে, কিন্তু অনেক প্রোগ্রামের একটি ব্যবহার 21 00:01:01,300 --> 00:01:04,430 একটি প্রক্রিয়ার লাইটার-ওজন সংস্করণ নামক একটি থ্রেড. 22 00:01:04,430 --> 00:01:07,190 >> হল থ্রেড শুধু প্রক্রিয়াকরণের মাধ্যমে আরেকটি ইউনিট, একটি সেট 23 00:01:07,190 --> 00:01:10,100 নির্দেশ অথবা কোড যে "রান" করতে পারেন, উদ্ধৃতি উদ্ধতি, 24 00:01:10,100 --> 00:01:12,560 একযোগে সঙ্গে অন্যান্য থ্রেড. 25 00:01:12,560 --> 00:01:15,150 এটা কি করে সম্ভব জন্য আপনি ফেসবুক ব্রাউজ করুন 26 00:01:15,150 --> 00:01:17,940 আমার যখন শোনা পটভূমি অথবা দুটি আছে 27 00:01:17,940 --> 00:01:20,790 YouTube ভিডিও একই সময়ে বাজানো. 28 00:01:20,790 --> 00:01:24,660 সুতরাং, এই সাধারণ বিষয়, concurrency হিসাবে পরিচিত, সাধারণত 29 00:01:24,660 --> 00:01:26,930 কিন্তু আপ করুন যাতে প্রথম দিকে কম্পিউটার বিজ্ঞান কোর্স না আসা 30 00:01:26,930 --> 00:01:29,790 কারণ নিম্ন স্তরের বিস্তারিত আলোচনা প্রয়োজন 31 00:01:29,790 --> 00:01:31,930 অপারেটিং সিস্টেম এবং ভালো. 32 00:01:31,930 --> 00:01:34,170 যাইহোক, প্রোগ্রামিং ভাষা আমরা ব্যবহার 33 00:01:34,170 --> 00:01:38,000 প্রারম্ভে এর CS50 ভূত,, যাও কিছু চৌকশ সামগ্রী উপলব্ধ করা হয় 34 00:01:38,000 --> 00:01:40,390 এটি সহজ জিনিষ সঙ্গে একাধিক প্রোগ্রাম লিখতে করা 35 00:01:40,390 --> 00:01:42,390 একবারে যাওয়া. 36 00:01:42,390 --> 00:01:45,050 >> আপনি যখন ভূত প্রোগ্রাম নির্মাণ, আপনি ক্রমাগত করছি 37 00:01:45,050 --> 00:01:46,760 থ্রেড এর সাথে কাজ করে. 38 00:01:46,760 --> 00:01:49,770 প্রতিটি ভূত স্ক্রিপ্ট, যা একটি কোড ব্লক সঙ্গে যে শুরু 39 00:01:49,770 --> 00:01:52,600 "যখন" ধাঁধা পোশাক এক, এর যাবে চিন্তা 40 00:01:52,600 --> 00:01:54,380 হিসাবে একটি আলাদা থ্রেড. 41 00:01:54,380 --> 00:01:58,040 আসুন একটি সহজ শয়তান এর প্রোগ্রাম এ কিভাবে এই কাজ করে দেখতে চেহারা. 42 00:01:58,040 --> 00:02:01,730 >> এখানে, আমরা একটি মাছ বস্তু, বা পরী পেয়েছেন দুই স্ক্রিপ্টের, করেছি 43 00:02:01,730 --> 00:02:05,000 যে উভয় শুরু যখন আমরা সামান্য সবুজ পতাকা বাটন ক্লিক করুন. 44 00:02:05,000 --> 00:02:07,290 প্রথম স্ক্রিপ্ট মাছ এর গতি নিয়ন্ত্রণ করে. 45 00:02:07,290 --> 00:02:09,850 যখন সবুজ পতাকা ক্লিক না, মাছ স্থাপিত পরার 46 00:02:09,850 --> 00:02:12,450 পর্দার বাম দিকে, পর্যায় বলা হয়, 47 00:02:12,450 --> 00:02:14,090 সম্মুখ অধিকার. 48 00:02:14,090 --> 00:02:17,070 তারপর, নির্দেশাবলী যে চিরকালের জন্য চালানো হবে একটি সেট, যতক্ষণ না আমরা 49 00:02:17,070 --> 00:02:20,270 প্রোগ্রাম বন্ধ করুন, মাছ ডানদিকে যাও glides, 50 00:02:20,270 --> 00:02:22,900 প্রায় একবছর, বাম দিকে ফিরে যায়, এবং 51 00:02:22,900 --> 00:02:24,470 সক্রিয় আবার কাছাকাছি. 52 00:02:24,470 --> 00:02:27,410 দ্বিতীয় স্ক্রিপ্ট মাছ এর চিন্তার প্রক্রিয়া নিয়ন্ত্রণ করে. 53 00:02:27,410 --> 00:02:29,290 এটা পরিনত হয় যে এই একটি ক্ষুধার্ত মাছ. 54 00:02:29,290 --> 00:02:32,080 তাই 3 সেকেন্ডের জন্য অপেক্ষা করার পরেই, মাছ, মনে হয় 55 00:02:32,080 --> 00:02:34,420 "আমি ক্ষুধার্ত," একটি চতুর্থ দ্বিতীয় জন্য. 56 00:02:34,420 --> 00:02:36,440 এই স্ক্রিপ্টটি এছাড়াও চিরকালের চালায়. 57 00:02:36,440 --> 00:02:38,940 এবং হিসাবে আমরা প্রোগ্রাম থেকে দেখতে ক্লিক করে, 58 00:02:38,940 --> 00:02:41,730 সবুজ পতাকা, উভয় স্ক্রিপ্ট চালানো প্রদর্শিত 59 00:02:41,730 --> 00:02:43,100 একযোগে. 60 00:02:43,100 --> 00:02:46,460 মাছ চলে আসে একই সময়ে এবং মনে করে. 61 00:02:46,460 --> 00:02:49,030 >> যেহেতু দরিদ্র মাছ দেখায় তাই ক্ষুধার্ত, যাক এর কিছু যোগ করুন 62 00:02:49,030 --> 00:02:50,670 গোলগাল puffs জন্য এটি খেতে যাও. 63 00:02:50,670 --> 00:02:53,060 আশা রাখি, তারা জলে ভাঙ্গা হবে না. 64 00:02:53,060 --> 00:02:55,560 যখন আমরা একটি দ্বিতীয় পরী মধ্যে যোগ করুন, এছাড়াও আমরা হতে সক্ষম হবেন 65 00:02:55,560 --> 00:02:58,020 সংশ্লিষ্ট স্ক্রিপ্ট যে পরী এ যোগ করুন. 66 00:02:58,020 --> 00:02:59,580 তাই, অন্য সেট করা আছে করব 67 00:02:59,580 --> 00:03:00,830 থ্রেড যে চালানো হবে. 68 00:03:03,590 --> 00:03:06,270 যাও থামানো আমাদের প্রোগ্রাম কন্ট্রোলের ব্যবহারকারী যখন 69 00:03:06,270 --> 00:03:09,340 ক্ষুধার্ত মাছের খাদ্য পায়, আসুন যে যখনই স্পেস 70 00:03:09,340 --> 00:03:11,840 বার আঘাত করা হয়, মঞ্চে গোলগাল puffs জন্য প্রদর্শিত 71 00:03:11,840 --> 00:03:13,300 মাছ খেতে যাও. 72 00:03:13,300 --> 00:03:15,760 আগে আমরা স্পেস বার আঘাত, আমরা গোলগাল রাখতে চাইবেন 73 00:03:15,760 --> 00:03:19,020 puffs লুকানো যাতে মাছ তাদের না দেখতে পারেন. 74 00:03:19,020 --> 00:03:21,140 এই কাজের জন্য স্ক্রিপ্টের আমরা কয়েক করতে হবে 75 00:03:21,140 --> 00:03:22,750 গোলগাল puffs পরী. 76 00:03:22,750 --> 00:03:26,980 প্রথম স্ক্রিপ্ট, সবুজ নিশান, শুধু খাবার লুকাতে হবে. 77 00:03:26,980 --> 00:03:29,530 অন্যান্য স্ক্রিপ্ট আমরা লিখিত করেছি ভিন্ন, এই এক না রাখতে হবে 78 00:03:29,530 --> 00:03:30,560 চলমান চিরতরে. 79 00:03:30,560 --> 00:03:33,250 এবং এটি খুব দ্রুত শেষ শুরু হবে যখন আমরা ডান ক্লিক করুন 80 00:03:33,250 --> 00:03:35,000 সবুজ পতাকা বোতাম. 81 00:03:35,000 --> 00:03:37,180 >> পরের স্ক্রিপ্ট আমরা জন্য স্পেস বার হতে অপেক্ষা করতে হবে 82 00:03:37,180 --> 00:03:39,590 নির্বাহ করার আগে চাপা. 83 00:03:39,590 --> 00:03:42,770 আমরা এর জন্য ব্যবহারকারীর ইনপুট "অপেক্ষা" অথবা "শোনা" অপেক্ষা পোকা বলতে পারেন 84 00:03:42,770 --> 00:03:43,860 জন্য একটি ঘটনা. 85 00:03:43,860 --> 00:03:46,750 এবং কোড করুন যখন একটি ঘটনা বা গৃহীত হয়েছে 86 00:03:46,750 --> 00:03:50,280 শোনা ইভেন্ট হ্যান্ডলিং কোড বলা হয়. 87 00:03:50,280 --> 00:03:53,550 আমাদের স্পেস বার হ্যান্ডলার এর উপর গোলগাল puffs প্রদর্শন করা 88 00:03:53,550 --> 00:03:56,330 পর্দা যাতে তাদের মাছ খেতে পারেন. 89 00:03:56,330 --> 00:03:58,880 এই মুহুর্তে, সবকিছু ভাল খুঁজছেন এর. 90 00:03:58,880 --> 00:04:00,990 >> পরের জিনিস আমরা করার চিন্তা করা কিভাবে পেতে হয় 91 00:04:00,990 --> 00:04:03,570 মাছ যে খাবার খেতে যাও আছে বুঝতে পারছি. 92 00:04:03,570 --> 00:04:06,030 চলুন মাছ অন্য যে থ্রেড প্রতিনিয়ত যোগ করুন 93 00:04:06,030 --> 00:04:08,790 চেক কিনা বা না এটি গোলগাল puffs স্পর্শ এর. 94 00:04:08,790 --> 00:04:11,510 আমরা একটি পৃথক থ্রেডটিতে যে উপায় আমরা করতে পারেন যেহেতু এটি করার জন্য 95 00:04:11,510 --> 00:04:13,710 খাদ্য জন্য ক্রমাগত পরীক্ষা. 96 00:04:13,710 --> 00:04:16,829 অন্যথা, শুধুমাত্র আমরা পর্যায়ক্রমিকভাবে খাদ্য জন্য চেক করতে চাই 97 00:04:16,829 --> 00:04:21,180 মধ্যে মধ্যে গ্লাইডিং, প্রায় বাঁক, অপেক্ষা করছে, অথবা চিন্তা. 98 00:04:21,180 --> 00:04:22,000 >> ঠিক আছে. 99 00:04:22,000 --> 00:04:23,785 এখন আসুন আমাদের ভূত প্রোগ্রাম চালানো. 100 00:04:23,785 --> 00:04:26,921 হিসাবে প্রত্যাশিত, অবিলম্বে খাদ্য এবং hides 101 00:04:26,921 --> 00:04:28,920 ক্ষুধার্ত মাছের ফিরে swims এবং ঘোষণা আগে মত. 102 00:04:32,050 --> 00:04:35,060 যখন আমরা স্পেস বার আঘাত, গোলগাল puffs দেখিতে পাত্তয়া, 103 00:04:35,060 --> 00:04:37,470 এবং ক্ষুধার্ত মাছ whoo বলছেন. 104 00:04:37,470 --> 00:04:39,340 তবে অপেক্ষা করুন, যে অদ্ভুত. 105 00:04:39,340 --> 00:04:42,150 কিভাবে আসা মাছ এর "আমি ক্ষুধার্ত" চিন্তা ইন্টারাপ্ট 106 00:04:42,150 --> 00:04:43,580 অন্যান্য উপাদান? 107 00:04:43,580 --> 00:04:45,780 কারণ আমরা কোনো সমন্বয় স্থাপন করা যায় নি 108 00:04:45,780 --> 00:04:47,590 এর মধ্যে তিনটি মাছ স্ক্রিপ্ট. 109 00:04:47,590 --> 00:04:50,610 প্রত্যেকটি তার নিজস্ব থ্রেডটিতে, চলমান অন্যমনস্ক কি হয় 110 00:04:50,610 --> 00:04:52,120 অন্যদের করছেন. 111 00:04:52,120 --> 00:04:54,980 চলুন এই আগে আমরা এগিয়ে যেতে ফিক্স. 112 00:04:54,980 --> 00:04:57,700 >> থ্রেডের মধ্যে সমন্বয় একটি আমরা যেহেতু চতুর টাস্ক 113 00:04:57,700 --> 00:05:00,940 না হলে প্রতিটি থ্রেড রান উপর স্পষ্ট নিয়ন্ত্রণ বা আছে না 114 00:05:00,940 --> 00:05:02,190 চলে না. 115 00:05:02,190 --> 00:05:04,710 যাও থেকে এক থ্রেড অন্য একটি বার্তা পাঠান, আমাদের করতে হবে 116 00:05:04,710 --> 00:05:08,300 একটি পরিবর্তনশীল যে আমরা, অথবা লিখতে পারেন সেট ব্যবহার এক থ্রেডটিতে, 117 00:05:08,300 --> 00:05:10,170 অন্য মধ্যে পড়তে. 118 00:05:10,170 --> 00:05:12,920 চলুন শুরু করা যাক একটি পরিবর্তনশীল নামক foodFound যে আমরা সেট করতে পারবেন 119 00:05:12,920 --> 00:05:15,530 সত্য যখন মাছ গোলগাল puffs মধ্যে সঞ্চালিত হয়. 120 00:05:15,530 --> 00:05:17,540 অবশ্যই ভাল,, আমরা নিশ্চিত যে আমরা এটি সেট করতে চাই 121 00:05:17,540 --> 00:05:19,240 প্রথমে মিথ্যা. 122 00:05:19,240 --> 00:05:22,540 মাছ এর চিন্তা থ্রেড তারপর, আমরা দেখতে চেক করব যদি 123 00:05:22,540 --> 00:05:25,400 মাছ "আমি ক্ষুধার্ত" প্রদর্শন করার আগে করেনি খাদ্য পাওয়া যায় নি 124 00:05:25,400 --> 00:05:26,770 বুদ্বুদ চিন্তা. 125 00:05:26,770 --> 00:05:29,670 >> এখন, আবার প্রোগ্রাম, আমরা দেখতে যে মাছ 126 00:05:29,670 --> 00:05:31,580 পেতে বিঘ্নিত ক্ষুধা চিন্তা না কখন 127 00:05:31,580 --> 00:05:33,820 গোলগাল puffs আউট হয়. 128 00:05:33,820 --> 00:05:36,820 আমরা চূড়ান্ত সমস্যা আছে যে গোলগাল puffs সেখানে যাবেন না 129 00:05:36,820 --> 00:05:39,800 দূরে মাছ পরে, উদ্ধতি মূল্যউদ্ধৃতি, "eats" তাদের. 130 00:05:39,800 --> 00:05:42,305 মাছ স্ক্রিপ্ট থেকে, কোন সহজ উপায় নেই যাও গোলগাল লুকান আছে 131 00:05:42,305 --> 00:05:44,710 puffs, তাই গোলগাল puffs একটি বার্তা পাঠাতে হবে 132 00:05:44,710 --> 00:05:46,780 নিজেকে লুকানোর পরী. 133 00:05:46,780 --> 00:05:49,550 আমরা অন্য পরিবর্তনশীল সঙ্গে এই যেত না যে গোলগাল puffs 134 00:05:49,550 --> 00:05:52,680 পরী অ্যাক্সেস, যেমন মাছ ভূত আছে. 135 00:05:52,680 --> 00:05:55,720 >> যাইহোক, যে পরিষ্কার করে উপায় এই ক্ষেত্রে এই কি আছে, 136 00:05:55,720 --> 00:05:57,840 যেহেতু পরিবর্তে একটি স্ক্রিপ্ট এর একটি বার্তা পাঠানোর 137 00:05:57,840 --> 00:06:00,570 কোথাও নির্বাহ করার মাঝখানে, আমরা পাঠাতে পারেন 138 00:06:00,570 --> 00:06:03,710 একটি স্ক্রিপ্ট শুরু অপেক্ষা এর বার্তা. 139 00:06:03,710 --> 00:06:07,360 আমরা মাছ না থাকার এই একটি ঘটনা, একটি আমরা করব সম্প্রচার 140 00:06:07,360 --> 00:06:08,800 খাওয়া কল. 141 00:06:08,800 --> 00:06:11,510 তারপর, আমরা গোলগাল puffs যে অভিলাষ জন্য একটি স্ক্রিপ্ট তৈরি করব 142 00:06:11,510 --> 00:06:13,030 এই ইভেন্টের জন্য অপেক্ষা করুন. 143 00:06:13,030 --> 00:06:15,560 এই যে এই ছাড়া অনুরূপ স্পেস বার ইভেন্ট, 144 00:06:15,560 --> 00:06:19,250 সময়, ব্যবহারকারী সরাসরি এক ইভেন্ট triggering না. 145 00:06:19,250 --> 00:06:22,800 এখন আমরা কি আমাদের foodFound পরিবর্তনশীল ফিরে সেট করা হয় 146 00:06:22,800 --> 00:06:25,750 যাও, মিথ্যা এবং আমরা এখন অনেক হিসাবে ক্ষুধার্ত মাছ দিতে পারে 147 00:06:25,750 --> 00:06:28,470 গোলগাল puffs হিসাবে এটি চায় servings. 148 00:06:28,470 --> 00:06:30,040 >> তাই খুব খারাপ না, ডান? 149 00:06:30,040 --> 00:06:33,400 সি, মাল্টিথ্রেডেড প্রোগ্রাম লেখা হয় আরো জটিল, 150 00:06:33,400 --> 00:06:35,700 কিন্তু একই মূলসূত্র. 151 00:06:35,700 --> 00:06:38,690 যাই হোক, আমি আশা করি আপনি একটি মহান সময় কিছু মজা আছে ভবন 152 00:06:38,690 --> 00:06:41,030 ভূত মধ্যে সহগামী প্রোগ্রাম. 153 00:06:41,030 --> 00:06:42,570 আমার নাম Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 এটি CS50.