در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
در زبانهای برنامهسازی ساخت یافته مثل C، برنامهها به فعالیتها توجه دارند. در حالی که در زبان ++C و سایر زبانهای شیگرا به اشیا توجه میشود. در C واحد برنامهنویسی تابع است و در ++C واحد برنامهنویسی، کلاسی است که اشیا سرانجام از آن نمونهسازی و ایجاد میشوند. برنامهنویسان C، روی نوشتن توابع متمرکز میشوند. گروهی از فعالیتها که کار مشترکی را انجام میدهند، به شکل تابع در میآیند و گروهی از توابع، برنامه را ایجاد میکنند. دادهها نیز درC اهمیت دارند. ولی فرض میشود دادههای مورد نیاز فعالیتهایی که تابع انجام میدهد، مهیاست. مشخصات سیستم و افعال موجود در صورت مساله به برنامهنویسC کمک میکند، توابعی را تعیین کند که باید با هم کار کنند تا سیستم را پیاده سازی کنند.
برنامهنویس++C روی ایجاد انواع جدیدی به نام کلاس متمرکز میشود. در هر زبان انواع دادهای مشخصی وجود دارد که به آنها انواع ابتدایی گفته میشود. به عنوان مثال نوع دادهایint مشخص کننده داده عددی صحیح، float داده عددی اعشاری، double داده عددی اعشاری بزرگ، char داده کاراکتری وbool داده دو مقداری درست یا غلط است.
برنامهنویس میتواند با استفاده از انواع ابتدایی، انواع دیگری را ایجاد کند که به آنها انواع جدید گفته میشود.
توابع و اعضای دادهای
داخل هر کلاس، تعدادی داده وجود خواهد داشت که به آنها اعضای دادهای کلاس گفته میشود. علاوه بر اعضای دادهای، توابعی درون کلاس وجود دارد که دادهها را دستکاری میکنند. به این توابع به اصطلاح متدهای کلاس یا توابع عضو گفته میشود.
لازم است بدانیم که نمونهای از هر نوع ابتدایی را یک متغیر گوییم. یک متغیر در واقع مقدار مشخصی از حافظه اصلی(RAM) است که برای نگهداری یک مقدار رزرو میشود. اندازه هر متغیر در حافظه به نوعی داده اولیه بستگی دارد. به عنوان مثال در ++C ، متغیری از نوع دادهای char یک بایت از حافظه را برای ذخیره یک کاراکتر رزرو میکند و یا متغیری از نوع int ، بسته به نوع کامپایلر 2 یا 4 بایت از حافظه را برای نگهداری یک عدد صحیح رزرو میکند. در صورتی که نوع int به اندازه 2 بایت باشد به این معنی است که میتواند عددی بین 32768- تا 32767 را در خود نگه دارد.
کلاس در واقع یک نوع جدید از انواع داده اولیه است که به نمونهای از آن شی گفته میشود. هر شی نیز مانند متغیر، فضایی از حافظه را رزرو میکند. میزان این فضا نیز مجموع اندازههای متغیرهای تعریف شده درون آن کلاس است.
در اینجا ذکر یک نکته ضروری به نظر میرسد. میدانیم که درون یک کلاس علاوه بر اعضای دادهای توابعی نیز تعریف میشوند. این توابع گاهی ممکن است توابعی بزرگ و پیچیده باشند. باید دقت داشت که اندازه یک شی به اندازه توابع تعریف شده داخل کلاس مربوط ربطی نخواهد داشت و این توابع در زمانهای نیاز به صورت مرجع از همان کلاس مربوطه فراخوانی میشوند. بنابراین اندازه یک شی، مستقل از تعداد و اندازه توابع تعریف شده داخل کلاس مربوطه، تنها به تعداد و نوع اعضای دادهای آن بستگی خواهد داشت.
گفتیم در زبان ساختیافته، افعال موجود در صورت مساله به برنامهنویس برای پیادهسازی سیستم کمک میکند. اما در برنامهنویسی شیگرا مثل++C اسامی موجود در صورت مساله به برنامهنویس کمک میکند تا کلاسهایی را تعیین کند که با ایجاد اشیایی از آنها با یکدیگر کار میکنند سیستم را پیادهسازی کند.اگر نرمافزار از کلاس ساخته شود، از این کلاسها میتوان در برنامههای دیگر نیز استفاده کرد. به همین دلیل، کلاسها قابلیت استفاده مجدد را دارند. ویژگی استفاده مجدد، نقش کلیدی و مهمی در مهندسی نرمافزار و برنامهنویسی دارد. هر کلاس جدیدی که ایجاد میکنیم، ممکن است قطعه ارزشمندی برای تولید نرمافزار محسوب شود و برای سرعت در برنامهنویسی میتوان آن را در برنامههای آینده به کار برد.
برخی ویژگیهای C++
بسیاری از افراد++C را یک زبان سطح بالا نمیدانند و آن را از دسته زبانهای میانی برمیشمارند.
علت آن است که این زبان همانند زبان سطح پایینی مثل اسمبلی میتواند مستقیما به حافظه دستیابی داشته باشد و با مفاهیم بیت، بایت و آدرس کار کند و از طرف دیگر، برنامههای این زبان، همچون زبانهای سطح بالایی مثل پاسکال، از قابلیت خوانایی بالایی برخوردارند. به عبارت دیگر، دستورالعملهای این زبان، به زبان محاورهای انسان نزدیک است که این ویژگی، مربوط به زبانهای سطح بالاست.
++C زبانی بسیار قدرتمند و انعطافپذیر است. در این زبان هیچ محدودیتی برای برنامهنویس وجود ندارد. هر آنچه را که فکر میکنید میتوانید در این زبان پیادهسازی کنید.
++C زبان برنامهنویسی سیستم است. برنامههای سیستم، برنامههایی هستند که امکان بهرهبرداری از سختافزار و سایر نرمافزارها را فراهم میکنند. سیستم عامل، کامپایلر، اسمبلر و نرمافزار مدیریت بانک اطلاعاتی ازجمله برنامههای سیستم هستند. پیش از این نیز گفته بودیم که سیستم عاملی همچون Unix یا Linux با استفاده از این زبان نوشته شدهاند. همچنین این زبان برای نوشتن نرمافزارهای راهانداز سختافزارهای جدید که تازه طراحی میشوند مناسب است.
بین زبان ++C و اسمبلی ارتباط نزدیکی وجود دارد. میتوان در این زبان از تمامی قابلیتهای زبان اسمبلی بهره برد. اشخاصی که به زبان اسمبلی مسلط هستند و به زبان ++C برنامه مینویسند گاهی برای نوشتن یک قطعه کد که باید به زبان ++C نوشته شوند ممکن است احساس کنند که نوشتن آن به زبان اسمبلی برایشان راحتتر است. آنها با استفاده از قابلیت موجود در ++C میتوانند به طور مستقیم در برنامههای ++C از کدهای اسمبلی استفاده کنند++C . نسبت به حروف حساس است. (Case Sensitive) یعنی در این زبان بین حروف کوچک و بزرگ تفاوت است و تمام کلمات کلیدی این زبان با حروف کوچک نوشته میشوند. به عنوان مثال کلمه for یک کلمه کلیدی زبان ++C است، اما کلمه FOR کلیدی نیست. برای جلوگیری از وقوع خطاهای دستوری، توصیه میشود که کل یک برنامه در زبان ++C با حروف کوچک نوشته شود. مگر این که قانونمندی خاصی در حروف کوچک و بزرگ توسط برنامهنویس تعریف و تعیین شود و همچنین به این قانونمندی عادت داشته باشد و راحت به آن عمل کند.
تعداد کلمات کلیدی زبان ++C کم است و به عبارتی این زبان، زبانی نسبتا کوچک است. البته نباید به اشتباه تصور شود که هر چه تعداد کلمات کلیدی یک زبان بیشتر باشد، آن زبان قدرتمندتر است. به واقع این دو مساله هیچ ربطی به هم ندارند. به عنوان مثال زبانی مثل Basic با حدود 150 کلمه کلیدی، توانایی کمتری نسبت به ++C که زبانی با تعداد کلمات کلیدی کمتر است، دارد.
هر برنامه ++C از قطعاتی به نام کلاس و تابع تشکیل شده است. برای ایجاد برنامه میتوانید کلاس یا تابع موردنیاز را بنویسید، اما توابع و کلاسهای بسیار زیادی از قبل نوشته شده همراه کامپایلر ++C وجود دارد که برنامهنویس میتواند برای ایجاد برنامه از آنها استفاده کند. بنابراین در دنیای برنامهنویسی دو مساله مطرح است. یکی خود زبان و دیگری چگونگی استفاده از توابع و کلاسهای آماده موجود موسوم به توابع کتابخانهای.
قابلیت حمل
قابلیت حمل اصطلاحی است که در برنامهنویسی مطرح است و به این معناست که بتوان یک برنامه را که در یک نوع رایانه نوشته شده است. بدون تغییر یا با اعمال اندک تغییرات، در رایانه نوع دیگر نیز اجرا کرد. ++C این قابلیت را دارد که بتوان برنامه نوشته شده را در رایانه دیگر با کامپایلر مخصوص همان رایانه مجددا کامپایل و استفاده کرد. به این خصوصیت زبان قابلیت حمل گفته میشود. به عبارتی زبان ++C زبانی قابل حمل است. البته توجه داشته باشید که تمام رایانههای با پردازنده اینتل از یک نوع به شمار میروند. قابلیت حمل برای رایانههایی با انواع مختلف مطرح است.
با توجه به این توضیحات به راحتی میتوان نتیجه گرفت که زبان اسمبلی زبانی قابل حمل نیست. زیرا همان طور که قبلا نیز اشاره کردیم، هر پردازنده دستورالعملهای خاص خود را دارد و زبان اسمبلی آن با زبان اسمبلی پردازندههای دیگر متفاوت است. بنابراین نمیتوان برنامه مربوط به یک پردازنده را بدون تغییر و حتی با اندک تغییر برای پردازنده دیگر اجرا کرد و باید آن برنامه به طور کلی برای پردازنده دیگر بازنویسی شود. این یکی از بزرگترین اشکالات زبان غیرقابل حملی مثل اسمبلی است.
زبان ++C قابلیتهای بسیار دیگری نیز دارد که از برخی آنها چشمپوشی کرده و برخی را در جای مناسبی مطرح خواهیم کرد.
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: