Главная страница
Навигация по странице:

  • Цели проекта

  • 1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ 1.1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

  • Java

  • На данный момент я уже обучаюсь программированию на языке Python и задумываюсь над тем, чтобы связать свою жизнь с профессией программиста.

  • Языки программирования по предмету информатика


    Скачать 195.5 Kb.
    НазваниеЯзыки программирования по предмету информатика
    Дата22.08.2022
    Размер195.5 Kb.
    Формат файлаdoc
    Имя файла11772377_11610737zyki2.doc
    ТипДокументы
    #651003

    ИНДИВИДУАЛЬНЫЙ ИТОГОВЫЙ ПРОЕКТ
    на тему «Языки программирования»
    по предмету «информатика»

    Обучающийся:
    Класс
    Руководитель проекта:

    ВВЕДЕНИЕ


    В количество настоящее программируем время в эффективности эпоху близка компьютерных информации технологий программы невозможно высококвалифицированного представить машин какого-существующих либо являющиеся высококвалифицированного очень специалиста, собственный не паскаль владеющего языка информационными какого навыками, продолжением поскольку программирования деятельность специалиста любого пользователя субъекта в разных значительной классифицировать степени использование зависит обозначений от программисту уровня понятных владения поскольку информации, а пользователя также язык способности строгими эффективно создании ее способности использовать. программируем Для других свободной технологий ориентации в строгими информационных хочу потоках пользователя современный вычислений специалист между любого инструментов профиля одних должен техники уметь также получать, разработать обрабатывать и компьютерной использовать техники информацию, сферу прежде основании всего, с программы помощью часть компьютерных связь технологий, а быть также требования телекоммуникаций и программистам других понятных новейших использования средств паскаль связи, в средств том количество числе и алгоритма уметь владеющего обращаться с сформулировать языками также программирования.

    С программирования развитием уметь мира и игнорируют появлением которые компьютерной программирования техники возможности возникла потоках потребность в java создании чисто языков, естественного помогающих современных развитию использование программирования.

    ограниченным Связь языков между бейсик языком, свободной на которые котором логических мы задаче думаем, характерного программируем, и программного задачами и также решениями, определенная которые технологий мы программирования можем увеличение представлять в основные своем программируем воображении, своем очень продолжением близка. точного Язык время предоставляет развитию программисту представлять набор всего концептуальных получать инструментов, проекте если определенная они степени не языков отвечают обозначений задаче, описания то хорошо их эпоху просто языка игнорируют. расширяющим Хорошее использование проектирование и обозначений отсутствие задаче ошибок степени не пользователям может специалиста гарантироваться своем чисто инструментов за понятий счет программирования языковых программ средств. значительной Сегодня появлением практически гарантироваться все любого программы можно создаются с расширяющим помощью минимальным языков служащая программирования. поэтому Определенная расширяющим часть толкования современных отличаются Электронно-связи вычислительных языки машин -описания это одних системы поэтому программного представлять обеспечения, правилами являющиеся компьютерной логическим современный продолжением правилами логических повышение средств символов ЭВМ, значительной расширяющим предъявляемые возможности гарантироваться аппаратуры и символов сферу программ их можно использования. продолжением Основное основное назначение хочу программного появлением обеспечения - одних повышение современных эффективности значительной труда котором пользователя, а использование также язык увеличение программного пропускной можем способности программирования ЭВМ.

    В понятий своем всего проекте я программирования хочу близка разработать часть собственный языке язык хорошо программирования, программ такой использование как разных Паскаль, этого Ассемблер, С++, математических Бейсик, информацию Рефал и ошибок Java.

    Цели проекта:  - выяснить, как люди совершенствовали языки программирования, какие языки на данный момент являются самыми актуальными.

    Задачи:                                                                                                          

    1. Развитие познавательного интереса,

    2. Воспитание информационной культуры.

    3. Ознакомление с основными языками программирования.

    4. На основании полученных сведений разработать язык программирования.

    1. ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

    1.1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

    компьютерной Язык основное программирования - числе это единство система язык обозначений, обеспечения служащая язык для деятельность точного являются описания программирования программ если или поэтому алгоритмов аппаратуры для наглядность ЭВМ. логических Языки рефал программирования язык являются данных искусственными. представить От допускают естественных символов языков записи они хочу отличаются программирования ограниченным основное числом «системы слов» и являющиеся очень можем строгими также правилами уровня записи программирования команд (приемов операторов). информацию Поэтому владения при программируем применении программы их символов по также назначению если они инструментов не зависит допускают числом свободного паскаль толкования числе выражений, операторов характерного также для назначение естественного понятий языка.

    чисто На классифицировать основании можно этого инструментов можно алгоритмов сформулировать между ряд своем требований к своем языкам программисту программирования и программирования классифицировать программирования их строгими по разработать особенностям.

    невозможно Основные навыками требования, языков предъявляемые к такой языкам отличаются программирования быть являются:

    1) слов наглядность - новейших использование в использование языке одних по языковых возможности вычислений уже представлять существующих время символов, использование хорошо часть известных и допускают понятных невозможно как программируем программистам, характерного так и владения пользователям технологий ЭВМ;

    2) гарантироваться единство - всего использование прежде одних и очень тех команд же предоставляет символов задаче для отличаются обозначения сферу одних и может тех символов же программирования или электронно родственных java понятий в навыками разных символов частях современный алгоритма. специалиста Количество ассемблер данных связи символов любого должно способности быть быть минимальным;

    3) между гибкость - технологий возможность мира описания вычислений распространенных обращаться приемов языков математических числом вычислений с счет помощью часть имеющегося в языком языке ограниченного набора изобразительных средств;

    4) однозначность - недвусмысленность записи любого алгоритма. Её отсутствие может привести к неправильным ответам при решении задач.

    В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого из них есть своя область применения.

    Любой алгоритм можно представить как последовательность предписаний, выполнив которые, можно перейти от исходных данных к конечному результату. В зависимости от степени детализации предписаний как правило определяется уровень языка программирования согласно которого чем меньше детализация, тем выше уровень языка.

    По вышеуказанному критерию можно выделить следующие уровни языков программирования:

    • машинные;

    • машинно-ориентированные (ассемблеры);

    • машинно-независимые (языки высокого уровня).

    Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на определенный тип процессора и в свою очередь учитывает его конструктивные особенности, то он называется языком программирования «низкого уровня». В данном контексте «низкий уровень» не означает «плохой». Это значит, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

    Основные компоненты алгоритмического языка являются:

    • алфавит;

    • синтаксис;

    • семантика.

    Под алфавитом следует понимать фиксированный для данного языка набор основных символов, то есть букв алфавита, из которых должен состоять любой текст на этом языке (другие символы в тексте не допускаются).

    Синтаксис - это правила построения фраз, позволяющие определить, правильность написания той или иной фразы.

    Разнообразие классов задач привело к тому, что на сегодняшний день разработано несколько сотен алгоритмических языков. Вместе с тем, широкое распространение и международное признание из них получили лишь около пятнадцати языков. Среди них в первую очередь следует отметить:

    • «Fortran и Algol» – это языки, которые предназначенные для решения научно-технических задач;

    • «Cobol» для решения экономических задач;

    • Basic – для решения небольших вычислительных задач в диалоговом режиме. В принципе каждый из этих языков можно использовать для решения задач не своего класса. Однако, как правило, применение оказывается неудобным.

    Для создания многих мобильных приложений используют такие языки, как «Java», «Python», «C», «C++», «C#».
    1.2 ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
    Программа – это алгоритм, записанный на языке программирования и является последовательностью операторов языка.

    Языки программирования бывают искусственные они строго формализованные. Правила записи операторов языка называют синтаксисом языка.

    1. Машинный язык (40-50 годы XX века).

    Программы на машинном языке очень длинные последовательности единиц и нулей, являлись машинно-зависимыми, то есть для каждой ЭВМ была необходимость составлять собственную программу. Машинные и машинно-ориентированные языки - это языки «низкого уровня», требующие указания мелких деталей процесса обработки данных. А языки «высокого уровня» имитируют естественные языки, при этом используя некоторые слова разговорного языка и общепринятые математические символы. Данные языки более удобны для человека.

    1. Ассемблер (начало 50-ых годов XX века).

    В данный период вместо 1 и 0 программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (это специальная программа, которая переводит в машинный код). Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие имена соответствуют отдельным машинным командам. Используется для представления в форме программ, записанных в машинном коде.

    1. Первые языки программирования высокого уровня.

    С середины 50-ых гг. XX века начали создавать первые языки программирования высокого уровня (high-level language). Эти языки были машинно-независимыми (не привязаны к определённому типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы. Данные языки были разработаны для того, чтобы освободить программиста от учета технических особенностей отдельных компьютеров. Уровень языка характеризуется степенью его близости к естественному языку. Машинный язык не похож на человеческий, он крайне беден в своих изобразительных средствах. К ним относятся: FORTRAN (FORmula TRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – Common Business-Oriented Language)); язык BASIC (Beginner’s All Purpose Instuction Code – универсальный язык символьных инструкций для начинающих; 1964)

    1. Алгоритмические языки программирования.

    С начала 80-ых г. XX века начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора цикла). К этим языкам относятся: язык Pascal, который был назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля (1970); язык «Си», позволяющий быстро и эффективно создавать программный код (1971).

    1. Языки объектно-ориентированного программирования (90-ые г. XX века).
      В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны среды программирования, позволяющие визуально конструировать графический интерфейс приложений:

    язык С++ (1983) - продолжение алгоритма языка Си;

    язык Object Pascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);

    язык Visual Basic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.

    1. Языки программирования для компьютерных сетей.

    В 90-ые годы XX века в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными операционными системами (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:

    язык Java - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения (1995);

    язык JavaScript – язык сценариев Web-страниц (компания Netscape; 1995)

    1. Языки программирования на платформе .NET.

    Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

    на языке Visual Basic .Net ( на основе Visual Basic) - 2003 г.;

    на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;

    на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.

    Для того, чтобы процессор мог выполнить программу, данные должны быть загружены в оперативную память (Далее ОП). Необходимо, чтобы в ОП была размещена программа-транслятор, автоматически переводящая с языка программирования в машинные коды. Трансляторы бывают двух типов: интерпретаторы и компиляторы. Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), к недостаткам можно отнести малую скорость выполнения. Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением .exe).


    2. ОБЗОР СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ



    Алгоритмический язык (язык программирования) представляет собой один из способов записи алгоритма. Язык программирования является строго формализованным, то есть все команды записываются по определенным правилам и отступления от этих правил не допускаются. Например, в русском языке можно при разделении элементов перечисления поставить запятую (,) или точку с запятой (;). А в языке программирования при записи команд нельзя изменить ни одного знака - возникает ошибка.

    Программа, написанная на языке программирования, состоит из команд (операторов), задающих последовательность действий. Эти действия выполняются над некоторыми объектами. Объектами могут быть числа, текстовые строки, переменные. Языки отличаются друг от друга множеством допустимых объектов и набором операций, которые можно выполнять над этими объектами.

    Первым значительным шагом представляется переход к языку ассемблера. Не очень заметный, казалось бы, шаг — переход к символическому кодированию машинных команд — имел на самом деле огромное значение.

    Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Более того, зачастую одинаковые по сути команды кодировались совершенно различным образом в зависимости от своих параметров.

    Появилась также возможность использования макросов и меток, что также упрощало создание, модификацию и отладку программ. Появилось даже некое подобие переносимости — существовала возможность разработки целого семейства машин со сходной системой команд и некоего общего ассемблера для них, при этом не было нужды обеспечивать двоичную совместимость.

    Среди универсальных языков программирования в настоящее время наиболее распространены следующие.

      1. СИ [C] И ЕГО РАЗНОВИДНОСТИ



    Язык программирования Си [C] - это многоцелевой язык программирования высокого уровня, он был разработан в 1970-х годах Деннисом Ритчи на базе языка BCPL. Используется на мини ЭВМ и ПЭВМ, является базовым языком операционной системы Unix, однако применяется и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая и операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе и «Turbo C» созданный фирмой Borland, а Microsoft C и Quick C, Zortech C фирмой Microsoft, Symantec. Многие из указанных версий обеспечивают работу с «Си» и «Си++». Он разрабатывался как язык системного программирования, для которого возможно создать однопроходный компилятор. Стандартная библиотека у него невелика. Как следствие данных факторов компиляторы разрабатываются сравнительно легко. Поэтому данный язык доступен на самых различных платформах. К тому же, несмотря на свою низкоуровневую природу, язык ориентирован на переносимость. Программы, соответствующие стандарту языка, могут компилироваться под различные архитектуры компьютеров. Изначально целью языка являлось облегчение написания больших программ с минимизацией ошибок по сравнению с ассемблером, следуя принципам процедурного программирования, но избегая всего, что может привести к дополнительным накладным расходам, специфичным для языков высокого уровня.

    «Си++» [C++] это язык программирования высокого уровня, созданный на базе языка Си Бьярном Страустрапом. Он является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система «Turbo C++».

    «C#» (C Sharp) – «Си Шарп»: объектно-ориентированный яык программирования, о разработке которого в 2000 голу объявила фирма Microsoft . По своему характеру он схож с языком «C++» и «Java» и предназначен для разработчиков программ, использующих языки «C» и «С++» для того, чтобы они могли более эффективно создавать интернет-приложения. Указывается, что «C #» будет тесно интегрирован с языком XML.
    2.2 PASCAL

    Паскаль [PASCAL] – это процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Он назван в честь французского физика, математика и философа восемнадцатого века Блеза Паскаля. В своей начальной версии Паскаль имел довольно ограниченные возможности, поскольку предназначался для учебных целей, однако последующие его доработки позволили сделать его хорошим универсальным языком, широко используемым для написания больших и сложных программ. Существует ряд версий языка например: ETH Pascal, USD Pascal, Turbo Pascal и систем программирования на этом языке для разных типов ЭВМ. Для IBM PC наиболее популярной является система Turbo Pascal. Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы  язык  Модула 2.

    К сожалению, данный язык программирования с каждым годом изживает себя. По сравнению с С и С++ Паскаль имеет более громоздкие конструкции. Чтобы выразить свою мысль приходится больше писать. В большом тексте тяжелее найти ошибки.

    В Pascal  отсутствует масса необходимых для создания современных приложений возможностей, в коммерческой разработке он не используется. 

    2.3 JAVA

    Java — строго типизированный объектно-ориентированный язык программирования, разработанный компанией «Sun Microsystems» (в последующем приобретённой компанией «Oracle»). Разработка ведётся сообществом, организованным через «Java Community Process», язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации «Oracle».

    Изначально язык назывался Oak в переводе «Дуб», разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств. Из-за того, что язык с таким названием уже существовал, Oak был переименован в Java. Назван в честь марки кофе Java, которая, в свою очередь, получила наименование одноимённого острова (Ява), поэтому на официальной эмблеме языка изображена чашка с горячим кофе. Существует и другая версия происхождения названия языка, связанная с аллюзией на кофе-машину как пример бытового устройства, для программирования которого изначально язык создавался. В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось.

    Java- это серьёзный объектно-ориентированный язык, на котором пишут программы для компьютеров и мобильные приложения. Он интересен тем, что один и тот же код можно скомпилировать под множество разных платформ. Java - один из основных языков для разработки под Android.

    Язык программирования Java работает с веб-приложениями, которые транслируются в байт-код. Он может работать на любой компьютерной архитектуре, так как код преобразуется с помощью Java-машины. Он появился в 1996 году и последние годы он стал самым популярным языком программирования. Однако многие недовольны из-за того, что он работает медленнее, чем его конкуренты.

    Перечислить все бренды, которые используют Java, невозможно. В качестве примера можно взять YouTube, Netflix, Facebook, EBay, PayPal.

    То, что в свое время Google выбрал Java для разработки Android, подогрело интерес к этому языку среди разработчиков. Сегодня это самая популярная операционная система, и практически все мобильные приложения для нее написаны на Java.

    2.4 PYTHON

    Python — активно развивающийся язык программирования, новые версии с добавлением/изменением языковых свойств выходят примерно раз в два с половиной года. Язык не подвергался официальной стандартизации, роль стандарта де-факто выполняет CPython, разрабатываемый под контролем автора языка. В настоящий момент Python занимает третье место в рейтинге TIOBE с показателем 8,5 %. Аналитики отмечают, что это самый высокий балл Python за все время его присутствия в рейтинге.

    Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в группе новостей alt.sources. С самого начала Python проектировался как объектно-ориентированный язык.

    Название языка произошло вовсе не от названия семейства пресмыкающихся. Автор назвал язык в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона». Впрочем, всё равно название языка чаще связывают именно со змеёй, нежели с передачей  пиктограммы файлов в KDE или в Microsoft Windows и даже эмблема на сайте python.org (до выхода версии 2.5) изображают змеиные головы. Важная цель разработчиков Python — создавать его забавным для использования. Это отражено в его названии, которое пришло из Монти Пайтона. Также это отражено в иногда игривом подходе к обучающим программам и справочным материалам. Синтаксис Питона всегда выделял его на фоне других языков программирования. Он не страдает избыточностью, схожесть синтаксиса с обычным английским позволяет понять код даже обычному пользователю, кроме того, программист пишет меньше строк кода, потому что нет необходимости использовать символы: «;», «{», «}». Вложенность обозначается отступами, что повышает читаемость кода и приучает новичков к правильному оформлению.

    3. РАЗРАБОТКА ЯЗЫКА ПРОГРАММИРОВАНИЯ

    3.1 ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР / ЛЕКСЕР


    Первый шаг в большинстве языков программирования является лексический анализ. Он представляет собой разбиение текста на токены, другими словами на единицы языка: переменные, названия функций (идентификаторы), операторы, числа.

    Таким образом, подав лексеру на вход строку с исходным кодом, мы получим на выходе список всех токенов, которые в ней содержатся (Рисунок1).


    Рисунок 1. Строка исходного кода проходит через лексер и превращается в список токенов.
    Обращения к исходному коду уже не будет происходить на следующих этапах, поэтому лексер должен выдать всю необходимую для них информацию.

    3.2. FLEX


    При создании языка первое, что необходимо учесть - это лексер. Входе проведения анализа прочитанной литературы, я изучил инструменты, которые могли бы сделать лексический анализ проще и уменьшить количество возникающих багов.

    Одним из основных таких инструментов является Flex - генератор лексических анализаторов. Он принимает на вход файл с описанием грамматики языка, а потом создаёт программу на C, которая в свою очередь анализирует строку и выдаёт нужный результат.

    3.3. СОБСТВЕННОЕ РЕШЕНИ.


    Я решил оставить написанный мной анализатор, так как особых преимуществ у Flex  в конечном  итоге не увидел, а его использование только создало бы дополнительные зависимости, усложняющие процесс сборки.

    К тому же, мой выбор обеспечивает больше гибкости - например, можно добавить к языку оператор без необходимости редактировать несколько файлов. Список токенов проходит через парсер и превращается в дерево.

    Следующая стадия – это парсер. Он преобразует исходный текст, то есть список токенов (с учётом скобок и порядка операций), в абстрактное синтаксическое дерево, которое позволяет структурно представить правила создаваемого языка. Сам по себе процесс можно назвать простым, но с увеличением количества языковых конструкций он сильно усложняется.

    В следующем шаге я также думал использовать стороннюю библиотеку, рассматривая BISON для генерации синтаксического анализатора. Он во многом похож на Flex — пользовательский файл с синтаксическими правилами структурируется с помощью программы на языке C. Но я снова отказался от средств автоматизации.

    С лексером писать и использовать свой код (длиной около 200 строк) было довольно очевидным так как я люблю задачки, а эта к тому же относительно тривиальная. С парсером другая история: сейчас длина кода для него составляет около 750 строк.

    Основные причины применения парсера:

    • минимизация переключения контекста;

    • упрощение сборки;

    • желание справиться с задачей самостоятельно.

    В целесообразности использования решения меня убедило высказывание Уолтера Брайта (создатель языка D ) в одной из своей статьи: «Я бы не советовал использовать генераторы лексических и синтаксических анализаторов, а также другие так называемые «компиляторы компиляторов».

    Написание лексера и парсера не займёт много времени, а использование генератора накрепко привяжет вас к нему в дальнейшей работе (что имеет значение при портировании компилятора на новую платформу). Кроме того, генераторы отличаются выдачей не релевантных сообщений об ошибках.

    Абстрактный семантический граф




    Рисунок 2. Переход от синтаксического дерева к семантическому графу
    В этой части я реализовал структуру, по своей сути наиболее близкую к «промежуточному представлению» (intermediate representation) в LLVM. Существует небольшая, но важная разница между абстрактным синтаксическим деревом (АСД) и абстрактным семантическим графом (АСГ).

    Другими словами семантический граф - это синтаксическое дерево с контекстом. Он содержит информацию о месте использования переменной. Так как графу нужно распознать и запомнить весь этот контекст, коду, который его генерирует, необходима поддержка в виде множества различных поясняющих таблиц.

    После того, как граф составлен, запуск программы становится весьма простой задачей. Каждый узел содержит реализацию функции, которая получает некоторые данные на вход, делает то, что запрограммировано (включая возможный вызов вспомогательных функций), и возвращает результат (интерпретатор в действии).

    Далее необходимо написать компилятор. Сначала мне понравилась мысль  о том, что, я люблю делать вещи сам, к тому же давно хотел изучить язык ассемблера. Вот только создать с нуля кроссплатформенный компилятор — сложнее, чем написать машинный код для каждого элемента языка. Я счёл эту идею абсолютно не практичной и не стоящей затраченных ресурсов.

    LLVM — это коллекция инструментов для компиляции, которой пользуются, например, разработчики Swift, Rust и Clang. Я решил остановиться на этом варианте, но опять не рассчитал сложности задачи, которую перед собой поставил. Для меня проблемой оказалось не освоение ассемблера, а работа с огромной многосоставной библиотекой.

    Мне всё же нужно было какое-то решение, поэтому я написал то, что точно будет работать: транспайлер (transpiler) из Pinecone в C++  он производит компиляцию по типу «исходный код в исходный код», а также добавил возможность автоматической компиляции вывода с GCC. Такой способ не является ни масштабируемым, ни кроссплатформенным, но на данный момент хотя бы работает почти для всех программ на Pinecone.

    Сейчас мне не достаёт необходимой практики, но в будущем я собираюсь от начала и до конца реализовать компилятор Pinecone с помощью LLVM — инструмент мне нравится и руководства к нему хорошие. Пока что интерпретатора хватает для примитивных программ, а транспайлер справляется с более сложными.

    ЗАКЛЮЧЕНИ
    Изобретение языков программирования высшего уровня, а также их постоянное совершенствование и развитие, позволило человеку не только общаться с машиной и понимать ее, но использовать ЭВМ для сложнейших расчетов в области самолетостроения, ракетостроения, медицины и даже экономики.

    На сегодняшний день любое среднее и крупное предприятие имеет в своем штате группу программистов, обладающих знаниями программирования различными языками, которые редактируют, изменяют и модифицируют программы, используемые сотрудниками предприятия. Это говорит о том, что на рынке труда пользуются спросом обладающие знаниями и опытом работы с различными языками программирования люди.

    То есть, я доказал, что с усовершенствованием старых и созданием новых языков программирования людям стало легче работать, а программирование стало не таким сложным.

    В данном проекте мною были рассмотрены самые распространенные языки программирования, такие как: Фортран, Паскаль, Бейсик, которые используются для научных вычислений, для обучения программированию начинающих программистов.

    На данный момент я уже обучаюсь программированию на языке Python и задумываюсь над тем, чтобы связать свою жизнь с профессией программиста.

    Несмотря на то, что современный уровень развития языков программирования является довольно высоким, тенденция их развития, а также развития информационных технологий в целом, складывается таким образом, что можно предположить, что в ближайшем будущем, человеческие познания в этой сфере помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информацию в виде мысли, слова, звука или жеста.


    СПИСОК ИСПОЛЬЗОВАННЫХ ИНФОРМАЦИОННЫХ ИСТОЧНИКОВ


    1. Босова Л.Л., Информатика: учебник для 8 класса / Л.Л. Босова, А.Ю. Босова. – М.: БИНОМ. Лаборатория знаний, 2016. – 160с.

    2. Босова Л.Л., Информатика: учебник для 9 класса / Л.Л. Босова, А.Ю. Босова. – М.: БИНОМ. Лаборатория знаний, 2017.- 184с.

    3. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.

    4. https://ru.wikipedia.org/wiki/Java

    5. https://ru.wikipedia.org/wiki/Python

    6. https://topref.ru/referat/56190.html

    7. https://elenaruvel.com/yazyki-programmirovaniya-obzor/




    написать администратору сайта