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


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

 

Эволюция языков программирования

 

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

К написанию этой статьи меня побудила дискуссия, разгоревшаяся на одном из форумов dotSITE после появления там сообщения, резко критикующего C# — одну из основных составляющих новой платформы .NET от Microsoft. Сообщение содержало в себе уже ставшую достаточно банальной критику Microsoft вообще и в частности (я здесь не утверждаю, что критиковать Microsoft не за что, просто эта критика уже порядочно набила оскомину), а также некоторые высказывания конкретно о C#. В ходе развернувшейся дискуссии было высказано несколько любопытных замечаний, некоторые же вопросы остались незатронутыми. Все это и побудило меня написать статью, в которой делается попытка «примирить» в некотором роде носителей мнений об исключительности того или иного языка программирования. Я постараюсь дать некоторый исторический очерк развития различных языков и пояснить на примерах некоторые общие тенденции. Возможно, мне удастся убедить кого-то в бесполезности проведения дискуссий, аналогичных вышеупомянутой. Я не претендую ни на объективность (хотя постараюсь быть таковым), ни на полноту изложения. Это всего лишь попытка «встать на цыпочки и осмотреться»…

1. Первые универсальные языки

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

2. Ассемблер

Первым значительным шагом представляется переход к языку ассемблера (позволим себе маленькое лирическое отступление: английское название assembly language, или assembler, на русский переводят именно тем термином, который был использован выше. При этом у новичка создается впечатление, что язык назван в честь некоего человека по имени ассемблер. Достаточно забавная ситуация, не правда ли?). Не очень заметный, казалось бы, шаг — переход к символическому кодированию машинных команд — имел на самом деле огромное значение. Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Более того, зачастую одинаковые по сути команды кодировались совершенно различным образом в зависимости от своих параметров (широко известный пример из мира современных компьютеров — это кодирование инструкции mov в процессорах Intel: существует несколько совершенно по-разному кодируемых вариантов команды; выбор того или иного варианта зависит от операндов, хотя суть выполняемой операции неизменна: поместить содержимое (или значение) второго операнда в первый). Появилась также возможность использования макросов и меток, что также упрощало создание, модификацию и отладку программ. Появилось даже некое подобие переносимости — существовала возможность разработки целого семейства машин со сходной системой команд и некоего общего ассемблера для них, при этом не было нужды обеспечивать двоичную совместимость.

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

3. Фортран

В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом (John Backus) был создан язык программирования Fortran.

Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция подпрограмм. Напомним, что это современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortran’а была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок, таких, например:

В Фортране следующая конструкция описывает «цикл for до метки 10 при изменении индекса от 1 до 100»: DO 10 I=1,100 Если же здесь заменить запятую на точку, то получится оператор присваивания: DO10I = 1.100 Говорят, что такая ошибка заставила ракету взорваться во время старта!

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

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

4. Cobol

В 1960 году был создан язык программирования Cobol.

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

5. PL/1

В 1964 году все та же корпорация IBM создала язык PL/1, который был призван заменить Cobol и Fortran в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной. Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы. В частности, следующая строка — это вполне нормальный оператор на PL/1:

IF ELSE=THEN THEN THEN; ELSE ELSE

В силу таких особенностей разработка компилятора для PL/1 была исключительно сложным делом. Язык так и не стал популярен вне мира IBM.

6. BASIC

В 1963 году в Дартмурском колледже (Dartmouth College) был создан язык программирования BASIC (Beginners’ All-Purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих). Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования. Он предполагался легко интерпретируемым и компилируемым. Надо сказать, что BASIC действительно стал языком, на котором учатся программировать (по крайней мере, так было еще несколько лет назад; сейчас эта роль отходит к Pascal). Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования (ярчайший пример — Microsoft Visual Basic).

7. Algol

В 1960 году командой во главе с Петером Науром (Peter Naur) был создан язык программирования Algol. Этот язык дал начало целому семейству Алгол-подобных языков (важнейший представитель — Pascal). В 1968 году появилась новая версия языка. Она не нашла столь широкого практического применения, как первая версия, но была весьма популярна в кругах теоретиков. Язык был достаточно интересен, так как обладал многими уникальными на так момент характеристиками.

8. Дальнейшее развитие языков программирования

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

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

9. Pascal-подобные языки

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

Отрицательной чертой языка было отсутствие в нем средств для разбиения программы на модули. Вирт осознавал это и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 году появилась Modula-3, в которую были добавлены объектно-ориентированные черты. Логическим продолжением Pascal и Modula являются язык Oberon и Oberon-2. Они характеризуются движением в сторону объектно- и компонентно- ориентированности.

10. C-подобные языки

В 1972 году Керниганом и Ритчи был создан язык программирования C. Он создавался как язык для разработки операционной системы UNIX. C часто называют «переносимым ассемблером», имея в виду то, что он позволяет работать с данными практически так же эффективно, как на ассемблере, предоставляя при этом структурированные управляющие конструкции и абстракции высокого уровня (структуры и массивы). Именно с этим связана его огромная популярность и поныне. И именно это является его ахиллесовой пятой. Компилятор C очень слабо контролирует типы, поэтому очень легко написать внешне совершенно правильную, но логически ошибочную программу.

В 1986 году Бьярн Страуструп создал первую версию языка C++, добавив в язык C объектно-ориентированные черты, взятые из Simula (см. ниже), и исправив некоторые ошибки и неудачные решения языка. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла новая (третья) версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов. У него имеются, однако же, и слабые стороны, вытекающие из требований эффективности.

В 1995 году в корпорации Sun Microsystems Кеном Арнольдом и Джеймсом Гослингом был создан язык Java. Он наследовал синтаксис C и C++ и был избавлен от некоторых неприятных черт последнего. Отличительной особенностью языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем. Кроме того, в Java нет указателей и множественного наследования, что сильно повышает надежность программирования.

В 1999–2000 годах в корпорации Microsoft был создан язык C#. Он в достаточной степени схож с Java (и задумывался как альтернатива последнему), но имеет и отличительные особенности. Ориентирован, в основном, на разработку многокомпонентных Интернет-приложений.

11. Языки Ada и Ada 95

В 1983 году под эгидой Министерства Обороны США был создан язык Ada. Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который развивает предыдущую версию, добавляя в нее объекно- ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис (значительно более громоздкий, чем Pascal).

12. Языки обработки данных

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

13. APL

В 1957 году была предпринята попытка создания языка для описания математической обработки данных. Язык был назван APL (Application Programming Language). Его отличительной особенностью было использование математических символов (что затрудняло применение на текстовых терминалах; появление графических интерфейсов сняло эту проблему) и очень мощный синтаксис, который позволял производить множество нетривиальных операций прямо над сложными объектами, не прибегая к разбиению их на компоненты. Широкому применению помешало, как уже отмечалось, использование нестандартных символов как элементов синтаксиса.

14. Snobol и Icon

В 1962 году появился язык Snobol (а в 1974 — его преемник Icon), предназначенный для обработки строк. Синтаксис Icon напоминает С и Pascal одновременно. Отличие заключается в наличии мощных встроенных функций работы со строками и связанная с этими функциями особая семантика. Современным аналогом Icon и Snobol является Perl — язык обработки строк и текстов, в который добавлены некоторые объектно-ориентированные возможности. Считается очень практичным языком, однако ему недостает элегантности.

15. SETL

В 1969 году был создан язык SETL — язык для описания операций над множествами. Основной структурой данных в языке является множество, а операции аналогичны математическим операциям над множествами. Полезен при написании программ, имеющих дело со сложными абстрактными объектами.

16. Lisp и ему подобные языки

В 1958 году появился язык Lisp — язык для обработки списков. Получил достаточно широкое распространение в системах искусственного интеллекта. Имеет несколько потомков: Planner (1967), Scheme (1975), Common Lisp (1984). Многие его черты были унаследованы современными языками функционального программирования.

17. Скриптовые языки

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

18. JavaScript

Язык был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц. Первоначально назывался LiveScript, причиной смены названия получили маркетинговые соображения. Интерпретируется браузером во время отображения веб-страницы. По синтаксису схож с Java и (отдаленно) с C/C++. Имеет возможность использовать встроенную в браузер объектную функциональность, однако подлинно объектно-ориентированным языком не является.

19. VBScript

Язык был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет схожую область применения. Синтаксически схож с языком Visual Basic (и является усеченной версией последнего). Так же, как и JacaScript, исполняется браузером при отображении веб-страниц и имеет ту же степень объектно- ориентированности.

20. Perl

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

>21. Python

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

22. Объектно-ориентированные языки

Объектно-ориентированный подход, пришедший на смену структурному, впервые появился отнюдь не в C++, как полагают некоторые. Существует целая череда чистых объектно-ориентированных языков, без сведений о которых наш обзор был бы неполным.

23. Simula

Первым объектно-ориентрованным языком был язык Simula (1967). Этот язык был предназначен для моделирования различных объектов и процессов, и объектно-ориентированные черты появились в нем именно для описания свойств модельных объектов.

24. Smalltalk

Популярность объектно-ориентированному программированию принес язык Smalltalk, созданный в 1972 году. Язык предназначался для проектирования сложных графических интерфейсов и был первым по-настоящему объектно-ориентированным языком. В нем классы и объекты — это единственные конструкции программирования. Большим недостатком Smalltalk являются большие требования к памяти и низкая производительность полученных программ. Это связано с не очень удачной реализацией объектно-ориентированных особенностей. Популярность языков C++ и Ada 95 связана именно с тем, что объектно- ориентированность реализована без существенного снижения производительности.

25. Eiffel

Существует язык с очень хорошей реализацией объектно- ориентированности, не являющийся надстройкой ни над каким другим языком. Это язык Eiffel (1986). Являясь чистым языком объектно-ориентированного программирования, он, кроме того, повышает надежность программы путем использования «контрольных утверждений».

26. Языки параллельного программирования

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

27. Язык Оccam

Язык Оccam был создан в 1982 году и предназначен для программирования транспьютеров — многопроцессорных систем распределенной обработки данных. Он описывает взаимодействие параллельных процессов в виде каналов — способов передачи информации от одного процесса к другому. Отметим особенность синтаксиса языка Щccam — в нем последовательный и параллельный порядки выполнение операторов равноправны, и их необходимо явно указывать ключевыми словами PAR и SEQ.

28. Модель параллельных вычислений Linda

В 1985 году была предложена модель параллельных вычислений Linda. Основной ее задачей является организация взаимодействия между параллельно выполняющимися процессами. Это достигается за счет использования глобальной кортежной области (tuple space). Процесс может поместить туда кортеж с данными (то есть совокупность нескольких, возможно разнородных, данных), а другой процесс может ожидать появления в кортежной области некоторого кортежа и, после его появления, прочитать кортеж с возможным последующим его удалением. Заметим, что процесс может, например, поместить кортеж в область и завершиться, а другой процесс может через некоторое время воспользоваться этим кортежем. Таким образом обеспечивается возможность асинхронного взаимодействия. Очевидно, что при помощи такой модели может быть сэмулировано и синхронное взаимодействие. Linda — это модель параллельных вычислений, она может быть добавлена в любой язык программирования. Существуют достаточно эффективные реализации Linda, обходящие проблему существования глобальной кортежной области с потенциально неограниченным объемом памяти.

29. Неимперативные языки

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

30. Функциональные языки

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

Из языков с энергичной семантикой упомянем ML и два его современных диалекта — Standard ML (SML) и CaML. Последний имеет объектно-ориентированного потомка — Objective CaML (O’CaML).

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

31. Языки логического программирования

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

Родоначальником большинства языков логического программирования является язык Prolog (1971). У него есть ряд потомков — Parlog (1983, ориентирован на параллельные вычисления), Delta Prolog и др. Логическое программирование, как и функциональное, — это отдельная область программирования, и за более подробными сведениями мы отсылаем читателя к специальной литературе.

32.Вместо заключения

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

Целью данного обзора была попытка дать читателю представление о всем многообразии существующих языков программирования. Среди программистов часто бытует мнение о «всеобщей применимости» того или иного языка (C, C++, Pascal и т.п.). Это мнение возникает по нескольким причинам: недостаток информации, привычка, инертность мышления. Я попытался слегка компенсировать первый фактор. По поводу остальных могу лишь сказать, что настоящий профессионал должен постоянно стремиться повышать свои профессиональную квалификацию. А для этого нужно не бояться экспериментировать. Ну и что, что все вокруг пишут на C/С++/VB/Pascal/Perl/Java/… (нужное подчеркнуть)? А почему бы не попробовать что-нибудь новенькое? А вдруг это окажется эффективнее? Разумеется, прежде чем приниматься использовать новый язык, нужно внимательно изучить все его особенности, включая наличии эффективной реализации, возможности взаимодействия с существующими модулями и т.п., и только после этого принимать решение. Разумеется, всегда есть риск пойти не тем путем, но… Не ошибается лишь тот, кто ничего не делает.

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

Эта статья задумывалась как ответ тем, кто кричит «язык X MUST DIE». Надеюсь, что ответ получился достаточно адекватным и убедительным. Надеюсь также, что статья имеет, помимо полемической, и познавательную ценность.

 

informat444.narod.ru

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

Программирование - это искусство создавать программные продукты, которые написаны на языке программирования.

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

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

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

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

Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена Дж. Фон Нейманом в 40-х годах прошлого века.

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

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

Процедурные языки характеризуются следующими особенностями:

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

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

· отсутствием строгой математической основы;

· высокой эффективностью реализации на традиционных ЭВМ.

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

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

Рис. 7 Фрагмент программы в двоичных кодах

Следующий уровень составляют машинно-ориентированные языки (ассемблеры).

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

Рис.8 Фрагмент программы на языке Ассемблера

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

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

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

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

Язык программирования С (Си) был разработан для реализации операционной системы UNIX (ядро ОС было написано на С) в начале 70-х годов 20 века. В последующем приобрел популярность среди системных и прикладных программистов. В настоящее время он реализован на большинстве ЭВМ.

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

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

Язык Basic (Бейсик). BASIC — сокращение от англ. Beginner’sAll-purposeSymbolicInstructionCode — универсальный код символических инструкций для начинающих. Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом и реализован командой студентов колледжа под их руководством. Бейсик был разработан как простейший язык для непосредственного общения человека с вычислительной машиной.

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

Язык Pascal (Паскаль) – является одним из наиболее популярных среди прикладных программистов процедурным языком программирования. Разработанный в 1970 г. Никлаусом Виртом, язык назван в честь французского математика Блеза Паскаля. Вопреки расхожему мнению, он не был исключительно учебным языком, а предназначался для практического применения. Прототипом послужилAlgol. Первоначально язык компилировался в байт-код, подобно языкуJava. В данном языке полностью реализована концепция структурного программирования. В настоящее время широко используются такие версии языка для ПЭВМ, как BorlandPascal, TurboPascal.

Язык Кобол (COBOL,COmmonBusinessOrientedLanguage) — один из старейших языков программирования(первая версия в1959), предназначенный, в первую очередь, для разработки бизнес-приложений. В свежий стандарт языка 2002 года в Кобол добавлены средства объектно-ориентированного программирования и другие современные языковые конструкции

Язык ПЛ/1 (PL/I, ProgrammingLanguage I — «Язык программирования номер один») — разработанный в1964 годуязык программирования, созданный для научных, инженерных и бизнес-ориентированных вычислений. Он содержит такой широкий набор синтаксических конструкций и встроенных функций, что, вероятно, не существует ни одногокомпилятора, поддерживающего все возможности языка ПЛ/1. ПЛ/1 поддерживаетрекурсиюиструктурное программирование, широко применялся в обработке данных.

Прототипом Объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA-67. Но в самостоятельный стиль оно оформилось с появлением языка SMALLTALK, разработанного Аланом Кеем в 1972 году и первоначально предназначенного для реализации функций машинной графики.

В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой: «объект – данные+процедуры». Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры обработки этих данных, называемые методами. Объединение процедур и данных в одном объекте называется инкапсуляцией.

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

К наиболее современным объектно-ориентированным языкам программирования относятся С++, Delphi, Perl.

Язык С++ был разработан в начале 80-х годов Б. Страуструпом.

Perl - высокоуровневыйинтерпретируемыйдинамическийязык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как PracticalExtractionandReportLanguage— «практический язык для извлечения данных и составления отчётов»

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

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

C# - объектно-ориентированныйязык программирования. Разработан в1998—2001 годахгруппой инженеров под руководствомАндерса Хейлсбергав компанииMicrosoftкак язык разработки приложений для платформы Microsoft .NET Framework. Его синтаксис наиболее близок кC++иJava.

Ruby - интерпретируемыйвысокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования.

В последнее время программы, в особенности объектно-ориентированные, реализуются как системы визуального программирования. Отличительной особенностью таких систем является мощная среда разработки программ из готовых «строительных блоков», позволяющих создавать интерфейсную часть программного продукта в диалоговом режиме, практически без кодирования программных операций. К числу объектно-ориентированных систем визуального программирования относятся: VisualBasic, Delphi, C++Builder, VisualC++

Похожие статьи:

poznayka.org

2. Языки программирования

2.1. Определение алгоритмического языка

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

Основные свойства языка:

  1. Алфавит – для записи текста программ используют определенный набор символов, это могут быть алфавитные, цифровые, специальные символы.

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

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

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

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

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

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

  1. Какие величины допускаются в языке?

  2. Как они представляются в тексте программы?

  3. Какие действия можно выполнять?

  4. Как описать эти действия?

  5. Какие существуют правила создания программы?

Кроме того, нужно знать:

  1. Как записать программу.

  2. Процесс подготовки программы к выполнению.

  3. Как выявить ошибки в программе.

2.2. Классификация языков. История развития языков программирования

Языки можно классифицировать по-разному. Нижеприведенная схема классификации отражает историю развития языков программирования (рис. 7).

Рис. 7. Классификация языков программирования

Машинные языки. Это язык микропроцессора (МП) в машине, у каждого МП он свой. Состоит из инструкций в цифровой форме типа 00011100 или 01001011 и т.д.

Машинно-ориентированные – это языки, которые при трансляции переводят одну команду языка в одну машинную инструкцию. Их еще называют язык 1:1.

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

Дальнейшее развитие языков привело к объединению сложных действий в макрокоманды (автокоды).

Языки высокого уровня. По структуре близки к языку формул математики, типа Х=2·R+A. Именно у этих языков используются такие понятия как синтаксис и семантика.

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

Первым языком высокого уровня стал ФОРТРАН. Описание этого языка было сделано в 1954 г. В 1956 г. он был использован на IBM в США. Наиболее известен вариант 1962 г. ФОРТРАН IV. В 1959 г. был разработан язык АЛГОЛ, который вместе с ФОРТРАНОМ использовался для научно-технических задач. В 1960 г. для решения экономических задач был создан язык КОБОЛ.

В 1965 г. черты вышеперечисленных языков можно было увидеть в языке ПЛ/1.

В 1965 г. в США с целью обучения программированию начинающих был создан Бейсик, который получил наибольшее распространение в связи с появлением микроЭВМ.

Проблемно-ориентированный язык – язык узкого класса задач (составления отчетов, сортировки массивов). Для статистики были разработаны языки РПГ, ИПЛ, ЛИСП, ДИНАМО.

ЭВМ III поколения потребовали нового подхода – сделать язык действительно универсальным. Первым такой язык был ПЛ/1. В 80-х годах начата разработка непроцедурных языков (или языков описания). Они принципиально отличаются от прочих тем, что предназначены не для реализации алгоритма, а для описания постановки задачи в специальных терминах «что дано – что требуется», а решение возлагается на ЭВМ.

ОО языки – объекно-ориентированные языки. Первый ОО язык был создан в 1967 г. (Симула) для моделирования дискретных событий в реальном мире, он был расширением АЛГОЛА.

В 1970 г. принципы объектно-ориентированного программирования (ООП) стали использовать в графике (язык Смолток). Основные концепции ООП воплотились в языке С++ Б. Страуструпом. В Паскале объекты впервые появились в 1991 г. (версии 5.5).

Концепция современного программирования – это использование ОО языков.

Языки ООП

В настоящее время известно много языков ООП. После первых Simula 67 и Smalltalk появились гибридные языки (т.е. языки, основанные на существующих языках), такие как C++, ObjectiveC, CLOS (производный от LISP), Object Pascal.

Помимо этого современное программирование – это визуальное программирование, или RAD-программирование, когда программа может быть построена путем диалога. RAD (Rapid Application Development) – это визуальные средства быстрой разработки, возникшие во многом благодаря объектной ориентации. На схеме представлен еще один вид языков программирования – язык систем. В эту группу входят языки, которые создавались как часть систем. Например, сюда можно отнести языки СУБД – ObjectPal, dBase; язык редактора WORD Basic; язык системы MapView (info) – Map Basic, GPSS и др.

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

1. Средства системного анализа и проектирования.

1.1. Инструментальные и поддерживающие средства разработки.

1.2. Средства имитации и моделирования.

2. Средства статистического анализа программы в исходных кодах.

2.1. Лексико-статистический анализ.

2.2. Структурный анализ.

2.3. контроль межкомпонентных интерфейсов.

3. Средства динамического анализа

3.1. Средства отладки.

3.2. Средства генерации тестовых примеров.

3.3. Тестовые мониторы.

3.4. Средства получения статистических таблиц.

4. Средства документирования.

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

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

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

studfiles.net

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

Поиск Лекций

 

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

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

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

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

При работе на компьютере Марк-I, созданном Говардом Айкеном, Г.Хоппер ее группе пришлось столкнуться со многими проблемами, и все, что ими придумано, было впервые. В частности, они придумали подпрограммы. Сейчас любой программист не задумываясь использует аппарат подпрограмм в любом языке программирования.

Интересна история появления фундаментального термина «отладка», который также впервые ввели Г. Хоппер и ее группа. Однажды жарким летним днем 1945 неожиданно произошла остановка компьютера Марк-I. Обнаружилась неисправность одного реле, контакты которого были заблокированы мотыльком, залетевшим неизвестно каким образом в помещение вычислительного центра. Вспоминает Г.Хоппер: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (debuging)». С тех пор термин «debuging» (отладка) используется в технических процессах тестирования неисправностей в компьютере, а также в системах программирования.

Уже в 1951 г. Г.Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки — это называется компиляцией» -Г.Хоппер объясняла происхождение введенного ею термина.

В 1954 г. группа под руководством Г.Хоппер разработала систему, включавшую в себя язык программирования и компилятор, которая в дальнейшем полу название MATH-MATIC. После удачного завершения работ по созданию МАТ MATIC Г. Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователям программировать на языке, близком к обычному английскому. Необходимость появления подобной системы Г.Хоппер объясняла следующим образом: «Существует много различных людей, которым нужно решать разные задачи. Некоторые из них связаны- с обработкой символов, другие — с обработкой слов, и им нужны языки другого типа, а не наши попытки превратить их всех в математиков».

Середина 1950-х гг. характеризуется стремительным прогрессом в области программирования. Голь программирования в машинных командах стала уменьшали Начали появляться языки программирования нового типа, выступающие в качестве посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN — от FORmula TRANshlor - переводчик формул), разработанный группой программистов фирмы IBM в 1954 г. (первая версия).

В конце 1950-х гг. плодом международного сотрудничества в области программирования явился Алгол (ALGOL — от ALGOrithmic Language — алгоритмический язык). Алгол предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач. Специалисты-практики восприняли этот язык далеко неоднозначно, но, тем не менее его влияние на развитие других языков и теорию программирования оказалось весьма значительным.

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

В 1958 г. появился компилятор FLOW-MATIC. В отличие от Фортрана — языка для научных приложений — FL0W-MAT1C был первым языком для задач обработки коммерческих данных. Работы в этом направлении привели к созданию в г. языка Кобол (COBOL — Common Business Oriented Language) — общего зыка, ориентированного на деловые задачи. Одним из основных консультантов при создании этого языка была Грейс Мюррей Хоппер.

В середине 1960-х гг. сотрудники математического факультета Дартмутского кол-Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык звали «универсальным символическим кодом для начинающих» (Beginner's All-urpose Symbolic Instruction Code, или сокращенно, BASIC). Годом рождения нового языка можно считать 1964 г. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ЭВМ различных категорий во всем мире. В значительной мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 1970-х гг.

В начале 1960-х гг. все существующие языки программирования высокого уровня можно было пересчитать по пальцам, однако впоследствии их число достигло трех тысяч. Разумеется, подавляющая часть языков не получила сколько-нибудь широкого распространения; в практической деятельности используется не более двух десятков. Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретным архитектурам ЭВМ, реализовывали различные вкусы и идеи. В 1960-е гг. были предприняты попытки преодолеть эту «разносорт-иосицу» путем создания универсального языка программирования. Первым детищем этого направления стал PL/I (Programm Language One), созданный в 1967 г. В дальнейшем на эту роль претендовал АЛГОЛ-68 (1968 г.). Предполагалось, что подобные языки будут развиваться и совершенствоваться и вытеснят все остальные. Однако и одна из этих попыток на сегодняшний день не увенчалась успехом (хотя PL/1 в (усеченных версиях использовали многие программисты). Всеохватность языка приводила к неоправданной, с точки зрения программиста, сложности конструкций, неэффективности компиляторов.

Языки программирования служат разным целям и их выбор определяется удобностью для пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т.д. Такая разнотипность решаемых компьютером задач и определяет многообразие языков программирования. По всей видимости, в программировании наилучший результат достигается при индивидуальном подходе, исходящем из класса задачи, уровня и интересов программиста. Например: Бейсик широко употребляется при написании простых программ; Фортран является классическим языком программирования при решении на ЭВМ математических и инженерных задач; язык Кобол был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Еще более специализированным является язык Лого (от гр. logos — слово), созданный для обучения программированию школьников профессором математики и педагогики Сеймуром Пейпертом из Массачусетского технологического института. Обучаясь программированию на Лого, дети задают простые команды, которые управляют игрушечной черепашкой, снабженной карандашиком. Отметим еще один достаточно популярный специализированный язык — Пролог (PROLOG — PROgramming in LOGic), разработанный как язык программирования для создания систем искусственного интеллекта.

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

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

Период с конца 1960-х и до начала 1980-х гг. характеризуется бурным росте числа различных языков программирования, сопровождавшим, как это ни пар досконально, кризис программного обеспечения. Этот кризис особо остро переживало военное ведомство США. В январе 1975 г. Пентагон решил навести порядок хаосе трансляторов и учредил комитет, которому было предписано разработать один универсальный язык. На конкурсной основе комитет проработал сотни проектов и, когда стало ясно, что ни один из существующих языков не может удовлетворить, принял два проекта для окончательного рассмотрения. В мае 1979 был объявлен победитель — группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили Ада, в честь Огасты Ады Лавлейс. Язык Ада — прямой наследник языка Паскаль. Этот язык предназначен для создания и длительного (многолетнего) сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени многое другое, чего трудно или невозможно достичь средствами более прост языков.

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

Следует отметить, что многие языки, первоначально разработанные для больших и малых ЭВМ, в дальнейшем были приспособлены к персональным компьютерам. Хорошо вписались в «персоналки» не только Паскаль, Бейсик, Си, Ла| но и Лисп, Пролог — языки искусственного интеллекта.

В течение многих лет программное обеспечение строилось на основе операциональных и процедурных языков, таких как Фортран, Бейсик, Паскаль, Ада, И И сегодня современные версии этих и им подобных языков (Модула, Форт и дЯ доминируют при разработке прикладных программных средств. Однако по мере эволюции языков программирования получили широкое распространение и другие, принципиально иные, подходы к созданию программ.

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

 

 

Рис. 1. Классификация языков программирования

 

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

Принципиально иное направление в программировании связано с методологиями (иногда говорят «парадигмами») непроцедурного программирования. К ним можно отнести объектно-ориентированное и декларативное программирование.

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

Из языков объектного программирования, популярных среди профессионалов, следует назвать, прежде всего, Си++, для более широкого круга программистов предпочтительны среды типа Delphi и Visual Basic.

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

Декларативные языки можно подразделить на два семейства: логические (типичный представитель — Пролог) и функциональные (Лисп).

По всей видимости, непроцедурные языки имеют большое будущее.

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

В бывшем СССР большой вклад в развитие систем символьной математики внесла школа покойного академика Глушкова. В конце 70-х годов были созданы малые инженерные ЭВМ класса «Мир», способные выполнять аналитические вычисления даже на аппаратном уровне. Был разработан и успешно применялся язык символьных вычислений «Аналитик». Эти работы отчасти предвосхитили развитие систем символьной математики. К огромному сожалению, они появились слишком рано для своего времени и не соответствовали «генеральной линии» развития советской вычислительной техники в те годы. Уклон в сторону развития больших ЭВМ серии ЕС, навязанный в СССР компьютерными чиновниками, отодвинул компьютеры «Мир» на задний план, а затем этот класс компьютеров просто прекратил свое существование и развитие.

 

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

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

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

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

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

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

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

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

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

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

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

• используется аппарат переменных и действия с ними;

• поддерживается широкий набор типов данных.

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

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

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

poisk-ru.ru

Краткая история и классификация языков программирования

Количество просмотров публикации Краткая история и классификация языков программирования - 952

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

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

Один из первых языков программирования – Фортран (Formula Translation) был создан в серединœе 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.

Для решения экономических задач был создан язык программирования - Кобол.

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

В 1968 ᴦ. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителœем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями.

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

Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х ᴦ. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определœенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си - ϶ᴛᴏ язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.

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

В 80-х ᴦ. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.

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

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка - ϶ᴛᴏ те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определœенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки - ϶ᴛᴏ языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

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

К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счёт введения сверхмощных операций и операторов.

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.

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

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

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

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

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

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

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Οʜᴎ предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.

referatwork.ru

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

30 марта 2011 г.

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

Ada(Ада)

Язык Ada был разработан при поддержке Минобороны США в 1978 году в результате конкурса на котором выиграла группа программистов компании Honeywell. Назван по имени первой женщины программистки Ады Лавлейс. Конечная спецификация разработана к 1983 году. Вне военных проектов язык широкого распространения не получил.

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

Assembler (Ассемблер)

Язык ассемблера люди начали использовать с 1950 года. Этот язык первым позволил отображать двоичный код в более удобной для человека форме: в виде букв или укороченных слов, которые примерно обозначали сущность команды. Умея разбираться в распечатке ассемблера, можно находить ошибки в программах созданных даже при помощи других языков. В данный момент у каждого из нас дома стоят много «интерпретаторов ассемблера» — менюшки в телевизорах, программы стиралок разработаны зачастую именно на нем. (хотя программисты-лентяи пишут программы для микроконтроллеров и на C). Кроме того, на ассемблере написаны драйверы устройств, библиотеки и функции программ, написанных даже на других языках.Кроме того, на ассемблере создаются целые операционные системы, примером может стать Menuet OS.

Algol (Алгол)

ALGOrithmic Language, разработанный в 58-60 гг. прошлого столетия считается предком многих современных алгоритмических языков, т.к. именно в нем впервые осуществились основные идеи алгоритмизации. Именно в алголе стало относительно просто превращать алгебраические выражения в команды и вычитывать значения функций. В своё время алгол был популярен в прикладной физике и математике, но сейчас практически не используется.

Basic (Бейсик) и VBScript

Интерпретационный язык бейсик разработанный в 1960 году изначально предназначался именно для новичков, о чем свидетельствует даже его название — Beginner’s All-purpose Symbolic Instruction Code (многоцелевой символьный код для начинающих). Этот язык считается простейшим языком высокого уровня. Плохая поддержка процедурного программирования сделала его неподходящим для больших проектов, но зато способным создать небольшие программы за считанные минуты. Небольшой размер интерпретатора определил язык как встраиваемый во многие 8-разрядные ПЗП компьютеры и компьютеры прошлых поколений. (Автору статьи приходилось писать программы на таком Basic’е)

Включений версии Quick Basic в состав Ms-Dos проложило для него неплохую дорогу развития и сейчас его версии (Visual Basic, VBA…) являются одними из популярнейших сред для написания программ.

Основными проблемами программистов использующих VB является отсутствие нормальной справки (популярная, укороченная версия идет без MSDN) и необходимость «носить» за программой библиотеки, т.к. объекты, используемые в программах (кнопки, скроллы, метки…) требуют библиотек, которые есть не на всех компьютерах.

Именно Basic сделал программирования более доступным для большинства людей.На бейсике часто пишут…вирусы, вирусы для Microsoft Office. Включение VBA (Visual Basic for Application) в офисный пакет предопределило написание на нем не только макросов, но и вирусняков.

Идея появления языка VBScript заключалась в представлении разработчикам Web- страниц возможности использования привычных команд VB наряду с тегами HTML, что позволило разрабатывать мощные и богатые страницы. VBScript загружается в виде ASCII-текста и не имеет прав работы с файловой системой клиента, таким образов полностью обезопасив пользователя.

Слабая поддержка браузерами этого языка, «способствует» его медленному развитию, а после выпуска VS2003, практически и смерти… (начиная с .NET Microsoft-овский Basic де-факто стал обёрткой, отличающейся от C# только синтаксисом, потеряв большинство своих преимуществ (например модификацию кода «на лету»))

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

C (Си)

Язык программирования Си был разработан в 1972 году Деннисом Ритчи, в компании Bell Laboratories. Название происходит от номера проекта лаборатории (“A”,”B”,C”…). Изначально этот язык задумывался как промежуточный между языками высокого и низкого уровней, но продуктивность и компактность кода + преимущества структурного языка, несмотря на сложность обучения сделали Си самым популярным языком.

В 1980 году компания выпускает новый язык построенный на основе С — С++. По словам разработчика, Бьярна Страуструпа он должен «укорить написание хороших программ и сделать этот процесс наиболее приятным для каждого отдельно взятого программиста». Название С++ было придумано вместо начального «C с классами».

В наше время этот язык наиболее популярен и универсален, что доказывает создание именно на ней всемирной ОСи — Windows. Один из наиболее значимых языков в истории языков программирования.Сейчас Си считается основой для разработки современных больших и сложных проектов. Конечно, как и у всего существующего в природе, у него имеются и слабые стороны, вытекающие из требований эффективности.Помимо «Окон» на Си написаны такие известные программы как Outlook, Opera, 1C.

Cobol (Кобол)

«Общепринятый язык, ориентированный на бизнес», именно так расшифровывается название кобола (Common Business Oriented Language). Здесь появились способы обработки предвестников современных баз данных используемых на предприятиях и фирмах. Несмотря на свой довольно сложный синтаксис кобол довольно долго использовался в экономике и бизнесе, лишь недавно уступив место таким системам программирования БД как SQL и FoxPro.
Fortran (Фортран)

Фортран — самый первый компилированный язык программирования, базовые принципы и понятия которого легли в основу многих современных языков программирования высокого уровня. Разработанный в 1954-1958 гг Джимом Бекусом, он предназначенный для сложных научно-технических исследований, довольно быстро стал популярным среди инженеров и ученых и до сих пор используется, хотя уже и не в таких широких кругах. Название происходит от словосочетания «ТРАНслятор ФОРмул». Стандарты языка четко определенны, их всего четыре: fortran 66, fortran 77, fortran 90 и fortran 95

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

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

Java

Созданная компанией Sun Microsystems система разработки Java безопасна и высокопроизводительна. Java — объектно-ориентированный язык, удобный и надёжный в эксплуатации благодаря таким своим достоинствам, как многозадачность, поддержка протоколов Internet и многоплатформенность. Java — это интерпретируемый язык, и каждая Java-программа компилируется для гипотетической машины, называемой Виртуальная Машина Java. Результатом такой компиляции является байт-код Java, который в свою очередь может выполняться на любой операционной системе при условии наличия там системы времени выполнения Java, которая интерпретирует байт-код в реальный машинный код конкретной системы.

Язык Java является объектно-ориентированным и поставляется с достаточно объемной библиотекой классов. Библиотеки классов Java значительно упрощают разработку приложений, предоставляя в распоряжение программиста мощные средства решения распространенных задач.На Java написан движок известного эмулятора «Ил-2: Штурмовик».

JavaScript

Для создания компилируемых апплетов компания Netscape разработала язык JavaScript, который был внедрен в всемирно известный браузер компании.Первоначальное название — LiveScript, которое позже изменилоь получив разрешение у компание Sun. Microsoft на создание ответило своим языком JScript, после чего многие создатели браузеров начали выпускать свои спецификации, что сделало задачу написания вездеработающего скрипта довольно сложной. История этого языка программирования никак не связана с историей Java.

Pascal (Паскаль) и Delphi

Разработанный Никлаусом Виртом (а не французским математиком Блезом Паскалем, как абсолютно уверены половина людей J) в 1967-1971 годах компилированный язык программирования, изначально стал популярным в основном благодаря относительно простому синтаксису. Выпуск компанией Borland удобного и простого компилятора Turbo Pascal позволил ему занять лидирующие позиции и до сих пор изучаться в школах и институтах, хотя и как основы программирования, а не идеального языка для создания программ. Borland Pascal и используемый в Delphi язык Object Pascal основываются на Turbo Pascal и развивают его идеи. По сути, Delphi является компилятором языка Pascal. Самая первая версия Delphi объединила в себе надежный компилятор, визуальную среду для программиста и очень мощные возможности языка по работе с базами данных, и уже через год вышла Dephi 2 для 32-битной системы.Из известных программ на Delphi написан “Total Commander” и “The Bat”

Рефал

«Зверский» язык, разработанный в 1966 году в ИМП АН СССР. Рефал широко применялся при разработке трансляторов с алгоритмических языков, в теоретической физике и прикладной математике, в проектировании информационных систем.

Программист на Рефале сам определяет структуру обрабатываемой информации, именно поэтому эффективность программы полностью зависит от него. На данный момент жив проект www.refal.net где язык пытается развиваться.

korzh.net

Современные языки программирования и их использование — Iteach

Материал из ИнтеВики — обучающей площадкой для проведения тренингов программы Intel

Название доклада

Современные языки программирования и их использование

Автор проекта

Помыткин Николай Сергеевич

Структура проекта

● Схема классификации языков программирования

● Классификация языков программирования

● Обзор языков программирования

● Вывод

● Полезные ресурсы

Схема классификации языков программирования

Классификация языков программирования

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

Различают такие языки процедурного программирования:

 Язык Фортран создан в начале 50-х годов 20-го века для программирования научно-технических задач;

 Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;

 Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые введены понятия «блочная структура программы» и «динамическое распределение памяти»;

 В середине 60-х годов 20-го века был создан специализированный язык программирования для начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных средств для решения научных, технических и экономических задач, а также задач, например, игровых.

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

 В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо приспособлен для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения.

 Язык Паскаль (PASCAL) (1968-1971гг)- язык процедурного программирования наиболее популярный для ПК, который и в настоящее время успешно применяется. В основу языка Pascal положен подход от общей задачи к частным (более простым и меньшим по объему). К основным принципам, которыми обладает Паскаль, можно отнести: а) Структурное программирование, которое основано на использовании подпрограмм и независимых структур данных; б) Программирование «сверху-вниз», когда задача делится на простые, самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью сверху вниз.

 К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык назван в честь первой программистки Ады Лавлейс- дочери Байрона. Его отличает модульность конструкций.

 Язык СИ (начало 70-х годов) также относится к языкам процедурного программирования. Первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а использование подпрограмм основано на понятии функции, которая может сочетать в себе возможности процедуры. С одной стороны, по набору управляющих конструкций и структур данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств прямого обращения к функциональным узлам компьютера, а это означает, что его можно использовать как операционный язык.

Объектно-ориентированное программирование (ООП)

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

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

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

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

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

Наиболее современными языками программирования являются С++ и Java. С середины 90-х годов многие объектно–ориентированные языки реализуются как системы визуального проектирования, в которых интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов. К объектно – ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++. Язык VBA (Visual Basic for Application) – язык приложений Microsoft Office (Excel, Word, Power Point и др). VBA соблюдает основной синтаксис языка и правила программирования языков Basic – диалектов, позволяет создавать макросы для автоматизации выполнения некоторых операций и графический интерфейс пользователя, интеграцию между различными программными продуктами.

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

К ним относятся функциональные и логические языки программирования. Функциональное программирование- это способ составления программ, в которых единственным действием является вызов функции. В функциональном программировании не используется память, как место для хранения данных, а, следовательно, не используются промежуточные переменные, операторы присваивания и циклы. Ключевым понятием в функциональных языках является выражение. Программа, написанная на функциональном языке, представляет собой последовательность описания функций и выражений. Выражение вычисляется сведением сложного к простому. Все выражения записываются в виде списков. Первым языком стал язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959г. Этот язык позволяет обрабатывать большие объемы текстовой информации. Логическое программирование- это программирование в терминах логики. В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG) (Programming in Logic). Программа на языке Пролог строится из последовательности фактов и правил, затем формулируется утверждение, которое Пролог пытается доказать с помощью правил. Язык сам ищет решение с помощью методов поиска и сопоставления, которые в нем заложены. Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска.

Обзор языков программирования

Ассемблер

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

1) языки низкого уровня;

2) языки высокого уровня.

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

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

Паскаль

Язык программирования Паскаль был разработан профессором кафедры вычислительной техники Швейцарского Федерального института технологии Николасом Виртом в 1968 году как альтернатива существующим и все усложняющимся языкам программирования, таким, как PL/1, Algol, Fortran. Интенсивное развитие Паскаля привело к появлению уже в 1973 году его стандарта в виде пересмотренного сообщения, а число трансляторов с этого языка в 1979 году перевалило за 80. В начале 80-х годов Паскаль еще более упрочил свои позиции с появлением трансляторов MS-Pascal и Turbo-Pascal для ПЭВМ. С этого времени Паскаль становится одним из наиболее важных и широко используемых языков программирования. Существенно то, что язык давно вышел за рамки академического и узко профессионального интереса и используется в большинстве университетов высокоразвитых стран не только как рабочий инструмент пользователя. Важнейшей особенностью Паскаля является воплощенная идея структурного программирования. Другой существенной особенностью является концепция структуры данных как одного из фундаментальных понятий.

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

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

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

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

- оптимизирующие свойства трансляторов с Паскаля позволяют создавать эффективные программы. Это послужило одной из причин использования Паскаля в качестве языка системного программирования

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

Си

Сотрудник фирмы Bell Labs Денис Ритчи создал язык Си в 1972 году во время совместной работы с Кеном Томпсоном, как инструментальное средство для реализации операционной системы Unix, однако популярность этого языка быстро переросла рамки конкретной операционной системы и конкретных задач системного программирования. В настоящее время любая инструментальная и операционная система не может считаться полной если в ее состав не входит компилятор языка Си. Ритчи не выдумывал Си просто из головы – прообразом служил язык Би разработанный Томпсоном. Язык программирования Си был разработан как инструмент для программистов-практиков. В соответствии с этим главной целью его автора было создание удобного и полезного во всех отношениях языка.

Си является орудием системного программиста и позволяет глубоко влезать в самые тонкие механизмы обработки информации на ЭВМ. Хотя язык требует от программиста высокой дисциплины, он не строг в формальных претензиях и допускает краткие формулировки.

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

Си – мощный и гибкий язык. Большая часть операционной системы Unix, компиляторы и интерпретаторы языков Фортран, Паскаль, Лисп, и Бейсик написаны именно с его помощью.

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

Си++

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

По мнению автора языка, различие между идеологией Си и C++ заключается примерно в следующем: программа на Си отражает “способ мышления” процессора, а C++ - способ мышления программиста. Отвечая требованиям современного программирования, C++ делает акцент на разработке новых типов данных наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения. Класс является ключевым понятием C++. Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами.

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

Язык С++ является средством объектного программирования, новейшей методики проектирования и реализации программ, которая в текущем десятилетии, скорее всего, заменит традиционное процедурное программирование. Главной целью создателя языка доктора Бьерна Страустрапа было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.

Абстракция, реализация, наследование и полиморфизм являются необходимыми свойствами которыми обладает язык С++, благодаря чему он не только универсален, как и язык Си, но и является объектным языком. Фортран Фортран широко распространенный язык, особенно среди пользователей, которые занимаются численным моделированием. Это объясняется несколькими причинами:

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

- наличием эффективных трансляторов Фортрана на всех типах ЭВМ, причем версии для различных машин достаточно стандартизированы и перенос программ с машины на машину обычно не составляет больших трудностей;

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

За прошедший период сформировалась новая методология и философия программирования. С начала 70-х годов Фортран подвергался заслуженной критике. В 1977 году был принят новый стандарт языка Фортран-77. На создание нового стандарта ушло много времени, но сейчас уже можно считать, что его разработка завершена и новый стандарт Фортран-90 начал входить в практику пользователей Фортрана. Только на машинах типа IBM PC существует несколько трансляторов например, Watfor, Lap-Fortran и т. д. Но наибольшее распространение на машинах этого типа получили различные версии транслятор Fortran-77. Выпущенный в 1990 году транслятор MS-Fortran 5.0 практически полностью соответствует стандарту Fortran-90. Большинство крупных научно-технических прикладных программ написано на Фортране потому, что он обладает переносимостью и устойчивостью, а также благодаря наличию встроенных математических и тригонометрических функций. Дополнительной, неотъемлемой частью любой прикладной программы на языке Фортран является расширенная графическая библиотека, позволяющая использовать различные графические данные и изображения.

Ада

Язык создан в основном в 1975 - 1980 годах в результате грандиозного проекта, предпринятого Министерством Обороны США с целью разработать единый язык программирования для так называемых встроенных систем (т. е. систем управления автоматизированными комплексами, работающими в реальном времени). Имелись в виду прежде всего бортовые системы управления военными объектами (кораблями, самолетами, танками, ракетами, снарядами и т. п.). Поэтому решения, принятые авторами Ады не следует считать универсальными. Их нужно воспринимать в контексте особенностей выбранной предметной области. Язык Ада возник в результате международного конкурса языковых проектов проходящего в 1978-1979 годах. Участники должны были удовлетворить довольно жестким, детально разработанным под эгидой Министерства Обороны США требованиям. Интересно, что все языки, дошедшие до последних туров этого конкурса, были основаны на Паскале. В этой связи Аду можно предварительно охарактеризовать как Паскаль, развитый с учетом перечисленных выше пяти основных требований. При этом авторы пошли в основном по пути расширения Паскаля новыми элементами. В результате получился существенно более сложный язык.

Кобол

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

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

ПЛ/1

ПЛ/1 разработан в 1964-1965 годах фирмой IBM. ПЛ/1 относится к числу универсальных языков, т. е. позволяет решать задачи из разных областей: численные расчеты, текстовая обработка, экономические задачи и т. д. По своим возможностям он перекрывает такие языки, как Фортран, Алгол-60 (созданный для численных расчетов), Кобол (для экономических задач), хотя в силу ряда причин вытеснить эти языки ПЛ/1 не смог.

ПЛ/1 содержит все основные конструкции, характерные для так называемых языков высокого уровня, а также ряд специфичных средств, удобных для практического программирования. Язык напоминает конструктор с большим числом деталей – пользователю достаточно освоить только те части языка, которые ему практически необходимы. Его операторы довольно емки, что часто позволяет получить запись программы более компактную, чем на других языках. Знающий ПЛ/1 программист без труда осваивает любой другой язык того же или близкого класса.

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

Модула

Можно считать, что история языка Модула начинается в 1980 году, когда Никлаус Вирт, один из выдающихся специалистов по теории информации, известный большинству специалистов по вычислительной технике в основном как создатель языка Паскаль, опубликовал описание нового языка программирования, названного им Модула. В отличие от Паскаля, который был по замыслу языком для обучения программирования, Модула с самого начала представлял собой язык для профессиональных системных программистов, продолжая лучшие традиции своего предшественника и обогащая их новыми идеями, соответствующих таким требованиям к языкам программирования, как структурность, модульность и способность к расширению. Как и множество других языков программирования, Модула подвергалась эволюции, во время которой ее первоначальное название было переделано в имя Модула-2. Одновременно с развитием языка Модула для него создавались новые компиляторы, однако, ни один из них не мог соперничать с лучшими реализациями языков Паскаль и Си, например, разработанных фирмой Борланд. В этот переходный для языка Модула период лучшей считались реализации выполненные фирмой Logitech, которые по своим характеристикам проигрывала Турбо Паскалю и Турбо Си. Только в 1988 году после появления на американском рынке системы Top Speed, Модула-2 заняла достойное место среди процедурных языков, предназначенных для системного программирования. Возраставшей популярности системы Top Speed способствовало несколько факторов: удобное и, кроме того, легко изменяемая по желанию пользователей операционное окружение, быстрый компилятор и селективный редактор связей. Но наиболее существенным оказалось то, что создаваемые программы отличались большим быстродействием и занимали не много места в памяти.

Бейсик

Бейсик (Basic - Beginner’s All-Purpose Symbolic Instruction Code – “универсальный символический код инструкций для начинающих”). Прямой потомок Фортрана и до сих пор самый популярный язык программирования для персональных компьютеров. Появился Бейсик в 1963 году (назвать автора было бы трудно, но основная заслуга в его появлении несомненно принадлежит американцам Джону Кемени и Томасу Курцу). Как и любые преимущества, простота Бейсика оборачивалась, особенно в ранних версиях трудностями структурирования; кроме того, Бейсик не допускал рекурсию – интересный прием, позволяющий составлять эффективные и в то же время короткие программы.

Разработаны мощные компиляторы Бейсика, которые обеспечивают не только богатую лексику и высокое быстродействие, но и возможность структурного программирования. По мнению некоторых программистов, наиболее интересными версиями являются GWBASIC, Turbo-Basic и Quick Basic.

В свое время появление Quick Basic ознаменовало рождение второго поколения систем программирования на языке Бейсик. Он предоставлял возможность модульного и процедурного программирования, создания библиотек, компиляции готовых программ и прочее, что вывело его на уровень таких классических языков программирования, как Си, Паскаль, Фортран и др. Более того, в связи с отсутствием официального стандарта языка Бейсик, его реализация в виде Quick Basic стала фактическим стандартом. Безусловными лидерами среди различных версий Бейсика были Quick Basic 4.5 и PDS 7.1 фирмы Microsoft, появившиеся в конце 80-х годов.

Лисп

Язык Лисп был предложен Дж. Маккарти в работе в 1960 году и ориентирован на разработку программ для решения задач не численного характера. Английское название этого языка – LISP является аббревиатурой выражения LISt Processing (обработка списков) и хорошо подчеркивает основную область его применения. Понятие “список” оказалось очень емким. В виде списков удобно представлять алгебраические выражения, графы, элементы конечных групп, множества, правила вывода и многие другие сложные объекты. Списки являются наиболее гибкой формой представления информации в памяти компьютеров. Неудивительно поэтому, что удобный язык, специально предназначенный для обработки списков, быстро завоевал популярность.

После появления Лиспа различными авторами был предложен целый ряд других алгоритмических языков ориентированных на решение задач в области искусственного интеллекта, среди которых можно отметить Плэнер, Снобол, Рефал, Пролог. Однако это не помешало Лиспу остаться наиболее популярным языком для решения таких задач. На протяжении почти сорокалетней истории его существования появился ряд диалектов этого языка: Common LISP, Mac LISP, Inter LISP, Standard LISP и др. Различия между ними не носят принципиального характера и в основном сводятся к несколько отличающемуся набору встроенных функций и некоторой разнице в форме записи программ. Поэтому программист, научившийся работать на одном из них без труда сможет освоить и любой другой. Большим достоинством Лиспа является его функциональная направленность, т. е. программирование ведется с помощью функций. Причем функция понимается как правило, сопоставляющее элементам некоторого класса соответствующие элементы другого класса. Сам процесс сопоставления не оказывает никакого влияния на работу программы, важен только его результат – значение функции. Это позволяет относительно легко писать и отлаживать большие программные комплексы. Ясность программ, четкое разграничение их функций, отсутствие каверзных побочных эффектов при их выполнении является обязательными требованиями к программированию таких логически сложных задач, каковыми являются задачи искусственного интеллекта. Дисциплина в программировании становится особенно важной, когда над программой работает не один человек, а целая группа программистов.

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

Пролог

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

Object PAL

Object PAL является мощным языком программирования. Object PAL представляет собой объектно-ориентированный, управляемый по событиям, визуальный язык программирования. На начальном уровне функциональности Object PAL можно осуществлять операции с данными, создавать специальные меню, а также управлять сеансом ввода данных. События в Object PAL порождают команды, которые имитируют эффект использования Paradox в интерактивном режиме. Существует возможность автоматизировать часто выполняемые задания, а также осуществлять над таблицами, формами и отчетами действия, которые были не доступны при интерактивной работе. Также Object PAL предоставляет все средства полнофункционального языка программирования в среде Windows. Можно использовать Object PAL для создания законченных систем, в которых реализованы специальная система меню, справочная система, а также всевозможные проверки данных. В Object PAL можно сохранить свои наработки в динамически компонуемой библиотеке, доступ к которой будут иметь несколько форм. Кроме того, можно установить связь с другими динамическими библиотеками, содержащие прграммы написанные на таких языках как Си, C++ или Паскаль.

Object PAL может быть использован в качестве инструмента для создания автономных программ. Можно написать законченное Windows–приложение и запустить его под Paradox.

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

dBase

Созданная фирмой Борланд реализация языка dBase представляет собой удачный гибрид объектной ориентации и традиционных способов программирования. Он позволил создавать системы с помощью объектного дизайна и использовать обычные приемы обработки записей. Большим достижением фирмы Борланд явилось то, что она очень удачно совместила объектные и процедурные приемы программирования. Первая версия для Windows давала пользователю самый мощный объектный инструмент на рынке программ баз данных. Она позволяет создавать новые классы объектов, которые обладают свойствами наследования, инкапсуляции и полиморфизма. Она также позволяет программировать эти объекты при помощи традиционных команд dBase, идеально подходящих для управления простыми табличными базами данных. Все это дает неоспоримое преимущество – осуществлять без особого труда переход к приемам объектного программирования, переход столь сложный, например, как в – СУБД Paradox.

Java

Язык Java зародился как часть проекта создания передового программного обеспечения (ПО) для различных бытовых приборов. Реализация проекта была начата на языке С++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента - языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами. Язык Java потребовался для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с Си и Cи++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.

Три ключевых элемента объединились в технологии языка Java

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

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

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

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

Языки программирования для компьютерных сетей являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называются скрипт – языками.

Perl

Perl является интерпретируемым языком, созданным программистом Лари Уоллом для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl вы, например, можете создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты.

Perl - язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Perl также удобен для написания различных системных программ. Этот язык прост в использовании, эффективен, но про него трудно сказать, что он элегантен и компактен. Синтаксис выражений Perl близок к синтаксису Си. Рекурсия может быть произвольной глубины. Хотя Perl приспособлен для сканирования текстовых файлов, он может обрабатывать так же двоичные данные. Perl позволяет использовать регулярные выражения, создавать объекты, вставлять в программу на Си или Си++ куски кода на Perl, а также позволяет осуществлять доступ к базам данных, в том числе Oracle.

С изобретением World Wide Web, Perl оказался прекрасным средством для взаимодействия с web-серверами через Common Gateway Interface (CGI) - общий интерфейс взаимодействия. Команды Perl могут легко получить данные из формы HTML или другого источника и выполнить с ними какое-нибудь действие.

Язык PHP (1995-1997гг) обладает средствами доступа к БД и используется создателями динамических сайтов во всем мире.

Язык Tcl/Tk (конец 80-х годов) состоит из мощных команд, предназначенных для работы с абстрактными нетипизированными объектами и позволяет создавать программы с графическим интерфейсом.

Язык VRML (1994г) создан для организации виртуальных трехмерных интерфейсов в Интернете.

Язык XML. С 1996г идет работа над созданием универсального языка структуры документов. Может стать заменой языка HTML.

Вывод

Полезные ресурсы

Отзыв Айзили

Где доклад?

Отзыв Ранифка

Re: Где доклад?Все будет :-D

Отзыв Шамагуловой Элиты

?????? :(

Отзыв Мишина Александра

Отличный доклад. Узнал много нового о языках программирования.

Отзыв Морозова Александра

Конечно хотелось бы видеть доклад или хотя бы презентацию в каком либо виде.

wiki.iteach.ru