Реферат: Языки программирования

ГОУ ВПО «ГосударственныйМедицинский Университет»

Кафедра Информатики ивычислительной техники

Реферат по информатике на тему

«Языки программирования»

Выполнил:Ларин С.Л.

Проверил: Артеменко

Андрей Эдуардович

Курск,2006


План

Введение

Стандартизацияязыков программирования

Типыданных

Структурыданных

Семантикаязыков программирования

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

Basic

Pascal

Си

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

Си++

JAVA

Заключение

Литература


Введение

 

Мнения о том,какой язык лучше преподавать, разнятся: от того, что программирование изучатьне нужно, а следует просто поднимать компьютерную грамотность и осваивать офисныепрограммы (как на Западе), до того, что нужно изучать операционные системы инесколько языков программирования различных уровней абстракции и с различнымипарадигмами. Это крайние случаи, но золотую середину найти непросто. В первуюочередь, нам нужно определить цель. Научить логически и алгоритмически мыслить?Познакомить с компьютерами на бытовом уровне, чтобы Вы умели пользоваться интернетом,электропочтой и текстовыми редакторами? Заложить базовые знания, необходимыедля будущих инженеров, математиков, физиков и специалистов по информационнымтехнологиям? А может, нам нужно каждого познакомить с программированием какявлением, чтобы он представлял потенциал компьютерных систем? Много ли из насстанет программистами? Немного. Но синусами и уравнениямиКирхгофа в жизни тоже пользуется некаждый. Безусловно, в науке о программировании есть фундаментальнаясоставляющая, но определить её не просто. Некоторые считают, что не так важно,какой язык программирования взять: на уроках информатики нужно учить не языку программирования,а методам программирования и системному подходу решения задач. Нужно развиватьалгоритмическое мышление и на примерах знакомиться с принципами построениясовременных компьютерных систем. Неужели действительно не так важно, какаясреда и какой конкретный язык программирования будет использован дляпрактических занятий? Оказывается, что у каждого преподавателя есть свой списоктребований к учебному языку программирования. Например: простой, интуитивныйсинтаксис, наличие высокоуровневых инструментов для обнаружения и недопущенияошибок и для отладки программ, наличие качественной документации с примерами,наличие дружелюбной среды разработки, межплатформенность (наличие версий подразличные платформы). У некоторых преподавателей этот список очень короткий,например: «Только Паскаль» или «Любой, кроме Бейсика!»


Стандартизацияязыков программирования

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

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

 

Типыданных

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

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

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


Структурыданных

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

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

 

Семантикаязыков программирования

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

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

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

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

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

Несмотряна то, что большинство языков ориентировано на императивную модель вычислений,задаваемую фоннеймановской архитектурой ЭВМ, существуют и другие подходы. Можноупомянуть языки со стековой вычислительной моделью (Forth, Factor, Postscript идр.), а также функциональное (Лисп, Haskell, ML и др.) и логическоепрограммирование (Пролог) и язык Рефал, основанный на модели вычислений, введённойсоветским математиком А.А. Марковым-младшим.

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

 

Компилируемыеи интерпретируемые языки

Языкипрограммирования могут быть разделены на компилируемые и интерпретируемые.

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

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

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

Разделениена компилируемые и интерпретируемые языки является несколько условным. Так, длялюбого традиционно компилируемого языка, как, например, Паскаль, можно написатьинтерпретатор. Кроме того, большинство современных «чистых» интерпретаторов неисполняют конструкции языка непосредственно, а компилируют их в некотороевысокоуровневое промежуточное представление (например, с разыменованиемпеременных и раскрытием макросов).

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

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

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

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

Некоторыеязыки, например, Java и C#, находятся между компилируемыми и интерпретируемыми.А именно, программа компилируется не в машинный язык, а в машинно-независимыйкод низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной.Для выполнения байт-кода обычно используется интерпретация, хотя отдельные егочасти для ускорения работы программы могут быть транслированы в машинный коднепосредственно во время выполнения программы по технологии компиляции «налету» (Just-in-time compilation, JIT). Для Java байт-код исполняетсявиртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common LanguageRuntime.

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

Современныеязыки программирования рассчитаны на использование ASCII, то есть доступностьвсех графических символов ASCII является необходимым и достаточнымусловием для записи любых конструкций языка. Управляющие символы ASCIIиспользуются ограниченно: допускаются только возврат каретки CR, перевод строкиLF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT ипереход к следующей странице FF).

Подробнеепо этой теме см.: Переносимый набор символов.

Ранниеязыки, возникшие в эпоху 6-битных символов, использовали более ограниченныйнабор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B CD E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + — * / ()., $ ' :

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

Использованиесимволов за пределами ASCII (например, символов KOI8-R или символов Юникода)зависит от реализации: иногда они разрешаются только в комментариях исимвольных/строковых константах, а иногда и в идентификаторах. В СССР существовалиязыки, где все ключевые слова писались русскими буквами, но большуюпопулярность подобные языки не завоевали (исключение составляет. Встроенный языкпрограммирования 1С: Предприятие).

Подробнеепо этой теме см.: Русские языки программирования.

Расширениенабора используемых символов сдерживается тем, что многие проекты по разработкепрограммного обеспечения являются международными. Очень сложно было бы работатьс кодом, где имена одних переменных записаны русскими буквами, других —арабскими, а третьих — китайскими иероглифами. Вместе с тем, для работы стекстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java)поддерживают Unicode.

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

 

Процедурное (императивное) программирование являетсяотражением архитектуры традиционных ЭВМ,которая была предложенафон Нейманом в 1940-х годах. Теоретической модельюпроцедурного программирования служит алгоритмическая система под названием МашинаТьюринга.

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

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

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

 

Basic

Бейсик(отBASIC, сокращение от англ. BeginnersAll-purposeSymbolicInstructionCodeуниверсальный код символических инструкций для начинающих; англ. basicосновной, базовый) —семейство высокоуровневых языковпрограммирования.

Былразработан в 1963 году профессорами Дартмутского колледжа Томасом Куртом (Thomas E. Kurtz) и Джоном Кемени (John G. Kemeny).

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

Предпосылки

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

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

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


Рождение

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

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

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

·         бытьпростым в использовании для начинающих

·         бытьязыком программирования общего назначения

·         предоставлятьвозможность расширения функциональности, доступную опытным программистам

·         бытьинтерактивным

·         предоставлятьясные сообщения об ошибках

·         быстроработать на небольших программах

·         нетребовать понимания работы аппаратного обеспечения

·         защищатьпользователя от операционной системы

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

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

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

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

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

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

 

Pascal

Паскаль (англ. Pascal) — высокоуровневыйязык программирования общегоназначения. Один из наиболее известных языков программирования, широкоприменяется в промышленном программировании, обучении программированию в высшейшколе, является базой для большого числа других языков. Был создан НиклаусомВиртом в 1968/9 годах (опубликован в 1970-м) после его участия в работекомитета разработки стандарта языка Алгол-68.

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

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

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

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

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

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

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

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

ОбъектныйПаскаль от Borland и в отсутствие отраслевой стандартизации стал сильноотличаться от классического Паскаля.

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

 

Cи

Си(англ.C) — стандартизированныйпроцедурный язык программирования, разработанный в начале 1970-х годов сотрудникамиBell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создандля использования в операционной системе UNIX. С тех пор он был импортирован на многие другие операционныесистемы и стал одним из самых используемых языков программирования. Си ценят заего эффективность; он является самым популярным языком для создания системногопрограммного обеспечения. Его также часто используют для создания прикладныхпрограмм. Несмотря на то, что Си не разрабатывался для новичков, он активноиспользуется для обучения программированию. В дальнейшем синтаксис языка Систал основой для многих других языков (см.: Си-подобный синтаксис).

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

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

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

Си(как и ОС UNIX, с которой он долгое время был связан) создавался программистамии для программистов, круг которых был бы ненамного шире круга разработчиковязыка. Несмотря на это, область использования языка значительно шире задачсистемного программирования.

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

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

·         ориентациюна процедурное программирование, обеспечивающую удобство применения структурногостиля программирования;

·         систему типов, предохраняющую от бессмысленных операций;

·         использованиепрепроцессора для, например, определения макросов и включения файлов с исходнымкодом;

·         непосредственныйдоступ к памяти компьютера через использование указателей;

·         минимальноечисло ключевых слов;

·         передачупараметров в функцию по значению, а не по ссылке (при этом передача по ссылкевыполняется с помощью указателей);

·         указателина функции и статические переменные

·         областидействия имён;

·         записи— определяемые пользователем собирательные типы данных (структуры), которымиможно манипулировать как одним целым;

Вотнекоторые особенности других языков программирования, которых не имеет Си:

·         автоматическоеуправлениепамятью;

·         поддержкаобъектно-ориентированного программирования (при этом первые версии C++ генерироваликод программы на языке Си);

·         вложенныефункции (существуют компиляторы языка Си реализующие эту функцию, например компиляторGNU);

·         полиморфизмфункций и операторов;

·         встроеннаяподдержка многозадачностиисети

·         функциивысшего порядка

·         карринг.

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

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


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

Объектно-ориентированныйязык программирования (ОО-язык) — язык, построенный на принципах объектно-ориентированногопрограммирования.

Воснове концепции объектно-ориентированного программирования лежит понятие объекта — некоей субстанции, котораяобъединяет в себе поля (данные) и методы (выполняемые объектом действия).

Например,объект «человек» может иметь поля «имя», «фамилия»и иметь методы «есть» и «спать».Соответственно, мы можемиспользовать в программе операторы Человек. Имя: =«Иван» и Человек. Есть(пища).

 

Си++

Компилируемыйстатически типизированный язык программирования общего назначения. Поддерживаетразные парадигмы программирования, но, в сравнении с его предшественником —языком Си, — наибольшее внимание уделено поддержкеобъектно-ориентированного и обобщённогопрограммирования.[1]

Название«Си++» происходит от Си, в котором унарный оператор ++обозначает инкрементпеременной.

В 1990-х годах язык стал одним изнаиболее широко применяемых языков программирования общего назначения.

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

Языквозник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories БьёрнСтрауструп придумал рядусовершенствований к языку Си под собственные нужды. До начала официальнойстандартизации язык развивался в основном силами Страуструпа в ответ на запросыпрограммистского сообщества. В 1998 году был ратифицирован международныйстандарт языка Си++: ISO/IEC 14882:1998 «Standard for the C++ ProgrammingLanguage»; после принятия технических исправлений к стандарту в 2003 году —нынешняя версия этого стандарта — ISO/IEC 14882:2003. Ранние версии языка,известные под именем «C с классами», начали появляться с 1980 года. Идеясоздания нового языка берёт начало от опыта программирования Страуструпа длядиссертации. Он обнаружил, что язык моделирования Симула (Simula) имеет такиевозможности, которые были бы очень полезны для разработки большого программногообеспечения, но работает слишком медленно. В то же время язык BCPL достаточнобыстр, но слишком близок к языкам низкого уровня и не подходит для разработкибольшого программного обеспечения. Страуструп начал работать в Bell Labs надзадачами теории очередей (в приложении к моделированию телефонных вызовов).Попытки применения существующих в то время языков моделирования оказалисьнеэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнитьязык Си (преемник BCPL) возможностями, имеющимися в языке Симула. Язык Си,будучи базовым языком системы UNIX,на которой работали компьютеры Bell, является быстрым, многофункциональным ипереносимым. Страуструп добавил к нему возможность работы с классами иобъектами. В результате, практические задачи моделирования оказались доступнымидля решения как с точки зрения времени разработки (благодаря использованиюСимула-подобных классов) так и с точки зрения времени вычислений (благодарябыстродействию Си). В начале в Си были добавлены классы (с инкапсуляцией), производные классы,строгая проверка типов, inline-функции и аргументы по умолчанию. Разрабатывая Сис классами  (позднее Си++), Страуструп также написал программу cfront — транслятор,перерабатывающий исходный код Си с классами в исходный код простого Си.Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег ивскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячивопросов. В 1983 году произошло переименование языка из Си с классами в Си++.Кроме того, в него были добавлены новые возможности, такие как виртуальныефункции, перегрузка функций и операторов, ссылки, константы, пользовательскийконтроль над управлением свободной памятью, улучшенная проверка типов и новыйстиль комментариев (//).Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первоеиздание «Языка программирования Си++», обеспечивающее первое описание этогоязыка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989году состоялся выход Си++ версии 2.0.Его новые возможности включали множественное наследование, абстрактные классы,статические функции-члены, функции-константы и защищённые члены.

В 1990 годувышло «Комментированное справочное руководство по C++», положенное впоследствиив основу стандарта. Последние обновления включали шаблоны, исключения,пространства имён, новые способы приведения типов и булевский тип.

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

Послемногих лет работы совместный комитет ANSI-ISO стандартизировал Си++ в 1998 году(ISO/IEC 14882:1998 — Язык программирования Си++). В течение нескольких летпосле официального выхода стандарта комитет обрабатывал сообщения об ошибках ив итоге выпустил исправленную версию стандарта Си++ в 2003 году. В настоящеевремя рабочая группа МОС (ISO) работает над новой версией стандарта под кодовымназванием C++09 (ранее известный какC++0X), который должен выйти в 2009 году.

Никтоне обладает правами на язык Си++, он является свободным. Однако сам документстандарта языка (за исключением черновиков) не доступен бесплатно. Название«Си++» было придумано Риком Масситти (Rick Mascitti) и впервые было использованов декабре 1983 года. Ранее, на этаперазработки, новый язык назывался «Си с классами».

Имя,получившееся в итоге, происходит от оператора Си «++» (увеличение значенияпеременной на единицу). Имя «C+» не было использовано потому, что являетсясинтаксической ошибкой в Си и, кроме того, это имя было занято другим языком.Язык также не назван «D», поскольку «является расширением Си и не пытаетсяустранять проблемы путём удаления элементов Си». Стандарт Си++ на 1998 годсостоит из двух основных частей: ядра языка и стандартной библиотеки.Стандартная библиотека Си++ вобрала в себя разрабатывавшуюся одновременно состандартом библиотеку шаблонов STL.Сейчас название STL официально не употребляется, однако в кругах программистовна Си++ это название используется для обозначения части стандартной библиотеки,содержащей определения шаблонов контейнеров, итераторов, алгоритмов ифункторов. Стандарт Си++ содержит нормативную ссылку на стандарт Си от 1990 года и не определяет самостоятельно тефункции стандартной библиотеки, которые заимствуются из стандартной библиотекиСи.

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

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

 

JAVA

Java — объектно-ориентированный язык программирования,разрабатываемый компаниейSun Microsystems. Приложения Java обычно компилируютсяв специальный байт-код, поэтому они могут работать на любой виртуальнойJava-машине (JVM) независимо откомпьютерной архитектуры. Дата официальноговыпуска — 23 мая 1995 года.

Вотношении произношения в русском языке, как и в ряде других, образовались дверазличные нормы — заимствованная англоязычная/ˈdʒɑːvə/(«джава»)и традиционно-национальная «ява», соответствующая традиционному произношениюназвания острова Ява. Компания Sun придерживается англоязычного прозношения вовсех странах мира. Иногда в обиходе используют также жаргонное слово «Жаба»(например, изображение жабы есть на календариках группы российскийпользователей Java (Java Users Group).

Java— так называют не только сам язык, но и платформу для создания и исполненияприложений на основе данного языка.

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

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

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

Часток недостаткам концепции виртуальной машины относят то, что исполнение байт-кодавиртуальной машиной может снижать производительность программ и алгоритмов,реализованных на языке Java. Данное утверждение было справедливо для первыхверсий виртуальной машины Java, однако в последнее время оно практическипотеряло актуальность. Этому способствовал ряд усовершенствований:

·         применениетехнологии трансляции байт-кода в машинный код непосредственно во время работыпрограммы (JIT-технология) с возможностью сохранения версий класса в машинномкоде,

·         широкоеиспользование платформенно-ориентированного кода (native-код) встандартных библиотеках,

·         аппаратныесредства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle,поддерживаемая некоторыми процессорами фирмы ARM).

Идеи,заложенные в концепцию и различные реализации среды виртуальной машины Java,вдохновили множество энтузиастов на расширение перечня языков, которые могли быбыть использованы для создания программ, исполняемых на виртуальной машине.[13]Эти идеи нашли также выражение в спецификация общеязыковой инфраструктурыCLI, заложенной в основу платформы .NETкомпанией Microsoft.


Заключение

 

Каждый 256-й день года отмечается неофициальный праздник – Деньпрограммиста. Это число (два в восьмой степени) выбрано неслучайно, так как этоколичество чисел, которые можно выразить с помощью одного байта. Сегодняпрограммист – одна из самых востребованных профессий, ведь значениедеятельности этих специалистов невозможно переоценить: ежедневно миллионы людейсталкиваются с результатами их труда, когда работают за компьютером, пользуютсятелефоном и смотрят телевизор.

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


Литература

 

1.   Б.Страуструп. Язык программирования C++ = The C++ Programming Language / Пер. сангл. — 3-е изд. — СПб.; М.: Невский диалект — Бином, 1999. — 991 с. — 3000 экз.— ISBN 5-7940-0031-7 (Невский диалект),  ISBN 5-7989-0127-0 (Бином), ISBN0-201-88954-4 (англ.)

2.   СтрауструпБ. Язык программирования C++. Специальное издание= The C++ programming language. Special edition. — М.:Бином-Пресс,2007. — 1104 с.— ISBN 5-7989-0223-4

3.   КейС. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала,том 1. Основы = Core Java 2, Volume I — Fundamentals.— 8-еизд.— М.:Вильямс,2008. — 816 с. — ISBN978-5-8459-1378-4, ISBN 978-0-1323-5476-9

4.   КейС. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала,том 2. Тонкости программирования = Core Java 2, Volume II — Advanced Features.— 8-е изд. — М.: Вильямс, 2008, 4 кв. — 992 с. — ISBN 978-5-8459-1482-8, ISBN978-01-3235479-0

5.   МонаховВадим.Язык программирования Java и среда NetBeans. — 2-е изд. — СПб.: БХВ-Петербург,2009. — 720 с. — ISBN 978-5-9775-0424-9

6.   РобертУ. Себеста. Основные концепции языков программирования =Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: Вильямс,2001. — 672 с. — 5000 экз. — ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)

7.   ВольфенгагенВ. Э. Конструкцииязыков программирования. Приёмы описания. — М.: Центр ЮрИнфо Р, 2001. — 276 с.— ISBN 5-89158-079-9

еще рефераты
Еще работы по информатике, программированию