• تاریخچه توسعه زبان های برنامه نویسی. تاریخچه مختصری از زبان های برنامه نویسی اولین سال زبان برنامه نویسی

    اولین زبان برنامه نویسی کامپیوتری سطح بالا که پیاده سازی شد، FORTRAN (ترجمه فرمول) بود. این برنامه توسط گروهی از برنامه نویسان شرکت IBM بین سال های 1954 و 1957 ایجاد شد. چند سال پس از ایجاد آن، فروش تجاری Fortran آغاز شد - قبل از آن یا با استفاده از کدهای ماشین یا اسمبلرهای نمادین انجام می شد.

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

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

    تاریخچه معرفی فرترن

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

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

    پس از موفقیت خیره‌کننده Fortran، شرکت‌های اروپایی ترسیدند که آی‌بی‌ام رهبری صنعت کامپیوتر را آغاز کند. جوامع آمریکایی و آلمانی کمیته های خود را برای توسعه یک زبان برنامه نویسی جهانی ایجاد کردند، اما بعداً در یک کمیته ادغام شدند. متخصصان آن زبان جدیدی توسعه دادند و آن را زبان الگوریتمی بین المللی (IAL) نامیدند، اما از آنجایی که زبان ALGOrithmic به سرعت به نام رایج برای محصول جدید تبدیل شد، کمیته مجبور شد نام رسمی IAL را به ALGOL تغییر دهد.

    آغاز توسعه

    زبان اسمبلی

    در مواردی که نیاز به داشتن یک برنامه مؤثر است، به جای زبان های ماشین، از زبان های ماشین گرا که نزدیک به آنها هستند - اسمبلرها استفاده می شود. مردم به جای دستورات ماشینی از دستورات حافظه استفاده می کنند.

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

    برای مثال، برای پردازنده Zilog Z80، دستورالعمل ماشین 00000101 به پردازنده دستور می دهد تا ثبات B خود را یک بار کاهش دهد. در زبان اسمبلی نیز به صورت DEC B نوشته می شود.

    برنامه نویسی ساختاریافته

    گام بعدی در سال 1954 برداشته شد، زمانی که اولین زبان سطح بالا، Fortran، ایجاد شد. FORTRAN - مترجم فرمول). زبان های سطح بالا با استفاده از برخی کلمات زبان گفتاری و نمادهای رایج ریاضی از زبان های طبیعی تقلید می کنند. این زبان‌ها برای انسان راحت‌تر هستند؛ با کمک آن‌ها می‌توانید برنامه‌هایی تا چند هزار خط بنویسید. با این حال، در حالی که به راحتی در برنامه های کوتاه قابل درک است، زمانی که صحبت از برنامه های بزرگتر می شد، زبان غیرقابل خواندن و مدیریت آن دشوار بود. راه حل این مشکل با اختراع زبان های برنامه نویسی ساخت یافته بود. زبان برنامه نویسی ساخت یافته )، مانند ALGOL (1958)، پاسکال (1970)، سی (1972).

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

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

    نیز ایجاد شده است کاربردیزبان های (کاربردی) (مثال: Lisp - انگلیسی. پردازش فهرست، 1958) و بازی فکریزبان ها (مثال: Prolog - انگلیسی) برنامه نویسی در LOGic, 1972).

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

    OOP

    در نتیجه، اصول برنامه نویسی شی گرا در اواخر دهه 1970 و اوایل دهه 1980 توسعه یافت. OOP بهترین اصول برنامه نویسی ساختاریافته را با مفاهیم جدید قدرتمندی ترکیب می کند که مفاهیم اساسی آنها نامیده می شود کپسولاسیون، پلی مورفیسمو وراثت.

    نمونه هایی از زبان های شی گرا عبارتند از: Object Pascal، C++،

    OOP به شما این امکان را می دهد که برنامه ها را با شکستن یک مشکل به اجزای آن و کار با هر یک به طور جداگانه سازماندهی کنید. برنامه ای در یک زبان شی گرا که مشکل خاصی را حل می کند، اساساً بخشی از جهان مربوط به این مشکل را توصیف می کند.

    پیوندها

    • تاریخچه برنامه نویسی و محاسبات

    بنیاد ویکی مدیا 2010.

    ببینید «تاریخچه مختصر توسعه زبان‌های برنامه‌نویسی» در فرهنگ‌های دیگر چیست:

      زبان برنامه نویسی یک سیستم نشانه رسمی است که برای نوشتن برنامه ها طراحی شده است. یک برنامه معمولاً برخی از الگوریتم‌ها را به شکلی قابل درک برای پیاده‌کننده نمایش می‌دهد (مثلاً یک رایانه). زبان برنامه نویسی مجموعه... ... ویکی پدیا را تعیین می کند

      روبی معناشناسی: چند پارادایم نوع اجرا: مفسر تاریخ ظهور: 1995 نویسنده: Yukihiro Matsumoto آخرین نسخه: 1.9.1 ... ویکی پدیا

      معناشناسی یاقوت: چند پارادایم نوع اجرا: مفسر تاریخ ظهور: 1995 نویسنده: Yukihiro Matsumoto آخرین نسخه: 1.9.1 ... ویکی پدیا - (Haykakan Sovetakan Socialistakan Hanrapetutyun) ارمنستان (Hayastan Country of Armenians). I. اطلاعات عمومی SSR ارمنستان در 29 نوامبر 1920 تشکیل شد. از 12 مارس 1922 تا 5 دسامبر 1936، بخشی از فدراسیون ماوراء قفقاز بود (نگاه کنید به... ...

      - (Lietuvos Taribu Sosialistine Republic) لیتوانی (Lietuvos). I. اطلاعات عمومی SSR لیتوانی در 21 ژوئیه 1940 تشکیل شد. از 3 اوت 1940، بخشی از اتحاد جماهیر شوروی بوده است. واقع در بخش اروپای غربی اتحاد جماهیر شوروی. مرز شمال با... ... دایره المعارف بزرگ شوروی

      نمونه Buran OK GLI (BTS 002) برای آزمایش در اتمسفر. سالن هوانوردی و فضایی MAKS 1999 ... ویکی پدیا

    یادداشت 1

    برای اینکه اولین برنامه ها کار کنند، لازم بود سوئیچ های کلیدی در پنل جلویی دستگاه محاسباتی نصب شوند. طبیعتاً با استفاده از این روش فقط می‌توان برنامه‌های کوچکی نوشت. یکی از اولین تلاش ها برای ایجاد یک زبان برنامه نویسی کامل توسط دانشمند آلمانی Konrad Zuse انجام شد که در طول دوره 1943-1945. زبان پلانکالکول را توسعه داد. پلانکالکول زبان بسیار امیدوارکننده ای بود که در واقع زبانی سطح بالا بود، اما در طول جنگ پیاده سازی عملی مناسبی دریافت نکرد و شرح آن تنها در سال 1972 منتشر شد.

    کد ماشین مونتاژ کننده

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

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

    نوشتن برنامه ها به زبان اسمبلی کار نسبتاً دشواری است و دانش دستگاه های رایانه ای نیز مورد نیاز است. با این حال، برنامه های اسمبلر مؤثرترین و کارآمدترین هستند.

    زبان های الگوریتمی

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

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

    • کامپایل کردن روشی برای اجرای برنامه است که در آن دستورالعمل های برنامه تنها زمانی اجرا می شوند که ترجمه کل متن برنامه کامپایل شده باشد.
    • تفسیر روشی برای اجرای برنامه است که در آن دستورالعمل های برنامه ترجمه شده و بلافاصله اجرا می شوند.

    تبصره 2

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

    برنامه نویسی ساختاریافته

    در سال 1954، توسعه اولین کامپایلر زبان سطح بالا آغاز شد. دو سال بعد، زبان Fortran ظاهر شد (FORmula TRANslator - "Formula Translator"). این زبان دارای ویژگی هایی بود که توسعه را تا حد زیادی ساده می کرد، اما برنامه نویسی در فرترن کار آسانی نبود: در حالی که درک آن در برنامه های کوتاه آسان بود، زمانی که صحبت از برنامه های بزرگ می شد زبان ناخوانا می شد. با وجود این، این زبان کاملاً موفق بود و نسخه های زیادی منتشر شد.

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

    در طول ده سال، تعداد نسبتاً زیادی زبان جدید ایجاد شد:

    1. Algol (1958) برای نوشتن الگوریتم هایی که از بلوک های جداگانه تشکیل شده اند در نظر گرفته شده است.
    2. Cobol (1959) برای پردازش داده های انبوه در حوزه های مدیریت و کسب و کار استفاده شد.
    3. Basic (1965) به شما اجازه نوشتن برنامه های ساده را می داد و برای آموزش اصول برنامه نویسی استفاده می شد.

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

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

    ظهور برنامه نویسی ساختاریافته نتایج بسیار خوبی به همراه داشت، اما نوشتن برنامه های طولانی و جدی همچنان دشوار بود.

    برنامه نویسی شی گرا (OOP)

    از دهه 1970 پایه های برنامه نویسی شی گرا (OOP) گذاشته شد که در نتیجه توسعه برنامه نویسی رویه ای بوجود آمد که در آن داده ها و روال های پردازش آنها به طور رسمی مرتبط نبودند.

    OOP شامل مفاهیم اساسی زیر است:

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

    نکته 3

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

    در حال حاضر، تعداد زبان‌های برنامه‌نویسی کاربردی که پارادایم شی گرا را پیاده‌سازی می‌کنند، در مقایسه با سایر پارادایم‌ها بیشترین تعداد را دارد. زبان‌های اصلی که از مفهوم OOP پشتیبانی می‌کنند: C++، C#، Object Pascal (Delphi)، جاوا و غیره.

    توسعه اینترنت

    با توسعه فناوری WWW (World Wide Web) اینترنت بسیار محبوب شده است. تعداد زیادی زبان کمکی برای اطمینان از کار با اینترنت، طراحی وب سایت، دسترسی به منابع و غیره ایجاد شده است.

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

    در دهه 1970 زبان SQL ظاهر شد - یک زبان پرس و جو ساخت یافته که برای دسترسی و کار با پایگاه های داده ایجاد شد.

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

    • اسکریپت های جاوا اسکریپت که در مرورگر وب کاربر اجرا می شوند و عمدتا برای بهبود ظاهر سایت و حل مشکلات جزئی استفاده می شوند.
    • اسکریپت های PHP که در سمت سرور اجرا می شوند و اطلاعات پردازش شده قبلی را به مرورگر کاربر ارسال می کنند. آنها برای ایجاد صفحات HTML پویا، کتاب مهمان، نگهداری از انجمن ها و نظرسنجی ها استفاده می شوند.
    • اسکریپت های CGI که ​​عمدتاً در Perl، C/C++ نوشته می شوند، در سمت سرور اجرا می شوند و به اقدامات خاص کاربر بستگی دارند. آنها مانند اسکریپت های PHP برای ایجاد صفحات HTML پویا، کتاب های مهمان، نگهداری انجمن ها و نظرسنجی ها استفاده می شوند.

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

    برنامه نویسی خیلی قبل از دهه 50 قرن بیستم ظاهر شد. اولین ایده ها توسط چارلز بابیج (1792-1871) بیان شد که به حق پدر کامپیوتر در نظر گرفته می شود. او در مورد ترانزیستورها، ریزمدارها و مانیتورها اطلاعاتی نداشت، اما اصول اولیه ای که همه رایانه ها بر اساس آنها ساخته می شدند را کاملاً دقیق توصیف کرد. این ایده توسط کنتس آدا لاولیس (1815-1852) ایجاد شد. جایگاه او در تاریخ هنوز باعث بحث های زیادی می شود، اما یک چیز کاملاً مشخص است - این آدا بود که در واقع اولین برنامه نویس معروف شد. به لطف کار او، مشخص شد که راه استفاده موثر از ماشین ها از طریق الگوریتم هایی است که در کد توضیح داده شده است.

    موتور تحلیلی بابیج

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

    اصل مسئله

    امروزه شما نیازی به دانستن چیزی در مورد معماری کامپیوتر ندارید؛ برای اکثر برنامه نویسان، فقط زبان مهم است و بقیه چیزها در درجه دوم اهمیت قرار دارند. در دهه 1950، همه چیز متفاوت بود - شما باید با کدهای اولیه ماشین کار می کردید، و این تقریباً مشابه برنامه نویسی با آهن لحیم کاری است.

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

    01 x y – افزودن محتویات سلول حافظه y به سلول x.

    02 x y - روش مشابه با تفریق.

    در نتیجه، کد برنامه به یک سری اعداد بی پایان تبدیل شد:

    01 10 15 02 11 29 01 10 11…

    این نوع کد ممکن است امروز برای شما ترسناک به نظر برسد، اما در اوایل دهه 1950 این یک امر عادی بود.


    کامپیوتر از دهه 1940

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

    انتخاب کننده اول

    راه حل واضح بود: لازم بود نامگذاری دیجیتالی عملیات به حروف ترجمه شود. یعنی به جای "01 10 15" از "ADD 10 15" استفاده کنید. این نیاز به ترجمه اضافی کاراکترها در دستورالعمل ماشین داشت، اما با توجه به مشکل، قربانی حداقل بود.

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

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

    • پیدایش مفهوم یک متغیر نمادین یا صرفاً یک متغیر.
    • ایجاد جداول که با آنها می توانید مطابقت بین نمادها، عملیات و سلول های حافظه را بیابید.
    • درک اینکه برنامه نویسی می تواند به یک هنر تبدیل شود.

    این کاتالیزوری برای پیشرفت زبان شد.

    کامپایلرها و سوگیری ها

    اسمبلر ایجاد تحولات ساده را ممکن کرد. به عنوان مثال، انتقال 01 به ADD. ماکرو اسمبلر این ایده را گسترش داد و به برنامه نویسان این امکان را داد که چندین دستورالعمل را در یک دستورالعمل جمع کنند. به عنوان مثال، اگر در یک برنامه دائماً مقداری به یک مکان حافظه اضافه می‌کردید و بررسی می‌کردید که آیا پر است، می‌توانید همه اینها را در یک ماکرو INCRT بنویسید و از آن استفاده کنید و فقط متغیرها را تغییر دهید. در واقع اسمبلرهای ماکرو به اولین زبان های سطح بالا تبدیل شدند.

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

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

    با این وجود ، کامپایلر تنها راه خروج از وضعیت شد ، اما در اینجا مشکل دیگری ظاهر شد - عبارات حسابی. اجرای آنها مانند نحوه خواندن کدها توسط ماشین نیست. از دوره مدرسه، ترتیب محاسبات را در عبارت "2+3*5" می دانیم، اما ماشین کد را در یک جهت می خواند، بنابراین پاسخ نادرست خواهد بود. بله، مثال بالا را می توان با ایجاد یک ماکرو حل کرد، اما عبارات پیچیده در سطح "(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8" نیاز به رویکردی اساساً متفاوت دارد.

    دوران شکل گیری جدید

    جان بکوس، خالق Fortran، موفق شد الگوریتمی برای تجزیه و تحلیل پشته پیدا کند. او کار روی آن را در سال 1954 آغاز کرد و تقریباً 5 سال طول کشید تا حق وجود زبان های سطح بالا را ثابت کند. نام کامل فرترن The IBM Formula Translating System یا FORmula Translator است. با وجود 60 سال قدمت، این زبان یکی از محبوب ترین زبان های برنامه نویسی است و در علم داده بسیار مورد تقاضا است. در این مدت، نسخه های زیادی را دیده ایم: Fortran 1، II، 66، 77، 90، 95، 2008 و سال آینده نسخه دیگری منتشر خواهد شد (فرترن 2015 برنامه ریزی شده بود، اما به دلیل تاخیر ممکن است نام به 2018 تغییر کند) . در فرترن بود که بسیاری از ویژگی های یک زبان سطح بالا برای اولین بار به طور همزمان پیاده سازی شدند، از جمله:

    • عبارات حسابی و منطقی؛
    • حلقه DO (شکل اولیه حلقه FOR)؛
    • عبارت IF شرطی؛
    • زیر برنامه ها؛
    • آرایه ها

    یکی دیگر از میراث مهم فرترن که برنامه نویسان مدرن حتی از آن آگاه نیستند، استفاده از محدودیت های متغیر برای اعداد صحیح است. همه آنها باید با یکی از 6 کاراکتر I، J، K، L، M، N (برگرفته از I-Nteger) شروع می کردند. عادت گرفتن متغیرهای i، j و غیره برای شمارش از اینجا شروع شد.


    IBM 704 - ماشینی که Fortran بر روی آن ایجاد شد

    در همان زمان، فرترن زبانی نزدیک به ماشین ها باقی ماند. مثلا این بود:

    اگر (بیان) دونگ، دوزرو، دوپوس

    دلیل آن معماری کامپیوتر IBM بود که برای استفاده از رجیستر صحیح نیاز به دستور داشت: منفی، صفر یا مثبت. نزدیکی به ماشین ها همچنین در دستور معروف GOTO آشکار شد (بعدها توسط Basic به ارث رسید) که به معنای انتقال مستقیم به یک یا آن دستور بود.

    با بازگشت به مسئله عبارات حسابی، الگوریتم stack brute force (یعنی تجزیه و تحلیل کل رشته) راه حل کارآمدی نبود، اما ثابت کرد که پیاده سازی چقدر ساده و منطقی است.

    زبان برای همه

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

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

    انتقال درآمد به تفریق کل هزینه ها

    کوبول به شخصیت حداکثر فاصله از تفکر ماشینی-حسابی قبلی تا تفکر جهانی بشر تبدیل شده است. و مهمتر از همه، اکنون امکان کار با متن و رکورد وجود داشت.

    زبان بنیادی بعدی Algol (زبان ALGOrithmic) بود که برای گزارش ها و انتشارات علمی در نظر گرفته شد. برای اولین بار چیزهایی که برای ما طبیعی بود در آن ظاهر شد:

    • تفاوت بین تخصیص:= و برابری منطقی =;
    • با استفاده از یک حلقه for با سه آرگومان: مقدار اولیه، حد، مرحله.
    • ساختار بلوک برنامه ها بین شروع و پایان، این امر نیاز به استفاده از GOTO را از بین می برد.

    C، C++، C#، Java و بسیاری دیگر از زبان های محبوب امروزی از الگول بود.

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

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

    یکی از انقلابی‌ترین ایده‌هایی که منجر به خلقت شد، ایده‌ای بود که در دهه 20 قرن نوزدهم توسط Ch. Babbage درباره پیش‌ثبت‌کردن ترتیب اقدامات ماشین بیان شد. از این لحظه شروع می شود تاریخچه زبان های برنامه نویسی.

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

    در حین کار بر روی کامپیوتر مارک 1، جی. هاپر و گروهش با مشکلات زیادی روبرو شدند. به طور خاص، آنها با زیربرنامه ها آمدند.

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

    در اواخر دهه 40، قبل از اینکه جی. هاپر به شرکت جان ماچلی بپیوندد، دومی سیستمی به نام "کد کوتاه" ایجاد کرد که یک زبان برنامه نویسی سطح بالا اولیه بود. در آن، برنامه نویس مسئله ای را که باید حل شود را به صورت فرمول های ریاضی یادداشت می کرد و سپس با استفاده از جدول مخصوص، کاراکتر به کاراکتر ترجمه می کرد و این فرمول ها را به کدهای دو حرفی تبدیل می کرد. پس از آن، یک برنامه کامپیوتری ویژه این کدها را به کد ماشین دودویی تبدیل کرد. سیستم توسعه یافته توسط J. Mauchly اساساً یکی از اولین مفسران بدوی بود.

    قبلاً در سال 1951، هاپر اولین کامپایلر جهان را ایجاد کرد و او نیز این اصطلاح را معرفی کرد. کامپایلر Hopper عملکرد ترکیب دستورات را انجام داد و در حین ترجمه، زیر روال ها را سازماندهی کرد، دستورات سطح بالا (در آن زمان شبه کدها) را به دستورات ماشین تبدیل کرد.

    اواسط دهه 50 با پیشرفت سریع در تاریخ زبان های برنامه نویسی مشخص می شود. نقش برنامه نویسی در دستورات ماشین شروع به کاهش کرد. نوع جدیدی از زبان برنامه نویسی شروع به ظهور کرد که به عنوان واسطه بین ماشین ها و برنامه نویسان عمل می کرد. اولین و یکی از گسترده ترین آنها Fortran بود که توسط گروهی از برنامه نویسان IBM در سال 1954 (نسخه اول) توسعه یافت.

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

    در اوایل دهه 60، تمام زبان های برنامه نویسی سطح بالا موجود را می توان یک دست شمارش کرد، اما بعداً تعداد آنها به سه هزار رسید. البته اکثریت قریب به اتفاق زبان ها هیچ گونه توزیع گسترده ای در تاریخ زبان های برنامه نویسی دریافت نکرده اند. بیش از دو دوجین در عمل استفاده نمی شود. توسعه دهندگان زبان های برنامه نویسی را بر روی کلاس های مختلف وظایف متمرکز کردند، آنها را به یک درجه یا درجه دیگر به معماری های خاص رایانه گره زدند و سلیقه ها و ایده های شخصی را پیاده سازی کردند. در دهه 60 در تاریخ زبان های برنامه نویسی، تلاش هایی برای غلبه بر این "اختلاف" با ایجاد یک زبان برنامه نویسی جهانی انجام شد. اولین زاده فکری این جهت PL/I (زبان برنامه یک)، 1967 بود. سپس ALGOL-68 (1968) این نقش را ادعا کرد. فرض بر این بود که چنین زبان‌هایی توسعه می‌یابند و بهبود می‌یابند و همه زبان‌های دیگر را جایگزین می‌کنند. با این حال، هیچ یک از این تلاش ها تا به امروز موفقیت آمیز نبوده است. جامعیت زبان منجر به پیچیدگی غیر قابل توجیه ساختارها و ناکارآمدی کامپایلرها از دیدگاه برنامه نویس شد.

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

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

    دوره از اواخر دهه 60 تا اوایل دهه 80 در تاریخ زبان های برنامه نویسی با رشد سریع تعداد زبان های مختلف مشخص می شود که به طور متناقض با بحران نرم افزار همراه بود. این بحران به ویژه برای وزارت نظامی آمریکا حاد بود. در ژانویه 1975، پنتاگون تصمیم گرفت به هرج و مرج مترجمان نظم دهد و کمیته ای را تأسیس کرد که به آن دستور داده شد تا یک زبان جهانی را توسعه دهد. زبان برنده ADA نام گرفت.

    زبان C (نسخه اول - 1972) که در بین توسعه دهندگان سیستم های نرم افزاری (از جمله) بسیار محبوب است. C ویژگی های یک زبان سطح بالا و یک زبان ماشین محور را ترکیب می کند و به برنامه نویس اجازه می دهد تا به تمام منابع ماشین دسترسی داشته باشد، که زبان هایی مانند BASIC و Pascal ارائه نمی دهند.

    سال‌ها نرم‌افزار بر اساس زبان‌های عملیاتی و رویه‌ای مانند Fortran، BASIC، Pascal، Ada، C ساخته می‌شد. برنامه نویسی عملیاتی و/یا رویه ای کلاسیک به برنامه نویس نیاز دارد که نحوه حل یک مشکل را به تفصیل شرح دهد. فرمول بندی الگوریتم و نشانه گذاری ویژه آن. در این مورد، ویژگی های مورد انتظار نتیجه معمولاً نشان داده نمی شود. مفاهیم اساسی زبان های این گروه ها عملگر و داده است. در رویکرد رویه ای، اپراتورها در گروه ها - رویه ها ترکیب می شوند. برنامه نویسی ساختاریافته به طور کلی فراتر از این جهت نمی رود، بلکه فقط برخی از تکنیک های مفید فناوری برنامه نویسی را به تصویر می کشد.

    یک جهت اساسی متفاوت در تاریخ زبان های برنامه نویسی با روش شناسی (که گاهی اوقات "پارادایم" نامیده می شود) برنامه نویسی غیر رویه ای مرتبط است. اینها شامل برنامه نویسی شی گرا و اعلانی است. یک زبان شی گرا محیطی را در قالب بسیاری از اشیاء مستقل ایجاد می کند. هر شی مانند یک کامپیوتر جداگانه رفتار می کند؛ آنها می توانند برای حل مسائل به عنوان "جعبه های سیاه" بدون بررسی مکانیسم های داخلی عملکرد آنها استفاده شوند. از زبان های برنامه نویسی شی که در بین حرفه ای ها محبوب هستند، ابتدا باید به C++ اشاره کرد؛ برای طیف وسیع تری از برنامه نویسان، محیط هایی مانند دلفی و ویژوال بیسیک ترجیح داده می شوند.