رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی چیست
#11
نوع گذاری ضعیف این امکان را ایجاد می‌کند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.

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

قوی و ایستا در حال حاضر عموما دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#12
وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیات‌ها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین می‌کند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.

برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#13
اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولا تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالبا با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختار‌های زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#14
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازی‌های زبان هستند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#15
خصوصیات یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کننده‌های زبان می‌توانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب می‌تواند بگیرد، مانند مثال‌های زیر:

* تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولا با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
* توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
* پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحا در رفتار پیاده سازی مدل موجودند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#16
پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سخت افزار و نرم افزار را فراهم می‌کند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش می‌توان یک زبان را پیاده سازی کرد.

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

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

یک تکنیک برای بهبود عملکرد برنامه‌های تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقا قبل از اجرا، بلوک‌های کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سخت افزار ترجمه می‌کند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#17
پیشرفت‌های اولیه

اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.

در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.

کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#18
دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:

* APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
* PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.
* در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به

عنوان اولین زبان کاملا شئ گرا معرفی شد.

* C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
* Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
* در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.

هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.

دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.

"ادسگر دیکسترا" در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.

در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#19
دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.

یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالبا با ساختارهای برنامه نویسی عام همراه شده‌اند.

رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساسا نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.

۴GL ‌ها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با "مدرک اینجا" خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover
#20
مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالبا روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولا برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

* شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.
* تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.
* تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.
* شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.

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

این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر می‌کند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق می‌کند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.

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

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

زبان برنامه‏سازی نسل سوم (High Level Language)

زبان برنامه‏سازی نسل سوم (3GL)، بهبودیافته زبان برنامه‏سازی نسل دوم است. در حالی که هدف زبان‏های برنامه‏سازی نسل دوم، قرار دادن ساختار منطقی در زبان بوده است، در زبان‏های برنامه‏سازی نسل سوم، هدف این است که قابلیّت استفاده از زبان‏ها را به گونه‏ای بهبود بخشند که ساده‏تر شوند؛ یعنی به‏کارگیری آن راحت‏تر باشد که منجر به این امر می‏شود که انواع مناسبی از توابع طوری بازنویسی شوند که کارایی بهبود بخشد و قسمت عمده حجم کد برنامه به کلاس‏ها اختصاص یابد (مانند ویژوال بیسیک). پیشرفت زبان نسل سوم نسبت به نسل دوم در این است که از منظر کاربر، قابلیّت استفاده از زبان بهبود یافته است. این نسل، اوّلین بار در اواخر دهه 1950 طرّاحی شد و فرترن، الگول و کوبول، نمونه‏هایی اوّلیّه از این نوع زبان هستند. بیشتر زبان‏های امروزی (بیسیک، C، C++، C#، پاسکال و جاوا)، نیز زبان‏های نسل سوم هستند. اغلب زبان‏های 3GL، برنامه‏نویسی ساختاریافته را پشتیبانی می‏کنند.

زبان برنامه‏سازی نسل چهارم (Very High Level Language)

زبان برنامه‏سازی نسل چهارم (دهه‏های 1970 تا 1990) (به طور خلاصه: 4GL)، یک زبان یا محیط برنامه‏سازی است که با منظور خاصّی طرّاحی شده است، از قبیل توسعه نرم‏افزارهای تجاری – بازرگانی. در سیر تکاملی دانش کامپیوتر، زبان‏های نسل چهارم به دنبال نسل سوم، روندی صعودی در تجرید و قدرت بیان بالاتر را طی کردند. در این نسل، تلاش‏هایی صورت گرفت تا زبان‏های نسل پنجم تعریف شده و مورد استفاده قرار گیرند. زبان طبیعی، شیوه ساختار بلوکی زبان‏های برنامه‏سازی نسل سوم، فرآیند توسعه نرم‏افزار را بهبود بخشید. در هر صورت، روش‏های توسعه زبان‏های نسل سوم، کند و خطاپذیر بودند. مشخّص شد که برخی از برنامه‏های کاربردی را می‏توان خیلی سریع‏تر توسعه داد؛ بدین صورت: با افزودن زبان برنامه‏سازی سطح بالاتر و متدولوژی‏ای که هم‏ارز دستورالعمل‏های بسیار پیچیده نسل سوم را تولید می‏کند. در برخی جهات، مهندسی نرم‏افزار به‏وجود آمد تا توسعه زبان‏های نسل سوم را یاری دهد. طرح‏های مربوط به زبان‏های نسل چهارم و پنجم، بیشتر در حلّ مسائل و مهندسی سیستم‏ها تمرکز یافته‏اند. تمامی زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا تقلّاهای مربوط به برنامه‏نویسی، زمان و هزینه توسعه نرم‏افزار را کاهش دهند. آن‏ها همواره در این زمینه موفّق نبوده‏اند، بعضی اوقات، کدهای تولید شده، زیبا و قابل نگهداشت نمی‏شوند. با وجود این مشکل، استفاده از 4GL مناسب، می‏تواند به طور فوق‏العادّه‏ای موفّقیّت‏آمیز باشد، چنان‏چه با MARK-IV و MAPPER دیده شده است (به بخش تاریخچه مراجعه کنید، برای پیگیری باربری در راه‏آهن شهر سانتافه، مرکز ایالت نیومکزیکو امریکا، کارایی هشت برابر بیشتر از کوبول، برآورد شده است). بهبود قابلیّت استفاده در بعضی از زبان‏های 4GL (و محیط آن‏ها)، اکتشاف راه‏حل‏های ذهنی را نیز نسبت به زبان‏های 3GL، بهتر ساخته است. یک تعریف کمّی از 4GL توسّط Caper Jones به عنوان بخشی از کارش در تحلیل نقطه‏ای تابع، صورت پذیرفت. Jones، نسل‏های مختلف زبان‏های برنامه‏سازی را بر حسب قابلیّت تولید توسعه‏دهنده، تعریف کرد که به صورت نقاط تابع (Function Points) به ازای هر بُرج کاری (Staff-Month)، اندازه‏گیری می‏شد. یک 4GL به عنوان زبانی تعریف شده است که 12 تا 20 FP/SM را پشتیبانی می‏کند. این نکته با تقریبا 16 تا 27 خطّ کد در هر نقطه تابع پیاده‏سازی‏شده در یک 4GL، مرتبط می‏شود. زبان‏های نسل چهارم، اغلب با زبان‏های برنامه‏سازی با کاربرد خاص (DSL ها) سنجیده می‏شوند. برخی محقّقان این‏گونه بیان می‏کنند که 4GL ها، زیرمجموعه‏ای از DSL ها هستند. ماندگاری زبان اسمبلی را تا کنون در محیط‏های توسعه پیشرفته (MS Studio) در نظر بگیرید؛ همه تصوّر می‏کنند که این سیستم باید و شاید، ترکیبی از تمامی نسل‏ها به همراه کاربرد خیلی محدودی از قدیم باشد.

تاریخچه به هرحال، طبق آن‏چه در مقالات و مباحثات قدیمی بوده است، اصطلاح 4GL، اوّلین بار به طور رسمی توسّط James Martin در کتابش به نام «توسعه برنامه‏های کاربردی بدون برنامه‏نویسان» در سال 1982، به کار گرفته شد که به مشخّصه‏های زبان‏های غیررویّه‏ای و سطح بالا، اطلاق می‏شد. در برخی سبک‏های قدیمی، تولیدکننده برنامه گزارش (RPG) شرکت IBM، در سال 1960، (که با دقّت توسّط دیگران پیگیری می‏شد) اوّلین 4GL را توصیف کرد، از قبیل محصول انفورماتیک MARK-IV و MAPPER از Sperry (کاربرد داخلی 1969، انتشار 1979). چندین انگیزه برای شروع و رغبت برای ادامه دادن 4GL، وجود دارد. این اصطلاح ممکن است شامل مجموعه بزرگی از محصولات نرم‏افزاری باشد. آن همچنین می‏تواند، رهیافتی برای جستجوی خصوصیّات معنایی بزرگ‏تر و قدرت پیاده‏سازی، در نظر گرفته شود. مشابه آن‏چه 3GL قدرت بیشتری برای برنامه‏ساز ارائه کرد، همان‏طور 4GL محیط توسعه را برای جمعیّت وسیع‏تری گشود. تا حدّی، 4GL نمونه‏ای از پردازش جعبه سیاه (black box) است، (بدین معنی که) هر نسلی جلوتر از ماشین است. این خاصیّت دوم مستقیما با این امر مرتبط می‏شود که 4GL شامل خطاهایی است که (در بسیاری از موارد) برای اشکال‏زدایی، دشوارتر است. بر حسب کاربرد، یک 4GL، می‏تواند مبتنی بر تجارت باشد یا این‏که با حوزه‏های فنّی سروکار داشته باشد. جلوتر بودن از ماشین، بر نزدیکی به سطح کاربرد، دلالت دارد. با در نظر گرفتن ناهمخوانی مفاهیم و متدها در حوزه‏ها، محدودیّت‏های 4GL منجر به تشخیص نیاز به 5GL شده است. الگوی اوّلیّه ورودی برای 4GL، ورود داده‏ها با محدودیّت 72 کاراکتر (8 بایت برای توالی) کارت‏های منگنه را پشتیبانی می‏کرد به گونه‏ای که برچسب هر کارت، نوع تابع را مشخّص می‏کرد. با استفاده عاقلانه چندین کارت، سطح 4GL انواع زیادی از پردازش و گزارش‏گیری قابلیّت را ارائه کرد در حالی که قابلیّت معادل کدنویسی شده در یک 3GL، شامل شاید تمام جعبه یا بیشتر کارت‏ها می‏شد. استعاره (metaphor) 72 کاراکتری تا مدّتی ادامه یافت تا این‏که رابط‏های ترمینال و حافظه سخت‏افزاری افزایش یافت. حتّی با محدودیّت‏هایش، این رهیافت از کاربردهای بسیار سطح بالا پشتیبانی می‏کرد. وقتی رابط‏ها بهبود یافتند و افزایش طول statement ها و کار کردن با ورودی مبتنی بر گرامر ممکن شد، توان بیشتری روی کار آمد. نمونه‏ای از این مورد را می‏توان در Nomad یافت. نمونه‏ای دیگر از توان Nomad، در توضیحات Nicholas Rawlings برای موزه تاریخچه کامپیوتر درباره NCSS، دیده می‏شود. در گزارش او آمده است که James Martin از Rawlings، راه‏حلّ Nomad برای یک مسئله استاندارد به نام مسئله مهندس می‏خواهد: "افزایش 6 درصدی نرخ شغل مهندسین، متوسّط 7 یا بهتر دارد." مارتین 12 صفحه کوبول و سپس تنها یک یا دو صفحه Mark IV از انفورماتیک را تهیّه کرد. Rawlings، تنها عبارت زیر را پیشنهاد کرد، اجرای عملیّات شروع شونده در یک زمان ... سیر تکاملی 4GL، تحت تأثیر چندین عامل قرار گرفته بود: محدودیّت‏های سخت‏افزار و سیستم‏عامل، فشار زیادی را اِعمال کرد. هنگامی که 4GL برای اوّلین بار ارائه شد، ترکیبی ناهمگون از سخت‏افزار و سیستم‏های عامل، پشتیبانی از توسعه برنامه‏های مشتری را برعهده گرفت که مختصّ سیستمی برای تضمین فروش شده بود. نمونه‏ای از این مورد، سیستم MAPPER است که توسّط Sperry توسعه یافت. به‏هرحال، این مسئله به قبل برمی‏گردد که در ابتدا سیستم در بسیاری از برنامه‏های کاربردی موفّق بود و به پلات‏فرم‏های پیشرفته منتقل شد. آخرین متغیّر در سیستم اطّلاعاتی تجاری (BIS)، قرار دارد که Unisys را ارائه می‏کند. MARK-IV به عنوان VISION:BUILDER معروف است و توسّط مؤسّسات کامپیوتری ارائه شد. راه‏آهن شهر سانتافه برای توسعه یک سیستم از MAPPER استفاده کرد؛ در پروژه‏ای که نمونه اوّلیّه 4GL، نمونه‏گیری سریع و برنامه‏نویسی توسّط کاربران بود. در واقع خیلی آسان‏تر بود که استفاده از MAPPER را به متخصّصان راه‏آهن بیاموزد تا این‏که عملیّات ریزه‏کاری‏های راه‏آهن به برنامه‏نویسان آموخته شود. یکی از زبان‏های قدیمی (و قابل حمل) که خصوصیّات 4GL را نیز داراست، Ramis بود که توسّط Gerald C. Cohen در Mathematica یک شرکت نرم‏افزار ریاضی، توسعه یافت. کوهِن ریاضی را کنار گذاشت و اطّلاعاتی را پایه‏گذاری کرد تا یک 4GL تقریبا مبتنی بر گزارش‏گیری به نام Focus را بسازد. انواع بعدی 4GL وابسته به سیستم پایگاه داده بوده و با نمونه‏های اوّلیّه در کاربرد تکنیک‏ها و منابعی که از بهبود کلّی محاسبات با زمان نتیجه می‏شد، بسیار اختلاف داشتند. یک نکته جالب توجّه در مورد 4GL، تحقّق رابط‏های گرافیکی و همچنین استدلالاتی بوده است که توسّط کاربر از زبانی که به سختی درک می‏شد، انجام می‏گرفت.

انواع انواع مختلفی از 4GL ها وجود دارد:  برنامه‏سازی مبتنی بر جدول (بدون کد)، معمولا با فریم‏ورک و کتابخانه‏های زمان اجرا، اجرا می‏شود. به‏جای استفاده از کد، توسعه‏دهنده، منطقش را با انتخاب یک عملیّات در یک لیست از پیش تعریف شده یا فرمان‏های دست‏کاری جدول داده‏ها، تعریف می‏کند. به عبارت دیگر، به جای کدنویسی، توسعه‏دهنده از الگوریتم برنامه‏نویسی مبتنی بر جدول (Table-driven) استفاده می‏کند؛ نمونه‏ای مناسب از این نوع زبان 4GL، eDeveloper است. این نوع ابزار را می‏توان در توسعه برنامه‏های کاربردی تجارتی به کار برد که معمولا شامل یک بسته‏بندی هستند که امکان گزارش‏گیری و نیز دست‏کاری داده‏های تجاری را فراهم می‏سازد، بنابراین آن‏ها همراه با صفحه‏های GUI (رابط گرافیکی کاربر) و ویراستارهای گزارش‏گیری هستند. مجتمع‏سازی آن‏ها در صورت لزوم برای بیشتر عملیّات ویژه سخت‏افزار / سیستم‏عامل، معمولا با DLL های سطح پایین‏تر ناشی از یک 3GL معمولی ارائه می‏شود.  مولّدهای گزارش‏گیری، فرمت داده‏ها و گزارش‏هایی را که باید تولید شود، را تشریح می‏کنند. آن‏ها گزارش مورد نیاز را یا مستقیما تولید کرده یا این‏که آن‏ها برنامه‏ای تولید می‏کنند که این گزارش را تولید کند.  مشابها، مولّدهای فرم، تعاملات آنلاین را با کاربران سیستم برنامه کاربردی مدیریّت می‏کنند یا برنامه‏ای برای انجام این کار، تولید می‏کنند.  هدف بیشتر 4GL ها (که گاهی اوقات به آن‏ها محیط‏های نسل چهارم گفته می‏شود)، تولید اتوماتیک کلّ سیستم‏هاست شامل خروجی‏های ابزارهای CASE (مهندسی نرم‏افزار با کمک کامپیوتر)، مشخّصات اِسکرین‏ها و گزارش‏ها و همجنین در صورت امکان مشخّصات چند منطق پردازش اضافی.  4GL های مدیریّت داده‏ها از قبیل SAS، SPSS و Stata که فرمان‏های کدنویسی مصنوعی را برای دست‏کاری داده‏ها، بازسازی فایل، انتخاب موارد و مستندسازی داده‏ها را فراهم می‏کنند تا داده‏ها برای تحلیل آماری و گزارش‏گیری، آماده باشند. بعضی از 4GL ها ابزارهایی را فراهم کرده‏اند که ذکر مشخّصه‏های تمامی اطّلاعات مورد نیاز را تسهیل می‏سازد:  James Martin، متدولوژی مربوط به توسعه سیستم‏های مهندسی اطّلاعات ارائه کرد که موارد زیر را به صورت اتوماسیون داشت: امکان ورود نتایج تجزیه و تحلیل سیستم به شکل نمودار جریان داده‏ها (DFD)، نمودار ارتباط موجودیّت‏ها (ERD) و ... از صدها هزار خطّ کوبول که شبانه تولید شده بود.  جدیدترین محصولات 4GL طرّاح اوراکل و suite توسعه‏دهنده آن در کمپانی اوراکل، بر این موضوع تمرکز یافته‏اند که تعاریف، فرم‏ها و برنامه‏های گزارش پایگاه داده را تولید کنند.

چند نمونه از زبان‏های نسل چهارم

 کاربرد عمومی / چند بعدی: Agile Business Suite، Clipper، Cognos PowerHouse 4GL، DataFlex، Discovery Machine Modeler، Forté TOOL (transactional object-oriented language)، FoxPro، IBM Rational EGL (Enterprise Generation Language)، Omnis Studio SDK، Panther، PowerBuilder، SheerPower4GL (Microsoft Windows Only)، SQLWindows/Team Developer، WinDev، Up ! 5GL، Visual DataFlex (Microsoft Windows Only).

 زبان‏های پرس‏وجوی پایگاه داده: FOCUS، Genero، SB+/SystemBuilder، Informix-4GL، NATURAL، Progress 4GL، SQL.

 مولّدهای گزارش: BuildProfessional، GEMBase، IDL-PV/WAVE، LINC، Metafont، NATURAL، Oracle Reports، Progress 4GL Query/Results، Quest، Report Builder، RPG-II.

 زبان‏های دست‏کاری داده‏ها، تحلیل و گزارش‏گیری داده‏ها: Ab Initio، ABAP، Aubit-4GL، Audit Command Language، Clarion Programming Language، CorVision، Culprit، ADS/Online (Plus transaction processing)، DASL، FOCUS، GraphTalk، IDL، IGOR Pro، Informix-4GL، LANSA، LabVIEW، MAPPER (Unisys/Sperry) now part of BIS، MARK-IV (Sterling/Informatics) now VISION:BUILDER of CA، Mathematica، MATLAB، NATURAL، Nomad، PL/SQL، Progress 4GL، PROIV، R، Ramis، S، SAS، SPSS، Stata، Synon، XBase++، SQR.

 زبان‏های مسیل داده (Data-stream): APE، AVS، Iris Explorer.

 توسعه برنامه‏های کاربردی GUI مبتنی بر پایگاه داده: Action Request System، Genexus، SB+/SystemBuilder، Progress Dynamics، UNIFACE، OutSystems.

 نگارگرها و مولّدهای تصویر: ابزارهای کیس (CASE) FOURGEN برای توسعه برنامه‏های کاربردی سریع (RAD) توسّط Gillani، SB+/SystemBuilder، Oracle Forms، Progress 4GL ProVision، Unify Accell.

 سازنده‏های GUI: 4th Dimension (نرم‏افزار)، eDeveloper، راهنمای MATLAB، Omnis Studio، OpenRoad، Progress 4GL AppBuilder، Revolution programming language، Sculptor 4GL.

 زبان‏های توسعه وب: 1. ColdFusion 2. WaveMaker open source, browser-based development platform for Ajax development based on Dojo, Spring, Hibernate 3. OutSystems

زبان برنامه‏سازی نسل پنجم (زبان‏های هوشمند)

زبان برنامه‏سازی نسل پنجم (یا به‏طور خلاصه 5GL)، یک زبان برنامه‏سازی است که در حلّ مسائل، با استفاده از اِعمال قیود به برنامه، مبتنی شده است تا استفاده از الگوریتم‏نویسی توسّط برنامه‏نویس. اکثر زبان‏های مبتنی بر قیود و زبان‏های برنامه‏سازی منطقی و بعضی از زبان‏های اعلانی، زبان‏های نسل پنجم هستند. در حالی که زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا برنامه‏های خاصّی را بسازند، زبان‏های نسل پنجم طرّاحی شده‏اند تا کامپیوتر را مجبور سازند که مسئله داده شده را بدون برنامه‏نویس حل کند. در این روش، برنامه‏نویس باید تنها در مورد آن‏چه مسئله نیاز دارد تا حل شود و آن شرایطی که با آن‏ها مواجه می‏شود، بیندیشد و نیازی نیست تا در مورد چگونگی پیاده‏سازی یک زیربرنامه یا الگوریتم برای حلّ آن مسائل بیندیشد. زبان‏های برنامه‏سازی نسل پنجم، عمدتا در تحقیقات هوش مصنوعی مورد استفاده قرار می‏گیرند. پرولوگ، OPS5 و Mercury، نمونه‏هایی از زبان‏های نسل پنجم هستند. این نمونه از زبان‏ها به عنوان موج آینده در نظر گرفته شده بودند و برخی پیش‏بینی کردند که این زبان‏ها برای توسعه سیستم، جایگزین تمامی زبان‏ها، به‏جز زبان‏های سطح پایین می‏شوند. قابل ملاحظه‏تر این‏که، ژاپنی‏ها از سال 1982 تا 1993، بیشترین تحقیق و هزینه را در پروژه سیستم‏های کامپیوتری نسل پنجم صرف کردند؛ به این امید که یک شبکه کامپیوتری عظیم از ماشین‏ها با استفاده از این ابزار طرّاحی کنند. در هر صورت، هم‏چنان‏که برنامه‏های بزرگتر ساخته شد، عیوب این رهیافت بیشتر آشکار شد. آن‏گونه که، تعریف کردن یک سری شرط در یک مسئله خاص، منجر به الگوریتمی کارا برای حلّ آن می‏شود که همین خود، یک مسئله بسیار دشوار است. این مرحله بحرانی هنوز به صورت اتوماتیک درنیامده و هم‏چنان هوش انسان برنامه‏نویس را می‏طلبد. امروزه، زبان‏های نسل پنجم، به عنوان یک سطح زبان کامپیوتری، به خوبی پیش نرفته است. تعدادی از فروشندگان نرم‏افزار، در حال حاضر، ادّعا دارند که نرم‏افزار آن‏ها، نیازمندی‏های مربوط به برنامه‏سازی بصری 5GL را پشتیبانی می‏کند.

تصوّر غلط رایج هرچند وقت یک‏بار، فروشندگان در فضای توسعه برنامه‏های کاربردی، قابلیّت‏های 5GL (زبان‏های نسل پنجم) را ادّعا می‏کنند. در اغلب اوقات، آن‏ها واقعا 4GL هایی را با سطوح بالاتری از اتوماسیون و پایگاه داده، می‏فروشند. چون اطّلاع از 5GL، پایین است و این بدان علّت است که اغراق‏گویی‏های (hype) در دهه 80، خیلی سریع ناپدید شد و سرانجام آن پروژه‏ها همگی از قلم افتادند؛ همین امر راه را برای فروشندگان باز کرد تا دوباره از این اصطلاح (hype) در فروش ابزارهای جدیدشان استفاده کنند؛ بدون این‏که جدال و مباحثه‏ای درباره نسل‏های فعلی برنامه‏سازان داشته باشند. وسایل و ابزار آن‏ها عملا از بسته‏بندی 4GL با امتیاز RAD، ابزارهای CASE و استفاده از کدنویسی گرافیکی (که نسل کد را تسهیل می‏بخشد)، تشکیل شده است. گام بعدی برای دستیابی به قابلیّت‏های کامل 5GL، با رهیافت گرافیکی همراه است که برنامه‏سازی را تسهیل می‏سازد.
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط csharplover ، asemani


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  اثبات وجود خدا برای صنف برنامه نویس مهرداد عباسی 1 4,426 12-03-2015, 10:23 PM
آخرین ارسال: abolfazl35
  چرا هزینه های برنامه نویسی بالاست؟ مهرداد عباسی 0 2,153 04-21-2015, 04:58 AM
آخرین ارسال: مهرداد عباسی
  چرا هزینه های برنامه نویسی بالاست؟ مهدی ابراهیمی 0 3,011 06-27-2014, 11:34 PM
آخرین ارسال: مهدی ابراهیمی
  میوه فروشی بهتر است یا برنامه نویسی؟؟؟؟؟؟؟؟ مهرداد عباسی 11 13,253 02-17-2014, 05:05 PM
آخرین ارسال: مهدی ابراهیمی
  داستان یک برنامه نویس که از علم بازاریابی چیزی نمی دانست مهرداد عباسی 0 2,517 11-09-2013, 07:11 PM
آخرین ارسال: مهرداد عباسی
Question انتخاب یک زبان جامع برنامه نویسی موبایل - اپلیکیشن - وب - هوش digicom 19 22,286 08-25-2013, 07:10 PM
آخرین ارسال: مهدی ابراهیمی
  خودآموز برنامه نویسی در ۱۰ سال علیرضا حر 0 3,203 06-21-2013, 05:16 AM
آخرین ارسال: علیرضا حر
Tongue کامپایل و اجرای برنامه های جاوا در کنسول علی عرفانی 0 2,501 05-30-2013, 04:27 PM
آخرین ارسال: علی عرفانی
  اگر نجارها همونطوری استخدام می شدن که برنامه نویس ها استخدام می شن مهرداد عباسی 0 2,557 03-21-2013, 09:10 PM
آخرین ارسال: مهرداد عباسی
  برنامه نویسی لینوکس aliye 5 6,049 02-22-2013, 03:31 PM
آخرین ارسال: Beni_Vanda

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان