من یه سوال فنی دارم، چرا وقتی به اپلیکیشن مثل وایبر رو میخوایم اپدیت کنیم حجمی معادل حجم اپلیکیشن رو دانلود کنیم؟ مگه فقط مقدار کمی از کدها و برنامه تغییر نمیکنن؟
اینجا دو نکته هست. اول اینکه وقتی برنامه نویس، نوشتن برنامه اش به زبان قابل فهم برای انسانها (مثلا سی) رو تموم می کنه، اون رو کمپایل می کنه که برابر تبدیل متن قابل خوندن توسط انسان، به متن قابل خوندن توسط ماشین است. این برنامه کمپایل شده اون چیزی است که ما دانلود و اجراش می کنیم. حالا ممکنه یک تغییر بسیار ریز در متن برنامه باعث تغییرات بزرگی در برنامه کمپایل شده بشه. در نتیجه اون تغییر ریز، تغییرات بزرگی رو در برنامه اجرایی ایجاد کرده که ما مجبور دانلودشون کنیم.
اما حرف تو هم صحیحه! به هرحال بخشهایی از این برنامه مثل قبل است و احتمالا فایل اجرایی نهایی هم مشابهتهایی با فایل قبلی خواهد داشت. همینجاست که برنامه هایی درست شدن برای تشخیص این اختلاف و دادن تفاوتها به کاربر برای دانلود اما در این حالت نیازمند برنامه ای هستیم که روی کامپیوتر ما این تفاوت ها رو به فایل اصلی که از قبل داشتیم اعمال کنه و اینکار پیچیده است. در لینوکس به این برنامه diff گفته میشه.
برای روشنتر شدن بهتره به یک کتاب فکر کنی. نسخه اول کتاب رو داری و ناشر تغییراتی توی اون می ده! حالا دو تا راه حل داریم: فرستادن کتاب جدید برای تو یا فرستادن یک لیست از تغییرات و اینکه تو بشینی پاراگرافهای تغییر کرده رو پیدا کنی و با متن های جدید (که شاید طولشون با طول متن قبلی فرق کنه) جایگزین کنی و مثلا اگر جایی کلی متن اضافه شده باشه مجبور بشی صفحات سفیدی لای کتاب بچسبونی و متن جدید رو روشون بنویسی و بعد شماره صفحههای توی فهرست رو اصلاح کنی و ….
می بینی که روش دوم کمی دردسر داره و با توجه به این دردسر و بخصوص سرعت خیلی زیاد اینترنت در جهان، توسعه دهنده ها ترجیح می دن به جای رفتن سراغ پیدا کردن تفاوتها و مقایسه اون با نسخه ای که تو داری و تغییر دادن متن برنامهها، یکضرب فایل جدید رو به تو بدن تا مطمئن باشن که همه چیز به درستی کار می کنه.