۲ کلمه اساسی و مهم برای برنامه نویس های تازه کار!

۲ دنیای متفاوت و رابطه بین اونها!سلام. خب امروز راجب ۲ تا کلمه مهم صحبت میکنم که خیلی کمک میکنه به فهم یه سری از چیزها.عکس بالا رو یه نگاه بندازید، آخر مقاله انشاالله کامل معنیش رو میفهمید.یه نکته: من واقعا اصلا با اصطلاحات فارسی تو حیطه علوم کامپیوتر راحت نیستم. اگه از کلمات انگلیسی استفاده میکنم بدانید که به خاطر کلاس گذاشتن نیست!!! اینجور راحت تر میتانم توضیح بدم.خب حالا این ۲ تا کلمه چیا هستن؟اول این رو بگم که Data و Information نیستن! پس چی هستن؟اینم از ۲ تا کلمه مهم ما:نشان دادن (Representing)معنی کردن یا برداشت کردن (Interpreting)حالا این ۲ تا کلمه چه ربطی به برنامه نویسی داشتن؟ تقریبا میشه یجورایی گفت برنامه نویسی کلا یعنی همین ۲ تا کلمه!چطور؟؟؟خب، برای درک این قضیه باید ببینیم Data یعنی چه. به زبان ساده اگه بخوام بگم Data یعنی اون ''چیزهایی'' که ما تو برنامه نویسی باهاشان کار میکنیم. حالا این Data ها میتانن Type های مختلف داشته باشن.مثلاً : عدد ها، String ها، Boolean ها، و حتی Data Structure ها که از قبل توسط زبان برنامه نویسی در اختیار ما قرار داده میشن، و همچنین حتی Type های دیگه که خود ما اونهارو میسازیم، همگی میشه گفت مثال هایی از Type های مختلف Data هستن.حالا به جای خوبش میرسیم!ببینید، ما وقتی میخوایم یه مسئله ای رو با برنامه نویسی حل کنیم (یعنی در واقع وقتی که داریم برنامه نویسی میکنیم) با ۲ تا ''دنیای'' مختلف روبرو هستیم:۱- دنیای مسئله ای که داریم روش کار میکنیم (Problem Domain) که یه سری اطلاعات تو خودش داره که ما بهشان میگیم Information.۲- دنیای برنامه نویسی یا همون کد ما یا همون سورس کد ما (Solution Domain) که یه سری اطلاعات تو خودش داره که ما بهشان میگیم Data.خب پس تا حالا ما Information ها رو داریم که تو مسئله ما هستن و Data ها رو داریم که توی زبان برنامه نویسی (تو کد ما) هستن.حالا اون ۲ تا کلمه Represent و Interpret کجای کار ما هستن؟چیزی که هست اینه که بین اون Information و Data یه رابطه مهم وجود داره و این ۲ تا کلمه Represent و Interpret این رابطه رو معنی میکنن.نگران نباشید، آخر کار حتما مثال هم میزنم که کامل همه چی روشن بشه براتان.حالا بریم سراغ اون رابطه، خلاصه قضیه میشه این ۲ مورد:ما Information های توی مسئله رو بصورت Data توی برنامه خودمان Represent میکنیم.و از اون طرف هم Data های توی برنامه رو بصورت Information توی دنیای بیرون از کد Interpret میکنیم.حالا یه مثال:فرض کنید ما داریم برای نیروی انتظامی یه برنامه مینویسیم که یه قسمتش راجب یه چراغ راهنمایی رانندگیه.خب طبیعتا ما توی کامپیوترمان و توی یه زبان برنامه نویسی که چراغ راهنمایی رانندگی نداریم دیگه!!!خب این چراغ راهنمایی رانندگی الان برای ما میشه یه جور Information که توی کامپیوتر نیست دیگه!پس باید چکار کنیم الان؟؟؟جواب اینه که ما میایم و این چراغ راهنمایی رانندگی رو بصورت Data توی کد خودمان Represent میکنیم (یا نشان میدیم). برای اینکار ما از یکی از اون Type های مختلف Data که اول این مقاله گفتم، استفاده میکنیم برای Represent کردن (یا نشان دادن) یه چراغ راهنمایی رانندگی بصورت Data توی کد خودمان. به همین راحتی!مثلا ممکن من از یه String استفاده کنم برای اینکار.یا اینکه یه Object بسازم که که نشان دهنده یه چراغ راهنمایی رانندگی باشه (تو زبان های OO مثل Java).یا اینکه یه Type جدید بسازم (تو زبان های Functional مثل Haskell).یا چیزهای دیگه که در سطح این مقاله نیست!خب این از Represent کردن Information ها، الان Interpret کردن Data کجای کاره؟خب Interpret کردن یجورایی میشه برعکس Represent کردن دیکه! فرض کنید ما یه عدد ۶ تو برنامه داریم. از کجا بفهمیم که این عدد ۶ چیه اصلا؟ یعنی درواقع چطور این عدد ۶ رو باید Interpret کنیم برای خودمان؟جواب اینه که این بستگی به این داره که اون عدد ۶ داره چی رو Represent میکنه دیگه!شاید اون عدد ۶ یعنی: ۶ ساعت به لحظه سال تحویل مانده! (توی یه اپلیکیشن تقویم موبایل)شاید اون عدد ۶ یعنی: ۶ نفر که برنده شدن تو یه مسابقه! (توی اپلیکیشن روبیکا!)شاید اون عدد ۶ یعنی: ۶ تا ماشین ارزان قیمت! (توی سایت دیوار)شاید اون عدد ۶ یعنی: ۶ نمره منفی تو کنکور! (توی سایت سازمان سنجش)شاید اون عدد ۶ یعنی: ۶ غذای خوشمزه ایرانی! (توی یه اپلیکیشن آشپزی)و . . .همه اینا تو چه چیزی مشترک هستن؟ تو این قضیه که یه سری Information بصورت Data توی برنامه Represent (نشان داده) میشن و یه سری Data هم بصورت Information برای ما Interpret (معنی) میشن. به همین راحتی! (حالا همین پایین عکس رو دوباره ببینید).۲ تا کلمه Represent و Interpret رابطه بین Information و Data رو توضیح میدن.خب پس فهمیدیم که این ۲ کلمه Represent و Interpret چی هستن و چطور رابطه بین Information و Data رو توضیح میدن.دفعه بعدی که میخواین یه برنامه بنویسین، از خودتان بپرسید که چطور چیزهایی که تو مسئله هستن (Information ها) رو به صورت Data توی کد خودم نشان بدم.بعضی از مقاله های دیگه من هم اینها هستن:کتاب «دنیا بازیچه یهود» کتابی که هرکسی باید بخوانداصلا برنامه نویسی یعنی چه؟پارادایم های برنامه نویسی به زبان سادهامیدوارم این مقاله کمک کرده باشه به شما.موفق باشید.