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

Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.06.2014
Размер файла 407,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

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

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

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

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

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

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

Некоторые новые особенности C99:

· подставляемые функции (inline);

· объявление локальных переменных в любом операторе программного текста (как в C++);

·

· новые типы данных, такие как longlongint (для облегчения перехода от 32- к 64-битным числам), явный булевый тип данных _Bool и тип complex для представления комплексных чисел;

· массивы переменной длины;

· поддержка ограниченных указателей (restrict);

· именованная инициализация структур: struct{ int x, y, z; } point = { .y=10, .z=20, .x=30 };

· поддержка однострочных комментариев, начинающихся на //, заимствованных из C++ (многие компиляторы Си поддерживали их и ранее в качестве дополнения);

· несколько новых библиотечных функций, таких как snprintf;

· несколько новых заголовочных файлов, таких как stdint.h.

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

8 декабря 2011 опубликован новый стандарт для языка Си (ISO/IEC 9899:2011). Некоторые возможности нового стандарта уже поддерживаются компиляторами GCC и Clang. Основные изменения:

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

· улучшенная поддержка юникода;

· обобщенные макросы (type-genericexpressions, позволяют статичную перегрузку);

· анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);

· управление выравниванием объектов;

· статичные утверждения (staticassertions);

· удаление опасной функции gets (в пользу безопасной gets_s);

· функция quick_exit;

· спецификатор функции _Noreturn;

· новый режим эксклюзивного открытия файла.

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

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

MATLAB как язык программирования был разработан КливомМоулером (англ. CleveMoler) в конце 1970-х годов когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита КливаМоулера в Стэндфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с КливомМоулером и Стивом Бангертом (англ. SteveBangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию TheMathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.

2.7 SEQUEL и SQL

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBMSystemR, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как StructuredEnglishQUEryLanguage -- «структурированный английский язык запросов». Позже по юридическим соображениям язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (AmericanNationalStandardsInstitute), официальным произношением стало [,eskju:' el] -- эс-кью-эл. Несмотря на это, даже англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль» или используют жаргонизм «скуль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и РэйБойс (RayBoyce). Пэт Селинджер (PatSelinger) занималась разработкой стоимостного оптимизатора (cost-basedoptimizer), Рэймонд Лори (RaymondLorie) занимался компилятором запросов.

Стоит отметить, что SEQUEL был не единственным языком подобного назначения.

В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся, между прочим, дальним прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД с языком SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании RelationalSoftwareInc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

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

В 1983 году Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI) приступили к разработке стандарта языка SQL. По прошествии множества консультаций и отклонения нескольких предварительных вариантов в 1986 году ANSI представил свою первую версию стандарта, описанного в документе ANSI X3.135-1986 под названием «DatabaseLanguage SQL» (Язык баз данных SQL). Неофициально этот стандарт SQL-86 получил название SQL1.

Год спустя, была завершена работа над версией стандарта ISO 9075-1987 под тем же названием. Разработка этого стандарта велась под патронажем Технического Комитета TC97 (англ. TechnicalCommittee TC97), областью деятельности которого являлись процессы вычисления и обработки информации (англ. ComputingandInformationProcessing). Именно его подразделение, именуемое как Подкомитет SC21 (англ. Subcommittee SC21) курировало разработку стандарта, что стало залогом идентичности стандартов ISO и ANSI для SQL1 (SQL-86).

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

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

Со временем к стандарту накопилось несколько замечаний и пожеланий, особенно с точки зрения обеспечения целостности и корректности данных, в результате чего в 1989 году данный стандарт был расширен, получив название SQL89. В частности, в него была добавлена концепция первичного и внешнего ключей. ISO-версия документа получила название ISO 9075:1989 «DatabaseLanguage SQL withIntegrityEnhancements» (Язык баз данных SQL с добавлением контроля целостности). параллельно была закончена и ANSI-версия.

Сразу после завершения работы над стандартом SQL1 в 1987 году была начата работа над новой версией стандарта, который должен был заменить стандарт SQL89, получив название SQL2, поскольку дата принятия документа на тот момент была неизвестна. Таким образом, фактически SQL89 и SQL2 разрабатывались параллельно.

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

Как и SQL1, SQL92 также был разделён на несколько уровней, однако, во-впервых, число уровней было увеличено с двух до трёх, а во-вторых они получили названия вместо порядковых цифр: начальный (англ. entry), средний (англ. intermediate), полный (англ. full). Уровень «полный» как и Уровень 2 в SQL1 подразумевал весь стандарт целиком. Уровень «начальный» представлял собой подмножество уровня «средний», в свою очередь представлявшего собой подмножество уровня «полный». Уровень «начальный» был сравним с Уровнем 2 стандарта SQL1, но спецификации этого уровня были несколько расширены. Таким образом, цепочка включений уровней стандартов выглядела примерно следующим образом: SQL1 Уровень 1 > SQL1 Уровень 2 > SQL92 «Начальный» > SQL92 «Средний» > SQL92 «Полный».

После принятия стандарта SQL92 к нему были добавлены ещё несколько документов, расширявших функциональность языка. так, в 1995 году был принят стандарт SQL/CLI (CallLevelInterface, интерфейс уровня вызовов), впоследствии переименованный в CLI95. На следующий год был принят стандарт SQL/PSM (PersistentStoredModules, постоянно хранимые модули), получивший название PSM-96.

Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже (SQL:2008).

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

Период 80-х годов особо ничего не принес в развитие языков программирования, если говорить о применяемых языках сегодня, разве что было внесено много доработок в созданные раннее языки программирования, такие как C, Basic и Pascal, однако, самой интересной доработкой для нас является модификация C в C++.

Язык возник в начале 1980-х годов, когда сотрудник фирмы BellLabsБьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. Когда в конце 1970-х годов Страуструп начал работать в BellLabs над задачами теории очередей (в приложении к моделированию телефонных вызовов), он обнаружил, что попытки применения существующих в то время языков моделирования оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно из-за их ограниченной выразительности. Так, язык Симула имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно, а язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения.

Вспомнив опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов), так и с точки зрения времени вычислений (благодаря быстродействию C). В первую очередь в C были добавлены классы (с инкапсуляцией), наследование классов, строгая проверка типов, inline-функции и аргументы по умолчанию. Ранние версии языка, первоначально именовавшегося «C withclasses» («Си с классами»), стали доступны с 1980 года.

Разрабатывая C с классами, Страуструп написал программу cfront[en] -- транслятор, перерабатывающий исходный код C с классами в исходный код простого C.

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

При создании C++ Бьёрн Страуструп хотел

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

· Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование.

· Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.

· Максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C.

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

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

· «Не платить за то, что не используется» -- никакое языковое средство не должно приводить к снижению производительности программ, не использующих его.

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

Несмотря на ряд известных недостатков языка C, Страуструп пошёл на его использование в качестве основы, так как «в C есть свои проблемы, но их имел бы и разработанный с нуля язык, а проблемы C нам известны».

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

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

· сохранение действующего кода, написанного изначально на C и прямо перенесённого в C++;

· исключение необходимости переучивания программистов, ранее изучавших C (им требуется только изучить новые средства C++);

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

К 1983 году в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Получившийся язык уже перестал быть просто дополненной версией классического C и был переименован из C с классами в «C++». Его первый коммерческий выпуск состоялся в октябре 1985 года.

Имя языка, получившееся в итоге, происходит от оператора унарного постфиксного инкремента C ++ (увеличение значения переменной на единицу).

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

Функцию стандартных описаний языка выполняли написанные Страуструпом печатные работы по C++ (описание языка, справочное руководство и так далее).

Стандарт C++ на 2003 год состоит из двух основных частей: описание ядра языка и описание стандартной библиотеки.

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

Стандартизация определила язык программирования C++, однако за этим названием могут скрываться также неполные, ограниченные, варианты языка.

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

2.9 Вывод по главе

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

Если говорить о учебных языках программирования, то стоит обратить внимания, что многими из них пользуются и до сих пор, например Basic и Pascal, и если Basic уже используется только в версии Object Basic, то в Pascal'e учат программировать в консоле и сегодня, что говорит о простоте интерфейса для начинающих программистов.

Однако, самым знаменательным событием последнего периода является появление C++, который поднял программирование в целом на одну ступеньку вперед и который в будущем положит начало для уже используемых сегодня в серьезных целях языков программирования, таких как последняя версия Java и C#.

3. Третий этап развития языков программирования (1990 гг. - настоящее время)

3.1 Общий обзор исследуемого периода

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

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

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

Язык Java произошел от языка программирования Oak (а не от C++, как думают многие). Oak был приспособлен для работы в Internet и затем переименован в Java.

Синтаксис Java близок к синтаксису языка C++. Унаследовав самое лучшее от языка программирования C++, язык Java при этом избавился от некоторых недостатков C++, в результате чего на нем стало проще программировать.

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

Огромное преимущество Java заключается в том, что на этом языке можно создавать приложения, способные работать на различных платформах. К сети Internet подключены компьютеры самых разных типов - Pentium PC, Macintosh, рабочие станции Sun и так далее. Даже в рамках компьютеров, созданных на базе процессоров Intel, существует несколько платформ, например, MicrosoftWindows версии 3.1, Windows 95, Windows NT, OS/2, Solaris, различные разновидности операционной системы UNIX с графической оболочкой X­Windows. Между тем, создавая сервер Web в сети Internet, хотелось бы, чтобы им могло пользоваться как можно большее число людей. В этом случае выручают приложения Java, предназначенные для работы на различных платформах и не зависящие от конкретного типа процессора и операционной системы.

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

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

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

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

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

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

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

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

3.2 JAVA, JOE, NEO

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

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

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

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

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

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

Принятые решения сделали Java-среду идеальным средством разработки клиентских компонентов Web-систем. Особо отметим прозрачную для пользователя динамическую загрузку объектов по сети. Из этого вытекает такое важнейшее достоинство, как нулевая стоимость администрирования клиентских систем, написанных на Java. Достаточно обновить версию объекта на сервере, после чего клиент автоматически получит именно ее, а не старый вариант. Без этого реальная работа с развитой сетевой инфраструктурой практически невозможна. С другой стороны, при наличии динамической загрузки действительно возможно появление устройств класса Java-терминалов, изначально содержащих только WWW-навигатор, а все остальное (и программы, и данные) получающих по сети.

Здесь уместно отметить замечательную точность в выборе основных посылок проекта Java. Из минимума предположений вытекает максимум новых возможностей при сохранении практичности реализации.

В то же время, интеграция с WWW-навигатором и интерпретируемая природа Java-среды ставят вполне определенные рамки для реального использования Java-программ (хотя, конечно же, язык Java не менее универсален, чем, скажем, C++). Например, известно, что интерпретация, по сравнению с прямым выполнением, на 1-2 порядка медленнее. Применение компиляции "на лету" и специализированных Java-процессоров, несомненно, улучшит ситуацию, но пока использование Java на серверной стороне представляется проблематичным.

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

Если вся связь между клиентами и упомянутыми серверами будет осуществляться через сервер WWW, последний станет узким местом, а решения Интранет рискуют лишиться такого важнейшего достоинства, как масштабируемость. Значит, необходима прямая связь между клиентскими системами, написанными на языке Java, и произвольными сервисами.

Как реализовать такую связь?

В общем виде ответ очевиден - нужны средства для полноценной интеграции Java в распределенную объектную среду. На серверной стороне компания SunMicrosystems имеет соответствующую технологию - NEO (NEtworkedObjects, сетевые объекты). технология NEO удовлетворяет спецификациям OMG (ObjectManagementGroup), являющимся промышленным стандартом. При реализации корпоративных информационных систем с использованием NEO наиболее естественным представляется использование трехуровневой архитектуры с серверами приложений,

построенными на объектныхпринципах, на втором уровне и с базовыми и унаследованными серверами на третьем уровне.

Рис.6. Трехуровневая архитектура корпоративной информационной структуры.

К сожалению, столь общий ответ никак не помогает осуществлять прямую связь между Java-клиентом и NEO-сервером. Конечно, можно воспользоваться стандартными средствами программирования в сетевой среде (а Java допускает использование библиотек, написанных на C/C++, равно как и вставку машинных кодов), но если бы это было единственной возможностью, Java рисковала остаться на уровне "оживлялок".

В конце марта компания SunSoft объявила о появлении нового продукта с именем Joe, как раз и предназначенного для существенного облегчения встраивания Java-клиентов в информационные системы Интранет, построенные в трехуровневой архитектуре с использованием среды NEO.

Риc. 7. Распределение ролей между Java, Joe и Neo.

Таким образом, сложилась полная и изумительно красивая картина организации современных Интранет-систем.

3.3 JavaScript

Сам язык изобрел Brendan Eich (компания Netscape) и назвал его JavaScript. Впервые новый язык был использован в браузере NetscapeNavigator 2.0. После этого он стал использоваться во всех последующих браузерах от Netscape и во всех браузерах от Microsoft, начиная с InternetExplorer 3.0. Компания Microsoft по-своему развила идею, и дала своей версии языка более короткое название: JScript.

Далее, чтобы обеспечить совместимость версий языка независимых разработчиков, Генеральной Ассамблеей ECMA был создан стандарт. Этот стандарт основан на нескольких базовых технологиях, наиболее известными из которых являются упомянутые уже JavaScript (Netscape) и JScript (Microsoft).

Развитие этого Стандарта началось в ноябре 1996. Первое издание Стандарта ECMA было принято Генеральнаой Ассамблеей ECMA в июне 1997.

Данный ECMA Стандарт был представлен международной комиссии по стандартам ISO/IEC JTC 1 для принятия, и одобрен как международный эталон ISO/IEC 16262 в апреле 1998. Генеральная Ассамблея ECMA в июне 1998 одобрила второе издание ECMA-262, с сохранением всех требований

3.4 ISO/IEC 16262

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

Работа над языком еще не закончена. Технический комитет работает над существенными расширениями, включая механизмы для сценариев, которые будут созданы для использования в Internet, и более жесткой координацией с другими основными стандартами групп WorldWideWeb Консорциум и WirelessApplicationProtocol Форум.

Так почему-же на сайтах по JScript разная информация? Все дело в том, что сценарий, как Вы понимаете, сам по-себе не является программой (для процессора) в полном смысле слова.

Это просто набор инструкций для другой программы - хоста. MS Internet Explorer, Netscape Navigator, Windows Script Host иестьреализациитакиххостов. И если у MS-IE и WSH разработчик один, то и набор поддерживаемых функций в скриптах у них почти одинаковый. А NN соответственно имеет больше отличий в правилах использовании скриптов, так как разрабатывался другой компанией.

3.5 История PHP

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

Начинающему PHP программисту достаточно "загуглить" строчку «как ... сделать на PHP», и наверняка он сразу найдет подробный пример или универсальную библиотеку для реализации требуемого действия.

История PHP начинается в 1994 году, когда программист энтузиаст Расмус Лердорф сделал набор из скриптов на языке Perl. Цель этой разработки - сохранение статистики просмотров его резюме в формате html. Расмус наименовал свое творение PersonalHomePage (Персональная Домашняя Страница). Когда функциональности и быстроты языка Perl для его проектов стало не хватать, Лердорф написал новый интерпретатор на языке C. Так появилась первая версия интерпретатора PHP.

Спустя 3 года была разработана вторая версия интерпретатора PHP, которая также была написана на языке C.

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

Третья версия PHP вошла в историю, именно она определила современный стиль и облик PHP. Переработанная израильскими программистами Энди Гутмансом и Зеевом Сураски версия PHP 3.0 официально вышла летом 1998 года.

Основное преимущество PHP 3.0 - возможность подключения к ядру дополнительных модулей для расширения функционала. Язык PHP набирал все больше сторонников. Он поддерживал работу со всеми популярными базами данных. В PHP 3.0 была возможна поддержка множества протоколов и различных API. Рост популярности языка PHP способствовал его стремительному развитию. PHP стал расшифровываться как «hypertextPreprocessor» - гипертекстовый препроцессор.

В конце 1998 года израильские программисты начали разрабатывать новый движок. Они сделали акцент на увеличение производительности и совершенствование модульности базиса PHP кода. Благодаря труду разработчиков в 1999 году родился движок под названием ZendEngine, который был на голову выше движка предыдущей версии PHP. На основе ZendEngine к 2000 году официально был выпущен язык PHP 4.0. В новой версии значительно возросла производительность, присутствовал ряд полезных нововведений. В PHP 4.0 была включена поддержка сессий. Стало возможно буферизировать вывод. Язык стал более безопасный.

В середине июля 2004 года вышла пятая версия PHP. PHP 5 работает на ядре ZendEngine 2, которое значительно эффективней и производительней. Значительным моментом в истории развития PHP было внедрения полноценного объектно-ориентированного программирования в PHP 5,

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

Шестая версия находится в разработке с 2006 года. Но спустя 4 года разработчики посчитали ее бесперспективной из-за возникших проблем. Судьба PHP 6 пока что неизвестна.

Основные достоинства РНР:

· бесплатен;

· постоянно совершенствуется;

· работает на UNIX и Windows платформах;

· допускает работу с большинством СУБД;

· имеет широкий набор функций (более 3 тыс.);

· допускает объектно-ориентированное программирование;

· способен использовать протоколы HTTP, FTP, SNMP, NNTP, POPS.

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

· Можно также запускать PHP-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с поддержкой графического интерфейса GTK).

3.6 Язык C#

Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg).

Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM -- Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).
Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, BiztalkFramework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты. С# и .NET являются той самой отправной точкой.

Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# е новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 20 лет.

Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью (а) создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними, и (б) создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ-компоненты.
Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ -- Java -- лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от VisualBasic. Например, в С#, как и в VisualBasic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов Java не поддерживает ни ту, ни другую возможность). С# -- это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как VisualBasic, и обладает практически той же мощью и гибкостью, что и C++.

Особенности С#:

- Полный и хорошо определенный набор основных типов.

- Встроенная поддержка автоматической генерации XML-документации. Автоматическое освобождение динамически распределенной памяти.

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

- Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).

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

- Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).

- Возможность использования С# для написания динамических web-страниц ASP.NET.

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

3.7 Ruby

Ruby (англ. Ruby ['?u:b?] -- «Рубин») -- динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Eiffel, по Объектно-ориентированному подходу -- к Smalltalk. Также некоторые черты языка взяты из Python, Лисп, Dylan и CLU.

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

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

В языке Ruby реализован простой и удобный механизм для расширения языка с помощью библиотек, написанных на Си, позволяющий легко разрабатывать дополнительные библиотеки. Для унифицированного доступа к базам данных разработана библиотека Ruby DBI (поддерживает SQLite, Oracle, ODBC, MySQL, DB2, MS SQL, InterBase, ADO и др.). Также существуют библиотеки для конкретных баз данных, поддерживающих специфические для них операции. Для реализации ORM существуют несколько библиотек, такие как ActiveRecord, DataMapper или Sequel. Из графических библиотек следует отметить FxRuby -- интерфейс к графической библиотеке FOX, графический пакет разработчика wxRuby (интерфейс к кроссплатформенному пакету wxWidgets на C++), QtRuby/Korundum -- привязка к Qt и KDE соответственно,

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

Win32utils -- позволяет обращаться к специфическим возможностям Win32 API.

Rmagick -- библиотека для работы с изображениями, поддерживающая более 90 форматов (основана на ImageMagick и GraphicsMagick).

Библиотека Ruport (Rubyreports) предназначена для лёгкой реализации отчётов и создания диаграмм на основе данных из БД или прямо из текстовых файлов CSV. Причём результаты можно сохранять в форматах PDF, HTML, CSV и TXT.

RuTils -- обработчик русского текста на Ruby. Позволяет реализовать сумму прописью и выбор числительного.

Например, 231.propisju(2) => «двести тридцать одна» или 341.propisju_items(1, «чемодан», «чемодана», чемоданов») => «триста сорок один чемодан». А также перевод в транслит и работу с датами.

Для управления библиотеками и программами Ruby в виде самодостаточных пакетов предназначена система управления пакетами RubyGems (англ. gems, gem -- драгоценный камень).

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

FreeRIDE -- IDE для Ruby, реализованная с использованием библиотеки FxRuby.

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

3.8 Вывод по главе

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

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

Заключение

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

* Смещение акцентов от частного (программирование деталей), к общему (программирование более крупных компонент)

* Развитие и совершенствование инструментария программиста (языков программирования высокого уровня и рабочей среды)

* Возрастание сложности программных и информационных систем

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

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

Таким образом цель курсовой работы достигнута

Литература

1.Информатика под редакцией Е.К. Хеннера, М.,Академия,2004г.

2.Информатика.Базовый курс под ред. С. В. Симоновича, С.-П «Питер» 2005г.

3.Языки программирования. Обзор-ликбез. Хакер №4,с.36-40.

4.Р.Богатырев, Природа и эволюция сценарных языков, Мир ПК, №11,2001

5.Г.Буг, Объектно-ориентированный анализ и проектирование

6.http://citforum.ru

7. http://school.keldysh.ru/sch444/MUSEUM /LANR/evol.htm

8. http://ru.wikipedia.org

9. http://www.levenez.com/lang

10. http://tiobe.com

11. http://cybern.ru/category/java/begin-java

12. http://vbbook.ru/

13. Современный Фортран под редакцией С. Немнюгина, О. Стесик, 2004г.

14.PHP 5, под редакцией Д.Котелкова, А. Костарева, БХВ-Петербург, 2008г.

15.Javascript,ДевидФлэнаган (5 издание)

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [400,6 K], добавлен 10.11.2016

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

    презентация [353,5 K], добавлен 14.10.2013

  • Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.

    презентация [6,3 M], добавлен 14.08.2013

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

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

    курсовая работа [45,5 K], добавлен 04.06.2014

  • Описание современных языков программирования (Паскаль, Ассемблер, С++, Бейсик, Лого, Форт, Пролог, Рефал и Лекс). Понятие, назначение и составные элементы систем программирования (машинно-ориентированных и машинно-независимых систем программирования).

    курсовая работа [96,3 K], добавлен 18.08.2010

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

    презентация [1,2 M], добавлен 19.02.2014

  • Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.

    отчет по практике [139,1 K], добавлен 03.06.2011

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

    курсовая работа [329,8 K], добавлен 22.06.2014

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

    дипломная работа [588,3 K], добавлен 29.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.