در دهه پنجاه قرن بیستم، با ظهور کامپیوترهای روی لوله های خلاء، توسعه سریع برنامه نویسی ما آغاز شد. رایانه‌هایی که در آن زمان بسیار گران‌تر ارزش داشتند، به توسعه کمتری از هر نوع برنامه‌ای نیاز داشتند و به کد بسیار کارآمد نیاز داشتند. این کد به صورت دستی به مووی اسمبلر تقسیم شد. در اواسط دهه 50، تحت رهبری جان بکوس، توسعه الگوریتم های الگوریتمی برای IBM برنامه نویسی زبانفرترن. صرف نظر از کسانی که قبلاً این زبان را توسعه داده اند، که شامل تبدیل عبارات حسابی به کد ماشین است، ایجاد FORTRAN (ترجمه فرمول) که به الگوریتم اجازه می دهد محاسبه عملگرهای ذهنی و عملگرهای ورودی / خروجی شماره را ثبت کند، تبدیل شده است. نکته ای در سری برنامه نویسی الگوریتمی .

قبل از فیلم FORTRAN، کدهای بسیار کارآمد زیادی ایجاد شده بود. بنابراین، بسیاری از طرح ها در ابتدا از معماری IBM 407 توسعه یافتند. توسعه این توسعه موفقیت آمیز بود تا اینکه توسعه دهندگان سایر سیستم های محاسباتی شروع به ایجاد نسخه های خود از مترجمان کردند. از طریق این فرآیند، FORTRAN IV، که در آن زمان امکان پذیر بود، در سال 1966 یکپارچه شد و به اولین استاندارد تبدیل شد که ممکن است FORTRAN 66 نامیده شود.

به عنوان جایگزینی برای زبان FORTRAN، که در ابتدا به سمت معماری IBM گرایش داشت، تحت رهبری پیتر ناور، زبان ALGOL (زبان ALGOrithmic) در اواخر دهه 50 توسعه یافت. روش اصلی بررسی شده توسط محققان این کتاب، استقلال معماری خاص سیستم محاسباتی بود. علاوه بر این، سازندگان زبان ALGOL تلاش کردند تا زبانی را توسعه دهند که برای توصیف الگوریتم ها و یک سیستم ارزش راکد، نزدیک به زبان مورد قبول در ریاضیات مفید باشد.

فیلم‌های فرترن و الگول اولین فیلم‌هایی بودند که به سمت آن گرایش پیدا کردند برنامه نويسيمحاسبه

زبان PL 1 که اولین نسخه های آن در اوایل دهه 60 ظاهر شد، در ابتدا IBM 360 را مورد هدف قرار داد و قابلیت های زبان FORTRAN را با روش های مختلف زبان COBOL که به چند گروه تقسیم می شد، گسترش داد. صرف نظر از محبوبیت زبان PL / I در بین برنامه نویسانی که بر روی رایانه های IBM و ماشین های سری EC کار می کردند، در حال حاضر این زبان کاملاً نظری است.

در پایان دهه 60، تحت رهبری Nayard و Dahl، زبان Simula-67 که مفهومی متفاوت از انواع داده های تاریخی است، تکه تکه شد. در واقع این زبان اصلی است که مفهوم طبقات را دچار رکود می کند.

در اواسط دهه 70، Virt زبان پاسکال را معرفی کرد که بلافاصله محبوبیت زیادی پیدا کرد. در همان زمان، با ابتکار وزارت دفاع ایالات متحده، کار بر روی ایجاد یک زبان سطح بالا آغاز شد که به افتخار آدی لاولیس، برنامه نویس و دختر لرد بایرون، نام آدا را به خود گرفت. ایجاد زبان با توسعه ویژگی ها و مشخصات آغاز شد. چندین گروه مستقل روی این پروژه کار کردند، اما همه آنها به عنوان پایه زبان پاسکال پیروز شدند. در آغاز دهه 80، اولین کامپایلر فیلم تجاری آدا ساخته شد.

جهانی برنامه نویسی زباناز تاریخچه نفاق در اواسط دهه 70 توسط دنیس ریچی و کن تامپسون. من در برنامه نویسی سیستم محبوب شدم و در آن زمان درگیر نوشتن هسته سیستم عامل یونیکس بودم. فیلم استاندارد از ابتدا گروه کاریموسسه استاندارد ANSI در سال 1982. استاندارد بین المللی زبان که در سال 1990 به تصویب رسید. این زبان مبتنی بر برنامه نویسی C++ و جاوا است.

در کنار زبان‌های الگوریتمی، زبان‌هایی که برای پردازش اطلاعات تجاری و همچنین هوش انسانی استفاده می‌شوند، به موازات آن توسعه یافته‌اند. اولی باید بر اساس COBOL (زبان تجاری متداول) باشد و بقیه بر اساس LISP (پردازش لیست) و Prolog. زبان LISP که در دهه 60 تحت رهبری جی. مک کارتی توسعه یافت، اولین پردازش عملکردی لیست ها بود که به طور گسترده در نظریه igor شناخته شده است.

از جلو کامپیوترهای شخصیفولاد فیلم قطعات انبارمراکز توسعه یکپارچه مردم برای پیوستن به موارد مختلف حاضر شدند برنامه های اداری، به عنوان مثال، VBA (ویژوال بیسیک برای برنامه).

در دهه 90، با گسترش اینترنت، امکان پردازش داده های توزیع شده در حال گسترش است که به توسعه برنامه نویسی ما نیز کمک می کند. فیلم‌هایی وجود دارند که برای توسعه افزونه‌های سمت سرور، مانند جاوا، پرل و پی‌اچ‌پی، و توضیحات اسناد - HTML و XML طراحی شده‌اند. برنامه نویسی سنتی C++ و زبان پاسکال نیز از تغییرات آگاه است: تحت برنامه نویسی من، فرد شروع به درک نه تنها عملکرد خود زبان، بلکه کتابخانه های کلاسی که هسته برنامه نویسی هستند نیز می کند. تاکید بر مشخصات برنامه‌نویسی ما به استانداردسازی مکانیسم‌های تعامل اجزای جداگانه منتقل می‌شود. فن آوری های جدید در حال ظهور هستند - COM و CORBA که تعامل بین تقسیمات اشیاء را مشخص می کند.

زمینه های برنامه نویسی zastosuvannya mov

در این زمان، برنامه‌نویسی ما در متنوع‌ترین حوزه‌های فعالیت انسانی، مانند:

  • محاسبات علمی (فیلم ++C، FORTRAN، جاوا)؛
  • برنامه نویسی سیستم (فیلم ++C، جاوا)؛
  • پردازش اطلاعات (Movi C++، COBOL، Java)؛
  • هوش قطعه (LISP، Prolog)؛
  • فعالیت ویدیویی (پست اسکریپت، TeX)؛
  • پردازش اطلاعات حذف شده است (Perl، PHP، Java، C++).
  • شرح اسناد (HTML، XML).

با گذشت زمان، برخی از زبان‌ها توسعه یافتند، ایده‌های جدیدی ظهور کردند و تقاضا را از دست دادند، برخی دیگر ارتباط خود را از دست دادند و امروزه صرفاً مورد توجه نظری هستند. به طور قابل توجهی، این به دلیل عواملی مانند:

  • قابل مشاهده بودن هسته میانی برنامه نویسی، که توسعه افزونه ها را برای یک برنامه خاص تشویق می کند.
  • دستیابی به پشتیبانیمن تست برنامه;
  • تنوع توسعه از الزامات یک برنامه فیلم خاص؛
  • وضوح و متعامد بودن ساخت فیلم؛
  • رکود رویکرد شی گرا

اول از همه، شما می خواهید برنامه نویسی زبان من را دنبال کنید و از شما بخواهید که کمی در مورد تاریخچه آن بدانید و سپس آرام شوید.

به شما تقدیم می کنم نگاه کوتاه 25 نوع برنامه نویسی مختلف از محبوب ترین تا کم محبوب ترین. این مقاله برای مبتدیان در زمینه برنامه نویسی گردآوری شده است. شما می توانید در مورد سرطان پوست مطالعه کنید و بهترین گزینه را برای واکسیناسیون انتخاب کنید.

Persh nіzh قبل از برنامه نویسی Vivchennya mov شروع کنید، توصیه می کنم یک دوره آموزشی Vivchenya را بخوانید.

1. جاوا اسکریپت

برنامه نویسی به زبان اسکریپت مبتنی بر نمونه اولیه. جاوا اسکریپت در ابتدا به منظور زنده کردن صفحات وب ایجاد شد. در مرورگر، آنها مستقیماً به HTML متصل می شوند و به محض مشاهده صفحه، بلافاصله به پایان می رسد.

وقتی فرو می ریزم mov Javaاسکریپت که در ابتدا نام دیگری داشت: "LiveScript". از این گذشته، زبان جاوا حتی محبوب‌تر شده بود و بازاریابان معتقد بودند که من می‌روم تا نامی پیدا کنم زبان جدیدمحبوب تر.

برنامه این بود که جاوا اسکریپت "برادر کوچکتر" جاوا باشد. با این حال، تاریخ راه خود را دارد، جاوا اسکریپت بسیار محبوب شده است و در عین حال یک زبان کاملا مستقل است، با مشخصات آن و قبل از جاوا هیچ ارتباطی وجود ندارد.

2. جاوا


برنامه نویسی زبان شی گرا با تایپ دقیق. برنامه های جاوا باید به بایت کد خاصی ترجمه شوند تا بتوانند با کمک ماشین مجازی جاوا روی هر معماری کامپیوتری اجرا شوند.

مزیت این روش دانلود برنامه مستقل بودن کامل بایت کد از سیستم عامل و نصب است که به شما امکان می دهد افزونه های جاوا را بر روی هر دستگاهی که ماشین مجازی مربوطه برای آن وجود دارد دانلود کنید. یکی دیگر از ویژگی های مهم فناوری جاوا سیستم امنیتی است که در آن نرم افزار به طور کامل توسط ماشین مجازی کنترل می شود.

در ابتدا، این زبان Oak ("بلوط") نامیده می شد که توسط جیمز گاسلینگ برای برنامه نویسی دستگاه های الکترونیکی روزمره توسعه یافت. در طول سال ها، جاوا دستخوش تغییراتی شده و به یک متخصص در نوشتن برنامه های کاربردی سمت مشتری و نرم افزار سمت سرور تبدیل شده است.

3.PHP


بیایید تفسیر زبان من را با یک کد منبع بسته (زبان اسکریپت) گسترش دهیم. PHP به طور خاص برای توسعه وب ایجاد شده است، و سپس کد می تواند مستقیماً به کد HTML تبدیل شود. سینتکس زبان به راحتی از زبان C، جاوا و پرل قابل یادگیری است.

هدف اصلی PHP این است که به توسعه دهندگان وب توانایی ایجاد صفحات وب را به صورت پویا بدهد، اما دامنه PHP فقط به این محدود نمی شود.

4. پایتون

برنامه نویسی به زبان Visokorivneva هدف ویژه ای دارد که به سمت افزایش بهره وری توسعه دهنده، خواندن کد و توسعه افزونه های وب است. سینتکس هسته پایتون حداقلی است. کد در پایتون حول توابع و کلاس هایی سازماندهی شده است که می توانند در یک ماژول ترکیب شوند.

5. سی شارپ


برنامه نویسی زبان شی گرا. در سالهای 1998-2001 توسط گروهی از مهندسان تحت نظارت آندرس هیلسبرگ در مایکروسافت به عنوان راهی برای توسعه افزونه‌ها برای پلتفرم Microsoft .NET Framework توسعه داده شد. سی شارپ به خانواده ای از سینتکس های شبیه به C نزدیک است و سینتکس آن به C++ و جاوا نزدیک است.

این زبان دارای تایپ ایستا است، از چندشکلی، معکوس کردن عملگر، نمایندگی ها، ویژگی ها، توابع، مقامات، انواع و روش های نامگذاری شده، تکرار کننده ها، توابع ناشناس با پشتیبانی از حلقه، LINQ، غیرفعال کردن، نظرات در قالب XML پشتیبانی می کند.

6. Z++


تلفیقی، تایپ استاتیک، برنامه نویسی زبان با اهمیت خارجی. و یکی از گسترده ترین در جهان است. گوگل کروم، موزیلا فایرفاکس، Winamp و خط تولید Adobe با استفاده از ++C توسعه یافته اند. علاوه بر این، بسیاری از بازی ها و سیستم عامل های روزانه از طریق پردازش و کامپایل پیشرفته به C++ تجزیه شدند.

7. یاقوت سرخ


برنامه نویسی زبان ساده و خوانا، جهت گیری به سمت توسعه افزونه های وب. نابودی یوکیهیرو ماتسومتو در سال 1995. این زبان مستقل از سیستم عامل است، جریان غنی، تایپ بسیار پویا و انبار را پیاده سازی می کند.

هدف اصلی Ruby ایجاد برنامه های ساده و در عین حال هوشمند است، جایی که سیال بودن برنامه مهم نیست، بلکه زمان کوتاه توسعه، وضوح و سادگی نحو است. این زبان به اصل "کمترین نافرمانی" پایبند است: برنامه موظف است همانطور که برنامه نویس انتظار دارد رفتار کند.

8.CSS


برگه‌های سبک آبشاری یک توصیف زبان رسمی از ظاهر فعلی یک سند است که با استفاده از طرح‌بندی زبانی متفاوت نوشته شده است.
بررسی نحوه توصیف ظاهر صفحات وب نوشته شده با استفاده از نشانه گذاری HTML و XHTML مهم است، و همچنین می تواند برای هر سند XML اعمال شود.

9. ج


تلفیقی از برنامه نویسی زبانی استاتیکی برای مقاصد خارجی. این زبان توسط دنیس ریچی در سال 1972 در آزمایشگاه بل توسعه یافت. این یکی از پیشگامان زبان های برنامه نویسی مانند C++، Java، C#، JavaScript و Perl است. به همین دلیل تا زمانی که چیزهای دیگر را متوجه نشدیم از شما یاد گرفتیم. Mova S برای توسعه برنامه های سطح پایین استفاده می شود، زیرا تا حد امکان به سخت افزار کار می کند.

10. هدف-ج


تلفیقی از برنامه نویسی شی گرا، که توسط شرکت اپل ترویج می شود، بر اساس زبان C و پارادایم های اسمال تاک است. زبان Objective-C یک زبان عالی از C است، بنابراین کد C به یک کامپایلر هوشمند Objective-C منتقل می شود. این زبان عمدتاً برای Mac OS X (کاکائو) و GNUstep - پیاده سازی رابط شی گرا OpenStep - توسعه یافته است. این زبان همچنین برای iOS (Cocoa Touch) ویکور شده است.

11. پوسته

آنقدر زبان نیست که یک مفسر فرمان (زبان فرمان) است. این اسکریپت ها برای خودکارسازی به روز رسانی نرم افزار استفاده می شوند. از طرح های استاندارد برای چرخه ها، کالیبراسیون و عملکردهای ضربه استفاده کنید. برای خانواده های سیستم عامل از جمله سیستم عامل یونیکس، SHELL به عنوان بخشی از سیستم مدیریت وظیفه استاندارد نصب شده است.

12. ر


برنامه نویسی زبان برای پردازش آماریداده ها و کار با گرافیک و همچنین برنامه میان افزار را می توان با کد منبع باز در پروژه گنو محاسبه کرد. R به طور گسترده ای به عنوان یک برنامه نرم افزاری آماری برای تجزیه و تحلیل داده ها استفاده می شود و به استاندارد واقعی برای برنامه های آماری تبدیل شده است. در R، رابط خط فرمان در حال توسعه است.

13. پرل


Visokorivneva برنامه‌نویسی زبان پویا را با اهمیت فرهنگی تفسیر می‌کند. نام این زبان مخفف عبارت Practical Extraction and Report Language است - "زبانی کاربردی برای استخراج داده ها و ترکیب صداها". ویژگی اصلی زبان اهمیت آن برای کار با متن، از جمله کار با عبارات منظم، ساخته شده در نحو است. در حال حاضر، ما در حال کار بر روی طیف گسترده ای از وظایف، از جمله مدیریت سیستم، توسعه وب، برنامه نویسی لبه، بازی ها، بیوانفورماتیک، و توسعه رابط های کامپیوتری گرافیکی هستیم.

14. اسکالا


برنامه نویسی چند پارادایم، طرح های کوتاه و ایمن برای ایجاد ساده و سریع نرم افزارهای مبتنی بر مؤلفه که از قابلیت های برنامه نویسی کاربردی و شی گرا استفاده می کند. اسکالا برنامه ای است که از بسیاری جهات شبیه برنامه های جاوا است و می تواند به خوبی با کدهای جاوا تعامل داشته باشد.

15. برو


گردآوری یک برنامه غنی که توسط گوگل تقسیم شده است. Mova Go به عنوان یک برنامه سیستمی برای ایجاد برنامه های با کارایی بالا که بر روی سیستم های توزیع شده مدرن و پردازنده های چند هسته ای اجرا می شوند، گسترش یافته است. این ممکن است به عنوان تلاشی برای جایگزینی فیلم در نظر گرفته شود. در طول توسعه، احترام ویژه ای برای اطمینان از یک مجموعه بسیار موثر قائل شد. برنامه های Go در کد شی کامپایل می شوند و در ماشین مجازی کامپایل نمی شوند.

16.SQL

زبان ساختار پرس و جوها. برنامه نویسی رسمی زبان غیر رویه ای، ساخت و ساز برای ایجاد، اصلاح و مدیریت داده ها در یک پایگاه داده بزرگ رابطه ای، یک سیستم مدیریت پایگاه داده مبتنی بر ابر. SQL قبل از هر چیز یک زبان منطقی اطلاعاتی است که برای توصیف، تغییر و بازیابی داده هایی که در پایگاه های داده رابطه ای ذخیره می شوند استفاده می شود. هر پیشنهاد SQL یا داده ها را از پایگاه داده دریافت می کند یا آن را به پایگاه داده تبدیل می کند که منجر به تغییر داده ها در پایگاه داده می شود.

17. هاسکل


برنامه نویسی استاندارد، تمیز و کاربردی زبان برای اهداف قانونی. و یکی از گسترده ترین برنامه نویسی ها با پشتیبانی از محاسبات. برنج قابل توجه است - به طور جدی قبل از تایپ قرار می گیرد. Haskell یک زبان فوق العاده برای شروع و آزمایش انواع داده های عملکردی تاشو است.

18. سویفت


آشکارسازی چندپارادایمی بودن تلفیقی از برنامه نویسی زبان با معنایی پنهان. توسط اپل به طور خاص برای کاربران iOS و OS X ایجاد شده است. سوئیفت بر روی چارچوب‌های Cocoa و Cocoa Touch اجرا می‌شود و بر اساس کد اصلی اپل که با Objective-C نوشته شده است اجرا می‌شود. سوئیفت در نظر گرفته شده است که خواندن آن آسان‌تر و در برابر زبان برنامه‌نویسی مقاوم‌تر باشد، در حالی که به قیمت Objective-C تمام می‌شود. Swift می تواند کارهای زیادی را با Objective-C انجام دهد، اما با اندیکاتورها نشان داده نمی شود، بلکه با انواع تغییراتی که کامپایلر ایجاد می کند نشان داده می شود. بسیاری از فیلم‌های فیلمنامه‌شده از اصل مشابهی پیروی می‌کنند.

19. Matlab


تفسیر کره ای بالا از برنامه نویسی زبان، که شامل ساختارهای داده مبتنی بر ماتریس، طیف گسترده ای از توابع، موتور توسعه یکپارچه، قابلیت های شی گرا و رابط های برنامه های نوشته شده به زبان های دیگر است. برنامه های نوشته شده در متلب دو نوع هستند - توابع و اسکریپت. توابع دارای آرگومان های ورودی و خروجی و همچنین فضای کاری برای ذخیره نتایج میانی محاسبه و تغییر هستند. فیلمنامه و ویکوریست در فضای تاریک کار. هر دو اسکریپت و توابع به عنوان فایل های متنی ذخیره می شوند و به صورت پویا در کد ماشین کامپایل می شوند.

20. ویژوال بیسیک


برنامه نویسی ما، و همچنین هسته یکپارچه توسعه نرم افزار، توسط شرکت مایکروسافت در حال توسعه است. زبان ویژوال بیسیک روح، سبک و نحو جد خود - زبان بیسیک را که دارای گویش های زیادی است، تحت کنترل درآورده است. در عین حال، ویژوال بیسیک رویه ها و عناصر برنامه نویسی شی گرا و مولفه گرا را در بر می گیرد.

ویژوال بیسیک همچنین یک راه خوب برای توسعه سریع افزونه های پایگاه داده RAD برای سیستم عامل های خانواده مایکروسافت ویندوز است. بدون اجزای آماده ای که به یکباره از وسط عرضه می شوند، کلیک ها به برنامه کمک می کند تا بلافاصله منطق تجاری برنامه را توسعه دهد، بدون اینکه توجهی به نوشتن کد برای راه اندازی برنامه ها داشته باشد.

21. دلفی


برنامه نویسی زبانی ضروری، ساختاری و شی گرا با نوع بندی بسیار ایستا از متغیرها. حوزه اصلی ویکورستان نوشتن نرم افزارهای کاربردی است.

امروزه با پشتیبانی از توسعه برنامه های 32 و 64 بیتی برای ویندوز، امکان ایجاد افزونه هایی برای Apple Mac OS X و همچنین برای گوگل اندروید(به طور مداوم بر روی پردازنده های ARM طراحی شده است).

22. شیار


برنامه نویسی شی گرا که برای پلتفرم جاوا به عنوان توسعه زبان جاوا با قابلیت های Python، Ruby و Smalltalk توسعه یافته است. Groovy از نحو جاوا مانند با کامپایل پویا بایت کد در JVM استفاده می کند و به طور یکپارچه با سایر کدها و کتابخانه های جاوا کار می کند. این زبان را می توان در هر پروژه جاوا یا به عنوان یک زبان اسکریپت استفاده کرد.

23. ویژوال بیسیک دات نت


برنامه نویسی شی گرا، که می تواند به عنوان آخرین گام در تکامل ویژوال بیسیک، پیاده سازی بر روی پلتفرم های مایکروسافت.خالص. VB.NET عملکردی مشابه نسخه قدیمی (Visual Basic 6.0) ندارد. توسعه پروژه های نسخه های قدیمی تر (* .vbp) تنها پس از اولین تبدیل آنها به فرمت VB.NET توسط جادوگر ویژه مهاجرت امکان پذیر است. با این حال، پس از تبدیل، پردازش دستی فشرده متون مورد نیاز است.

24.D

برنامه نویسی زبان تلفیقی چند پارادایم ایجاد شده توسط والتر برایت در Digital Mars. در ابتدا، ما به این فکر می کنیم که چگونه یک زبان C++ را مهندسی مجدد کنیم، صرف نظر از هجوم قابل توجه C++، که یک گزینه نیست. او همچنین با مفاهیم برنامه نویسی پایتون، روبی، سی #، جاوا، ایفل آشنا شد.

25. مونتاژ کننده


زبان ماشین محور سطح پایین با دستوراتی که همیشه با دستورات ماشین سازگار نیستند و می توان از آنها اطمینان حاصل کرد امکانات اضافینمای کلی دستورات ماکرو؛ کد خودکار، توسعه‌های ساختارهای برنامه‌نویسی سطح بالا، مانند عبارات، ماکروها، ویژگی‌هایی برای اطمینان از ماژولار بودن برنامه.

زبان اسمبلر یک سیستم طراحی است که برای نمایش برنامه های نوشته شده در کد ماشین به شکل معنادار استفاده می شود. اسمبلر زبان به برنامه نویس اجازه می دهد تا از کدهای عملیات حافظه الفبایی استفاده کند، نام های نمادین را به رجیسترها و حافظه های EOM به صلاحدید خود اختصاص دهد و همچنین طرح های آدرس دهی دستی را برای خود تعریف کند. علاوه بر این، سیستم‌های عددی مختلفی را برای نمایش ثابت‌های عددی اجازه می‌دهد و به ردیف‌هایی از برنامه‌ها با نام‌های نمادین برچسب‌گذاری می‌شود تا بتوان به آنها ارجاع داد.

بدون آگاهی از این موضوع، بوی تعفن چندان مورد تقاضای برنامه نویسان حرفه ای نیست. وظیفه من Wikonan است، حالا شما چاره ای ندارید جز اینکه زبان مورد نیاز خود را انتخاب کنید و آن را دنبال کنید. در انجام تعهدات خود موفق باشید.

اکثر برنامه های رایانه ای فعلی پس از کسب مدارک سطح بالا نوشته می شوند. قابل توجه است که بسیاری از آنها در دهه 60 و 70 و همچنین در امور جاری تکه تکه شده بودند. چه حقایق دیگری در مورد زبان های با کیفیت بالا می توانیم شناسایی کنیم؟ گسترده ترین راه حل ها چیست؟

ماهیت برنامه های نوشته شده با کیفیت بالا

برنامه نویسی سطح بالا ابزاری است که در گروه مستقل از ماشین قرار می گیرد. این یعنی چی؟ در سمت راست این است که برنامه نویسی شما به چند دسته تقسیم می شود.

Є کد ماشین: مجموعه ای از الگوریتم هایی که برای کنترل اجزای سخت افزاری یک کامپیوتر استفاده می شود. ماهیت آنها کاملاً وابسته به ماشین خواهد بود: فقط الگوریتم های آواز برای انواع خاصی از رایانه های شخصی مناسب هستند.

Є فیلم اسمبلر. در واقع، بوی بدی بالاتر از مواردی است که برای مدیریت سطح پایین قطعات سخت افزاری رایانه شخصی با استفاده از کد اضافی ماشین استفاده می شود. جدای از غنای نمادهای اسمبلر زبان، مرسوم است که به زبان ماشین نیز اشاره شود. به عنوان یک قاعده، آنها با نوع خاصی از قطعات سخت افزاری رایانه شخصی سازگار هستند. وظیفه اصلی آنها ساده سازی مدیریت رایانه از طریق انواع دیگر ارتباطات سطح پایین است.

در واقع، نرم افزارهای سطح بالا به شما این امکان را می دهد که بدون توجه به نوع سخت افزاری که روی رایانه نصب شده است، تعاملات ارزشمندی با رایانه شخصی برقرار کنید. بنابراین، این ردیابی به صورت مستقل از ماشین آورده می شود. هنگام نوشتن سیستم عامل، زبان برنامه نویسی سطح بالا اغلب درگیر است. Ale یک سیستم عامل است که به زبان اسمبلی نوشته شده است. برنامه نویسی Movi در سطوح پایین و بالا به طور همزمان قابل تغییر است. شخصی که دستورات سطح بالا را به رایانه شخصی می دهد به هر حال مسئول انتقال آنها به اجزای سخت افزاری خاص است و این عملکرد را می توان با استفاده از زبان اسمبلر همزمان با زبان های سطح بالا که در ساختارها و سیستم عامل دخیل هستند پیاده سازی کرد. .

مترجمان

مهم ترین عناصری که در برنامه نویسی زبان های سطح بالا گنجانده شده اند، مترجم هستند. عملکرد آنها ممکن است متفاوت باشد. از جمله زمینه های کلیدی کامپایل مترجمان، "ترجمه" دستورات تولید شده در برنامه نویسی زبان سطح بالا به کد ماشین خاص برای یک جزء سخت افزاری رایانه شخصی خاص، به عنوان مثال، یک پردازنده است. مترجم هایی که این تابع را می سازند کامپایلر نیز نامیده می شوند. نوع دیگری از اجزای مرتبط مفسر هستند. آنها به نوبه خود برای "ترجمه" دستورات سطح بالا به دستورات سیستم عامل یا هر برنامه دیگری استفاده می شوند.

طبقه بندی زبان های با کیفیت بالا

برنامه نویسی زبان سطح بالا ممکن است در دسته های مختلفی طبقه بندی شود. این طرح گسترش یافته است که بر اساس آن بوی بد به گونه های اصلی تقسیم می شود:

رویه گرا (درگیر ابزار هنگام پردازش اطلاعات در هر مرحله از محاسبه)؛

مسئله محور (بر اساس رشد Galouze و وظایف کاربردی که با حوزه های گسترده استفاده از رایانه شخصی شکل می گیرد)؛

شی گرا (آنها می توانند انواع مختلفی از دو نوع اول باشند، با این حال، می توان آنها را متناسب با طیف گسترده ای از متخصصان با سطوح مختلف آموزش، به عنوان مثال، در قالب یک راه حل با یک رابط بصری، تطبیق داد).

اجازه دهید اکنون نگاهی به اقدامات برنامه های سطح بالا تاریخی و فعلی و همچنین آخرین داده ها در مورد طبقه بندی بیندازیم.

فیلم های رویه گرا

Fortran را می توان به این موارد تعمیم داد. ما به اولین برنامه سطح بالای من که برای رکود گسترده ایجاد شده بود احترام می گذاریم. با یک ساختار ساده مشخص می شود. BASIC همچنین به زبان های رویه گرا مربوط می شود. به عنوان یکی از مواردی که اغلب در هنگام شروع برنامه نویسی مورد سوء استفاده قرار می گیرد. نمونه ای از فیلم رویه ای دیگر - SI. در اصل برای سیستم عامل یونیکس ایجاد شده است. بر این اساس، زبان C++ ایجاد شد که با ابزارهای برنامه نویسی شی گرا تکمیل شد. زبان دیگری که در این دسته جای می گیرد پاسکال است. اغلب هنگام شروع برنامه نویسی نیز فعال می شود. قابلیت های این فیلم به شما این امکان را می دهد که از آن به عنوان یک ابزار بسیار مهم برای توسعه انواع نرم افزارهای حرفه ای استفاده کنید.

فیلم های مشکل محور

از جمله Lisp و Prolog هستند. اولین زبان در سال 1962 - از طریق چندین سنگ پس از ایجاد فرترن - شکل گرفت. به نظر می رسد یک فرد دیگر در تاریخ است. برنامه نویسان با ردیف هایی از نمادها به طور فعال به عنوان یک ابزار درگیر بودند. در عمل، Lisp در سیستم هایی که به عنوان سیستم های خبره طبقه بندی می شدند و همچنین سیستم هایی که برای محاسبات تحلیلی در نظر گرفته شده بودند، استفاده می شد. مقدمه دانش گسترده ای در زمینه برنامه نویسی منطقی وجود دارد. در عمل، اغلب درگیر هوش مصنوعی است که توسط الگوریتم‌های سیستم‌های پیشرفته کنترل می‌شود.

فیلم های شی گرا

اکنون شاهد برنامه های برنامه نویسی سطح بالا هستیم که در دسته شی گرا قرار می گیرند. اینها شامل Visual Basic، Delphi، Visual Fortran، به ویژه C++ و Prolog++ هستند. در واقع، همه بازی‌ها اساساً فیلم‌هایی رویه‌گرا هستند. با این حال، ارزش عناصر کنترل بصری اضافی آنها از طریق تسلط بیشتر بر الگوریتم های لازم توسط توسعه دهندگانی که با ابزارهای دیگر آشنا هستند، منتقل می شود. بنابراین، اولین برنامه نویسی زبان سطح بالا - Fortran - می تواند به سرعت توسط متخصصان فناوری اطلاعات با استفاده از قابلیت های اضافی Visual Fortran مورد استفاده قرار گیرد. با استفاده از یک روش مشابه، می توانید به راحتی بر BASIC یا Prolog مسلط شوید.

هنگام استفاده از برنامه نویسی دلفی در زبان سطح بالا Object Pascal، به روش خاص خود کار می کند. واضح است که تعداد زیادی رسانه دیگر توسعه PP وجود دارد که به عنوان زبان شی گرا طبقه بندی می شوند. این حوزه از فناوری توسعه PP به طور فعال در حال توسعه است.

Fortran و Lisp - زبان اول و سایر زبان های با کیفیت بالا

توجه به این نکته مهم است که اولین زبان برنامه نویسی سطح بالا ظاهر شد - Fortran و همچنین Lisp که مورد احترام دیگران است. در سال 1954، گروهی از توسعه دهندگان شرکت IBM، با الهام از جان بکوس، برنامه جدیدی ایجاد کردند که تعامل با رایانه شخصی را بسیار آسان تر می کرد، که تا آن زمان با استفاده از دستورالعمل های ماشین یا اسمبلر انجام می شد. نام فرترن را حذف کرد و به سرعت در اتحاد جماهیر شوروی با نام‌های روسی‌شده شناخته شد. فرترن به یک ابزار محبوب برای محاسبات علمی تبدیل شده است.

عنصر انقلابی اصلی که توسط دانشمندان IBM معرفی شد، کامپایلر بود که جایگزینی برای اسمبلر بود. در تمرین اولیه نوشتن برنامه ها با استفاده از FORTRAN، بسیاری از توسعه دهندگان به کامپایلر در همه تصمیمات دور، اول از همه، از نقطه نظر هزینه های نیروی کار، ارزش قائل بودند. بسیاری از کدهای ماشینی، به طور موثر، به روشی ساده تر، حتی زمانی که یک مترجم به دست آمد، توسعه یافتند. با این حال، در دنیای افزایش سریع بهره‌وری رایانه، نرم‌افزار شروع به درک این موضوع کرد که بدون یک کامپایلر جانشین، ایجاد نرم‌افزار کارآمد که شامل تلاش محاسباتی یک رایانه شخصی باشد، بسیار مشکل‌ساز خواهد بود. بنابراین، ابتکارات توزیع کنندگان با IBM توسعه بیشتر را قطع کرد. ساختارهای نحوی اولیه برنامه نویسی زبان سطح بالا Fortran در بسیاری از تکرارها، زمانی که راه حل های جدید ایجاد شد، شروع به استفاده به عنوان پایه کرد.

نمونه ای از دستیابی به نتایج عملی در توسعه مفاهیم موجود در فرترن، ایجاد Lisp است. با توجه به این واقعیت که این زبان در سال 1958 آشکار شد، شراب ها حتی اخیراً - در سال 1960 - محبوبیت گسترده ای پیدا کردند. فهرست داستان های منتشر شده توسط جان مک کارتی و انتشارات در یکی از مجلات محبوب متخصصان فناوری اطلاعات. هدف اصلی این فیلم جمع آوری لیست است. Lisp در بین توسعه دهندگان سیستم های هوش مصنوعی محبوب شده است. بر اساس آن، زبان هایی مانند Planner، Scheme و Common Lisp ایجاد شدند. Lisp همچنین سرمایه گذاری قابل توجهی در ثروت ابزارهای توسعه نرم افزار مدرن انجام داده است. ساختار برنامه نویسی سطح بالا ما که امروزه محبوب است، عمدتاً بر اساس الگوریتم های Fortran و Lisp است.

با این حال، در نظر گرفتن سایر رویکردها قبل از طبقه بندی ابزارهای توسعه نرم افزار در نظر گرفته شده مفید خواهد بود.

زبان های جهانی با کیفیت بالا

بنابراین، کارشناسان فعلی زبان جهانی و با کیفیت بالا را می بینند. قبل از آنها می توان دید که در دهه 60 متلاشی شده اند. ویژگی های کلیدی آنها:

جهت گیری به طیف گسترده ای از وظایف (از همان ابتدا تا محاسبه)؛

تعداد زیادی ساختار و الگوریتم مختلف وجود دارد.

اهمیت نه تنها برای زمان خود، بلکه برای مرحله کنونی توسعه فناوری رایانه است.

پشتیبانی از نوع زبان با متدولوژی امری.

زبان های جهانی برای دانش عمومی توسعه IT اساسی هستند. می توان گفت که تا به حال بوی تعفن از نظر ساختار داخلی آنالوگ مستقیم ندارد. Vlasna، این موضوع بسیار در مورد ارتباط استفاده از داده های موازی در رابط های شی گرا فعلی توضیح می دهد. همچنین در zagalne به معنای زبان - یک نوع ادای احترام. این عامل تا حد زیادی به معنای تطبیق پذیری آنهاست. از جمله مقامات قابل توجه در کشور ما که می توان آن را جهانی طبقه بندی کرد، فشردگی است. بنابراین، از نظر تاریخی، بیشتر زبان‌های متأخر تمایل داشتند که بر مفاهیم پیشینیان بنا شوند.

فیلم های منحصر به فرد

کارشناسان فناوری اطلاعات در رده مستقل "زبان منحصر به فرد" قرار می گیرند. اینها عبارتند از: APL، Cobol، Forth، SETL، و همچنین CLU. ویژگی آن چیست؟

مهمترین جنبه APL تخصیص آرایه ها (بردارها و ماتریس ها) به یک نوع ساختاری کلیدی است. ویژگی فیلم Cobol تمرکز آن بر حوزه تجاری است. بنابراین، پرداختن به بالاترین خواسته های مرتبط با یک قالب استاندارد برای ارائه نتایج مهم است. زبان فورث با استفاده از ضبط برنامه postfix و همچنین به دست آوردن نماد پشته مشخص می شود. MOVI SETL شامل مجموعه ای از مقادیر در زمینه یکی از انواع داده های کلیدی است. برنامه نویسی سطح بالای من نیز CLU است. ویژگی اصلی آن ترکیب مفهوم کار با انواع انتزاعی داده است. برای متخصصان فناوری اطلاعات کاملاً منطقی است که ظهور راه حل های جدیدی را ببینند که مبتنی بر زبان های منحصر به فرد هستند - مانند مثلاً Cobol شی گرا.

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

این دسته ممکن است شامل تعداد زیادی راه حل باشد. زبان های برنامه نویسی موازی به روش خود می توانند پایه های زیادی را برای طبقه بندی فراهم کنند. به عنوان مثال، روشی برای سازماندهی فرآیندها. این چارچوب یک طبقه بندی از ویژگی های برنامه نویسی موازی را که در آنها ظاهر می شود ارائه می دهد:

برنامه spiv;

روزگالن;

عبدنان;

بازوهای موازی؛

الگوریتم ربات ها با فرآیندها

مبنای دیگری برای طبقه بندی فرآیندها از نوع در نظر گرفته شده، روش های همگام سازی فرآیند است. بنابراین راه حل های اضافی می تواند شامل موارد زیر باشد:

سمافور;

مانیتور؛

- "قرار ملاقات"؛

توطئه های انتقادی؛

فراخوانی از راه دور رویه ها؛

معاملاتی که در دسته اتمی قرار می گیرند.

انواع در نظر گرفته شده عبارتند از Modula-2، BLISS، Concurrent Pascal، DP، Argus.

فیلم خانوادگی سی

بیشتر از همه، ما به این موضوع نگاه کردیم که چگونه برنامه نویسی با کیفیت بالا راه حلی مانند C است. در واقع، یک خانواده کامل را تشکیل می دهد. این فیلم که قبل از فیلم‌های جدید قرار دارد، ساختارهای C خصوصی دارد. بنابراین، افزودن آن به اجزای مختلف شی گرا منجر به توسعه C ++ شد. پس از این فیلتر، تعدادی از ساختارها به عنوان زبان جاوا شناسایی شدند. می توان دریافت که جاوا ارتباط زیادی با مفهوم پروژه Oberon به رهبری نیکلاوس ورث، خالق فیلم پاسکال دارد. آیا باید به جاوا اسکریپت سطح بالا ارتقا دهیم؟ این دیوانه است، بنابراین، از پیچیدگی رکود - به عنوان ابزاری برای توسعه صفحات وب - تعجب نکنید. Ale do mov برنامه نویسی سطح بالا دروغ نمی گوید، zokrema، HTML، XML و SGML. آنها به عنوان ابزارهای نشانه گذاری فرامتن طبقه بندی می شوند.

خانواده زبان پاسکال

فیلم‌های پاسکال سطح بالا نیز در کنار خانواده کار می‌کنند. بر اساس حروف پاسکال، Vlasna، ساخته های Oberon که به عنوان نوع شی گرا طبقه بندی می شوند. ویژگی کلیدی Oberon توانایی آن در تضمین ایمنی نوع است. علاوه بر Oberon، خانواده پاسکال می تواند شامل Modula-2 و همچنین Component Pascal باشد.

خانواده آدا موو

اصلی ترین مورد در این دسته از حرکت ها، تراکنش هایی است که برای نیازهای وزارت دفاع ایالات متحده آدا انجام می شود. از ابتدای دهه 70 تا اوایل دهه 80. با تعداد زیادی عملکرد، قابلیت ها و تطبیق پذیری مشخص می شود. خانواده Ada شامل راه حل هایی مانند Cedar و Modula 3 است.

خانواده Simula mov

توسعه شبیه‌سازی زبان در مناطق برنامه‌نویسی مرتبط با مدل‌های شبیه‌سازی. ویژگی این راه حل ها در هسته خاص منتج شده است. این رویکرد به شما اجازه می‌دهد تا توسعه‌های متنوعی را ایجاد کنید که با این حوزه‌های کاربردی دیگر سازگار است. بر اساس Simula، زبان شی گرا Smalltalk و همچنین بتا ایجاد شد که با توانایی ترکیب در یک الگوریتم های انتزاعی واحد که کار را با داده ها، رویه ها و مدیریت نشان می دهد مشخص می شود. اشیاء BETA را می توان در زمینه های مختلف مشاهده کرد، به عنوان مثال، در زمینه تغییر توابع یا سیستم های موازی.

برای انجام بالاترین وظایف محاسباتی، پردازنده های گرافیکی روز به روز فعال تر می شوند و منبع تغذیه دیگر باز نمی شود: چگونه برنامه های موثر برای انواع پیکربندی ها بنویسیم؟

2011/06/15 Andriy Adinets

برای انجام بالاترین وظایف محاسباتی، پردازنده های گرافیکی روز به روز فعال تر می شوند و منبع تغذیه دیگر باز نمی شود: چگونه برنامه های موثر برای انواع پیکربندی ها بنویسیم؟ یک راه حل استاندارد - پیوند CUDA یا OpenCL - به شما امکان می دهد الگوریتم را به آرامی پیاده سازی کنید و با کمک آنها نسخه ای بهینه شده برای یک پیکربندی خاص ایجاد کنید. ابزارهای مورد نیاز برای برنامه نویسی پردازنده های گرافیکی سطح بالا که می توان به عنوان مثال با کمک ابزارهای پیشرفته ایجاد کرد.

سه سال پیش، واحدهای پردازش گرافیکی (واحدهای پردازش گرافیکی، پردازنده‌های گرافیکی) کمی بیشتر از کارت‌های ویدیویی برای رایانه‌های شخصی دیده می‌شدند، اما بلافاصله دیدگاه برای آنها تغییر کرد - مدل‌های ویژه GPU سرور ظاهر شدند که به سمت حل مشکلات محاسباتی گرایش داشتند و بهره‌وری را افزایش دادند. محاسبات با افزایش دقت، سیستم های Vinikli رکورد بهره وری، که بالاترین رتبه را در Top500 اشغال می کند. چگونه می توانیم برای چنین ماشین هایی برنامه های موثر بنویسیم؟ راه حل استاندارد یک اتصال بین CUDA و OpenCL برای برنامه نویسی GPU و MPI در سطح کلاستر است. این ابزارها در دسترس هستند، به طور فعال توسط توسعه دهندگان تجهیزات پشتیبانی می شوند، برنامه های زیادی قبلاً برای آنها نوشته شده است، اما تعداد زیادی نیست.

اگر می‌خواهید ابزارهای سطح پایین اضافه کنید، CUDA و OpenCL افزونه‌های زبان هستند و یادگیری آنها دشوار نیست. با کمک آنها می توانید به سرعت الگوریتم GPU را پیاده سازی کنید و نسخه ای بهینه سازی شده برای نصب و پیکربندی خاص که بسیار پیچیده تر است ایجاد کنید. تمام بهینه سازی ها باید به صورت دستی اضافه شوند تا اندازه کد افزایش یابد و خوانایی آن بهبود یابد. و اگرچه برنامه های ساخته شده با استفاده از OpenCL در طیف وسیعی از معماری ها منتقل می شوند، بهره وری در طول چنین انتقالی ذخیره نمی شود. ابزارهای مورد نیاز برای برنامه نویسی پردازنده های گرافیکی در سطح بالاتری قرار دارند.

شما می توانید چنین ابزارهایی را به روش های مختلف ایجاد کنید: یک برنامه زبان جدید را معرفی کنید. دستورالعمل ها را به زبان موجود اضافه کنید، نحوه کار در مدل PGI Accelerator یا CAPS HMPP. به سرعت زبان را گسترش دهید فیلم های گسترش یافته- برنامه نویسی، نحو و معنایی ما ثابت نیست، اما بسته به نیاز برنامه قابل تغییر است. در مقایسه با نمونه های سنتی که در حال رشد هستند، ما چندین مزیت داریم: اضافه کردن امکانات جدید به آنها آسان تر است. بوی تعفن بیرون می آید توسعه مدل‌های برنامه‌نویسی جدید بر اساس چنین زبان‌هایی ساده‌تر است، زیرا لازم است فقط مقدار کمی از گسترش را شامل شود. با کمک چنین برنامه هایی، تنظیم دقیق و بهینه سازی برنامه ها آسان تر می شود.

فیلم های گسترش یافته

برای گسترش زبان، لازم است موارد زیر وجود داشته باشد:

  • مکانیسم گسترش بدون تغییر کامپایلر، اما توسط همه کامپایلرها پشتیبانی می شود، که به طور خلاصه، به معنای وجود یک رابط استاندارد برای تعامل با کامپایلرها است.
  • ساختارهایی برای بسط و دستکاری درخت کد، مانند ماکروها یا شبه نقل قول، برای گسترش زبان.
  • روش های دشوار نوشتن برنامه های افزودنی، به عنوان مثال، خود زبان گسترش یافته است، و زبان های دیگر، که دشواری آن نشان می دهد که کد پسوند می تواند مانند هر برنامه ای روی این زبان کار کند.

به نظر می رسد که تعداد کمی از این مزایا وجود دارد: Lisp، Nemerle، Seed7، xoc و Stratego. در این حالت xoc که برای پسوند زبان C استفاده می شود، زبان okrema Zeta برای نوشتن پسوند و Stratego دامنه کلی برای ایجاد کد خروجی است. Nemerle - زبان گسترش یافته، که حد وسط است. خالص.

همه ما در مورد مکانیسم های کار با درخت برنامه هیجان زده هستیم، و اول از همه، ساخت شبه استناد - مشخصات شیئی که درخت برنامه را نشان می دهد، علاوه بر خود کد خروجی.

در زبان نمرل که برای آن یک ساختار ایجاد می شود، به عنوان مثال، یک درخت ایجاد می شود که از بی حسی متغیر و از مقادیر cob 0 تشکیل می شود. شبه نقل قول شبیه به ایجاد اشیاء رشته ای است. ثابت های رشته ای در شکل 1 به لب به لب شبه استناد اشاره کرد. طراحی درون یابی اجازه می دهد تا مقادیر تغییر در وسط شبه نقل قول در الگوی تثبیت وارد شود. Nemerle از ساختارهای $ (...) استفاده می کند که برای مثال لازم است لیستی برای آنها ارائه شود. همچنین در زبان های توسعه یافته ساختارهایی برای تجزیه درخت برنامه وجود دارد. زبان نمرل از تطابق عملگر (...) (...)، آنالوگ سوئیچ در زبان C استفاده می کند که از ساختارهای شبه نقل قول استفاده می کند. در این مورد، درون یابی به عنوان اعلام تغییرات جدید تفسیر می شود که بسته به نصب موفقیت آمیز، مقادیر زیردرخت ها را تعیین می کند. به عنوان مثال، برای عملگر عبارت match (e) (| => ...)، که به معنای e برای جارو کردن یک درخت، قرار دادن a در گل و b به گل است.

در ساخت فیلم های توسعه یافته از ساخت روبات ها با برنامه های چوب استفاده می شود. Nemerle دارای چنین ماکروهایی است - توابع ویژه ای که می توانند در مرحله کامپایل تکمیل شوند و بخشی از درخت برنامه را بچرخانند که به جای فراخوانی آنها جایگزین می شود. در این حالت، ماکرو قطعات برنامه را به عنوان پارامتر می پذیرد و می تواند آنها را تبدیل کند. در اصل، شما می توانید یک ماکرو را دقیقاً به همان روشی که تابع اصلی است فراخوانی کنید. پیوند ماکرو فراخوانی به یک نحو خاص حتی مفیدتر است. این به شما اجازه می دهد تا ساختارهای نحوی جدیدی را به زبان نمرل معرفی کنید و در نتیجه زبان را گسترش دهید.

در شکل شکل 2 یک ماکرو با پسوندهای نحوی را نشان می دهد که به شما امکان می دهد یک چرخه غنی را با تکرارهای زیاد در مدل پوست توصیف کنید، و در شکل. 3 نمونه ای از نحوه ایجاد برنامه هایی را نشان می دهد که این ماکرو را ایجاد می کنند. لطفاً توجه داشته باشید که ماکرویی که با این پسوند کار می کند کمتر از 30 خط کد خروجی را اشغال می کند و شامل بررسی های زیادی برای کامپایل ها می شود. با رویکرد سنتی، اجرای چنین پسوندی به مقدار قابل توجهی کد بیشتری نیاز دارد و علاوه بر این، نیاز به اصلاح کامپایلر داخلی دارد.

از نظر تاریخی اولین مکانیزم ماکرو در Lysp ظاهر می شود، برنامه ای که در آن به صورت یک لیست ارائه می شود و برای کار با درخت برنامه نیازی به ساختارهای خاصی ندارد، بنابراین در این برنامه نویسی گسترده، گسترده ترین Nya است. ماکروها در Nemerle مشابه ماکروها در Lisp هستند. در سیستم xoc، مکانیسم پیاده سازی ها را از طریق گرامر گسترش یافته و ویژگی های درخت تجزیه گسترش می دهد. این که آیا پسوند به سادگی دو ویژگی را تعریف می کند: نوع ساخت نحوی و عبارت در زبان اصلی، که به چه طریقی تغییر خواهد کرد.

زبان های توسعه یافته با اجرای آنها از طریق ماکروهای بسیاری از ساختارهای استاندارد مشخص می شوند. در Nemerle، همه حلقه‌ها و عملگرهای هوشمند، از جمله match، از طریق ماکروها پیاده‌سازی می‌شوند و در Lisp، ماکروها از طرح‌های حلقه استاندارد و بسته بندی تابع استفاده می‌کنند.

فیلم یاک ویکوریستواتی؟

برای برنامه نویسی توسعه یافته، می توانید ساختارهایی بنویسید که به شما امکان می دهد تا پردازنده های گرافیکی را به دستی ترین روش برنامه ریزی کنید، که در چارچوب پروژه NUDA (معماری دستگاه واحد Nemerle) ساخته شده است، که توسعه ویژه نرم افزار Nemerle برای برنامه نویسی GPU است. . OpenCL به عنوان یک رابط برای تعامل با GPU و زبان مقصد برای ارائه برنامه ها استفاده می شود.

برای شروع، باید برنامه را روی GPU پیاده سازی کنید و کد را به زبان Nemerle تکرار کنید. در این مورد، عملگرهای زبان اصلی، مانند حلقه‌ها و تجزیه، و همچنین کار با انواع داده‌ها، ساختارها و آرایه‌های ساده، مورد تأکید قرار می‌گیرند. کد GPU در اطراف تابع یا در هسته های NUDA نوشته می شود. هسته پوست با ماکرو nukernel نشان داده می شود که کد OpenCL را در پشت کد هسته و یک روش خرد برای فراخوانی هسته در سمت میزبان تولید می کند. قبل از تولید کد، همه ماکروها باید باز شوند، به جز حلقه‌های ماکرو و باز کردن. اگر نیاز به فراخوانی یک تابع در وسط هسته دارید، این تابع باید توسط یک ماکرو nucode تعیین شود که کد OpenCL را برای این تابع تولید می کند. فراخوانی هسته با استفاده از ماکرو nucall اجرا می شود. علاوه بر پارامترهای هسته، پیکربندی شبکه رشته ای که در آن راه اندازی می شود نیز به آن منتقل می شود.

بیشتر اوقات، در هسته هسته برای GPU، بدنه حلقه انتخاب می شود، بنابراین می خواهید بلافاصله حلقه را به GPU منتقل کنید. این را می توان در Nemerle پیاده سازی کرد - یک ماکرو مشابه در NUDA nuwork نامیده می شود. در زمینه پارامترهای اصلی، اندازه بلوک نخ را می گیرد و در زمینه نخ و تجزیه و تحلیل کد بدنه، حلقه مجموعه تغییراتی را که باید در پارامترها به هسته ارسال شود را تعیین می کند. بدنه هسته از بدنه چرخه تشکیل می شود و شاخص های چرخه را از طریق تعداد سراسری نخ و همچنین ذهن محاسبه می کند، که اجازه می دهد چرخه به درستی در آن صورت خاتمه یابد، اگر اندازه جهانی مش با اندازه گروه نخ ها تقسیم نمی شود. در این مرحله، حلقه یک فراخوانی به ماکرو nucall داده می شود که فراخوانی هسته تولید شده است.

در اصل، می‌توانید اجازه دهید آرایه‌های اصلی Nemerle در برنامه‌های GPU خراب شوند، اما این می‌تواند منجر به هزینه‌های سربار بالایی شود - آرایه باید با کلیک پوسته هسته در حافظه GPU کپی شود و سپس دوباره کپی شود. بنابراین، در برنامه های GPU، انواع آرایه های خاصی با هماهنگی عالی بین GPU و CPU ایجاد می شود. این اجازه می دهد تا از یک سو، متن را با دستورات برنامه برای کپی داده ها مشخص نکنید، و از سوی دیگر، از هزینه های سربار برای کپی داده ها جلوگیری کنید. برای چنین آرایه هایی، مانند آرایه های اولیه در Nemerle، مدیریت حافظه برای جمع آوری حافظه اضافی استفاده می شود. برای مشاهده حافظه تحت چنین آرایه‌هایی، یک ماکرو nunew وجود دارد که اپراتور را ملزم می‌کند تا عملگر نمای حافظه را تنظیم کند.

در شکل 4 zliva برنامه اصلی را برای تا کردن آرایه ها نشان می دهد و سمت راست برنامه مشابهی را نشان می دهد، اما اکنون روی GPU محاسبه می کند. انجام این کار با برنامه های GPU آسان است - فقط باید ماکروها را روی چرخه ها و عملیات حافظه تنظیم کنید، در این صورت کد عملا تغییر نمی کند. این برنامه که با استفاده از ویکی NUDA نوشته شده است، کمتر از 20 خط کد می گیرد. یک برنامه مشابه، اما با استفاده از C خالص و OpenCL، بیش از 100 ردیف را اشغال می کند.

علاوه بر ماکروهایی که کار را برای ربات‌های GPU آسان‌تر می‌کنند، سیستم توسعه NUDA همچنین دارای حاشیه‌نویسی برای معکوس کردن حلقه است. حاشیه نویسی، در اصل، ماکروهای خاصی هستند. به عنوان مثال، یک حاشیه نویسی درون خطی در یک حلقه با تعداد تکرار ثابت متوقف می شود و دوباره آن را به پایان می رساند. dmine انتزاعی یک چرخه عمیق را کامل می کند. "گرمای عمیق" به این معنی است که چندین نسخه از بدنه در چرخه ساخته می شود و اختلاط نه تنها برای خود چرخه، بلکه برای چرخه های تو در تو نیز تکمیل می شود، زیرا آنها مستقل نیستند.

اثر

چرا یک برنامه نیاز به خواندن یک زبان جدید و تسلط بر کتابخانه های جدید زبان های توسعه یافته دارد؟ ایده اصلی بهره وری است. با استفاده از یک الگوریتم با حلقه های موازی که با آرایه ها و رکوردها در زبان Nemerle کار می کند، می توانید چند حاشیه برای چاپ برنامه برای GPU اضافه کنید. در این حالت، برنامه بر روی هر دستگاهی که توسط OpenCL پشتیبانی می شود، از جمله پردازنده های گرافیکی nVidia و AMD و همچنین پردازنده های x86 اجرا می شود. برای رسیدن به همین هدف تنها با استفاده از فناوری‌های OpenCL یا CUDA، لازم است منابع بسیار بیشتری صرف شود، نه تنها برای نوشتن کد خروجی، بلکه برای بهبود تعامل بین میزبان و GPU.

دلیل دیگر بهره وری کد تولید شده است. در CUDA یا OpenCL، چرخه های بازآفرینی باید به صورت دستی کامپایل شوند و این برای معماری پوست ضروری است. این فرآیند طولانی و پر از پیچیدگی است و کد حاصل می تواند برای اپراتور مهم و بی اثر باشد. می توانید از ربات NUDA برای حاشیه نویسی های اضافی استفاده کنید. به عنوان مثال، برای چندین هسته، می توانید عملیات گلو را برای نمایش یا ضرب ماتریس با استفاده از حاشیه نویسی اضافی درون خطی و dmine بهینه کنید. بدون افزایش اندازه کد خروجی، می توان به افزایش بهره وری دو تا پنج برابری دست یافت. در این حالت، اگر همان تبدیل‌ها به صورت دستی انجام می‌شد، منجر به افزایش قابل توجه کد و گاهی اوقات با یک مرتبه بزرگی می‌شد، بدون اینکه ظاهراً یک ساعت برای تنظیم و انتخاب پارامترهای مشعل بهینه صرف شود. به عنوان مثال، یک برنامه جهانی با هفت ردیف در NUDA که یک ماتریس جابه‌جایی را در یک ماتریس با دقت افزایش‌یافته ضرب می‌کند، در nVidia Tesla C2050 40 درصد بیشتر از اجرای فعلی (CUBLAS 3.2) وارد شده است. یک برنامه مشابه که با دست نوشته می شود، 70 خط کد می گیرد. به طور طبیعی، برای کارهای استاندارد، می توانید یک بار کد را به صورت دستی بنویسید تا بهره وری را افزایش دهید، اما برای کارهای خاص، کاهش هزینه های نیروی کار و افزایش بهره وری بسیار ساده تر خواهد بود. یافته‌ها بهره‌وری را بهبود می‌بخشد و خود برنامه‌های افزودنی را افزایش می‌دهد: ایجاد آنها با استفاده از افزونه‌ها به جای استفاده از ابزارهای سنتی آسان‌تر است. کل سیستم NUDA، صرف نظر از عملکرد آن، تنها 12 هزار را اشغال می کند. تعداد زیادی کد، بدون تست. این بسیار کوچک است، به عنوان مثال، کامپایلر زبان Nemerle (بیلد 9025) حدود 130 هزار را اشغال می کند. ریادکوف

زبان توسعه یافته ابزار قدرتمندی است و ارزش آن در محاسبات موازی هنوز در ابتدای کار است. در زمینه توسعه برنامه نویسی موازی، حتی وظایف زیادی وجود دارد و برخی از آنها را می توان با کمک افزونه ها و کتابخانه های اضافی توسعه داد. می توانید بلوک های کد ناهمزمان و حلقه های موازی را به زبان خود اضافه کنید و می توانید ساختارهای دستی برای برنامه نویسی سیستم های خوشه ای مانند پارتیشن بندی آرایه ایجاد کنید. نگاه کنید، می توانید از یک زبان برنامه نویسی موازی کامل مانند Chapel یا X10 برای توسعه بیشتر استفاده کنید.

آندری آدینتس([ایمیل محافظت شده]) - محقق جوان مرکز تحقیقات کامپیوتری دانشگاه دولتی مسکو (مسکو).



1.1 Microsoft Visual Studio C++

Microsoft Visual Studio مجموعه ای از محصولات مایکروسافت است که شامل یک موتور توسعه نرم افزار یکپارچه و تعدادی ویژگی ابزاری دیگر است.

ویژوال استودیو شامل یک یا چند جزء است:

ویژوال بیسیک دات نت و قبل از آن - ویژوال بیسیک.

ویژوال C++;

ویژوال سی شارپ.

طیف گسترده ای از گزینه های تحویل نیز عبارتند از:

مایکروسافت SQL Serverیا MSDE؛

Visual Source Safe - سیستم کنترل نسخه سرور فایل.

پیش از این، انبار ویژوال استودیو شامل محصولات زیر نیز بود:

Visual InterDev;

ویژوال J++;

ویژوال J#;

ویژوال فاکس پرو

مهم ترین نسخه های بسته:

ویژوال استودیو 97 - اولین نسخه ویژوال استودیو منتشر شد که در آن روش های مختلف توسعه نرم افزار به صورت یکجا جمع آوری شد. در دو نسخه حرفه ای و سازمانی منتشر شد. این شامل Visual Basic 5.0، Visual C++ 5.0، Visual J++ 1.1، Visual FoxPro 5.0 بود و برای اولین بار به عنوان هسته توسعه ASP - Visual InterDev ظاهر شد. ویژوال استودیو 97 - اولین تلاش مایکروسافت برای ایجاد یک محیط واحد برای توسعه برنامه نویسی به زبان های مختلف: Visual C++، Visual J++، Visual InterDev و MSDN یک محیط به نام Developer Studio را ایجاد کرد. Visual Basic و Visual FoxPro در وسط برای توسعه ویکوریزه شدند.

ویژوال استودیو 6.0 - منتشر شده در سال 1998 - نسخه باقی مانده ویژوال استودیو بر روی پلتفرم Win9x اجرا می شود. همانطور که قبلاً در بین برنامه نویسانی که از ویژوال بیسیک استفاده می کردند محبوب بود. نسخه داده شدهمنبع اصلی توسعه افزونه‌ها برای ویندوز در مایکروسافت، قبل از ظهور پلتفرم دات‌نت بود.

Visual Studio.NET (نام رمز Rainier؛ نسخه داخلی 7.0) - در سال 2002 منتشر شد (شامل .NET Framework 1.0). Service Pack 1 for Visual Studio.NET (2002) در ژانویه 2005 منتشر شد.

Visual Studio .NET 2003 (نام رمز Everett؛ نسخه داخلی 7.1) - در ژانویه 2003 منتشر شد (شامل .NET Framework 1.1). Service Pack 1 for Visual Studio .NET 2003 در 13 ژوئن 2006 منتشر شد.

Visual Studio 2005 (نام رمز Whidbey؛ نسخه داخلی 8.0) - در اواخر سال 2005 منتشر شد (شامل .NET Framework 2.0). در آغاز پاییز برگ 2005، یک سری از محصولات در نسخه Express نیز منتشر شد: Visual C ++ 2005 Express، Visual Basic 2005 Express، Visual C # 2005 Express و غیره. در 19 آوریل 2006، تیم تحریریه Express عاری از گربه شد. Service Pack 1 برای VS2005 و تمام نسخه های Express در 14 ژوئن 2006 منتشر شد. پچ اضافی برای SP1 که مشکل سازگاری با ویندوز ویستا را حل می کند که در 3 ژوئن 2007 منتشر شد.

Visual Studio 2008 (نام رمز Orcas) - در 19 نوامبر 2007 همزمان با .NET Framework 3.5 منتشر شد. با هدف ایجاد افزونه‌ها برای ویندوز ویستا (همچنین از XP پشتیبانی می‌کند)، آفیس 2007 و افزونه‌های وب. شامل LINQ، نسخه های جدید C # و Visual Basic است. من قبل از استودیو از Visual J# استفاده نکرده ام. از 28 ژوئن 2008، نسخه روسی برای اولین بار در دسترس است.

محصول جانشین ویژوال استودیو 2008 با اسم رمز Hawaii است. در 29 ژوئن 2008، اطلاعیه ای منتشر شد که ویژگی های جدیدی را به Visual Studio 2010 i.NET Framework 4.0 معرفی می کند.

توسعه دهنده افزونه که بر استفاده سریع از Visual Studio.Net 7.0 متکی است، می تواند به انواع فناوری ها و ابزارهای جدید دسترسی داشته باشد که به او اجازه می دهد تا به سرعت و به طور موثر افزونه های بومی ویندوز را ایجاد کند، که اکنون معمولاً به آنها گفته می شود. برنامه های دسکتاپ و همچنین افزونه های وب و خدمات وب. مایکروسافت یک زبان جدید را به زرادخانه برنامه اضافه کرده است: C# (به نام "C Sharp") که، همانطور که نمایندگان آن می گویند، برای چندین دهه برای سرعت بخشیدن به چرخه توسعه پروژه های تاشو ایجاد شده است.

نکته اصلی، مطمئناً، این است که Visual C++، Visual Basic و C# از یک مرکز توسعه IDE (محیط توسعه یکپارچه) استفاده می کنند، که امکان ایجاد پروژه های پیچیده از زبان های مختلف (راه حل های ترکیبی زبان) را فراهم می کند. برای باگاتوموف، توسعه میانی Net (Net Framework) مجموع سه انبار است:

zagalna برای مجموعه زبان های مورد بررسی در کتابخانه برای ساعت Viconnaya (زمان اجرای زبان مشترک)؛

کتابخانه کلاس های برنامه نویسی یکپارچه یکپارچه شده است.

مدلی برای توسعه افزونه های وب (Active Server Pages.Net).

اولین انبار کتابخانه Common Language Runtime (CLR) است که هم در مرحله توسعه و هم در مرحله توسعه کار می کند. در ساعت اجرا، کد پویایی تعداد زیادی افزونه استریم را کنترل می کند، از اتصال فرآیندها به یکدیگر اطمینان می دهد، ایمنی آنها را حفظ می کند و رویه های مشاهده و انباشت حافظه را خودکار می کند. در مرحله توسعه، CLR وظایف معمولی که توسط برنامه نویس انجام می شود را خودکار می کند و اجرای فناوری های جدید را آسان تر می کند. دستاوردهای به دست آمده با ایجاد مؤلفه ها بر اساس استاندارد COM (Component Object Model، به اختصار COM - Model of Rich Component Objects) به ویژه برجسته شده است.

انبار دیگری (کلاس های برنامه نویسی یکپارچه) یک کتابخانه یکپارچه، شی گرا و قابل توسعه از کلاس ها، ترکیب شده با منابع دیگر و بخشی از رابط برنامه نویسی کاربردی را در اختیار توسعه دهنده قرار می دهد. ترکیبی از عناصر MFC (کلاس های بنیاد مایکروسافت)، WFC (کلاس های بنیاد ویندوز) و بخشی از API، الهام گرفته از ویژوال بیسیک.

انبار سوم (ASP.Net) روبنای کلاس ها است که استفاده از فناوری شی گرا را در هنگام توسعه عناصر استاندارد رابط HTML امکان پذیر می کند. در واقع در سمت سرور طراحی شده است، این عناصر توابع طراحی به رابط کاربری اختصاص داده شده استمی توانید کد HTML را ببینید. با این حال، هنگام توسعه یک سرور، می توان از سخت افزاری استفاده کرد که مدل شی برنامه نویسی بر آن تکیه دارد. نتیجه یک فرآیند بسیار ساده تر برای ایجاد برنامه های کاربردی وب است. علاوه بر این، ASP.Net یک مفهوم جدید یا مدل توسعه نرم افزار را تشویق می کند. شما، به طرز آهنگین، در مورد آن به عنوان فناوری یک مشتری "لاغر" شنیده اید. ماهیت اصلی این مدل این است که داده های روی کد سیستم در محصول نصب نمی شود، بلکه در سرویس نصب می شود.

کدی که مبتنی بر توسعه میانی Net Framework است، کد کد نامیده می شود (کد مدیریت شده)در حساب تحت یک کد اولیه و خاموش نشده (کد مدیریت نشده).در حالت Net، کامپایلرهای زبان های مشاهده شده ابرداده تولید می کنند (فراداده)نحوه نگهداری خود کد این بدان معنی است که آنها اطلاعات اضافی تولید می کنند که انواع داده ها، اشیاء و پیام ها را توصیف می کند. کتابخانه Common Language Runtime شامل ابرداده های غنی برای جستجو و جستجوی اشیا، راه اندازی توابع، ارسال پارامترها، قرار دادن اشیا در حافظه است.

یک عملکرد مهم کتابخانه این است که به طور خودکار حافظه اشغال شده توسط اشیایی که دیگر ذخیره نمی شوند را آزاد می کند. این نوآوری ها قابلیت اطمینان اجزای اطراف و خرابی همه چیز را افزایش می دهد. خراج هایی که زندگی آنها با چنین رتبه هایی اداره می شود، خراج سنگ نامیده می شود (داده های مدیریت شده).کد شما کراتینه شده است (کد مدیریت شده)سپس می توانید به داده های سنگسار سوگند یاد کنید، یا ممکن است به آنها سوگند نخورید. علاوه بر این، ممکن است حتی ندانید که چرا داده های شما پوشش داده شده است.

کتابخانه جهانی زمان (CLR) ایجاد مکمل ها و انبارهای آنها را که به زبان های مختلف تقسیم شده و با کتابخانه CLR تنظیم شده است (هدف) ساده می کند. این ماژول ها می توانند در یک پروژه ادغام شوند و طوری با یکدیگر تعامل داشته باشند که گویی به یک زبان ایجاد شده اند. به عنوان مثال، می توانید یک کلاس را اعلام کنید، و سپس یک کلاس مشابه را در زبان دیگری ایجاد کنید. شما می توانید به سادگی از متدهای کلاس در یک ماژول نوشته شده توسط شخص دیگری استفاده کنید. این ادغام با این واقعیت امکان پذیر شد که کامپایلرها و ابزارهای کشورهای مختلف از سیستم نوع اصلی تعریف شده در CLR و همچنین قوانین جدید اتخاذ شده در طول توسعه آن استفاده می کنند.

1.2 C++Builder

Borland C ++ Builder - اخیرا توسط Borland با توسعه سریع افزونه‌ها منتشر شده است که به شما امکان می‌دهد بر اساس هسته توسعه و کتابخانه اجزای دلفی، افزونه‌هایی را به زبان C ++ ایجاد کنید. این مقاله به میانه‌های توسعه C++ Builder و تکنیک‌های اصلی که باید هنگام طراحی رابط کامپیوتر استفاده شود، می‌پردازد.

C++Builder یک افزونه SDI است که به راحتی می توان از آن برای پیکربندی نوار ابزار (چپ دست) و پالت کامپوننت (راست دست) استفاده کرد. علاوه بر این، هنگام راه اندازی C++ Builder، پنجره Object Inspector (چپ دست) و فرم افزودنی جدید (راست دست) را خواهید دید. در زیر پنجره فرم ضمیمه یک پنجره ویرایشگر کد وجود دارد.


عکس. 1. قلب سازنده C++

فرم ها اساس افزونه های C++Builder هستند. ایجاد افزونه اختصاص داده شده به اینترفیس در شکل اضافه شده عناصر اشیاء سازنده C++ به نام کامپوننت است. اجزای C++Builder در پالت Components نمایش داده می‌شوند که در قالب دفترچه یادداشت با وجه غنی نمایش داده می‌شوند. یکی از ویژگی های مهم C++Builder این است که به شما امکان می دهد کامپوننت های مختلف ایجاد کنید و پالت کامپوننت ها را سفارشی کنید و همچنین ایجاد کنید. نسخه های مختلفپالت های کامپوننت برای پروژه های مختلف

اجزاء به دو دسته قابل مشاهده (بصری) و نامرئی (غیر بصری) تقسیم می شوند. اجزای بصری در طول طراحی به همان شکلی ظاهر می شوند که در هنگام طراحی. از دکمه ها و فیلدهای ویرایش استفاده کنید. اجزای غیر بصری در طول زمان طراحی به صورت نمادهای روی فرم ظاهر می شوند. بوی بد در پایان روز هیچ جا دیده نمی شود، اما همه عملکردها باقی می مانند (به عنوان مثال، اطمینان از دسترسی به داده ها، کلیک کردن بر روی پنجره های استاندارد ویندوز 95 و غیره)


کم اهمیت 2. انتخاب لب به لب از اجزای مرئی و نامرئی

برای افزودن کامپوننت به فرم، می‌توانید با ماوس کامپوننت مورد نیاز را در پالت انتخاب کنید و در محل مورد نظر فرم طراحی شده، دکمه سمت چپ ماوس را کلیک کنید. جزء بر روی فرم ظاهر می شود و سپس می توان آن را جابجا کرد، اندازه و سایر مشخصات را تغییر داد.

هر جزء از C++Builder دارای سه نوع ویژگی است: قدرت ها، روش ها و روش ها.

وقتی کامپوننتی را از پالت انتخاب می‌کنید و به شکل اضافه می‌کنید، Object Inspector به طور خودکار قدرتی را که می‌توان به آن کامپوننت اضافه کرد را به شما نشان می‌دهد. در بالای Object Inspector یک لیست کشویی وجود دارد که به شما امکان می دهد شی مورد نیاز را از بین موارد موجود در فرم انتخاب کنید.

قدرت یک صفت جزء است که بر آن دلالت دارد نگاه خارجیو رفتار بسیاری از ویژگی های مؤلفه در ستون قدرت وجود دارد که حاوی مقادیری است که نحوه تنظیم آنها را تعیین می کند (به عنوان مثال، ارتفاع دکمه ها). ویژگی های کامپوننت در صفحه Properties نمایش داده می شود. Object Inspector قدرت های منتشر شده کامپوننت ها را نمایش می دهد. علاوه بر مقامات منتشر شده، مؤلفه‌هایی را می‌توان و اغلب در مراجع عمومی و منتشر شده یافت که فقط در طول توسعه برنامه‌ها در دسترس هستند. بازرس اشیاء پیروز است که مقامات را در طول فرآیند طراحی ایجاد کند. لیست مقامات در صفحه مقامات بازرس سایت نمایش داده می شود. می توانید قدرت یک کامپوننت را در حین طراحی تعیین کنید یا کدی بنویسید تا قدرت یک جزء را در طول طراحی برنامه تغییر دهید.

اگر قدرت های یک کامپوننت در طول فرآیند طراحی قابل توجه است، باید جزء را در فرم انتخاب کنید، صفحه قدرت ها را در Object Inspector باز کنید، توان اختصاص داده شده را انتخاب کنید و آن را در ویرایشگر قدرت تغییر دهید (این ممکن است خالی باشد. فیلد برای وارد کردن متن یا اعداد، که در لیست ظاهر می شود، که باز می شود، پانل گفتگو و غیره).

1.3 دلفی

دلفی هسته توسعه است، که هسته برنامه نویسی دلفی است (از نسخه 7 شروع می شود، هسته زبان دلفی نامیده می شود، سابقا Object Pascal) توسط Borland توسعه یافته و در ابتدا در بسته Borland Delphi آن، از جمله از Having پیاده سازی شده است. در سال 2003 دوباره ازدواج کردم و نام زادگاهم را گذاشتم. Object Pascal اساساً زیرمجموعه ای از زبان Pascal با پسوندهای شی گرا است.

دلفی وسط توسعه سوئدی است که در آن زبان دلفی توسعه یافته است. زبان دلفی یک زبان شی گرا و قوی تایپ شده بر اساس برنامه نویس معروف Object Pascal است.

دلفی ترکیبی از بسیاری از فناوری های مهم است:

    کامپایلر بسیار سازنده در کد ماشین.

    - مدل جزء شی گرا.

    - پشتیبانی بصری (و همچنین سوئدی) از نمونه های اولیه نرم افزار؛

    - ویژگی های مقیاس شده برای پایگاه های داده فردی.

    Borland Delphi 8 Studio به شما این امکان را می دهد که خودتان را بسازید برنامه های مختلف: از ساده ترین برنامه های کاربردی یک مرحله ای گرفته تا برنامه هایی برای مدیریت پایگاه های داده توزیع شده. این بسته شامل ابزارهای مختلف برای اطمینان از کار با پایگاه های داده، اسناد XML، توسعه سیستم های توسعه و بسیاری از وظایف دیگر است. یکی از ویژگی های مهم این نسخه پشتیبانی از فناوری دات نت است.

    تاکید اصلی مدل در دلفی این است که روی چگونگی به حداکثر رساندن بهره‌وری توسعه کد کار کند. این به شما امکان می‌دهد به سرعت برنامه‌ها را گسترش دهید، زیرا آماده کردن شی از قبل ضروری است. و همچنین می توانید اشیاء قدرتمند خود را بدون هیچ محدودیتی ایجاد کنید. زبان دلفی یک زبان شی گرا و قوی تایپ شده بر اساس برنامه نویس معروف Object Pascal است.

    بسته استاندارد دلفی شامل اشیاء پایه با 270 کلاس پایه است. نوشتن بر روی این زبان آسان است، مانند افزودن داده ها به پایگاه های داده و ایجاد برنامه های بازی. اگر رابط کاربر پسند را برای ایجاد پوسته های گرافیکی در نظر بگیرید، می توانید با موفقیت بگویید که دلفی دیگر برای درک قابل دسترسی نیست، اما در عین حال و حتی برنامه ریزی آن دشوارتر است.

    اولین نسخه از نرم افزار کامل دلفی برای دات نت، دلفی 8 است. این نرم افزار به شما امکان می داد برای دات نت برنامه بنویسید. در حال حاضر، در دلفی 2006، می توانید برنامه هایی را برای دات نت، کتابخانه کلاس دات نت استاندارد و VCL برای دات نت بنویسید. Seredovishche همچنین به شما اجازه می دهد تا افزونه های دات نت را در سی شارپ و افزونه های Win32 را در سی پلاس پلاس ایجاد کنید. دلفی 2006 شامل توابعی برای نوشتن برنامه های کاربردی پایه از کتابخانه های VCL و CLX است. دلفی 2006 از فناوری MDA با ECO اضافی (Enterprise Core Objects) نسخه 3.0 پشتیبانی می کند.

    در بهار سال 2006، شرکت Borland تصمیم گرفت تا ادغام محیط های توسعه JBuilder، Delphi و C++ Builder را از طریق پیچیدگی آن به طور مستقیم توسعه دهد. در سال 2006، بورلند نسخه سبک‌تری از RAD Studio را با نام‌های Turbo منتشر کرد: Turbo Delphi، Turbo Delphi برای دات‌نت، Turbo C #، Turbo C ++. در بهار سال 2008، سر و صدایی در مورد توسعه مداوم این خط تولید به وجود آمد.

    در بهار سال 2007، CodeGear توسعه دهندگان خود را با خط تولید به روز شده، دلفی 2007 برای Win32، و انتشار یک محصول کاملاً جدید، دلفی 2007 برای PHP، خوشحال کرد. در ابتدای سال 2007، CodeGear برنامه های خود را برای می 2007 ارائه کرد و نقشه راه را منتشر کرد که در اینجا قابل مشاهده است.

    در 25 سپتامبر 2008، شرکت Embarcadero، مالک جدید CodeGear، یک بیانیه مطبوعاتی در دلفی برای Win32 2009 منتشر کرد. این نسخه نوآوری های مهمی را در این زبان به ارمغان آورد، مانند:

    - پشتیبانی مداوم از انطباق با یونیکد در تمام بخش های زبان، VCL و RTL.

    - نوع زشت، بوی تعفن ژنریک.

    - روش های ناشناس

    سرد بسیار گسترده شد محصولات نرم افزاری، Zroblenikh در دلفی، می توانید پیدا کنید:

    1. محصولات Borland: Borland Delphi، Borland C++ Builder، Borland JBuilder نسخه های 1 و 2.

    2. مدیریت / توسعه پایگاه های داده: MySQL Tools (Administrator، Query Browser)، IBExpert، TOAD

    3.مهندسی نرم افزار: Altium Designer / Protel (طراحی الکترونیک).

    4. نمایشگرهای گرافیکی: FastStone Image Viewer، FuturixImager، Photofiltre.

    5. پخش کننده های ویدیویی و صوتی: KMPlayer (پخش کننده ویدیو و صوتی)، X-Player (پخش کننده صوتی).

    6. تحویل اطلاعات در اینترنت: Skype (VoIP و IM)، QIP، QIP Infium و R&Q، (Im)، The Bat! i si.Mail (کلاینت های ایمیل)، PopTray (سرویس بررسی نامه ها)، FeedDemon (بررسی گروه های جدید RSS / Atom)، XanaNews (خواندن گروه های جدید)، Xnews (خواندن گروه های جدید).

    7. ایجاد موسیقی: FL Studio (FruityLoops سابق).

    8. توسعه نرم افزار: Dev-C ++، Dev-PHP، Maguma Open Studio و Open Perl IDE (IDE)، DUnit (تست واحد)، فرمت کد Jedi (قالب بندی کد برنامه)، Game Maker (بازی های ایجاد شده) راهنما و راهنمای (سیستم تالیف توسعه)، Inno Setup (موتور نصب).

    9. توسعه وب: Macromedia HomeSite (ویرایشگر HTML)، TopStyle Pro (ویرایشگر CSS)، Macromedia Captivate (عکسبرداری از صفحه)، Quick Page 2008 (محیط توسعه وب سایت).

    10. مرورگرهای وب (کاغذهای MSIE): Avant Browser، Netcaptor.

    11. ابزارها: Spybot - Search & Destroy، Ad-Aware (نرم افزار ضد جاسوس افزار)، jv16 PowerTools، FDK (ابزار بسیار کاربردی برای بهینه سازی سیستم)، Total Commander و Frigate (مدیر فایل)، DarkCrypt TC / GUI (بسته نرم افزار رمزگذاری )، ImageSpyer و StegoTC (مجموعه steganographic نرم افزار)، جستجوی رومیزی Copernic، PowerArchiver و PeaZip (بایگانی کننده ها)، MCubix (تجزیه و تحلیل هوشمند داده ها)، Download Master [مدیر دانلود]، ACProtect (برنامه بسته بندی و محافظت از فایل های EXE).

    12. ویرایشگرهای متن: SynEdit، Bred2، KeyNote، cEdit Professional، Notepad برنامه نویس، UniRed، gleditor.

    13. ویرایشگر فایل های قبلی ( ویرایشگر HEX ) : Hexapad

    14. حسابداری و تشکیل پرونده: نرم افزار مالیاتی حرفه ای Lacerte Intuit، شامل همه زیرسیستم ها، مانند QuickBooks / EasyACCT Trial Balance Utility، Document Management System و Client Database Repair Utility.

    15.برنامه های خواندن و فهرست نویسی متن الکترونیکی: DarkLib (کاتالوگ و کتابخوان الکترونیکی چند فرمتی)، IxReader (e-reader).

    2 تجزیه و تحلیل معمول از امکانات (مزایای) چند روش شی گرا و روش های توسعه بر اساس آنها

    2.1 آبجکت پاسکال

    Object Pascal یک گویش کاملاً شی گرا از زبان پاسکال است که توسط Apple Computer و Niklaus Worth توسعه یافته است. در سال 1986، بورلند یک پسوند پاسکال مشابه را به محصول توربو پاسکال برای مکینتاش اضافه کرد. با انتشار Turbo Pascal 5.5، افزونه برای DOS در دسترس قرار گرفت. با شروع با دلفی 7، بورلند به طور رسمی زبان خود را دلفی نامید. با این حال، Object Pascal توسط توسعه دهندگان دیگر پشتیبانی و توسعه می یابد. جدی ترین پیاده سازی Object Pascal (از جمله Delphi) شامل TMT Pascal، Virtual Pascal و Free Pascal است.

    هر برنامه ای در دلفی از یک فایل پروژه (یک فایل با پسوند dpr) و یک یا چند ماژول (فایل هایی با پسوند pas) تشکیل شده است. کد چنین فایل هایی واحد برنامه Object Pascal را توصیف می کند.

    در نزدیکی پنجره کد، کلمات رزرو شده به صورت پررنگ و نظرات به صورت مورب نشان داده شده اند (به این ترتیب کلمات و نظرات رزرو شده در کتاب نشان داده شده اند). در واقع، متن برنامه با برنامه کلمه رزرو شده شروع می شود و با کلمه end و سپس یک نقطه به پایان می رسد. لطفاً توجه داشته باشید که انتهای متصل با نقطه زیر آن را پایان‌دهنده واحد برنامه می‌نامند: به محض اینکه چنین پایان‌دهنده‌ای در متن برنامه ایجاد شد، کامپایلر آنالیز برنامه را اعمال می‌کند و متن را نادیده می‌گیرد.

    کلمات رزرو شده نقش مهمی در Object Pascal ایفا می کنند و به برنامه قدرت کلی بر متن نوشته شده به زبان انگلیسی بومی می دهند. هر کلمه رزرو شده (و ده ها مورد از آنها در Object Pascal وجود دارد) یک پیام ذهنی برای کامپایلر دارد که متن برنامه را به همان روشی که توسط ما خوانده می شود تجزیه و تحلیل می کند: از چپ به راست و از راست به پایین.

    با این حال، نظرات برای کامپایلر معنایی ندارد و آنها را نادیده می گیرد. نظرات برای برنامه نویس مهم است که به توضیح سایر مکان های برنامه کمک می کند. قابل مشاهده بودن نظرات در متن برنامه، آن را معقول‌تر کرده و به راحتی می‌توان ویژگی‌های اجرای برنامه را حدس زد که بخشی از دلایل آن است. در Object Pascal، تفسیر در نظر می گیرد که آیا دنباله نمادها در شکل قوس قرار می گیرند یا خیر. جدیدترین متن دو نظر از این قبیل دارد، فقط یک ردیف

    ($R*.RES)

    من واقعاً نظری نمی دهم. به این روش خاص نوشتن یک قطعه کد، دستور کامپایلر می گویند (در تعریف ما، دستورالعملی است برای کامپایلر برای اتصال به برنامه ای به نام فایل منبع). دستورالعمل ها با نماد $ شروع می شوند که درست در پشت کمان فرفری قرار دارد.

    حالا در مورد کامنت ها صحبت می کنم، قدردانی می کنم که در Object Pascal، در مقام کامنت های واسطه، می توان از جفت علامت (*، *) و // نیز استفاده کرد. دسته ها (* ... *) مشابه دسته های فرفری شکل می گیرند، یعنی کامنت قطعه ای از متن را در آنها قرار می دهد و علامت های // به کامپایلر نشان می دهد که نظر بعد از آنها گسترش یافته و تا انتها ادامه می یابد. خط جریان:

    (نظر Tse)

    (* نظر تسه تژ *)

    // همه کاراکترها تا انتهای سطر یک نظر اضافه می کنند

    کلمه Program بعد از نام برنامه ها و یک نقطه بعد از عنوان برنامه. پشت عنوان بخشی از توضیحات است که در آن برنامه (یا دلفی) شناسه های شناسایی شده در برنامه را توصیف می کند. شناسه ها عناصر برنامه را مشخص می کنند، مانند انواع، تغییرات، رویه ها، توابع (در مورد عناصر برنامه کمی بعد صحبت خواهیم کرد). بلافاصله پس از گزاره اضافی که با استفاده از کلمه رزرو شده شروع می شود، برنامه کامپایلر را در مورد این قطعات برنامه (ماژول ها) آگاه می کند که باید نحوه ذخیره سازی نامرئی برنامه و نحوه رشد در فایل های دیگر را مشاهده کرد. ردیف ها

    استفاده می کند

    Forms، Unit1 در 'Unitl.pas' (fmExample);

    مشخص کنید که علاوه بر فایل پروژه در برنامه، از ماژول Forms І Unit1 نیز استفاده شود. ماژول Forms استاندارد است (یعنی قبلاً برای دلفی شناخته شده است)، و ماژول Unit1 جدید است، قبلاً ناشناخته است، و دلفی در این قسمت همچنین نام فایل را با متن ماژول (در 'uniti.pas') و نام نشان می دهد. فایل توضیحات فرم مربوط به ماژول (fmExample).

    همه برنامه ها با کلمات شروع (شروع) شروع می شوند و با پایان پایان دهنده با یک نقطه از هم جدا می شوند. بدنه از چندین عملگر در زبان Object Pascal تشکیل شده است. هر اپراتور یک عمل انجام می دهد - تغییر مقدار متغیر، تجزیه و تحلیل نتیجه محاسبه، مقیاس آن به زیر برنامه ها، و غیره. برنامه ما دارای سه عملگر فشرده است:

    Application.Initialize;

    Application.CreateForm(TfmExample, fmExample);

    Application.Run;

    هر یک از آنها با تبدیل تا یکی از متدهای شیء Application پیاده سازی می شوند

    شیء نوع خاصی از قالب بندی یک قطعه برنامه است که حاوی داده ها و زیربرنامه هایی برای پردازش آنها است. داده ها را فیلدهای شی و زیربرنامه ها را متد می نامند. شی، به طور کلی، برای اجرای یک کار خاص در نظر گرفته شده است و در برنامه به عنوان یک کل جداگانه پذیرفته می شود (به عبارت دیگر، شیء را نمی توان در کنار یک فیلد یا روش "لمس" کرد). اشیا در زبان برنامه نویسی امروزی نقش بسیار مهمی دارند. آنها به منظور افزایش بهره وری برنامه نویس و در عین حال افزایش بهره وری برنامه هایی که استفاده می کنند اختراع شدند. دو قدرت اصلی یک شی - عملکرد و یکپارچگی - آن را مستقل می کند یا بخشی مستقل از برنامه را فراهم می کند و به شما امکان می دهد به راحتی شی را از یک برنامه به برنامه دیگر منتقل کنید. توسعه‌دهندگان دلفی صدها شیء را برای من و شما ارائه کرده‌اند که می‌توان آن‌ها را به‌عنوان هدف در نظر گرفت، که از آن‌ها این برنامه یک برنامه غنی و پربار خواهد بود. این اصل برنامه‌نویسی برنامه‌نویسی شی گرا (OOP) نامیده می‌شود. شی Application داده ها و زیربرنامه های لازم برای عملکرد عادی برنامه های ویندوز را به طور کلی جمع آوری می کند. دلفی به طور خودکار برای هر پروژه جدید یک برنامه شیء کاربردی ایجاد می کند. ردیف

    Application.Initialize;

    به معنای افزایش مقیاس به روش Initialize شیء Application است. با خواندن این ردیف، کامپایلر کدی ایجاد می کند که پردازنده را به قطعه برنامه بعدی که توسط توسعه دهندگان دلفی برای ما نوشته شده است روشن می کند. پس از اتمام این قطعه (برنامه ها می گویند: پس از خروج از زیربرنامه ها)، کنترل پردازنده به ردیف بعدی برنامه ها منتقل می شود که در آن متد CreateForm و غیره فراخوانی می شود.

    ماژول ها واحدهای برنامه ای هستند که برای قرار دادن قطعات برنامه طراحی شده اند. برای کمک به قرار دادن کد برنامه در آنها، کل جنبه رفتاری برنامه پیاده سازی می شود. ماژول دارای ساختار زیر است: اعلانات رابط بخش سرصفحه پایان بخش اجرای بخش موضوع با کلمه رزرو شده Unit و سپس نام ماژول و یک نقطه با آن نشان داده می شود. بخش رابط با کلمه Interface و قسمت پیاده سازی با کلمه Implementation رزرو شده است. پایان دهنده ماژول، مانند پایان دهنده برنامه، با یک نقطه به پایان می رسد. قطعه بعدی برنامه نحوی است گزینه صحیحمدول:

    واحد واحد 1;

    رابط

    // بخش رابط

    پیاده سازی

    // بخش پیاده سازی

    پایان.

    بخش رابط عناصر برنامه (انواع، کلاس‌ها، رویه‌ها و توابع) را توصیف می‌کند که برای سایر ماژول‌های برنامه «مشاهده» خواهند بود و بخش پیاده‌سازی مکانیسم عملکرد این عناصر را نشان می‌دهد. تقسیم ماژول به دو بخش، مکانیزم دستی برای تبادل الگوریتم ها بین بخش های مجاور یک برنامه فراهم می کند. Vin نیز مبادله را اجرا می کند پیشرفت های نرم افزاریبین برنامه نویسان دیگر پس از حذف ماژول "شخص ثالث" از کامپایل، برنامه فقط به بخش رابط خود دسترسی ندارد، که، همانطور که قبلا ذکر شد، حاوی عناصر زیادی است. جزئیات پیاده سازی رویه ها، توابع و کلاس های دسترسی بیان شده در قسمت پیاده سازی است و برای ماژول های دیگر در دسترس نیست.

    به عنوان ابزار اصلی برای پیاده سازی قابلیت های پیشرفته دلفی عمل خواهد کرد. کلاس نمادی است که در پشت آن اشیاء ایجاد می شود و به همین ترتیب، یک شی نمونه ای از پیاده سازی کلاس است. مفاهیم ایجاد عناصر برنامه در Object Pascal را انواع می گویند، مانند کلاس TfmExample و نوع. قبل از این اعلان، کلمه type رزرو شده است، که به کامپایلر می‌گوید بخش توصیف نوع را شروع کند.

    کلاس استاندارد TForm همه چیزهایی را که برای ایجاد و عملکرد یک پنجره خالی ویندوز لازم است پیاده سازی می کند. کلاس Tfmنمونه‌ای از نسل‌های این کلاس، که در مورد آن‌ها باید ردیف را مطابقت داد

    TfmExample = کلاس (TForm)

    که در آن پشت کلمه کلاس رزرو شده، نام کلاس پدر در بازوها مشخص شده است. اصطلاح "نسل" به این معنی است که کلاس TfmExample تمام قابلیت های کلاس TForm Father را کاهش داده و قدرت اجزای اضافی را که در فرم fmExample درج می شوند به آنها اضافه کرده است. جریان اجزایی که ما درج کردیم بخش مهمی از توضیحات کلاس را تشکیل می دهد.

    کاهش قدرت توسط طبقات حاکم تمام قدرت های طبقه پدری و غنی سازی آنها با قابلیت های جدید یکی از اصول اساسی برنامه نویسی شی گرا است. در نتیجه کاهش، ممکن است کاهش جدیدی ایجاد شود که به ظاهر آماده سازی نرم افزارهای اضافی و غیره کمک می کند. در نتیجه، سلسله مراتبی از کلاس ها تنزل می یابد، که در بالای آن ساده ترین کلاس TObject ایجاد می شود. تمام کلاس‌های دیگر در دلفی از این اجداد منفرد مشتق شده‌اند)، و در انتهای سلسله مراتب، موقعیت‌های قوی وجود دارد که قادر به حل هر مشکلی هستند.

    شی fmExampie به طور رسمی با عناصر برنامه مرتبط است که به آنها متغیر می گویند. چرا کلمه var (از انگلیسی Variables - changes) قبل از اعلان شیء varto رزرو شده است؟

    عناصر برنامه کوچکترین بخشهای غیر جزئی هستند که هنوز اهمیت قابل توجهی برای کامپایلر دارند. عناصر عبارتند از:

    کلمات رزرو شده

    مشخص کننده؛

    تیپی

    ثابت؛

    تغییر پذیر؛

    برچسب ها;

    زیر برنامه ها؛

    نظرات.

    کلمات رزرو شده کلماتی انگلیسی هستند که به کامپایلر می‌گویند که اعمال آهنگ را نیز شامل شود. کلمات رزرو شده را نمی توان در برنامه برای هدفی غیر از آنچه در نظر گرفته شده است استفاده کرد. به عنوان مثال، کلمه رزرو شده start برای کامپایلر به معنای شروع یک عبارت تا شده است. برنامه نویس نمی تواند با نام شروع، ثابت شروع، برچسب شروع یا هر عنصر دیگری از برنامه با نام شروع تغییر ایجاد کند.

    شناسه کلمه ای است که برنامه برای تعیین هر عنصر دیگری از برنامه به غیر از کلمه، شناسه یا نظر رزرو شده استفاده می کند. شناسه های موجود در Object Pascal فقط می توانند شامل حروف لاتین، اعداد عربی و علامت تاکید باشند. هیچ کاراکتر یا کاراکتر ویژه دیگری نباید در شناسه گنجانده شود. این قانون ساده بیان می کند که شناسه ها نمی توانند شامل ده کلمه باشند (فضاها نمی توانند اضافه شوند) یا حاوی کاراکترهای سیریلیک (الفبای اوکراینی) باشند.

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

    ثابت ها مناطقی از حافظه را مشخص می کنند که نمی توانند مقدار خود را در طول عملیات برنامه تغییر دهند. مانند سایر عناصر برنامه، ثابت ها می توانند نام های خاص خود را داشته باشند. نام خالی ثابت ها ممکن است با کلمه رزرو شده const (در انگلیسی Constants - ثابت) جایگزین شود. به عنوان مثال، ما می توانیم ثابت ثابت را نشان دهیم

    کیلوبایت = 1024;

    مگابایت = کیلوبایت * کیلوبایت;

    گیگابایت = 1024 * مگابایت؛

    برای جایگزینی اعداد طولانی

    1048576 (1024 * 1024) و 1073741824

    (1024 * 1024 * 1024) به ترتیب Mbyte و Gbyte بنویسید. نوع یک ثابت با نحوه نگارش آن مشخص می شود و به راحتی توسط کامپایلر در متن برنامه تشخیص داده می شود؛ بنابراین، برنامه نیازی به نام گذاری صریح نام ثابت ها ندارد (یعنی آنها را به صراحت اعلام نمی کند. در برنامه).

    تغییرات مربوط به مناطق حافظه قابل تغییر است، به عنوان مثال، با چنین بخش هایی که به جای آنها در طول عملیات برنامه تغییر می کند. برای تغییر ثابت ها، همیشه در برنامه رای خواهید داد. برای این منظور، پس از شناسه تغییر، یک کادر دوتایی و نام نوع تغییر برای آن وجود دارد. کلمه var را می توان به بخش کلمه var ترجمه کرد. مثلا:

    var

    inValue: عدد صحیح؛

    byValue: Byte;

    در اینجا شناسه inValue به عنوان یک نوع عدد صحیح و شناسه byValue به عنوان یک نوع Byte اعلان می شود. نوع عدد صحیح استاندارد (یعنی پشت مقادیر در Object Pascal) یک تکه چهار بایتی از حافظه را تعیین می کند که به جای آن به عنوان یک عدد صحیح در محدوده -2 147 483 648 تا +2 147 483 647 در نظر گرفته می شود، و نوع استاندارد Byte - حافظه نمودار' طول آن 1 بایت است که شامل یک عدد صحیح بدون علامت در محدوده 0 تا 255 4 است. تمام اطلاعات به محدوده مقادیر ممکن و حافظه استاندارد داده می شود. انواع تا دلفی 32 حمل می شود. برای نسخه 1 16 بیتی، این مقادیر مقادیر متفاوتی دارند، به عنوان مثال، نوع Integer در نسخه 1 2 کمان را اشغال می کند و دارای محدوده ارزشی 32768- تا 32767+ است.

    برچسب ها نام اپراتورهای برنامه هستند. علائم فقط به ندرت و فقط برای اینکه برنامه نویس به کامپایلر نشان دهد که کدام اپراتور برنامه مسئول نقض قوانین است استفاده می شود. برچسب هایی که تغییر می کنند همیشه در برنامه رای داده می شوند. برچسب کلمه رزرو شده به قسمت برچسب منتقل می شود.

    زیربرنامه ها روش خاصی برای سازماندهی قطعات برنامه هستند. ویژگی معجزه آسای زیربرنامه ها استقلال آنها از متن برنامه است. به نظر می رسد که قدرت برنامه های فرعی در بدن او محلی شده است. به این معنی که اگر برنامه نویس چیزی را در زیربرنامه تغییر دهد، معمولاً نیازی به تغییر موقعیت زیربرنامه در ارتباط با آن ندارد. به این ترتیب، زیربرنامه‌ها برنامه‌هایی با ساختار خاص هستند، یعنی برنامه‌ها را به تعدادی بخش تا حد زیادی مستقل تقسیم می‌کنند. ساختار برای پروژه های نرم افزاری بزرگ اجتناب ناپذیر است و برنامه های فرعی اغلب در برنامه های دلفی استفاده می شوند.

    Object Pascal دو نوع زیربرنامه دارد: رویه ها و توابع. تابع تنها در این است که شناسه آن با ثابت ها و تغییرات در عبارات قابل استفاده است، زیرا تابع یک نتیجه خروجی از همان نوع تولید می کند. زیرا برای مثال تابع اختصاص داده شده است

    تابع MyFunction: عدد صحیح.

    و قابل تغییر var

    X: عدد صحیح

    سپس می توان از عملگر انتساب زیر استفاده کرد:

    X: = 2 * MyFunction-l;

    این رویه را نمی توان در بیان تغییر داد، زیرا رویه نتیجه مرتبط با آن را ندارد:

    رویه MyProcedure;

    :

    X: = 2 * MyProcedure-l; // رحمت!

    2.2 C++

    C ++ - پسوند زبان C - توسط مرکز علمی و تحقیقاتی AT & T Bell Laboratories (نیوجرسی، ایالات متحده آمریکا) توسط Bjarne Stroustrop در سال 1979 توسعه یافت. C++ شامل همه چیزهایی است که در S. Al وجود دارد، علاوه بر این، از برنامه نویسی شی گرا (OOP) پشتیبانی می کند. شروع با خلاقیت های ++C به منظور تسهیل توسعه برنامه های عالی. قیمت برنامه نویسی شی گرا یک رویکرد جدید برای ایجاد برنامه است.

    پشت سرزنش جزئیات دیگر، C ++ قابل اطمینان ترین برنامه نویسی زبان C است. کرم از قابلیت هایی که C می دهد، C ++ به کوچکترها می دهد. ویژگی های موثرشناسایی انواع جدید با طراحی انواع جدیدی که دقیقاً با مفاهیم ضمیمه مطابقت دارند، برنامه نویس می تواند برنامه را به بخش هایی تقسیم کند که به راحتی قابل مدیریت هستند. این روش القای برنامه ها اغلب انتزاع داده نامیده می شود. اطلاعات مربوط به انواع در انواع مختلف اشیاء تعیین شده توسط خبرنگار قرار دارد. چنین اشیایی برای استفاده در شرایطی که نوع آنها در مرحله کامپایل قابل نصب نیست، ساده و قابل اعتماد هستند. برنامه نویسی چنین اشیایی را اغلب شی گرا می نامند. هنگامی که این روش به درستی استفاده می شود، کوتاه تر، درک آسان تر و کنترل برنامه ها آسان تر است.

    مفاهیم کلیدی C++ کلاس هستند. کلاس نوعی است که توسط یک koristuvach تعیین می شود. کلاس ها با هوس های دانی فراموش می شوند، تضمین شده به INITSIARIA Dani، عدم پیچیدگی نوع برای نوع، غرور قهوه ای، دینامیک نوع، کنترل قهوه ای از پامیت مدیریتی منتقل شده است. عملیات C++ ویژگی های بسیار زیباتری نسبت به C برای بیان ماژولار بودن برنامه و معکوس کردن نوع ارائه می دهد. این زبان همچنین دارای ویژگی های پیشرفته تری است که مستقیماً به کلاس ها مربوط نمی شود که شامل ثابت های نمادین، جایگزینی درون خطی توابع، پارامترهای توابع پس از ترجمه، تغییر نام نام توابع، عملیات هسته ها در حافظه قوی و نوع کنترل می شود. C++ توانایی کار با اشیاء سخت افزاری اصلی (بیت ها، بایت ها، کلمات، آدرس ها و غیره) را دارد. این به شما اجازه می دهد تا انواع تعریف شده توسط طراح را به طور موثر پیاده سازی کنید.

    C++ و کتابخانه های استاندارد آن به گونه ای طراحی شده اند که قابل حمل باشند. واضح است که اجرای برنامه در اکثر سیستم هایی خواهد بود که از C پشتیبانی می کنند. برنامه های C++ می توانند از کتابخانه C استفاده کنند و C++ می تواند از اکثر ابزارهایی که برنامه را پشتیبانی می کنند استفاده کند. گرامر در C

    یک برنامه ++C از تعداد زیادی فایل خروجی تشکیل شده است که هر کدام حاوی توضیحاتی از انواع، توابع، متغیرها و ثابت ها هستند. برای اینکه بتوان از آن در فایل های خروجی مختلف برای ارسال به یک شی استفاده کرد، باید آن را خارجی توصیف کرد. مثلا:

    خارجی دو sqrt (دو)؛

    خارجی درون جریان cin;

    ساده‌ترین راه برای اطمینان از قابلیت استفاده فایل‌های خروجی این است که چنین توضیحاتی را در کنار فایل‌هایی به نام فایل‌های هدر (یا هدر) قرار دهید و سپس آن‌ها را اضافه کنید تا در صورت نیاز این هدرها را در همه فایل‌ها کپی کنید. به عنوان مثال، اگر توضیحات sqrt در سربرگ‌های توابع ریاضی استاندارد math.h ذخیره شده است و می‌خواهید جذر 4 را بگیرید، می‌توانید بنویسید:

    #عبارتند از

    //…

    x = sqrt(4);

    برخی از هدرهای اصلی در بسیاری از فایل های خروجی گنجانده شده اند و با توضیحاتی که ناخواسته تکرار می شوند تداخلی ندارند. به عنوان مثال، بدنه های تابع فقط برای توابع ارسال شده درون خطی (div. this item) و مقداردهی اولیه فقط برای ثابت ها (div. this item) داده می شوند. علاوه بر این تغییرات، سرفصل ها منبع اطلاعاتی در مورد انواع هستند. این یک رابط بین بخش‌های کامپایل شده نزدیک برنامه‌ها فراهم می‌کند.

    دستور include شامل نام فایل قرار داده شده در کادر است، به عنوان مثال، به فایلی با آن نام در دایرکتوری استاندارد اشاره دارد (اغلب /usr/include/CC). برای فایل هایی که در هر مکان دیگری قرار دارند، سعی می کنند از نام هایی که در پنجه هایشان گرفته شده کمک بگیرند.

    مثلا:

    #شامل "math1.h"

    #include "/usr/bs/math2.h"

    math1.h را در فهرست راهنما و math2.h را در پوشه /usr/bs قرار دهید.

    در اینجا می توانید تعداد کمی از برنامه ها را تکمیل کنید که در آنها ردیف در یک فایل ظاهر می شود و دیگری در فایل دیگری انجام می شود. فایل header.h انواع لازم را تعریف می کند:

    // header.h

    extern char * prog_name;

    extern void f();

    فایل main.c شامل برنامه اصلی است:

    // main.c

    #include "header.h"

    char * prog_name = "خوب، الی تازه";

    اصلی ()

    {

    f();

    }

    و فایل f.c در ردیف دیگری قرار دارد:

    //f.c

    #عبارتند از

    #include "header.h"

    void f()

    {

    کوت<< prog_name << «\n»;

    }

    شما می توانید برنامه را به صورت زیر کامپایل و اجرا کنید:

    $ CC main.c f.c -o احمقانه

    $ احمقانه

    خوب، آل تازه

    $

    این زبان که توسط فناوری محلی سازی داده ها، انتزاع داده ها و برنامه نویسی شی گرا پشتیبانی می شود، در موارد زیر نیز مقصر است:

    اما ما آن را در EOM سنتی پیاده سازی خواهیم کرد.

    وارد سیستم عامل های سنتی شوید.

    رقابت با برنامه نویسی زبان سنتی از نظر کارایی در برنامه های اقتصادی.

    برای اکثر افزودنی های ممکن مناسب است.

    این به این معنی است که ویژگی‌هایی برای جمع‌های عددی کارآمد باید گنجانده شود (محاسبات شناور بدون سربار، در غیر این صورت فرترن سودآورتر به نظر می‌رسد). لازم است قابلیت دسترسی به حافظه (که برای نوشتن درایورها ضروری است) درج شود. به دلیل امکان مقیاس پذیری تا توابع (مقیاس فراخوانی) مناسب برای رابط های سیستم عامل های خاص است. و علاوه بر این، ما مسئول امکان انطباق با توابع نوشته شده در زبان های دیگر و در نهایت، با توابع نوشته شده در زبان های شی گرا از زبان های دیگر هستیم.

    جدول 1 مزایا و معایب روش های شی گرا را نشان می دهد.

    جدول 1 - مزایا و معایب روش های شی گرا

    مثبت ها

    منفی ها

    کلاس ها به شما امکان می دهند با استفاده از ابزارهای ساده، از اجزای اصلی طراحی کنید، که به شما امکان می دهد از جزئیات پیاده سازی انتزاعی بگیرید

    درک مفاهیم اساسی مانند کلاس ها، تراکم و روابط پویا ضروری است

    این عملیات یک جوهر متمایز ایجاد می کند و بوی بد در کل برنامه پخش نمی شود، همانطور که اغلب در طول برنامه ریزی رویه ای اتفاق می افتد.

    مطالعه باگاتورا به برنامه اجازه می دهد تا با کتابخانه های بزرگ کلاس ها آشنا شود

    بومی سازی کد و داده ها وضوح و سهولت استفاده در مدیریت نرم افزار را بهبود می بخشد

    طراحی کلاس ها - طراحی بسیار پیچیده تر، پایین تر از پیچیدگی آنها است

    کپسوله سازی اطلاعات از حیاتی ترین داده ها در برابر دسترسی غیرمجاز محافظت می کند.

    پیچاندن کلاس ها بدون نگرانی در مورد امکان "برس زدن" آنها بسیار مهم است.

    قابلیت انحلال سیستم های شعله ور را می دهد

    ناکارآمدی در شاخه حسی حافظه

    فناوری شی گرا منجر به افزایش بهره وری در طول چرخه عمر نرم افزار می شود که منجر به سرمایه گذاری واقعی می شود. افزایش بهره وری با شناخت چهار قدرت اصلی سیستم های شی گرا و مزایای حاصل از آنها حاصل می شود:

    افزودن اشیاء منحصر به فرد در چارچوب مدل های اصلی امکان مدل سازی سیستم های تاشو در دنیای واقعی را فراهم می کند.

    سختی متون شی گرا منجر به توانایی پاسخگویی به تغییرات در ظرفیت گزارشگر می شود.

    استفاده مکرر از مؤلفه‌های استاندارد هم زمان توسعه وظایف جدید برنامه و هم مقدار کد تولید شده را کاهش می‌دهد.

    سادگی نرم افزار باعث سهولت کارکرد و کاهش هزینه های عملیاتی می شود.

    همراه با این مزیت های آشکار، حالت های شی گرا جانشین و میانه برنامه نویسی رشد مغزی PZ را سرکوب می کند. نوع رابط های نمونه سازی به شما این امکان را می دهد که اجزای دستگاه را مستقل از بدنه اصلی کار برنامه آزمایش کنید. ارزش این رویکرد در پروژه هایی که کاربرد وظایف نامشخص یا برای درک مهم است بیشتر مشهود است.

    در حال حاضر ارزیابی‌های عینی کمی از دستاوردهای بهره‌وری وجود دارد، زیرا اغلب پروژه‌های مربوط به سیستم‌های شی گرا در مراحل اولیه هستند. یک شرکت به نام STC Technology (بریتانیا) که تخمین‌های مساوی انجام داد، تأکید کرد که مرحله توسعه یک پروژه شی‌گرا به نصف زمان یک کار مشابه در یک سیستم سنتی و یک رایانه نیاز دارد. سال

    اولین مزیت مهم سیستم های شی گرا ارتباط آنها با دنیای واقعی است. یک طراح می تواند با مشخص کردن تمام اشیاء فیزیکی مهم و اشیاء برنامه مرتبط، یک سیستم فیزیکی را در یک برنامه طراحی کند. گروه‌هایی از اشیاء فیزیکی مرتبط متقابل در کلاس‌هایی ظاهر می‌شوند که می‌توانند در یک سلسله مراتب سازماندهی شوند، از کلاس‌های عمومی شروع می‌شوند و با زیر کلاس‌های تخصصی به آن‌ها گسترش می‌یابند. رویه هایی که برای کلاس های خاص ضروری هستند در سوپرکلاس اولیه آنها یافت می شوند و توسط آنها تنظیم می شوند.

    به عنوان مثال، در یک سیستم مجازی سازی توسعه یافته در Combuston Engineering (کلمبوس، اوهایو)، گروهی از حسگرها با کلاس Sensor نشان داده می شوند که قدرت اساسی همه سنسورها را مشخص می کند. زیر کلاس ها برای نوع پوست سنسور سیستم، به عنوان مثال، برای نوری یا مادون قرمز مشخص شده است. آنها رویه های اولیه را که برای همه حسگرها اعمال می شود کاهش می دهند و روش های اضافی را جایگزین می کنند که فقط برای سنسورهای نوری یا مادون قرمز اعمال می شود.

    رویکرد شی گرا شکاف مفهومی بین دنیای واقعی و مدل های کامپیوتری را تغییر می دهد. این به تحلیلگران و طراحان اجازه می دهد تا ساختار سیستم را به وضوح درک کنند. همانطور که یکی از کوریستوواچ ها می گوید: "من می توانم افکارم را در متن برنامه به این شکل ، همانطور که فکر می کنم نشان دهم." بنابراین، امروزه از سیستم های شی گرا برای مدل سازی سیستم های فیزیکی پیچیده در تولید، مخابرات و همچنین در مجتمع های نظامی و دفاعی استفاده می شود.

    یکی دیگر از مزایای سیستم های شی گرا، نحوه اتصال اشیا از طریق پیام ها است. برای یک برنامه القا شده توسط دستگاه، اطلاعات پنهان از نوع "شروع به مرگ" را می توان برای تمام سنسورهای سیستم اعمال کرد. پوست آنها با یک رتبه خاص مشخص می شود. اگر یکی از سنسورهای فیزیکی قدیمی است، باید تعویض شود. کلاس سیستم به طور همزمان تغییر می کند: برای نوع جدیدی از سنسور، کلاس جدیدی برای جایگزینی رویه های مشخصه یک سنسور جدید معرفی می شود. کلاس جدید دیگر رویه های لازم برای سوپرکلاس را حذف می کند. هنگامی که توسط یک سنسور جدید حذف می شود، سیگنال به یک رتبه جدید اختصاص می یابد. بدنه کل سیستم و تمام اطلاعات بدون تغییر از بین می رود.

    انعطاف پذیری سیستم های شی گرا یک مزیت آشکار برای توسعه دهندگان در رسانه های مایع، به عنوان مثال، در فناوری برنامه نویسی است. برای مثال، Computer Science Corporation از یک زبان Smalltalk شی گرا برای توسعه محصول Design Generator استفاده کرد. منظور این شرکت این است که توسعه دهندگان نرم افزار با تکیه بر فناوری های شی گرا جدید می توانند به سرعت به بازارهای نوظهور جدید در مواجهه با رقابت رو به رشد پاسخ دهند.

    سومین مزیت سیستم های شی گرا این است که کلاس ها می توانند رویه های کلاس های دیگر را کاهش دهند. این شرکت می‌تواند کتابخانه‌هایی از کلاس‌های پرکاربرد را برای ایجاد رویه‌های متناسب با نیازهای خاص و برای رسیدگی به مشکلات برنامه فعلی جمع‌آوری کند. به عنوان مثال، شرکتی که نرم افزار توسعه می دهد می تواند یک کتابخانه از کلاس ها برای عناصر گرافیکی مانند استوانه، مخروط یا کره ایجاد کند. آنها پایه ای را برای زیر کلاس های از نوع بافته یا برش نهایی تشکیل می دهند. بازنگری مکرر متون خروجی زمان توسعه را کاهش می دهد و به طراحان اجازه می دهد تا وظایف را در زمینه های مختلف تنظیم کنند.

    در گذشته، از کتابخانه‌های زیربرنامه‌ها برای توسعه توزیع‌کنندگان PP برای توسعه وظایف استاندارد مانند محاسبات ریاضی استفاده می‌شد. سیستم های شی گرا طیف وسیع تری از متون برنامه های متنوع و غنی را ارائه می دهند. یکی از اولین مشارکت کنندگان، Cadre Technologies، اشاره کرد که نسبت متون برنامه برای یک کار کاربردی جدید با ضریب 5:1 برای برنامه های شی گرا مختلف تغییر می کند.

    کتابخانه های شی را می توان از مشتریان مستقل نیز خریداری کرد. در این زمان، چنین کتابخانه های کلاسی به طور فعال برای ایجاد رابط های سفارشی با نمادها خریداری می شوند. طراحی و نوشتن چنین رابط هایی از ابتدا کار ساده ای نیست. شرکت هایی مانند Apple و Whitewater Group ابزارهایی را برای اجرای روان چنین رابط هایی بر اساس چندین کلاس اصلی مانند Window، Menu، ScrollBar و Icon ارائه می کنند. کاربران می توانند هم این کلاس ها و هم زیر کلاس های آنها را انتخاب کنند که مثلاً با آیکون های خاص می توان آنها را به رابط اضافه کرد.

    مزیت چهارم در نحوه بسته بندی ماژول های نرم افزار شی گرا نهفته است. نرم افزارهای سنتی شامل داده ها و رویه هایی برای دسترسی و تغییر داده ها هستند. داده ها و رویه ها به طور جداگانه تکمیل می شوند، بنابراین تغییرات در ساختار داده ها بر روی ماژول های مختلف، نوشته شده توسط توسعه دهندگان مختلف اعمال می شود. در یک سیستم شی گرا، داده ها و رویه ها با هم به عنوان بخشی از یک بسته - یک شی در نظر گرفته می شوند. هنگام تغییر داده ها، تمام مراحل فرآیند را می توان به راحتی شناسایی و بلافاصله تغییر داد. تکه تکه شدن تغییر تنها به یک منطقه از سیستم گسترش می یابد و سرریز آن به کل سیستم تغییر می کند.

    ظاهراً، هزینه های پشتیبانی تا 80 درصد از کل هزینه چرخه عمر سیستم برنامه نویسی را تشکیل می دهد. توسعه دهندگان سیستم های تاشو بزرگ، که اغلب از نیاز به اصلاح آنها ناامید شده اند، به دنبال استفاده از OOS به عنوان یکی از راه های کاهش هزینه های پشتیبانی و افزایش قابلیت اطمینان محصولات خود هستند. به عنوان مثال، Wild Leitz (تورنتو، کانادا) از زبان شی گرا Objective-C برای توسعه یک سیستم اطلاعات جغرافیایی استفاده کرد. این شرکت متن‌های خروجی این زبان را به‌عنوان سبک بودن در سیستم همراه، تکه‌های بوی تعفن کوتاه و «سخنرانی به خودی خود» مجزا تحسین کرد که جریان تغییر یک ماژول را در سیستم کاهش می‌دهد.

    برنامه هایی که به درستی تقسیم شده اند، نه تنها مسئول برآورده کردن مزایای عملکردی خود هستند، بلکه مسئول اداره چنین مقاماتی مانند:

    پیروزی مجدد؛

    گسترش؛

    مقاومت در برابر داده های نادرست؛

    سیستمی بودن

    سبک صحیح برنامه نویسی شی گرا، دیده شدن این قدرت ها را تضمین می کند. قیمت با استفاده از قدرت سیستمیک توضیح داده می شود.

    این برنامه دارای قدرت سیستمی بودن است، زیرا می توان آن را در قاب یک اپراتور محلی با "برنامه نویسی بلوک بزرگ" ذخیره کرد. برنامه نویسی بلوک بزرگ توسعه سیستماتیک واحدهای نرم افزاری بزرگ (مانند کلاس ها، زیرسیستم ها یا ماژول ها) در طول توسعه سیستم های نرم افزاری جدید است.

    محدودیت های سیستم های شی گرا فعلی (OOS) تا حد زیادی به دلیل عدم دقت آنها است. این مبادلات به فروشندگان نرم افزار رونق می بخشد و این فرصت را برای حضور مشتریان جدید در بازار فراهم می کند. در این بخش مشکلات توسعه سیستم های شی گرا مورد بحث قرار گرفته و مقیاس زمانی برای نقاط ضعف آنها ارائه شده است.

    انتقال اصلی برای سیستم های شی گرا در این زمان بر اساس پشتیبانی پرسنل فنی و مدیریت است. این امر از نقطه نظر عدم شناخت تعداد زیادی از محصولات شی گرا در بازار فعلی طبیعی است. عدم دقت در تعدادی از مشکلات که توسط اکثر فناوری های جدید تحت تأثیر قرار می گیرند آشکار می شود:

    دسترسی عمومی در تعدادی از سیستم عامل های استاندارد؛

    نیاز به یکپارچگی با سیستم ها و پایگاه های داده موجود؛

    کمبود نرم افزار برای برنامه نویسی سیستم های بزرگ مقیاس

    موفقیت فناوری شی گرا عمدتاً به صنعت رایانه نفوذ کرده است. اتفاقی که افتاد این بود که با آینده به مشکل برخوردیم. Ale tse برای سوار شدن به جاده و یک ساعت مشغول بودن. برخی از پذیرندگان اولیه سیستم های شی گرا با انتخاب فناوری های ثبت شده غیر استاندارد به عنوان پایه محصولات خود مشکلاتی را ایجاد کردند. با از دست دادن مقادیر زیادی از سرمایه گذاری، چنین شرکت هایی در رقابت برای سهم بازار خود با چالش های بزرگی روبرو هستند.

    زبان شی گرا نمی تواند به طور کامل مبتنی بر مکانیسم هایی باشد که به طور موثر در معماری های سنتی اجرا می شوند و انواع مختلفی از این زبان ها هنوز به عنوان زبانی با اهمیت فرهنگی در حال انتقال هستند. همین امر را می توان در مورد جمع آوری پول نیز گفت که می توان آن را از نظر بهره وری و تحرک به عنوان یک موضوع عمده در نظر گرفت. اکثر برنامه های شی گرا از کامپایلر برای ساده سازی مشکلات برنامه و کاهش پیچیدگی خود زبان و کامپایلر استفاده می کنند. با این حال، شما باید بتوانید از مجموعه حافظه در موقعیت های غیر بحرانی استفاده کنید، اما در صورت لزوم، کنترل حافظه را حفظ کنید. یک جایگزین زبانی است که با تا کردن یادداشت‌ها سروکار ندارد، اما امکان طراحی انواعی را فراهم می‌کند که حافظه ذخیره شده توسط آنها را حفظ کند. C++ می تواند به عنوان مثال باشد.

    پردازش موقعیت های سرزنش و به طور خاص هدف قرار دادن منابع نیز یک مشکل است. هر نوع زبانی که با کمک ویرایشگر پیوند پیاده سازی شود همچنان از نظر تحرک مشکل ایجاد می کند.

    جایگزینی برای گنجاندن در زبان افراد سطح پایین، گنجاندن عوامل تخصصی سطح پایین در شرایط بحرانی است.

    برنامه نویسی شی گرا همان برنامه نویسی است که از مکانیسم فروپاشی استفاده می کند. انتزاع داده ها نتیجه برنامه نویسی با انواع مختلف مقادیر است. با یک هشدار کوچک، برنامه نویسی شی گرا می تواند شامل یک انتزاع پیشرفته از داده ها باشد و انجام می دهد.

    این مکانیک برای موثر بودن نیاز به نگهداری دقیق دارد. برای انتزاع داده ها، بیش از کمی پشتیبانی لازم است. برای برنامه نویسی شی گرا هزینه مورد نیاز توسعه نرم افزار پشت صحنه. برای اینکه مقامات زبان از اهمیت قانونی برخوردار شوند، زبان باید اجازه دهد که عملکرد دستگاه سنتی به طور مؤثر نقض شود.


    کم اهمیت 3. نمودار سازماندهی یک سیستم ربات مدولار غنی با اشیاء هندسی ساده شده است.

    ساختار چند ماژولار سیستم دارای مزایای فوری است.

    امکان گسترش یافت. افزودن کلاس‌های جدید و تعامل آنها شامل بازنویسی کد موجود نیست، بلکه توسعه ماژول‌های جدید است.

    امکان اصلاح مجدد کد. ماژول Geometric Objects را می توان در هر افزونه ای گنجاند، در صورتی که ویندوز نسخه ی نمایشی نیز وجود دارد - می توانید Visualization را نیز اضافه کنید.

    امکان اجرای گام به گام برنامه. بنابراین، اولین نسخه ممکن است شامل اشیاء هندسی، نمایش ویندوز و تجسم باشد، دیگری محاسبات و غیره را اضافه می کند.

    امکان رکود روش نقاله تولید، "razparalleluvannya" به روند توسعه نرم افزار.

    دلایل زیادی وجود دارد که چرا من نمی توانم از C++ به صورت پویا در برنامه نویسی خود استفاده کنم.

    رابط استاتیک و پیاده سازی کلاس. در زیر رابط یک کلاس مجموعه‌ای از ویژگی‌ها و متدهای آن وجود دارد (که با توضیحات کلاس تنظیم می‌شوند، بنابراین در هدرها قرار می‌گیرند)، در زیر پیاده‌سازی کد خاصی وجود دارد که هنگام فراخوانی این متدها اضافه می‌شود. هر دوی اینها باید قبل از شروع کامپایل تعریف شوند، می توانید در زمان اجرا یک تغییر یا متد را به کلاس اضافه کنید و روش موجود را لغو کنید.

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

    کنترل نوع استاتیک

    هنگام تجزیه عبارت p->f()، کامپایلر "مجرم شعار دادن" است، به طوری که شیئی که عبارت p سعی دارد به طور موثر متد f() را روی آن قرار دهد. این الگوها همیشه به شما کمک می کنند تا کدی ایجاد کنید که انواع مختلفی از اشیاء را جمع آوری می کند: در مرحله کامپایل و مونتاژ باید بدانید که کدام یک از آنها باید نصب شوند که در هر vipadku خاص قرار می گیرند. سعی کنید موارد موجود در فهرست 1 را viconic کنید، کلاس ها را تغییر ندهید، و ساختارهای if-then-else + dynamic_cast vikoristic را انجام ندهید.

    /*

    فهرست 1. کنترل نوع استاتیک امکان چندشکلی جانشین را محدود می کند

    */

    کلاس baseclass();

    کلاس A: کلاس پایه عمومی

    {

    عمومی:

    آ()؛

    // کلاس A با متد void f ()

    فضای خالی مجازی f();

    };

    کلاس B: کلاس پایه عمومی

    {

    عمومی:

    B();

    // کلاس B از متد void f() استفاده نمی کند

    };

    کلاس C: کلاس پایه عمومی (...);

    /*

    نیاز به نوشتن

    (عدم تغییر کلاس های توصیفی و عدم تغییر vikoryst if-then-else + dynamic_cast):

    */

    bool CallF (کلاس پایه * p)

    {

    /*

    اگر p->f() مشخص شده است، این تابع را فراخوانی کرده و true کنید.

    در غیر این صورت - نادرست است

    */

    }

    C++ سه راه برای پیاده سازی تابع CallF پیشنهاد می کند. اولین (مهمترین) این است که متد bool f() را به کلاس پایه اضافه کنید، در این زیر کلاسها منطقی است - مراحل لازم را بردارید و درست شود، در بقیه - false شود. یکی دیگر این است که یک کلاس baseclass_f ایجاد کنید: public baseclass، حذف تمام کلاس‌ها مانند f() و حذف dynamic_cast< baseclass_f *>. مورد سوم if-then-else + dynamic_cast در CallF است. اولین گزینه مسدود کردن کلاس پایه است، در غیر این صورت ممکن است کلاس پایه غیرقابل دسترسی باشد (به عنوان مثال، در یک ماژول "بسته" قرار دارد). دیگری طراحی مجدد کل سیستم اشیاء است. در این صورت نوشتن CallG، CallH چگونه ضروری خواهد بود؟ البته، C++ کاهش قابل توجهی را تشویق می کند، اما سلسله مراتب کلاس ها با این رویکرد بسیار پیچیده می شود و آنها بیش از یک بار "به جلو و عقب" تغییر می کنند. جزئیات روش سوم بیش از یک بار مورد بحث قرار گرفته است: تابع CallF باید هر بار که یک کلاس جدید ظاهر می شود که از f( پشتیبانی می کند بازنویسی شود.

    عدم امکان زمان اجرا خارج از اشیاء کلاس تغییر می کند. به نظر می رسد که اگر اشیاء متعلق به یک کلاس باشند، تقصیر خودشان است که رفتار کنند. از آنجایی که طبقه فعلی در قدرت نیست - "Spadshchina" و آن را هر چه می خواهید تغییر دهید. با این حال، توانایی تغییر پویا مرزهای یک شی در یک کلاس اغلب کاملاً معکوس است. البته یک روش دستی و دستی برای تغییر عملکرد کلاس ها وجود دارد. با این حال، به عنوان یک موضوع خلقت، دیگر امکان تغییر روش های آن، افزودن روش های جدید یا تغییر آنها وجود ندارد. برای این کار باید شی موجود را حذف کنید و سپس یک شی جدید ایجاد کنید. در این مورد، تقاضا برای به روز رسانی تمام شاخص ها برای این شی وجود دارد و مقامات را نجات می دهد. علاوه بر این، به محض ایجاد کلاس های جدید، می توانند از تمام مرزهای معقول عبور کنند.

    visnovok

    بزرگترین گسترش برنامه نویسی شی گرا C++ است. سیستم های برنامه نویسی تجاری C++ به طور گسترده در هر پلتفرمی در دسترس هستند. سیستم برنامه نویسی G ++ به طور گسترده ای شناخته شده است، که این امکان را برای همه کسانی که نیاز دارند نظرات خوب و دقیقی را در مورد متن خروجی یکی از کامپایلرهای زبان C ++ واضح دریافت کنند. ایده های اصلی رویکرد شی گرا بر اساس وضعیت فعلی است: برنامه مدلی از یک فرآیند واقعی، بخشی از دنیای واقعی است. یک مدل از دنیای واقعی یا هر بخشی را می توان به عنوان مجموعه ای از اشیاء در تعامل با یکدیگر توصیف کرد. یک شی با مجموعه ای از پارامترها توصیف می شود که مقادیر آنها وضعیت جسم را نشان می دهد و مجموعه ای از عملیات (عملیات) که می تواند شی را تجزیه کند. فعل و انفعالات بین اشیا از طریق ارتباطات ویژه از یک شی به شی دیگر اتفاق می افتد. یادآوری، حذف شی، می تواند منجر به خاتمه اقدامات آهنگ شود، به عنوان مثال، تغییر وضعیت شی. اشیایی که با مجموعه پارامترهای یکسان و مجموعه پارامترهای مشابه توصیف می شوند، کلاسی از اشیاء از همان نوع را نشان می دهند.

    از دیدگاه شما، یک کلاس برنامه ریزی شده از اشیاء را می توان به عنوان یک نوع مشخص و شی بعدی را به عنوان یک نوع مشخص مشاهده کرد. که توسط برنامه نویس کلاس اشیاء برای مجموعه خاصی از وظایف تعیین شده است، لازم است دامنه کار را از نظر کلاس خود کار توصیف کنید (اگر نام انواع و نام اشیاء را انتخاب کنید، آنها را انتخاب کنید. پارامترها و ویندوز uvanikh diy).

    به این ترتیب، رویکرد شی گرایی نشان می دهد که هنگام توسعه یک برنامه، لازم است طبقات اشیاء در برنامه انتخاب شده و آنها توصیف شوند، سپس نمونه ای از اشیاء ضروری ایجاد شود که با تعامل بین آنها مشخص می شود. .

    دسته هایی از اشیاء اغلب به صورت دستی مرتب می شوند تا بوها یک ساختار سلسله مراتبی ایجاد کنند.

    بدیهی است که به منظور ایجاد مولد یک رویکرد شیء برای توسعه برنامه ها، برنامه نویسی لازم برای پشتیبانی از این رویکرد این است که امکان توصیف کلاس های اشیاء، ایجاد داده هایی از انواع شیء را فراهم کند. یکی از اولین چنین حرکت هایی SmallTalk mov بود که در آن همه داده ها اشیاء کلاس های خاصی هستند و سیستم کلاس اصلی مانند یک ساختار سلسله مراتبی بر اساس کلاس های اساسی مهم خواهد بود.

    شواهد حاصل از برنامه نویسی نشان می دهد که هر رویکرد روشمند به فناوری برنامه نویسی نیازی به نادیده گرفتن کورکورانه سایر رویکردها ندارد. این به رویکرد شی گرا مربوط می شود. تعدادی از مشکلات معمولی وجود دارد که پیچیدگی آنها آشکارتر است، چنین مشکلاتی عبارتند از، در یک نگاه، ایجاد مدل سازی شبیه سازی، و برنامه نویسی گفتگو با مشتری. شکی نیست که رکود رویکرد عینی چیزی جز هدر دادن شدید پول را در پی نخواهد داشت. در ارتباط با این بزرگ ترین گسترش، برنامه نویسی شی گرا پدید آمده است که ترکیب رویکرد شی گرا با روش های دیگر را ممکن می سازد. در برخی از زبان‌ها و سیستم‌های برنامه‌نویسی، استفاده از رویکرد مبتنی بر شئ توسط ویژگی‌های رابط با نرم‌افزار محدود شده است (به عنوان مثال، Visual FoxPro نسخه‌های قبلی).

    فهرست ویکی‌نویس‌ها

  1. Arkhangelsky A. برنامه نویسی در دلفی برای ویندوز. نسخه های 2006، 2007، توربو دلفی + سی دی. -م.: بینوم. آزمایشگاه دانش، 1385..

    Arkhangelsky A. Mova C++ در C++ Builder. دویدکووا و دستیار روشمند. - م.: بینوم. آزمایشگاه دانش، 1387.

    Bucknell J. الگوریتم های بنیادی و ساختارهای داده در دلفی. کتابخانه برنامه نویس.-SPB.: پیتر، دیاسوف، 2006.

    Galiseev G.V. اجزاء در دلفی 7. کار حرفه ای.-م.: ویلیامز، 2006.

  2. گاما E. پذیرش طراحی شی گرا. طرح الگو. سن پترزبورگ: پیتر، 2006.
    تدوین تکلیف بر اساس متن قوانین حمورابی بهبود ویژگی های اساسی بنگاه های کشاورزی. شرایط ثبت موجودی دارایی های کلیدی چیست؟

    2014-05-28