![](/stc/img/evkova.png)
Классификация языков программирования. Критерии выбора среды и языка разработки программ (Язык и система программирования – понятие, сущность)
Содержание:
Введение
Актуальность. В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. К сегодняшнему дню насчитывают шесть поколений языков программирования. Каждое из последующих поколений по своей функциональной мощности качественно отличается от предыдущего. С появлением персональных компьютеров языки стали составными частями интегрированных сред разработки. Появились языки, применяемые в различных офисных программах. В настоящее время языки программирования применяются в самых различных областях человеческой деятельности, таких как научные вычисления (языки C++, FORTRAN, Java), системное программирование (языки C++, Java), обработка информации (языки C++, COBOL, Java), искусственный интеллект (LISP, Prolog), издательская деятельность (Postscript, TeX), удаленная обработка информации (Perl, PHP, Java, C++), описание документов (HTML, XML).
С течением времени одни языки развивались, приобретали новые черты и остались востребованы, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес.
ГЛАВА 1. ЯЗЫК И СИСТЕМА ПРОГРАММИРОВАНИЯ – ПОНЯТИЕ, СУЩНОСТЬ.
Рассмотрим для начала понятие программирования. В широком смысле слова программирование - это процесс составления плана действий (или программ). В узком смысле – раздел прикладной математики, изучающий способы и методы реализации алгоритма решения конкретной задачи, составление программы, ее отладку и эксплуатацию
Что же касается языка программирования, то «Математический энциклопедический словарь» дает следующее определение: «Программирования язык — формальная знаковая система, служащая общению человека с ЭВМ»1.
Еще одно строгое определение из классического учебника «Курс программирования» Е. Жоголева и Н. Трифонова (М., «Наука», 1974): «Алгоритмический язык — это набор символов (алфавит языка), система правил образования из этих символов конструкций, с помощью которых представляются определенные компоненты алгоритма (синтаксис языка), и система правил истолкования этих конструкций, позволяющих однозначно воспроизводить процесс переработки данных (семантика языка)».
Брайан Хигман (Brian Higman) в книге «Сравнительное изучение языков программирования» предлагает следующее определение: «Назначение языка программирования состоит в хранении и передаче упорядоченных последовательностей инструкций, или алгоритмов»2.
На современном этапе мы можем сказать, что язык программирования(алгоритмический язык) — набор правил, определяющих, какие последовательности символов составляют программу (синтаксические правила) и какие вычисления описывает программа (семантические правила).
ГЛАВА 2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2.1. Классификация по поддерживаемым методологиям
Для ориентации в таком разнообразии предлагалось и предлагается огромное количество классификаций языков программирования.
В настоящее время сложилось довольно много классификаций языков программирования. Далее мы приведем самые известные из них.
Классификация языков по поддерживаемым методологиям появилась примерно в 80-х годах XX века. Мы выделили следующие основные группы языков:
- языки императивного программирования и две важнейшие подгруппы: языки структурного императивного программирования. Эти языки более известны под кратким именем — языки структурного программирования; языки императивного параллельного программирования. Эти языки также обычно называют кратко — языки параллельного программирования;
- языки объектно-ориентированного программирования;
- языки функционального программирования;
- языки логического программирования;
- языки программирования в ограничениях.
2.2. Классификация по принадлежности к семействам
Основная задача классификации языков по принадлежности к семействам — проследить их родственные взаимосвязи (фактически, построить генеалогическое дерево) с целью выяснения их влияния друг на друга и, следовательно, на характеристики и свойства языков. Это нечеткая классификация, которая может вызвать спорное отношение к ней. Выделим девять основных семейств.
Семейство универсальных языков.
Семейство уникальных языков.
Семейство языков параллельного программирования.
С-семейство языков.
Pascal-семейство языков.
Ada-семейство языков.
Simula-семейство языков.
Lisp-семейство языков.
Prolog-семейство языков.
2.3. Классификация по ориентации на предметные области
Язык программирования может быть специализированным для некоторой предметной области. Выделим девять таких областей, хотя конечно их гораздо больше.
Языки форматирования текстов..
Языки разметки..
Языки скриптов..
Промежуточные языки программирования..
Языки программирования агентов.
Языки создания графики..
Языки описания аппаратуры..
Языки описания виртуальной реальности..
Языки конфигурирования..
2.4. Классификация по степени абстракции от аппаратуры
По степени абстракции от машины можно выделить три группы языков.
Языки низкого уровня. Такие языки имеют простые машиноподобные команды и осуществляют прямой доступ к памяти. Пример — ассемблер для любой архитектуры.
Языки высокого уровня. Языки предоставляют возможность определять сложные структуры данных, доступ к памяти осуществляется через операции. Примерами языков этого уровня являются Pascal, С и Ada.
Языки сверхвысокого уровня. Команды исполняются на полностью абстрактной машине, полностью скрыт доступ к памяти. Пример таких языков — Prolog, SETL, APL, Miranda.
2.5. Классификации по истории языков программирования
Существуют также и классификации по истории языков программирования («по поколениям»). Довольно разумен подход Дж. Вэгнера, который выделяет четыре поколения языков. К первому (1954—1958) он относит такие языки, как Fortran I, Algol-58, Flowmatic, IPL-V, предоставившие возможность работы с математическими формулами. Второе поколение (1959—1961) у Вэгнера составляют Fortran II (подпрограммы, раздельная компиляция), Algol-60 (блочная структура, типы данных), COBOL (описание данных, работа с файлами), LISP (обработка списков, указатели). В третьем поколении (1962—1970) присутствуют PL/1 (Fortran + Algol + COBOL), Algol-68 (преемник ALGOL-60), Pascal (развитие Algol-60), Simula (классы, абстрактные данные). Наконец, к четвертому поколению (1970—1980-е гг.) Вэгнер относит множество языков, из которых лишь немногие доказали свою жизнеспособность.3
ГЛАВА 3. СОВРЕМЕННЫЕ ЯЗЫКИ И СИСТЕМЫ ПРОГРАММИРОВАНИЯ
3.1. Basic
Джон Кемени и Томас Курц, сотрудники математического факультета Дармутского коледжа, написали простой и легкий в изучении язык, который назвали Бейсик (Basic Beginner’s All-purpose Symbolic Instruction Code - универсальный код символических инструкций для начинающих).
В конце 1975 г. Был создан первый интерпретатор Крошки-Бейсика, состоящий примерно из 20 страниц восьмеричного кода. Его создали два программиста-любителя Дик Уиппл и Джон Арнольд. В США выпускался журнал “Dr. Dobb’s Journal of computer Calisthenics & Orthodonta: Running Light without Overbyte.”, посвященный исключительно Крошке-Бейсику. В это же время изготовитель “Альтаира” фирма MITS (Micro Instrumentation and Telemetry Systems) начала продавать собственную версию языка Бейсик. Эту версию в 1975 г. написал первокурсник Гарвардского университета Бил Гейтс и его друг Пол Аллен, молодой программист фирмы “Хониуэл”.
Эпоха Крошки-Бейсика завершилась в конце 70-х годов. Микрокомпьютеры выпускались теперь в полностью собранном виде, изготовители встраивали интерпретаторы версий Бейсика непосредственно в ПЗУ компьютера. Вскоре наибольшую популярность завоевал М-Бейсик, с продажи которого Гейтс и Ален начали деятельность созданной ими компании Microsoft Corporation. На протяжении многих лет Кемени и Курц периодически пересматривали первоначальную версию Бейсика и даже заменили оператор GOTO более сложными управляющими структурами.
Характерными чертами языка являются:
диалоговый режим работы;
нумерация строк;
вещественный и символьный типы данных,
управляющие конструкции;
все переменные являются глобальными,наличие массивов.
3.2. Pascal
Язык программирования Pascal был создан Никлаусом Виртом, и назван в честь французского философа и математика XVIIв. Блеза Паскаля. В то время Вирт был профессором информатики в Федеральном техническом университете в Швейцарии и нуждался в языке, с помощью которого можно было обучать студентов навыкам программирования.
Концепция Паскаля была разработана Н. Виртом примерно в 1970 году и Паскаль быстро получил широкое распространение благодаря легкости его изучения, наглядности составленных на нем текстов программ. Поскольку Паскаль послужил основой для разработки других языков программирования, таких как Ада и Модула-2, и поскольку многие языки содержат аналогичные Паскалю структуры, знание Паскаля является солидной базой для изучения других языков программирования.
В середине 70-х годов была создана попытка разработать международный стандарт на Паскаль. В результате в 1982 году появился стандарт ИСО 7185.
Язык Паскаль стараниями Андерса Хейлсберга превратился в мощную профессиональную систему программирования Turbo Rascal. После просуществовавшей сравнительно недолго и не получившей широкое распространения версии 1.0 в середине 1984 года появляется версия 2.0. Распространение которой пошло стремительными темпами. К осени 1985 года появляется версия3.0, отличающаяся от версии 2.0 следующими особенностями: компилятор и редактор стали работать существенно быстрее, появилась возможность передачи параметров в программу с помощью команды RUN, стал возможным вызов MS-DOS из программы, стала удобной работа с файлами. С начала 1988 года начинает распространяться версия 4.0. Здесь Турбо Паскаль представлен в совершенно новой форме. Не только становится еще более быстрым компилятором, но и появляется совершенно новое программное окружение. Появилась возможность разбиения программы на части (модули), компилируемые по отдельности. К осени 1988 года появилась версия 5.0 с еще белее развитым программным окружением. Здесь заслуживает внимания прежде всего встроенный отладчик. Турбо Паскаль может использоваться в большинстве существующих для персональных компьютеров операционных систем.
3.3. Delphi
Появление инструментальных средств Borlаnd Pascal with Objects и Delphi для разработки программ в среде Windows лишний раз показала какие по истине неисчерпаемые возможности таит в себе Паскаль. Borland Pascal и используемый в Delphi язык Object Pascal основываются на Turbo Pascal и развивают его идеи.
Delphi - компилятор языка Pascal. Delphi 1 был первым инструментарием разработки Windows приложений, объединившим в себе оптимизирующий компилятор, визуальную среду программирования и мощные возможности работы с базами данных. Годом позже Delphi 2 предложил все то же, но на новом уровне современной 32-битной операционной системы Windows 95 и Windows NT. Кроме того, Delphi 2 предоставил программисту 32-битовый компилятор, создававший более быстрые и эффективные приложения, мощные библиотеки объектов.4
Продолжительная работа команды разработчиков Delphi привела к появлению в третьей версии продукта расширенного набора инструментов для создания приложений, возможности использования технологий COM для разработки приложений WWW и многих других современных технологий программирования.
Delphi 4 является очередным шагом в эволюции компиляторов Паскаля с тех времен, когда более 16 лет назад Андерс Хейлсберг создал первый компилятор Turbo Pascal
3.4. Fortran
В 1954 г. группа разработчиков фирмы IBM под руководством Джона Бекуса приступила к разработке языка программирования. Местом рождения Фортрана стала штаб-квартира фирмы IBM в Нью-Йорке. Несмотря на это группа разработчиков продолжала работу над языком. Работа над компилятором языка оказалась не простой и продолжалась более двух лет. В апреле 1957 г. компилятор языка Фортран был готов для использования владельцами машины IBM-704. Вначале Фортран не хотели признавать, однако по сравнению со своими предшественниками Фортран был весьма прост для обучения и использования.
Через пять лет Фортран использовался на шести различных моделях компьютеров фирмы IBM. Новый язык не был лишен недостатков, устранение которых привело к появлению Фортрана II, который позволял присоединять программы на ассемблере. В 1958 г. была создана версия ФортранIII, а версия Фортран IV, расширившая возможности языка появилась в 1962 г. Поскольку Фортран многократно адаптировался ко все новым системам машин, постепенно накапливались отличия. Для наведения порядка проводились стандартизации языка в 1966 г., а затем в 1977 г. Фортран оказался первым широко распространенным коммерческим языком.
3.5. PL/1, Алгол-58
В 1961 г. IBM, чтобы сохранить первенство на рынке компьютеров, занялась изготовлением “Системы-360”.Эти машины должны были удовлетворить в равной степени потребности как в аналитических вычислениях, так и в обработке данных в сфере бизнеса, и в специальных приложениях. Компьютер с такими возможностями требовал мощного языка. За полгода до окончания работы над аппаратным обеспечением IBM начала заниматься языком.
Был создан “комитет по разработке передового языка”. Комитет состоял из представителей фирм “Lockheed”, “Union Carbait”, “Standard Oil ” из Калифорнии и специалисты из отделов программирования фирмы IBM. Комитет возглавил Джорж Рэдин. Они приступили к работе в октябре 1963г, и к февралю 1964 г. спецификации языка были завершены.
Этот язык был назван PL/1 (от programming language one) работа над компилятором была поручена лаборатории фирмы IBM в Англии. Многие черты Фортрана, Кобола и Алгола нашли отражение в PL/1. Критики отмечали, что язык наделен слишком многими качествами, что привело к повтору недостатков предыдущих языков.
27 мая 1958 г. в Федеральном техническом университете г. Цюрих состоялась конференция по созданию нового языка программирования. Причиной созыва конференции послужило отсутствие единого языка научного программирования. Через неделю после заседания возник язык , названный Алгол-58. В ходе конференции возникало много споров. Американцы настаивали чтобы новый язык был близок к уже используемым языкам, а европейцев больше интересовала мощь языка для решения сложных математических задач. Самый большой спор возник из-за формы записи десятичных дробей
Язык, созданный на этой конференции, многое унаследовал от Фортрана. В 1959 году Джон Бекус ознакомил с Алголом организацию потребителей компьютеров. От фирмы IBM потребовали реализовать Алгол, но она тормозила развитие языка, возлагая основные свои надежды на Фортран. Несмотря на это Бекус продолжал активно участвовать в развитии Алгола. Вернувшись в Цюрих он занялся синтаксисом языка, в результате чего разработал строгую и точную систему определения каждой структуры языка логическим образом.
Последующее уточнение этой работы датским ученым Питером Науром привел к тому, что такой подход стали называть “форма Бекуса-Наура” (БНФ). Язык образца 1958 года являлся эскизом языка Алгол. В январе 1960г. 13 представителей стран Европы и США, включая 7 человек с прошлой конференции, встретились в Париже чтобы исправить недостатки предыдущей версии языка. Одним из вновь прибывших на эту конференцию был Питер Наур, предложивший вариант измененного Алгола, записанного при помощи БНФ. Группа программистов единогласно приняла решение по языку. (см. рис.) Таким образом появился язык Алгол-60. На него обрушилось много критики в основном со стороны американцев. Программисты Европы сразу приняли Алгол-60 . Он позволил их компьютерной индустрии обрести независимость от американской технологии.
3.6. С и С++
Язык Си был разработан и реализован Д. Ритчи в 1972г. в фирме Bell Labs, использовался в самых различных приложениях, в основном под управлением операционной системы UNIX. Он представлял собой дальнейшее развитие языка Би (B), который основывался на созданном в Кембриджском университете языке BCPL (от Basic Combined Programming Language- базовый комбинированный язык программирования), который в свою очередь был потомком Алгола-60. В 1977г. Была начата работа по созданию машинно-независимой версии транслятора с языка Си с целью облегчит его перенос в новые окружения. Результатом этого явилось появление совместимых по входному языку трансляторов с языка Си для 15 различных типов ЭВМ. В ходе работ по созданию мобильного транслятора с языка Си сам он был переработан для повышения мобильности написанных на нем программ.
Первые версии языка программирования Си++ (тогда он назывался ";Си с классами";) были разработаны в начале 80-х годов Бьярном Страуструпом, сотрудником знаменитой AT&T Bell Labs, где ранее были разработаны операционная система UNIX и язык программирования Си. По признанию самого автора языка, Си++ никогда не разрабатывался на бумаге. Проектирование, реализация и документирование новых возможностей происходили фактически одновременно. Единственной целью разработки было создание языка, на котором было бы удобно программировать автору и его друзьям. За основу был взят популярный в среде профессиональных разработчиков язык программирования Си. Первыми средствами, которыми был расширен Си, стали средства поддержки абстракций данных и объектно-ориентированного программирования. Как это принято в AT&T, описание нового языка не было опубликовано сразу. Первыми его пользователями стали сами сотрудники Bell Labs.
В 1993 впервые был реализован коммерческий транслятор, и сам язык был назван ";С++";. Первым транслятором языка был препроцессор cfront, транслирующий программу на Си++ в эквивалентную программу на Си. Если не считать документацию к транслятору cfront, первой книгой с описанием языка стала ";The C++ Programming Language"; (Addison-Wesley, 1985), переведенная на русский язык и изданная в 1991 году (Страуструп Б. Язык программирования С++. М.: Радио и Связь, 1991). С этого момента началось его бурное распространение и создание многочисленных реализаций.
C 1985 года в язык были введены новые возможности: множественное и виртуальное наследование, шаблоны функций и классов, обработка исключительных ситуаций. Кардинально изменена семантика совместного использования оператора new, изменен синтаксис для вложенных классов. С момента опубликования и до настоящего момента язык постоянно усовершенствовался и расширялся. Важным этапом в его развитии стала публикация в 1990 году подробного и достаточно строгого описания языка. Фактически одновременно с этим началась стандартизация языка. Инициатором стандартизации выступил не автор языка. Более того, Страуструп всегда довольно прохладно относился к попытке его полной стандартизации и выступал за реализации, в которых базовые возможности языка расширялись бы средствами и библиотеками, характерными только для данной реализации.
Объединенный ANSI-ISO (ANSI X3J16; ISO WG21/N0836) комитет начал функционировать в конце 1989 года. Целью его работы является создание единого стандарта для языка Си++ и его библиотечных средств. За основу проекта стандарта было взято описание языка, данное в 1990 году. В работе объединенного комитета значительное место занимает изучение возможных изменений текста проекта стандарта, а также уточнение различных правил языка. Позволим себе напомнить, что непосредственный предшественник Си++ - язык Си прошел успешно процесс стандартизации. Работа по его стандартизации завершилась в 1989 году, и стандартизованный вариант сейчас известен под именем ANSI Си. Работа по стандартизации Си++ осложнялась тем, что язык долгое время был открыт для расширений. Си++ стал довольно громоздким языком (сопоставимым разве что с языком Ada), и ни один человек сейчас не в состоянии точно помнить все его детали и тонкости. С момента начала стандартизации несколько изменилась и сама идеология Си++. Изначально автор отвергал возможность использования в языке средств динамического определения типов (rtti), однако в текущем проекте стандарта такие средства имеются. Изначально планировалось, что окончательная редакция проекта стандарта будет опубликована в 1994 году. Эти сроки были безнадежно провалены. Согласно расписанию работы комитета по стандартизации, проект стандарта принятый в апреле 1995 года, был предложен для публичного обсуждения и сделан доступен пользователям Internet. Утверждается, что с этого момента никаких серьезных изменений в текст стандарта вноситься не будет.5
3.7. Java
Объединенный ANSI-ISO (ANSI X3J16; ISO WG21/N0836) комитет начал Начало 1996 года ознаменовано появлением нового языка программирования Java.
На домашней странице WWW Consortium Java была внесена в список так называемых Мобильных Кодов - одного из перспективных направлений развития технологии World Wide Web. И вот в конце 1996 года на Западе начался бум Java, который к моменту проведения выставки Unix-Expo`96 докатился и до нашей страны.
Согласно истории технология Java (Кофе) родилась из проекта Oak (Дуб), основной целью которого была разработка объектно-ориентированных средств описания и коммуникации различного рода электронных устройств. Из-за неудачи этого проекта 1994 году опыт, накопленный в рамках его реализации, было решено применить к продуктам ориентированным на применение в Internet. С апреля 1995 года по сети свободно распространяется HotJava - интерфейс просмотра страниц World Wide Web для платформ Sun. Буквально через месяц Netscape Communication - законодатель моды в разработке программ-интерфейсов Internet, покупает лицензию на Java . В настоящее время HotJava реализована не только для SunOS и Solaris, но и для многих других Unix-платформ и Windows NT. Кроме HotJava мобильный код Java может интерпретироваться и второй версией программы Netscape Navigator для всех систем кроме Windows 3.x.
Система программирования на Java позволяет компилировать программы для компьютерной платформы, на которой она стоит в том же ключе как и любая другая, например, С или С++. В этом случае главными отличиями Java-программ, которые называются Java-applications, является использование библиотеки Java-классов, которые обеспечивают разработку безопасных, распределенных систем. При этом утверждается, что язык позволяет делать гораздо меньше ошибок при разработке программ. Главным при этом является тот факт, что в Java напрочь отсутствует адресная арифметика.6
Программы, составленные на языке программирования Java, можно разделить по своему назначению на две большие группы.
К первой группе относятся приложения Java, предназначенные для автономной работы под управлением специальной интерпретирующей машины Java. Реализации этой машины созданы для всех основных компьютерных платформ.
Вторая группа - это так называемые аплеты (applets). Аплеты представляют собой разновидность приложений Java, которые интерпретируются виртуальной машиной Java, встроенной практически во все современные браузеры.
Приложения, относящиеся к первой группе (мы будем называть их просто приложениями Java), - это обычные автономные программы. Так как они не содержат машинного кода и работают под управлением специального интерпретатора, их производительность заметно ниже, чем у обычных программ, составленных, например, на языке программирования C++. Однако не следует забывать, что программы Java без перетрансляции способны работать на любой платформе, что само по себе имеет большое значение в плане разработок для Internet.
Аплеты Java встраиваются в документы HTML, хранящиеся на сервере Web. С помощью аплетов вы можете сделать страницы сервера Web динамичными и интерактивными. Аплеты позволяют выполнять сложную локальную обработку данных, полученных от сервера Web или введенных пользователем с клавиатуры. Из соображений безопасности аплеты (в отличие от обычных приложений Java) не имеют никакого доступа к файловой системе локального компьютера. Все данные для обработки они могут получить только от сервера Web. Более сложную обработку данных можно выполнять, организовав взаимодействие между аплетами и расширениями сервера Web - приложениями CGI и ISAPI.
Для повышения производительности приложений Java в современных браузерах используется компиляция ";на лету";- Just-In-Time compilation (JIT). При первой загрузке аплета его код транслируется в обычную исполнимую программу, которая сохраняется на диске и запускается. В результате общая скорость выполнения аплета Java увеличивается в несколько раз.
Язык Java является объектно-ориентированным и поставляется с достаточно объемной библиотекой классов. Так же как и библиотеки классов систем разработки приложений на языке C++, библиотеки классов Java значительно упрощают разработку приложений, представляя в распоряжение программиста мощные средства решения распространенных задач. Поэтому программист может больше внимания уделить решению прикладных задач, а не таких, как, например, организация динамических массивов, взаимодействие с операционной системой или реализация элементов пользовательского интерфейса.
4. ПРАКТИЧЕСКАЯ ЧАСТЬ
4.1. Общая характеристика задачи
Используя пакет прикладных программ (ППП) на персональном компьютере (ПК), необходимо построить таблицы по заданным формам.
Определить средний балл экзаменационной сессии по курсам и по факультету.
Результаты округлить до одного десятичного знака после запятой, используя функцию ОКРУГЛ. Определить рейтинг (место по уровню успеваемости) каждого курса.
Ввести текущее значение даты между таблицей и ее названием.
По данным графы 1 и 2 построить круговую диаграмму с заголовком, подписями данных и легендой.
4.2. Описание алгоритма решения задачи
Для определения среднего балла перемножим соответственно баллы и оценки (по данному курсу), сложим полученные результаты и разделим на общее количество оценок. С применением абсолютных и относительных ссылок скопируем формулы для всех курсов.
Для определения места в рейтинге средних баллов курсов воспользуемся встроенной функцией РАНГ.
Для вставки даты нужно применить встроенную функцию ТДАТА.
4.3. Выбор ППП
Для осуществления поставленных задач используем ППП Microsoft Access и Microsoft Excel из стандартного пакета Microsoft Office. В ППП Microsoft Access мы запишем (создадим) базу данных (БД), затем в ППП Microsoft Excel, воспользовавшись функцией импорта данных, вставим таблицу, созданную в ППП Microsoft Access. Далее в ППП Microsoft Excel будем производить все необходимые действия и операции. После получения окончательных результатов создадим диаграмму, воспользовавшись встроенным мастером диаграмм.
ЗАКЛЮЧЕНИЕ
Итак, мы рассмотрели понятие языка программирования, рассказали об истории создания, обозначили основные вехи в истории развития языков программирования (см. Приложение) и дали краткую характеристику основных языков, используемых в программировании на современном этапе или явившихся их основой. Подводя итог исследования, хотелось бы сделать общий вывод отностительно процесса возникновения языков, а также оценить перспективы их дальнейшего развития.
Итак, языки неизбежно проходят определенный путь развития. Новорожденный язык обычно слаб: реализованы только основные идеи, но до коммерческого успеха еще далеко. Поэтому начинается процесс «доводки», вылавливания ошибок и прочее. Все знают, что работать с первой версией любой программы небезопасно. В процессе доработки возникают новые мысли, конкуренты выпускают что-то свеженькое, и их надо догонять. При этом, заимствуя что-то у соперников, авторы всячески пропагандируют собственную новизну. Каждый язык претендует на роль лучшего и единственного. Это его качество нужно поддерживать, расширяя его.
Умирают ли языки программирования? С одной стороны, несомненно, да. Пример тому - Algol, старые Basic и Pascal, Eiffel, Modula и Ada. И таких примеров очень много. Это естественно, поскольку появились гораздо лучшие современные средства разработки. С другой стороны, все не так уж просто. Кто мог недавно предсказать огромный спрос на программистов, владеющих COBOL? А произошла ведь простая вещь: «Проблема 2000» заставила переписать огромное количество программ, и оказалось, что масса приложений, созданных с помощью этого языка, до сих пор используется!
Некоторым языкам смерть не грозит еще долго причине того, что на них написано слишком много необходимого. Это, конечно же, Fortran (библиотек математических расчетов столько, что переделать все практически нереально) и C.
Некоторые языки, видоизменяясь, получают другие имена: Pascal — Delphi.
В теории массового обслуживания существует теорема Клейнрока о циклической эволюции структур систем массового обслуживания, которая в вольном изложении может звучать так: при увеличении коэффициента производительности системы ее структура последовательно организуется как монопольная, децентрализованная, сетевая и снова монопольная, но на более высоком уровне производительности. Если мы посмотрим на историю языков программирования, то заметим, что сначала языки были «монопольными», в строгом соответствии с фон-неймановской архитектурой. Один процессор — одна программа. Затем появляются попытки «децентрализировать» вычисления: параллельная обработка, суперкомпьютеры, вычислительные сети и т. д. Не все работы в этой области достигли больших успехов, в первую очередь из-за сложности исходных проблем. Например, «параллельные» языки до сих пор хорошо служат только для ограниченного круга задач и проблема эффективного распараллеливания произвольной программы, насколько я знаю, еще не решена. Вообще развитие «децентрализованных» технологий продолжается буквально и по сей день. К примеру, технология «клиент-сервер», на основе которой построены многие популярные сегодня приложения, довольно молода. Трехзвенная архитектура «клиент-сервер» только начинает развиваться, не говоря уж о N-звенной.
Интересную версию дальнейшего развития событий выдвигает Смирнов И. в статье «Как рождаются и умирают языки программирования». Он пишет, что в 1976 г. Станислав Лем опубликовал рассказ «Профессор А. Донда», в котором высказал идею эквивалентности не только массы и энергии, но и информации. Тогда при превышении некоторого критического количества аккумулированной («концентрированной») информации произойдет ее переход в материю: «везде, где плотность информации превышает миллион битов на кубический миллиметр, останется соответствующее количество протонов — и пустота». В рассказе Лема так и происходит, а глобальным следствием является то, что развитые и развивающиеся страны «меняются местами»: в постинформационную эпоху лучше приспособленными к выживанию оказываются африканские страны...
«Вероятно, в ближайшее время будут продолжать развиваться технологии распределенного программирования, пока сложность и непредсказуемость получающихся систем не превысит возможности интеллекта разработчиков» - считает И. Смирнов. «Затем прогрессивное человечество будет вынуждено перейти на новый уровень абстракций в программировании. По-видимому, произойдет тот же процесс, что и при разработке микропроцессоров: мыслить будем на уровне готовых блоков, надеясь на их непогрешимость. Визуальные средства программирования должны дойти до уровня детских. И чтобы программирование стало легким и приятным, снова воцарится «монопольная парадигма».
В заключение сформулируем основные проблемы и перспективы языков программирования.
Во-первых, следует отметить, что новые языки программирования будут появляться и дальше. Рано или поздно у нас возникнут кардинально новые мысли о программировании и, согласно гипотезе Хурфа-Сэпира, они потребуют новых языков.
Во-вторых, следует обратить внимание на грамотное воплощение идей, заложенных в языках. Идея может быть хорошей, даже отличной, но ее решение и воплощение в конкретном языке — неудачным и безобразным.
Некоторые выводы о распространении новых языков можно сделать на основе языка Java .
Продвижение языка Java происходило за счет мощной рекламы, а не из-за достоинств самого языка.
На широкое распространение в наше время могут претендовать только те языки, которые поддержаны крупными фирмами, а не те, которые являются лучшими.
Время распространения и становления языка программирования (для получивших известность языков) составляет в среднем от 3 до 10 лет. В случае Java язык получил широкое распространение за один год.
В-третьих, в условиях застоя в развитии языков программирования есть смысл тщательно проанализировать все полезные накопленные за это время идеи. Существуют попытки создания единой семантики современных языков программирования, в каком-то смысле опять приводящие к идее ";универсального"; языка.
В-четвертых, Интернет требует языковых средств и подходов, обеспечивающих правильное взаимодействие большого числа независимо разработанных программ.
В-пятых, использование структур и данных, которые раньше бы считались неприемлемыми из-за их неэффективности, сейчас вполне допустимо и может привести к новой организации языков.
ЛИТЕРАТУРА
- Delphi Программирование на языке высокого уровня Фаронов В. В. Питер 2004. - С. 352
- Гольденберг В.А. Введение в программирование. – М.: Харвест, 1997. С, 82
- Математический энциклопедический словарь М., «Советская энциклопедия», 1988
- Пратт Т. Языки програмирования. – М., 2002. – 688 с.
- Смирнов И. Как рождаются и умирают языки программирования //Hard'n'Soft 1999. - №12,
- Фаронов А.В. Delphi Програмирование на языке высокого уровня В. В. М., 2004. - 640 с.
- Флэнэген Д. ";JAVA in a nutsell";Издательство ";BHV"; 1997 г.
- Хигман В. Сравнительное изучение языков программирования. - M.: Мир, 1974 С. 13
- Wagner, J., The Search for Signs of Intelligent Life in the Universe, New York, NY: Harper and Row, 1986
- Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. –Ульяновск : УлГТУ, 2014. с 21
- Белов П.М. Основы алгоритмизации в информационных системах: Учебн. Пособие.Спб.:СЗТУ, 2003. 85с
- Макаров В.Л. Программирование и основы алгоритмизации.: учебн. пособие.Спб., СЗТУ, 2003, -110с
- Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Издво Казанского национального исследовательского технического ун-та КАИ, 2013, 153 с.
- Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. –56 с.
- Семакин, И.Г. Основы алгоритмизации и программирования: Учебник / И.Г. Семакин. - М.: Academia, 2017. - 32 c.
- Серкова, Е.Г. Основы алгоритмизации и программирования: практикум / Е.Г. Серкова. - РнД: Феникс, 2019. - 189 c.
- Фризен, И.Г. Основы алгоритмизации и программирования (среда PascalABC.Net): Учебное пособие / И.Г. Фризен. - М.: Форум, 2018. - 784 c
- Голицына О.Л, Попов И.И. Основы алгоритмизации и программирования: Учеб. пособие. - М.: ФОРУМ: ИНФРА-М. 2004. - 432 с. - (серия «Профессиональное образование»).
- Касаткин В.Н. Информация, алгоритмы, ЭВМ. М., Просвещение, 1991
- Извозчиков В.А. Информатика в понятиях и терминах.
ПРИЛОЖЕНИЕ
Основные вехи в истории развития языков программирования
1949 Появление первого языка программирования Short Code, реально используемого на вычислительном устройстве; однако это «компилируемый вручную» язык
1951 Грейс Мюррей Хоппер начинает работу над первым компилятором (под названием A-0) с языка высокого уровня
1954 Джон Бэкус и его команда в IBM начинают разрабатывать Fortran
1956 - Первая конференция по искусственному интеллекту в Дартмурском колледже Нью-Хэмпшира
- Закончена разработка языка Fortran
1958 Выход Fortran II: поддержка подпрограмм и связь с ассемблером; Джоном МакКарти в Массачусетском технологическом институте разрабатывается язык LISP; Выходит спецификация Algol — первого структурного процедурного языка
1959 Грейс Мюррей Хоппер и Codasyl разрабатывают COBOL; Выходит LISP 1.5
1960 Спецификация Algol-60
1962 В IBM Кеннет Иверсон разрабатывает язык APL (первая публикация описания языка); выходит Fortran IV; начата работа над языком программирования SNOBOL (StriNg-Oriented symBOlic Language)
1964 IBM выпускает язык PL/1; дартмурском колледже Томас Куртц и Джон Кемени разрабатывают язык Basic, который не применялся на микрокомпьютерах до 1975 года; выходит APL/360
1965 Появление SNOBOL-3
1966 Выходит Fortran-66; начало работ над языком LOGO; появление LISP-2
1967 Начало разработки языка Pascal Никлаусом Виртом на базе языка Algol; выходит SNOBOL-4
1968 Появление Algol-68 вызывает решительный протест Никлауса Вирта и Чарьза Хоара — членов комитета по спецификации языка; официальная ANSI-спецификация COBOL; сеймур Паперт в МТИ заканчивает разрабатку языка LOGO
1970 Разрабатывается язык программирования Forth; начало работ над языком программирования Prolog; в Xerox PARC начата разработка языка SmallTalk
1971 Завершена разработка Pascal
1972 В Bell Laboratories Деннисом Ричи разработан язык программирования C.; выходит SmallTalk-72; в университете Luminy-Marseilles во Франции Аланом Колмера разработан часто использующийся для задач искусственного интеллекта язык Prolog
1974 Выходит SmallTalk-74
1975 Билл Гейтс и Пол Аллен пишут Basic-интерпретатор для первого персонального компьютера Altair
1976 Выходит SmallTalk-76
1977 Никлаус Вирт начинает работу над языком Modula
1978 Выход ANSI-стандарта языка Fortran-77
1979 В Honeywell Джин Ичбиах и его команда представили язык программирования Ada
1980 Выходит Modula-2; бьярнe Страуструп добавляет к C объектно-ориентированные расширения4 выход SmallTalk-80
1982 Появление ISO-стандарта Pascal
1983 Выход языка ADA; фирма Borland выпускает Turbo Pascal
1984 Microsoft совместно с Digital Research выпускают первый компилятор с C для микрокомпьютеров
1985 Бертранд Мейер (Interactive Software Engineering) представляет концепцию языка Eiffel
1986 Появление SmallTalk/V — первой версии для микрокомпьютеров; аpple выпускает Object Pascal для Mac; вorland представляет Turbo Prolog; выходит язык Eiffel; появление C++
1987 Ларри Уолл представляеет в Usenet язык программирования Perl
1988 Никлаус Вирт заканчивает работу над Oberon
1989 Выходит спецификация ANSI C
1990 Появление Fortran-90
1991 Visual Basic получает призы на весеннем Comdex
1994 Внедрение в Excel языка Visual Basic for Applications; выходит Perl 5 — версия с поддержкой ООП
1995 Появление языка программирования Java; Netscape анонсирует разработку JavaScript; ISO-стандарт языка ADA 95 (поддержка ООП-технологий и систем реального времени)
1997 ANSI-стандарт C++
1 Математический энциклопедический словарь М., «Советская энциклопедия», 1988
2 Хигман В. Сравнительное изучение языков программирования. - M.: Мир, 1974 С. 13
3 Wagner, J., The Search for Signs of Intelligent Life in the Universe, New York, NY: Harper and Row, 1986
4 Delphi Програмирование на языке высокого уровня Фаронов В. В. Питер 2004. - С. 352
5 Гольденберг В.А. Введение в программирование. – М.: Харвест, 1997. С. 82
6 Флэнэген Д. ";JAVA in a nutsell";Издательство ";BHV"; 1997 г.
- Юридические лица как субъекты предпринимательского права (Понятие, признаки и основы классификации юридических лиц, как субъектов предпринимательской деятельности)
- Фирменное наименование и его гражданско-правовая охрана (Исторические предпосылки возникновения фирменного наименования и его юридическая природа)
- Общие положения института наследования
- Понятие правонарушения (Понятие и сущность правомерного и противоправного поведения)
- Мотивация и её теории (Содержательные теории мотивации)
- Коммерческая деятельность розничного торгового предприятия и ее совершенствование ООО «ПО КРРУТ»
- Менеджмент спортивной организации
- Организация и развитие коммерческой деятельности предприятий на рынке товаров и услуг (Теоретические основы организации коммерческой деятельности)
- «Понятия менеджмента. Менеджер и предприниматель»
- Понятие и классификация функций государства (Правовая природа и классификация функций государства)
- Моделирование предметной области «Учет товаров» с помощью UML (Общая характеристика языка UML)
- Разработка конфигурации «Учет ремонтных работ жилищно-коммунального хозяйства» в среде 1С:Предприятие 8.3. (Характеристика предприятия)