متاسفانه در زبان فارسی این نوع رویهی برنامهنویسی را با لغت « مستقل از سکو » معنی کردهاند در حالی در معنای اصلی تفاوت قابل ملاحظهای با هم دارند که در این مقاله به شرح تفاوتها و نحوهی پیدایش آنها در سیر تکاملی برنامهنویسی میپردازیم.
اگر تا کنون خودتان تعدادی برنامهی متنباز دانلود کرده باشید ( و یا حتی بعضی برنامههای Closed Source نیز !) با این دو نوع برنامه مواجه شدهاید. در صورتی که برنامهنویس هستید بایستی تفاوت این دو را به خوبی درک کرده باشید و در صورتی که هنوز درک نکردهاید هم اکنون دست بهکار شوید (!).
زبانهای قدیمی اکثرا به گونهای بودند که امکان انتقال از یک بستر (Platform) به بستر دیگر را به برنامهنویس نمیدادند. دلیل آن هم وجود تعداد محدودی سیستمعامل انحصاری و همچنین برنامههای انحصاری برای آنها بود. اما در دههی ۱۹۹۰ با آغاز جنبش نرمافزاری متنباز و GNU توسط ریچارد استالمن و تولد سیستمعاملی ( هم اکنون ) قدرتمند به نام Linux در آن زمان ، دیگر بستر و نرمافزارهای انحصاری کم کم محبوبیت خود را از دست دادند. چرا که برنامهنویسان سیستمعامل گنو/لینوکس تفاوت قابل ملاحظهای با برنامهنویسان دیگر سیستمعاملهای انحصاری ( مانند ویندوز و مک ) داشتند : « آنها برنامههایی مینوشتند که تنها محدود به لینوکس نبود بلکه در اکثر بسترهای نرمافزاری و سختافزاری بدون تغییر چندانی در کد ، اجرا میشدند »
برنامهنویسان جنبش متنباز این نوع برنامههای را Cross-Platform نامیدند. چرا که آنها میتوانستند با استفاده از پورت کردن کامپایلر زبانی که برنامههایشان را با آن نوشتهاند به سیستمعامل مقصد ، برنامهی خود را کامپایل کرده و اجرا کنند. تا مدتها برنامهنویسان زبانهایی مانند سی.پلاس.پلاس این کار را میکردند و برنامههای بسیار معروف و قدرتمندی مانند مرورگر فایرفاکس و یا محیطهای گرافیکی مانند گنوم ، KDE و غیره را به صورت Cross-Platform نوشتند. اما این روشی که برنامهنویسان به کار میبردند بسیار وقتگیر بود. چرا که نیازمند کامپایل مجدد کد در سیستمعامل مقصد و گاهی تغییر جزپی کدها بود. ( زمان کامپایل را دستکم نگیرید ! برای برنامههای بزرگ گاهی چندین ساعت وقت میگیرد که برای انتشار هر نسخهی جدید حداقل بایستی برای ۳ سیستمعامل مشهور لینوکس ، ویندوز و مک انجام شود ) بنابراین برنامهنویسان به دنبال راهی افتادند که این محدودیت ( یعنی کامپایل مجدد برای هر سیستمعامل ) را از بین ببرند.
در این زمان نوشتن برنامههای Platform-Independent با ظهور زبان Java تحقق یافت. دلیل ابداع زبانی جدید برای این نوع برنامهنویسی این بود که زبانهای قدیمیتر مانند سی.پلاس.پلاس و یا پاسکال ماهیت ساختاری و قواعدیشان بهگونهای بود که وابسته به سختافزار و سیستمعامل بودند. برای مثال متغیرهای از نوع اشارهگر این امکان را به برنامهنویس میدهند که به طور مستقیم در نحوهی ذخیرهسازی دادهها در حافظه تغییر ایجاد کند و روال کاری عادی سیستمعامل را تغییر دهد. برای همین نیاز به زبانی بود که در عین از دست ندادن قدرت سی.پلاس.پلاس از قواعدی بهره بگیرد که وابستگی به سیستمعامل نداشته باشد. و همین دلیلی شد برای پیدایش زبانی قدرتمند به نام Java.
برنامههایی که شما با Java و یا هر زبان Platform-Independent دیگر مینویسید ، بدون نیاز به کامپایل مجدد در اکثر بسترها قابل اجرا است. یعنی شما تنها یکبار برنامه را مینویسید و تنها یکبار کامپایل میکنید. و همین کار باعث صرفهجویی زبادی در هزینه و زمان خواهد شد. این نوع برنامهها اکثرا دارای یک مفسر (Interpreter) هستند که کدهای کامپایل شده ( نیمه اجرایی ! ) را در سیستمعامل مقصد اجرا میکنند. برای توضیح بیشتر در مورد مفسر به کتابهای آموزشی یک زبان تفسیری مثل Java و یا Python مراجعه کنید.
البته ذکر این سیر تاریخی دلیلی بر نابود شدن نوع برنامهنویسی Cross-Platform نیست بلکه بسیاری از برنامهنویسان این روش را بر روش دیگر ترجیح میدهند و معتقدند که روش سادهتری برای برنامهنویسی است. چرا که اکثر کتابخانههای آماده جهت برنامهنویسی با این روش نوشته شدهاند. به هر حال تجربه نشان میدهند که روش نوشتن برنامهها به صورت Cross-Platform هیچگاه از بین نمیرود بلکه به همراه روش Platform-Independent به حیات خود ادامه خواهد داد.
وجود برنامههای Platform-Independent انقلاب عظیمی در برنامهنویسی ایجاد کردهاند. اینکه آیا روش بهتری از این نوع برنامهنویسی در آینده ابداع خواهد شد ، تنها گذشت زمان مشخص خواهد کرد.
پستهای مشابه :
جدیدترین دیدگاهها