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

История возникновения и развития языка программирования Си (С++) и Java (Основы алгоритмизации)

Содержание:

Введение

Программирование длительное время было занятием лишь для профессионалов в сфере вычислительных технологий. Объявленный в конце 1980-х гг. лозунг «Программирование – это вторая грамотность» остался далеко в прошлом.

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

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

Принято различать языки программирования двух категорий?

– системные;

– прикладные.

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

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

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

Объект работы – ЯП С и Java.

Предмет работы – история развития языков программирования С и Java.

В курсовой работе поставлены такие задачи:

– выполнить обзор литературы по выбранной тематике курсовой работы;

– описать понятие алгоритмизации как фундаментального базиса при изучении программирования;

  • рассмотреть классификацию языков программирования;
  • дать характеристику и описать основные возможности ЯП С и Java, а также историю из развития.

Изучением и усовершенствованием ЯП занимались многие разработчики и ученые: К.Голдинг, Б.Страуструп, Королюк В.К. и другие.

1.Понятия теории алгоритмизации и программирования

Основы алгоритмизации

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

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

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

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

– унифицированный язык UML;

– специализированные средства по разработке современного ПО.

Стоит отметить, что в некоторых программистов часто возникает логический вопрос: почему ООП начало быть приоритетным при разработке большинства программы и другими языками программирования?

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

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

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

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

Знание основ ЯП с точки зрения применение и реализации основных языковых конструкций позволяет:[5]

– более обоснованно использовать ЯП для реализации конкретного программного проекта;

– разрабатывать эффективные алгоритмы для вычислений;

– систематически пополнять совокупность полезных языковых элементов;

– ускорить изучение новейших языков программирования;

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

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

Используемые программистами ЯП отличаются своим синтаксисом, функциональными возможностями.

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

Работа по решению задач с использованием персонального компьютера (ПК) делится на такие этапы:

  1. Постановка задачи.
  2. Формализация полученной задачи.
  3. Построение вычислительного алгоритма.
  4. Программирование решения задачи.
  5. Отладка и тестирование программного продукта.
  6. Проведение анализа полученных результатов.
  7. Часто данную последовательность называют цепочкой решения задачи ПК.
  8. Непосредственно к процессу программирования в этом списке можно отнести пункты 3 – 5.

На этапах постановки задачи нужно четко сформулировать, что дано для выполнения задачи и что требуется в результате этого найти.[10]

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

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

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

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

Но в учебных целях очень полезно использовать средства, а затем перевести полученный алгоритм на определенный ЯП.[5]

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

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

Стоит отметить, что программист должен обладать такими знаниями и навыками: [2]

– уметь разрабатывать алгоритмы;

– знать принципы использования ЯП;

– уметь работать в определенной системе визуального программирования.

На рисунке 1 показан принцип работы программ на ЯП:

Рисунок 1 – Принцип работы программ

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

1.2.Языки программирования, их классификация

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

Под словом «директива», можно понимать код, команду, оператор и другие синонимы.

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

Рисунок 2 – Программный машинный код

Реализовать некоторый язык программирования на ПК – это значит разработать транслятор с указанного ЯП для данной ПК.[12]

Существуют 2 принципиально различных инструмента трансляции. Они называются:

– компиляция;

– интерпретация.

Для непосредственного объяснения их различия предложим следующую аналогию: преподаватель должен выступить перед студентами на незнакомом им языке.

Перевод можно выполнить такими метолами:

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

– синхронный перевод – лектор читает свой доклад, а переводчик одновременно в синхронном режиме переводит выступление.

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

При компиляции непосредственно в память ПК загружается компилятор.

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

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

Интерпретатор в течение времени работы программы может находится непосредственно во внутренней памяти.

Интерпретатор в последовательности реализации алгоритма имеет возможность «считать» очередной оператор программы, а потом перевести его в команды, а также выполнить эти команды.

Далее нужно перевести и выполнить следующий оператор. При этом результаты других переводов не сохраняются в памяти ПК.

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

– трансляцию;

– выполнение.

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

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

Стоит отметить, что программы на С, Паскале, Фортране компилируются всегда, а ЯП Бейсик чаще всего использует интерпретатор.

Все языки программирования можно классифицировать на такие 2 категории (рисунок 3):

Рисунок 3 – Классификация ЯП

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

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

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

Как правило, ЯП низкого уровня применяет особенности для конкретного семейства современных популярных процессоров. Общеизвестный пример такого классического низкоуровнего языка – это ассемблер.

Для одного процессора присутствует несколько видов ЯП, которые основаны на ассемблере.

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

Высокоуровневый ЯП – это специальный язык программирования, что используется для удобства и скорости написания программ. [4]

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

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

Структура ЯП высокого уровня показана на рисунке 4:

Рисунок 4 – Структура ЯП высокого уровня

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

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

– С#;

– С++;

  • Java;
  • Python;
  • Swift;

– Visual Basic и прочие.

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

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

2.1. ЯП С, главные характеристики и история развития

Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году совместно с комитетом Европейских и Американских учёных в сфере компьютерных наук на встрече в 1958 в Швейцарской высшей технической школе Цюриха. Язык был ответом на некоторые недостатки языка FORTRAN и попыткой их исправить.

Вдохновлённые языком ALGOL-60, Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).

Язык CPL посчитали сложным, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов. Сейчас он практически не используется, но в своё время из-за хорошей портируемости он играл важную роль.

BCPL послужил предком для языка Би, разработанного в 1969 в уже знакомой всем AT&T Bell Telephone Laboratories, не менее знакомыми Кеном Томпсоном и Денсом Ритчи.

Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics, разрабатываемый всё в той же Bell Laboratories. Именно этот язык послужил непосредственным предшественником языка Си.

По поводу возникновения языка Си Питер Мойлан в своей книге «The case against C» пишет: «Нужен был язык, способный обойти некоторые жесткие правила, встроенные в большинство языков высокого уровня и обеспечивающие их надежность. Нужен был такой язык, который позволил бы делать то, что до него можно было реализовать только на ассемблере или на уровне машинного кода.» Си стал именно таким языком. Это обусловило его дальнейшую популярность в таких отраслях программирования, как написание драйверов и прочих аспектах низкоуровневого программирования.

Язык программирования Си был разработан в стенах Bell Labs в период с 1969 по 1973 годы. Как признался сам Ритчи, самый активный период творчества приходился на 1972 год.

За всё время своего существования, язык Си оброс легендами по поводу мотивов своего создания.

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

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

Компилятор языка Си унаследовал традицию, заложенную ещё Никлаусом Виртом и был написан на самом Си. Согласно мнению большинства, название языка Си является третьей буквой алфавита. Оно появилось как указание на то, что язык Си является более усовершенствованным, чем язык Би. Однако, сам Ритчи по поводу названия языка говорил следующее:«Создав систему типов, соответствующий синтаксис и компилятор для нового языка, я почувствовал, что он заслуживает нового имени: NB показалось мне недостаточно четким. Я решил следовать однобуквенному стилю и назвал его C (Си), оставляя открытым вопрос, являлось ли после B это следующей буквой в алфавите или в названии BCPL».

Успех Си в основном связан с тем, что на нём была написана значительная часть операционной системы UNIX, которая в итоге приобрела очень большую популярность. Если считать по количеству используемых на данный момент операционных систем, разработанных на базе UNIX, то она является самой распространённой системой в мире. В связи с её распространённостю, а также с тем, что на данный момент объём операционной системы измеряется в миллионах строк кода (для примера, в последних версиях Linux содержится более 10 000 000 строк кода), задача о переписывании UNIX на другой язык становиться практически невыполнимой (также следует учитывать тот факт, что при ручном переписывании неизбежно возникнут ошибки, что существенно снизит стабильность работы, а при переводе с использованием программных средств пострадает производительность кода). Кроме того, язык Си, будучи приближённым к аппаратной реализации компьютера позволяет выжать из него намного больше, чем многие другие языки программирования. Это обстоятельство показывает бессмысленность перевода UNIX на другой язык. Таким образом, если другие языки программирования могут исчезнуть с течением времени, уступив дорогу новым технологиям, то язык Си будет жить, пока живёт UNIX. То есть пока существуют компьютеры в том виде, в котором мы их себе представляем.

Первая книга, посвящённая языку Си была написана Керниганом и Ритчи в 1978 году и вышла в свет под названием «Язык программирования Си». Эта книга, в среде программистов более известная как «K&R», стала неофициальным стандартом языка Си.

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

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

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

В 2007 году начались работы над следующим стандартом языка Си: С1x.В качестве особенностей языка С выделяют нюансы:

– необходимость в определении полностью всех переменных в любом месте программ;

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

– использование разных фигурных скобок для написания кода программ[3];

– обязательное применение функции main().

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

Базовые типы разделены на такие:

Целочисленные:[5]

– long;

– Short;

– char;

– int.

Для указанных целых типов выполняют определение, будут ли они реализованы с знаком или же без.

Это выполняется также обычно прибавлением оператора под названием signed (unsigned).

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

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

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

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

Разработчики также применяли дополнение сразу к единицы, аналогично –х получалось обычным инвертированием бита.[9]

Какие-то иные программисты выбирали дополнение к числу 2. Одним из недостатков первого метода было применение самых разных 2-х форм для представления ноля.

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

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

А с применением signed-выражении такой же код будет также рассматривается как- 2.

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

Вещественные типы:[5]

– long double;

– double;

– float.

Недостатком представления разной информации является и факт, что вся память теперь разделена на такие целые числа:

– мантисса;

– порядок.

Все это приведет к значительному сокращению практически всей численности разрядов, уменьшению точности.

Одно с чисел может быть представлено при использовании комбинаций разрядов.

Полное сравнение нескольких разных чисел надобно производить также в использовании диапазона чувствительности.

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

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

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

2.2. ЯП Java, главные характеристики и история развития

Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (Scott McNealy) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.

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

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

Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя (Bill Joy), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.

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

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

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

Вскоре стало ясно, что такие электроприборы, как видеомагнитофоны, проигрыватели лазерных дисков, стереосистемы - все они были реализованы на разных процессорах.

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

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

Вскоре компания Sun Microsystems преобразовала команду Green в компанию First Person.

Новая компания обладала интереснейшей концепцией, но не могла найти ей подходящего применения.

После ряда неудач неожиданно ситуация для компании резко изменилась: был анонсирован Mosaic - так родился World Wide Web, с которого началось бурное развитие Internet.

Нотон предложил использовать Oak в создании Internet- приложений. Так Oak стал самостоятельным продуктом, вскоре был написан Oak-компилятор и Oak-браузер "WebRunner".

В 1995 году компания Sun Microsystems приняла решение объявить о новом продукте, переименовав его в Java (единственное разумное объяснение названию - любовь программистов к кофе).

Когда Java оказалась в руках Internet, стало необходимым запускать Java-аплеты - небольшие программы, загружаемые через Internet. WebRunner был переименован в HotJava и компания Netscape встала на поддержку Java-продуктов.

Программы, написанные на Java, представляют собой набор классов и сохраняются в специальных текстовых файлах, которые имеют расширение java.

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

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

Для того чтобы выполнять байт-код на каком-то компьютере, его нужно конвертировать в инструкции для процессора. Именно это выполняет Java-машина. [4]

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

В нынешнее время используется сложная схема, которая называется JIT-компиляцией – компиляция "на лету".

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

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

Предлагаемый фирмой Sun Microsystems подход, а именно система программирования на основе языка Java(TM) обладает следующими характеристиками:

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

СвойстваJava:

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

Надежность и безопасность:

  • Java существенно облегчает создание надежного программного обеспечения.
  • Кроме исчерпывающей проверки на этапе компиляции, система предусматривается анализ на этапе выполнения.
  • Сам язык спроектирован так, чтобы вырабатывать у программиста привычку писать "правильно". Модель работы с памятью, в которой исключено использование указателей, делает невозможными целый класс ошибок, характерных для С и С++.
  • В силу того, что Java предназначена для работы в распределенной среде, безопасность становится чрезвычайно важной проблемой. Требования безопасности определяют многие черты как языка, так и реализации всей системы.

Независимость от архитектуры и переносимость:

  • Компилятор Java производит байт-коды, т.е. модули приложения имеют архитектурно-независимый формат, который может быть проинтерпретирован на множестве разнообразных платформ. Это уже не исходные тексты, но еще не платформно-зависимые машинные коды.
  • Следующий шаг -- "замораживание" стандарта на формат основных встроенных типов данных. Программа, созданная на одной платформе, работает на всех остальных.
  • Этот стандарт фиксирован в документе, описывающем Java Virtual Machine. Стандарт может быть реализован на любой аппаратно-программной платформе, поддерживающей многопотоковость.

Заключение

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

Только такое ПО может выдерживать конкуренцию на рынке программных продуктов. Сегодня процесс программирования на любительском уровне никому не нужен.

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

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

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

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

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

  1. Аммерааль Л. STL для программистов на Java: Пер. с англ. — М.: ДМК, 2016. — 240 с.
  2. Бочков С. О., Субботин Д. М. Язык программирования Java для персонального компьютера. — М.: Радио и связь, 2014. — 384 с.
  3. Бобровский С. Самоучитель програмирования на языке С в среде Borland СИ Builder М.: ИНФРА-М, 2013.–251 c.
  4. Бруно Бабэ. Просто и ясно о Borland С: Пер. с англ. - Москва: БИНОМ, 2014. – 400с.
  5. Джосьютис Н. М. Java. Стандартная библиотека. Для профессионалов: Пер. с англ. — СПб.: Питер, 2014. — 730 с.
  6. Керниган Б. В., Ритчи Д. М. Язык программирования Си: Пер. с англ. — 3-е изд. — СПб.: Невский Диалект, 2015. — 352 с.
  7. Липпман С. Б. Основы программирования на СИ: Пер. с англ. — М.: Вильямс, 2013. — 256 с.
  8. Липпман С. Б., Лажойе Ж. Язык программирования Java. Вводный курс: Пер. с англ. — 3-е изд. — М.: ДМК, 2014. — 1104 с.
  9. Лишнер Р. STL. Карманный справочник: Пер. с англ. — СПб.: Питер, 2015. — 187 с.
  10. Мейерс С. Эффективное использование STL: Пер. с англ. — СПб.: Питер, 2013. — 224 с.
  11. Оллисон Ч. Философия Java. Практическое программирование. С.Петербург 2014. – 608 с.:ил.
  12. Послед Б.С. Borland С Builder 6. Разработка приложений баз. М.: 2013г. -360 г.