Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Современные языки программирования (Машинный язык)

Содержание:

Введение

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

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

Современные языки программирования старше Интернета, Windows и персонального компьютера минимум на десятилетие. При этом новые языки не переставали регулярно появляться, однако ни один из них не задержался в практике программирования, хотя приносимые ими новые идеи дополняли уже известные языки (как это произошло с объектно-ориентированным программированием).

Тема «Языки программирования» очень актуальна в настоящее время, это обусловлено тем, что усиливается процесс компьютеризации общества, в следствии чего создается большое количество программ, игр и т.д.

Объектом исследования послужили языки программирования, история их развития и обзор современных языков программирования.

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

Задачи исследования:

  1. Ознакомления с языками программирования.
  2. Рассмотрение истории развития языков программирования.
  3. Обзор современных языков программирования.

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

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

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

Применяемые технические средства: Intel® Core™ i3 CPU M370 2.40 GHz.

Программные средства OC WINDOWS 7.

Данная курсовая работа выполнена в программе Microsoft Word 2010.

1. История развития языков программирования

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

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

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов. Система кодирования, предложенная Моучли, увлекла одну из сотрудниц его компании - Грейс Мюррей Хоппер, которая посвятила всю свою жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в мире программистом первого в мире большого цифрового компьютера». Впоследствии она писала: «Я имела то преимущество, что изучала как технику, так и математику и знала, как работает машина от начала и до конца».[1]

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

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

десятка разнообразных языков программирования.

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

  1. Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
  2. Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
  3. Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

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

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

1.1 Машинный язык

Машинный язык появился в 40-50 годы XX в. Это язык программирования, содержание и правила которого реализованы аппаратными средствами ЦВМ. М. я. состоит из системы команд ЦВМ и метода кодирования информации (исходных данных, результатов вычислений), принятого в ЦВМ. Символами М. я. являются двоичные цифры. Эффективность решения различных задач на ЦВМ в значительной степени зависит от того, насколько М. я. приспособлен для реализации заданных алгоритмов. В программе, составленной на М. я., или, как иногда говорят, в машинном коде, должны быть заданы вполне определённые команды для выполнения каждой операции. При этом точно указывается, где должны храниться числа (ячейка запоминающего устройства), как пересылать и обрабатывать числа и где хранить результаты вычислений.

Программирование на М. я. ведётся в системе команд ЦВМ, поэтому М. я. рекомендуется использовать для создания программ (операционные системы, трансляторы алгоритмических языков, библиотеки стандартных программ), расширяющих логические возможности ЦВМ, и для создания программ, на которые наложены ограничения по времени выполнения и объёму памяти ЦВМ. Недостатки программирования на М. я.: программы, написанные для ЦВМ одного типа, не пригодны для ЦВМ другого типа; продолжительные сроки обучения программистов; программист, научившийся программировать на одной машине, должен фактически переучиваться при переходе к программированию на другой машине. При программировании на машинном языке программист может держать под контролем каждую команду процессора и использование каждой ячейки памяти, и тем самым максимально использовать все возможности машины. Но процесс этот очень трудоемкий и утомительный. Поэтому, если нужно разработать эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).

1.2 Ассемблер (машинно-ориентированный язык)

Язык ассемблера появился в начале 50-ых годов XX в. — это машинно-зависимый язык низкого уровня, в котором отдельным машинным командам соответствуют мнемонические (легко запоминаемые) имена, записываемые в текстовом виде. Трансляция программы в исполняемый машинный код производится ассемблером — программой-транслятором, которая и дала языку ассемблера его название. Команды языка ассемблера один к одному соответствуют командам процессора, фактически, они представляют собой более удобную для человека символьную форму записи (мнемокод) команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора.

Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы — Intel-синтаксис и AT&T-синтаксис.

Достоинства: язык ассемблера позволяет писать самый быстрый и компактный код, какой вообще возможен для данного процессора.

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

При программировании на языке ассемблера возможен непосредственный доступ к аппаратуре, в том числе портам ввода-вывода, регистрам процессора и др.

Язык ассемблера применяется для создания драйверов оборудования и ядра операционной системы. Также используется для создания «прошивок» BIOS.

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

Недостатки

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

В силу машинной ориентации («низкого» уровня) языка ассемблера человеку сложнее читать и понимать программу на нём по сравнению с языками программирования высокого уровня; программа состоит из слишком «мелких» элементов — машинных команд. Требуется высокая квалификация программиста. Отсутствует переносимость программ на компьютеры с другой архитектурой и системой команд.

Исторически можно рассматривать язык ассемблера как второе поколение языков программирования ЭВМ (первый-машинный код). Недостатки языка ассемблера, сложность разработки на нём больших программных комплексов привели к появлению языков третьего поколения — языков программирования высокого уровня (Фортран, Лисп, Кобол, Паскаль, Си и др.). Однако языки ассемблера сохраняют свою нишу, обусловливаемую их уникальными преимуществами в части эффективности и возможности полного использования специфических средств конкретной платформы.

На языке ассемблера фрагменты программ, для которых критически важны (много реже программы пишутся на ассемблере целиком):

быстродействие (драйверы, игры);

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

С использованием программирования на языке ассемблера производятся:

  1. Оптимизация критичных к скорости участков программ, написанных на языке высокого уровня, таком как C++. Это особенно актуально для игровых приставок, имеющих фиксированную производительность, и для мультимедийных кодеков, которые стремятся делать менее ресурсоёмкими и более популярными.
  2. Создание операционных систем. Причем подавляющее большинство ОС пишут на Си, языке, который специально был создан для написания одной из первых версий UNIX. Небольшие кусочки ОС, такие как загрузчик ОС, уровень абстрагирования от аппаратного обеспечения  и ядро, часто пишутся с применением ассемблерных вставок. Фактически, ассемблерного кода в ядрах Windows или Linux совсем немного, поскольку авторы стремятся к переносимости и надёжности, но, тем не менее, он присутствует. Некоторые любительские ОС, такие как MenuetOS, целиком написаны на языке ассемблера.
  3. Программирование микроконтроллеров (МК) и других встраиваемых процессоров. На сегодняшний день для программирования МК весьма часто применяются нередко, но уже реже, чем языки высокого уровня.
  4. Создание драйверов. Некоторые участки драйверов, программируют на языке ассемблера. Хотя в целом в настоящее время драйверы стараются писать на языках высокого уровня в связи с повышенными требованиями к надёжности и достаточной производительностью современных процессоров. Надёжность для драйверов играет особую роль, поскольку в Windows NT и Linux драйверы работают в режиме ядра. Одна ошибка может привести к краху системы.

В СССР язык ассемблера ранее называли «автокод».

Использование термина «язык ассемблера» также может вызвать ошибочное мнение о существовании некоего единого языка низкого уровня или хотя бы стандартов на такие языки. При именовании языка ассемблера желательно уточнять, ассемблер для какой архитектуры имеется в виду.

Три встречающихся варианта употребления термина "ассемблер":

1) программа ассемблер (применительно к трансляторам);

2) язык ассемблера для конкретной вычислительной системы (полное наименование);

3) язык Ассемблер (сокращенное нарицательное название безотносительно от вычислительной системы, пишется с заглавной буквы).

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

С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня. Эти языки были машинно-независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.

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

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

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

Примеры таких языков: FORTRAN предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений; язык BASIC– универсальный язык символьных инструкций для начинающих) (1964 г.).

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

С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода.

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

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

К этим языкам относятся: язык Pascal; язык Си.

1.5 Языки объектно-ориентированного программирования

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

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

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

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

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

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

Примерами таких языков являются:

  • язык Java - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения (1995);
  • язык JavaScript – язык сценариев Web-страниц (компания Netscape). (1995).
  • HTML. Общеизвестный язык для оформления документов. Он очень прост и содержит элементарные команды форматирования текста, добавления рисунков, задания шрифтов и цветов, организации ссылок и таблиц. Все Web-страницы написаны на языке HTML.
  • Perl. Он задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. В него введены функции работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, работы с системной информацией.

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

Языки программирования .NET (Языки с поддержкой CLI или CLI-языки) —используются для создания библиотек и программ, удовлетворяющих требованиям Common Language Infrastructure. За исключением некоторых серьезных оговорок, большинство CLI-языков целиком компилируются в Common Intermediate Language (CIL), промежуточный язык, который может быть оттранслирован непосредственно в машинный код при помощи виртуальной машины Common Language Runtime (CLR), являющуюся частью Microsoft .NET Framework, Mono и Portable.NET.

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

  • Scala. Scala была выпущена для общего пользования на платформе JVM в январе 2004 года и на платформе .NET в июне 2004 года.
  • А́да (Ada) — язык программирования, создан в 1979—1980 г. Министерством обороны США с целью разработать единый язык программирования для встраиваемых систем (то есть систем управления автоматизированными комплексами, работающими в реальном времени).

2. Обзор современных языков программирования

2.1 С и его разновидности

Язык "C"(произносится "си") - это универсальный язык программирования, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Язык "C" не является ни языком "очень высокого уровня", ни "большим" языком, и не предназначается для некоторой специальной области применения. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Язык Си активно используется для обучения программированию.

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

Особенности

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

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

  1. простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами;
  2. ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования;
  3. систему типов, предохраняющую от бессмысленных операций;
  4. использование препроцессора для, например, определения макросов и включения файлов с исходным кодом;
  5. непосредственный доступ к памяти компьютера;
  6. минимальное число ключевых слов;
  7. передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
  8. указатели на функции и статические переменные
  9. области действия имён;
  10. структуры и объединения — определяемые пользователем собирательные типы данных, которыми можно манипулировать как одним целым;

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

Хранение данных

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

В Си есть три разных способа выделения памяти (классы памяти) для объектов:

  • Статическое выделение памяти.
  • Автоматическое выделение памяти.
  • Динамическое выделение памяти.

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

Проблемы

Многие элементы Си потенциально опасны, а последствия неправильного использования этих элементов зачастую непредсказуемы. В связи со сравнительно низким уровнем языка многие случаи неправильного использования опасных элементов не обнаруживаются и не могут быть обнаружены ни при компиляции, ни во время исполнения. Это часто приводит к непредсказуемому поведению программы. Иногда в результате неграмотного использования элементов языка появляются уязвимости в системе безопасности.

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

Другим потенциальным источником опасных ситуаций служит механизм указателей. Указатель может ссылаться на любой объект в памяти, включая и исполняемый код программы, и неправильное использование указателей может порождать непредсказуемые эффекты и приводить к катастрофичным последствиям. К примеру, указатель может быть неинициализированным или, в результате неверных арифметических операций над указателем, указывать в произвольное место памяти; на некоторых платформах работа с таким указателем может вызвать аппаратную остановку программы, на незащищённых же платформах это может привести к порче произвольных данных в памяти, причём эта порча может проявиться в самые произвольные моменты времени и намного позже момента порчи. Также, область динамической памяти, на которую ссылается указатель, может быть освобождена (и даже выделена после этого под другой объект) — такие указатели называются «висячими». Или, наоборот, после манипуляций с указателями на область динамической памяти может не остаться ссылок, и тогда эта область, называемая «мусором» (garbage), никогда не будет освобождена, что может приводить к «утечкам памяти» в программе. В других языках подобные проблемы пытаются решить введением более ограниченных ссылочных типов.

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

Ещё одной распространённой проблемой является то, что память не может быть использована снова, пока она не будет освобождена программистом с помощью функции free(). В результате программист может случайно забыть освобождать эту память, но продолжать её выделять, занимая всё большее и большее пространство. Это обозначается термином утечка памяти. Наоборот, возможно освободить память слишком рано, но продолжать её использовать. Из-за того, что система выделения может использовать освобождённую память по-другому, это ведёт к непредсказуемым последствиям. Эти проблемы решаются в языках со сборкой мусора. С другой стороны, если память выделяется в функции и должна освобождаться после выхода из функции, данная проблема решается с помощью автоматического вызова деструкторов в языке C++, или с помощью локальных массивов, используя расширения С99.

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

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

История

Язык программирования Си был разработан в лабораториях Bell Labs в период с 1969 по 1973 годы. Согласно Ритчи, самый активный период творчества пришёлся на 1972 год. Язык назвали «Си» (C — третья буква латинского алфавита), потому что многие его особенности берут начало от старого языка «Би» (B — вторая буква латинского алфавита). Существует несколько различных версий происхождения названия языка Би..

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

Разработка Си стала результатом того, что его будущие авторы любили компьютерную игру, подобную популярной игре Asteroids (Астероиды). Они уже давно играли в неё на главном сервере компании, который был недостаточно мощным и должен был обслуживать около ста пользователей. Томпсон и Ритчи посчитали, что им не хватает контроля над космическим кораблём для того, чтобы избегать столкновений с некоторыми камнями. Поэтому они решили перенести игру на свободный PDP-7, стоящий в офисе. Однако этот компьютер не имел операционной системы, что заставило их её написать. В конце концов, они решили перенести эту операционную систему ещё и на офисный PDP-11, что было очень тяжело, потому что её код был целиком написан на ассемблере. Было вынесено предложение использовать какой-нибудь высокоуровневый портируемый язык, чтобы можно было легко переносить ОС с одного компьютера на другой. Язык Би, который они хотели сначала задействовать для этого, оказался лишён функциональности, способной использовать новые возможности PDP-11. Поэтому они и остановились на разработке языка Си.

Самый первый компьютер, для которого была первоначально написана UNIX, предназначался для создания системы автоматического заполнения документов. Первая версия UNIX была написана на ассемблере. Позднее для того, чтобы переписать эту операционную систему, был разработан язык Си.

К 1973 году язык Си стал достаточно силён, и большая часть ядра UNIX, первоначально написанная на ассемблере PDP-11/20, была переписана на Си. Это было одно из самых первых ядер операционных систем, написанное на языке, отличном от ассемблера; более ранними были лишь системы Multics (написана на ПЛ/1) и TRIPOS (написана на BCPL).

K&R C

В 1978 году Ритчи и Керниган опубликовали первую редакцию книги «Язык программирования Си». Эта книга, известная среди программистов как «K&R», служила многие годы неформальной спецификацией языка. Версию языка Си, описанную в ней, часто называют «K&R C». (Вторая редакция этой книги посвящена более позднему стандарту ANSI C, описанному ниже.)

K&R ввёл следующие особенности языка:

  1. структуры (тип данных struct);
  2. длинное целое (тип данных long int);
  3. целое без знака (тип данных unsigned int);
  4. оператор += и подобные ему (старые операторы =+ вводили анализатор лексики компилятора Си в заблуждение, например, при сравнении выражений i =+ 10 и i = +10).

K&R C часто считают самой главной частью языка, которую должен поддерживать компилятор Си. Многие годы даже после выхода ANSI C, он считался минимальным уровнем, которого следовало придерживаться программистам, желающим добиться от своих программ максимальной портативности, потому что не все компиляторы тогда поддерживали ANSI C, а хороший код на K&R C был верен и для ANSI C.

После публикации K&R C в язык было добавлено несколько возможностей, поддерживаемый компиляторами AT&T и некоторых других производителей:

функции, не возвращающие значение (с типом void) и указатели, не имеющие типа (с типом void *);

функции, возвращающие объединения и записи;

имена полей данных записей в разных пространствах имён для каждой записи;

присваивания записей;

спецификатор констант (const);

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

перечислимый тип (enum);

дробное число одинарной точности (float).

ISO C

В конце 1970-х годов Си начал вытеснять Бейсик с позиции ведущего языка для программирования микрокомпьютеров. В 1980-х годах он был адаптирован для использования в IBM PC, что привело к резкому росту его популярности. В то же время Бьярне Строуструп и другие в лабораториях Bell Labs начали работу по добавлению в Си возможностей объектно-ориентированного программирования. Язык, который они в итоге сделали, C++, в настоящее время является самым распространённым языком программирования. Си остаётся более популярным в UNIX-подобных системах.

В 1983 году Американский Национальный Институт Стандартизации (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого долгого и сложного процесса в 1989 году он был наконец утверждён как «Язык программирования Си» ANSI X3.159-1989. Эту версию языка принято называть ANSI C или C89. В 1990 году стандарт ANSI C был принят с небольшими изменениями Международной Организацией по Стандартизации (ISO) как ISO/IEC 9899:1990.

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

ANSI C сейчас поддерживают почти все существующие компиляторы. Почти весь код Си, написанный в последнее время, соответствует ANSI C. Любая программа, написанная только на стандартном Си, гарантированно будет правильно выполняться на любой платформе, имеющей соответствующую реализацию Си. Однако большинство программ написаны так, что они будут компилироваться и исполняться только на определённой платформе, потому, что:

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

они используют специфические платформо-зависимые средства;

они рассчитаны на определённое значение размера некоторых типов данных или на определённый способ хранения этих данных в памяти для конкретной платформы.

C99

После стандартизации в ANSI спецификация языка Си оставалась относительно неизменной в течение долгого времени, в то время как Си++ продолжал развиваться (в 1995 году в стандарт Си была внесена Первая нормативная поправка, но её почти никто не признавал). Однако в конце 1990-х годов стандарт подвергся пересмотру, что привело к публикации ISO 9899:1999 в 1999 году. Этот стандарт обычно называют «С99». В марте 2000 года он был принят и адаптирован ANSI.

Вот некоторые новые особенности С99:

  • подставляемые функции (inline);
  • отсутствие ограничений на место объявления локальных переменных (как и в С++);
  • новые типы данных, такие как long long int (для облегчения перехода от 32- к 64-битным числам), явный булевый тип данных _Bool и тип complex для представления комплексных чисел;
  • массивы переменной длины;
  • поддержка ограниченных указателей (restrict);
  • именованная инициализация структур: struct { int x, y, z; } point = { .y=10, .z=20, .x=30 };
  • поддержка однострочных комментариев, начинающихся на //, заимствованных из C++ (многие компиляторы Си поддерживали их и ранее в качестве дополнения);
  • несколько новых библиотечных функций, таких как snprintf;
  • несколько новых заголовочных файлов, таких как stdint.h.

Интерес к поддержке новых особенностей С99 в настоящее время смешан. В то время как GCC, компилятор Си от Sun Microsystems и некоторые другие компиляторы в настоящее время поддерживают большую часть новых особенностей С99, компиляторы компаний Borland и Microsoft не делают этого, причём похоже, что две эти компании и не думают их добавлять.

Связь с C++

Язык программирования С++ произошёл от Си. Однако в дальнейшем Си и C++ развивались независимо, что привело к росту несовместимостей между ними. Последняя редакция Си, С99, добавила в язык несколько конфликтующих с С++ особенностей. Эти различия затрудняют написание программ и библиотек, которые могли бы нормально компилироваться и работать одинаково в компиляторах Си и C++, что, конечно, запутывает тех, кто программирует на обоих языках.

Бьёрн Страуструп, придумавший С++, неоднократно выступал за максимальное сокращение различий между Си и C++ для создания максимальной совместимости между этими языками. Противники же такой точки зрения считают, что так как Си и C++ являются двумя различными языками, то и совместимость между ними не так важна, хоть и полезна. Согласно этому лагерю, усилия по уменьшению несовместимости между ними не должны препятствовать попыткам улучшения каждого языка в отдельности.

Вот различия между этими языками, существующие на сегодня:

inline — подставляемые функции существуют в глобальном пространстве С++, а в Си — в пространстве файла (статическом пространстве). Другими словами, это значит, что в С++ любое определение подставляемой функции (независимо от переопределения функций) должно соответствовать правилу одного определения, требующего того, чтобы любая подставляемая функция была определена только один разВ отличие от C++, макрос bool в С99 требует включения соответствующего заголовочного файла stdbool.h. В стандарте C99 определен собственный тип логических данных _Bool. Предыдущий стандарт Си (C89) не определял булевый тип вообще, поэтому для этого часто использовались различные (а значит, несовместимые) методы.

Символьные константы (заключённые в одинарные кавычки) имеют тип int в Си и тип char в C++. Поэтому в Си справедливо равенство sizeof('a') == sizeof(int), а в C++ — равенство sizeof('a') == sizeof(char).[3]

Некоторые новые возможности C99, в первую очередь, restrict, не включены в стандарт С++.

Си перенял от C++ ряд особенностей:

прототипы объявления функций;

однострочные комментарии, начинающиеся на // и заканчивающиеся символом перевода строки;

более сильную проверку типов, включая добавление типа void, спецификатора const и удаление принятия по умолчанию типа int в качестве возвращаемого значения.

2.2 Паскаль

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

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

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

Реализации:

  1. В 1978 году в Университете Сан-Диего (Калифорния, США) была разработана система UCSD p-System, включавшая порт виртовского компилятора с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и пр., а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и пр. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.
  2. В 1986 году фирма Apple Computer разработала объектное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.
  3. В 1989 году объектное расширение языка было добавлено фирмой Borland в Turbo Pascal версии 5.5 (начиная со следующей версии среда была переименована в Borland Pascal). Объектные средства были позаимствованы из Object Pascal от Apple. Почти в то же самое время, что и Borland, Microsoft выпустил свою версию объектно-ориентированного языка Паскаль. Дальнейшее развитие реализации Паскаля от Borland породило Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получивший одноимённое название.
  4. Современные версии Object Pascal. Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими. Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими. Кроме того, в Южном федеральном университете разрабатывается язык и система программирования PascalABC.NET, ориентированная на обучение современному программированию. Язык системы — это Object Pascal для платформы Microsoft .NET, который содержит все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения, обобщённые классы, сборку мусора, а также некоторые средства параллельного программирования.

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

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Необходимо заметить, что многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. В начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники академик А. П. Ершов разработал алголо-паскалеподобный «алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившая широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

2.3 Фортран

Фортран (Fortran) — первый язык программирования высокого уровня, имеющий транслятор. Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях, а сейчас ведутся работы над очередным стандартом Фортрана F2k, который появится в 2000 году. Имеется стандартная версия Фортрана HPF для параллельных суперкомпьютеров со множеством процессоров.[2]

Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является акронимом от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм. Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений, и многие, многие другие. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования, в частности, ООП.

Фортран в СССР появился позже, чем на Западе, поскольку поначалу в СССР более перспективным языком считался Алгол. Во внедрении Фортрана большую роль сыграло общение советских физиков (в частности Леонтович А. Л.) со своими коллегами из CERN, где в 1960-х годах почти все расчёты велись с использованием программ на Фортране[2].

Широкое внедрение Фортрана началось после создания в 1968 году компилятора ФОРТРАН-ДУБНА для машины БЭСМ-6. Фортран — основной язык для АСВТ и СМ ЭВМ, часто использовался вместе с препроцессором РАТФОР. Машины ЕС ЭВМ, появившиеся в 1972 году, уже изначально имели транслятор Фортрана («позаимствованный» с IBM/360 вместе с другим программным обеспечением).

2.4 Бейсик

Бейсик — семейство высокоуровневых языков программирования.

Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.

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

Предпосылки

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

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

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

Рождение

Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем. Со временем, когда стали появляться другие диалекты, а изначальную реализацию стали называть Dartmouth BASIC.

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

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

  1. быть простым в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступную опытным программистам
  4. быть интерактивным
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

Язык был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

Взрывной рост

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

В 1975 году Microsoft (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова), выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC — компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения — не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.

Зрелость

Microsoft продавала несколько версий Бейсик для MS-DOS/PC DOS, включая BASICA, GW-BASIC (модификация BASICA, не требующая «прошивки» от IBM) и Quick BASIC. Borland, известная своим Turbo Pascal, в 1985 году выпустила Turbo Basic 1.0 (его наследники впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные версии Бейсика, обычно включавшие в себя расширения для работы с графикой, звуком, команды ОС, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).

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

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Хотя и трудно согласиться, что этот язык — действительно Бейсик (несмотря на множество привычных ключевых слов), спустя некоторое время он стал одним из наиболее часто используемых языков на платформе Windows. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995 году, а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript.

Описание языка

Синтаксис языка напоминает Fortran, и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной — это первое её использование.

Заключение

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

Язык C, разработанный компанией Bell Laboratories, является очень эффективным, но низкоуровневым языком программирования. Язык C — это основа современных языков. Самым большим преимуществом языка C++ над его предшественником является поддержка объектно-ориентированного программирования.

Visual Basic, наследник языка BASIC, обеспечивает наилучшую базу программирования для начинающих.

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

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

"Единственный способ изучать новый язык программирования – писать на нём программы" (Брайэн Керниган)

Список литературы

  1. Википедия. Свободная энциклопедия. Язык программирования – Паскаль. http://ru.wikipedia.org/wiki/Паскаль_(язык_программирования) – 7.11.2011
  2. Информатика: учебник /Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005.-272 с
  3. Керниган Б.В. Язык С /Б.В. Керниган, Д.М. Ричи; Под ред. 2001 229 с.
  4. Информатика: базовый курс. 2-е издание / Симонович С.В., Евсеев Г.А., Мураховский В.И., Бобровский С.И.; Под ред. С.В. Симоновича. – СПб.: Питер, 2004. - 640 с.
  5. Могилев А.В. Информатика: Учеб. пособие для студ. пед. вузов / А.В. Могилев, Н.И. Пак, Е.К. Хеннер; Под ред. Е. К Хеннера. – 3 – е изд., перераб. и доп. – М.: Издательский центр «Академия», 2004. – 848 с.
  6. Истомин Е.П. Высокоуровневые методы информатики и программирования: Учебник /Истомин Е.П., Новиков В.В., Новикова М.В. – СПб. ООО «Андреевский издательский дом», 2006 г. – 228 с.
  7. Информатика: учебник. /Б.В. Соболь, А.Б. Галин, Ю.В. Панов и др. Изд. 3-е дополн. и перераб. – Ростов н/Д: Феникс, 2007. – 446 с.
  8. Википедия. Свободная энциклопедия. Язык программирования – язык ассемблера. http;//ru.wikipedia.org/wiki/Язык_ассемблера - 7.11.2011
  9. Понятие о языках высокого уровня. www.maksakov-sa.ru/ProgrProd/ProgramVisokUrovnya/index.html - 7.11.2011
  10. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000. —511 с.: ил.
  11. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.

Приложения

Приложение 1. Фрагмент типичной программы на Бейсике

10 CLS 'Очистка экрана

20 PRINT "Добро пожаловать!" 'Заголовок в первой строке

30 'Цикл, выводящий линию под заголовком, на всю ширину экрана

40 FOR I=1 TO 80

50 PRINT "=";

60 NEXT I

65 'Ввод символьных данных от пользователя (комментарий добавлен после ввода нижних строк)

70 INPUT "Имя: ",N$

80 INPUT "Фамилия: ",S$

90 INPUT "Отчество: ",T$

95 'Вырезаем копию первых символов из имени и отчества

100 N2$=LEFT$(N$,1)

110 T2$=LEFT$(T$,1)

120 'Выводим результат

130 PRINT "Ваше имя кратко: ";S$;" ";N2$;". ";T2$;"."

140 INPUT "Повторить программу? (Y/N) ",U$

150 IF U$="Y" THEN GOTO 10

160 END

Приложение 2. Простейшая программа на Паскале будет выглядеть

следующим образом

program p;

begin

end.

Приложение 3. Возведение в квадрат и извлечение корня в Паскале

program sq;

var X: array[1..5] of longint;

i: integer;

Begin

Writeln('Введите 5 целых чисел:');

for i:= 1 to 5 do

Read(X[i]);

Writeln;

for i:= 1 to 5 do begin

Write('X[',i,']= ',X[i]:5,' ');

Write('sqr(',X[i]:5,')= ',sqr(X[i]):10,' ');

Writeln('sqrt(',X[i]:5,')= ',sqrt(X[i]):5:5,' ');

end;

Readln;

Readln;

End.

Приложение 4. Основные типы данных в Паскале

  1. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: учебное пособие.

  2. Симонович С.В. Информатика: учебник. – СПб.: Питер, 2004.