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

Programavimo kalbosЯзык программированияВ самом начале зарождения компьютеров программы именно так и писались – в так называемых “машинных кодах” – т.е. сразу на языке компьютера. При этом кодирование занимало очень много времени, а выигрыш достигался только за счет того, что компьютер умел выполнять все эти простые действия очень быстро. Но таким способом можно было решать только относительно простые вычислительные задачи. Понятно, что ввиду ограниченного числа команд процессора, многие комбинации повторялись в разных программах. В первую очередь это относилось к стандартным функциям и часто используемым действиям. Возникла разумная идея: сделать некий набор макрокоманд, который бы включал такие часто используемые комбинации. Отсюда пошли языки программирования. Т.е. была написана специальная программа “транслятор”, которая получала программу, написанную на каком-то языке программирования и “переводила” ее на язык компьютера. Помимо облегчения программирования это дало еще один изрядный плюс: отпадала необходимость переписывания программы каждый раз, когда появлялся новый тип процессора: достаточно было переписать транслятор, таким образом, чтобы он использовал новый набор команд. Дальше все пошло “по нарастающей” – помимо языков “низкого уровня”, которые автоматизировали кодирование стандартных машинных операций, появились языки “высокого уровня”, которые были уже намного ближе как к нормальному человеческому, так и к математическому языку. Число языков тоже росло – большинство из них было ориентировано на тот или иной род деятельности. Это не значит, что, скажем, расчетные программы можно было писать только на Фортране, а финансовые – только на Коболе, просто каждый из языков содержал какой-то набор функций, с помощью которых было удобно решать тот или иной вид задач. Подобное облегчение программирования дало возможность использовать компьютеры во все больших областях, а заодно вызвало большой рост программ и программистов. Опять-таки, стали проявляться различные часто используемые функции, но уже более сложные – не столько компьютерные, сколько математические или выполняющие какие-то другие прикладные задачи. Они выделялись в библиотеки стандартных функций, что позволяло программистам использовать уже готовые подпрограммы, вместо того, чтобы писать их заново. Каждый из этих шагов облегчал жизнь программистам и позволял писать более сложные программы, но в то же время приводил к тому, что эти программы работали медленнее и занимали больше места. Все дело в том, что алгоритм программы, как правило, не линейный, а включает циклы, ветвления и т.п. Поэтому, когда компьютер транслирует написанную на языке высокого уровня программу в машинный код, то этот код получается далеко не оптимальным, причем, чем “выше” язык, на котором программа писалась изначально, тем ниже производительность готовой программы. Именно поэтому в трансляторы встраивались различные оптимизирующие функции, а фирмы – разработчики трансляторов “состязались” в том, чей продукт дает лучший результат. Следующим шагом в развитии языков программирования стало появление ООП – Объектно-ориентированного Программирования. Если раньше создавались библиотеки стандартных подпрограмм, которые программист использовал в своей работе, то объекты (или, точнее, классы) – это целые наборы функций, которые “живут своей жизнью”. Разница между классом и объектом проста: класс – это компьютерное описание какого-то объекта, а объект – это экземпляр класса. Простой аналогией будет чертеж скамейки (класс) и сама скамейка (объект). Используя чертеж можно изготовить множество одинаковых скамеек (именно по такому принципу в Windows появляется множество стандартных кнопок, окон, диалогов и т.п.). Ниже представлены некоторые из языков программирования.По мере развития электронной техники появилась возможность загружать программу в компьютере сразу, а затем заставлять его выполнять содержащиеся в программе инструкции. Такой способ программирования всё ещё требовал длительной процедуры создания последовательностей тысяч отдельных цифр 0 и 1, и так продолжалось до тех пор, пока не был разработан язык программирования ассемблер. Ассемблер представляет задачу, адресованную непосредственно микропроцессору, использую мнемонические коды (несложные для запоминания слова или аббревиатуры, представляющие завершенное задание для микропроцессора).Вряд ли найдется программист или просто выпускник средней школы, который не знал бы (или не слышал) о таком языке программирования, как Паскаль. Основные концепции языка были разработаны в 1967-1968 г. профессором Николаусом Виртом. Стандарт языка был разработан им в 1974 г. Тогда как Кобол был ориентирован на решение экономических задач, a PL/I — чрезмерно сложен и принадлежал скорее к области проблем, чем к области решений, появляется язык, на порядок отличающийся от них своим качеством. Основное, что привлекало к нему, — логичность, поддержка концепций структурного и процедурного программирования, работа с динамической памятью, возможность создания своих типов данных. Строгая типизация позволила сразу же на порядок снизить количество ошибок. Единственным недостатком языка, существовавшим в то время, было отсутствие поддержки модульности. Разработанный фирмой Borland Turbo Pascal – интегрированная оболочка, которая включает в себя редактор, компилятор, компоновщик и отладчик, вместе с интерактивной справочной системой сделали разработку программ на Паскале делом простым и понятным.В настоящее время действуют три стандарта языка. Первый из них — нерасширенный Паскаль (unextended Pascal) был разработан в 1983 году. Второй — Extended Pascal — содержит расширения, касающиеся модульного программирования (раздельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация), и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и т д.) Последний — объектный Паскаль (Object-Oriented Extensions to Pascal), в отличие от первых двух, формально не утвержден, но оформлен в виде отчета (ANSI Technical Report) в 1993 г. Объектный Паскаль поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и ряд других атрибутов объектно-ориентированного программирования.SGML(Standart Generalized Markup Language – стандартный обобщенный язык разметки документов) предназначен для описания элементов документа, не навязывая получателю его оформление. Язык HTML был разработан на основе SGML как простой формат для обмена гипертекстом, неограниченный возможностями конкретных платформ. Подобно SGML он обеспечивает простоту создания документов и преобразования форматов.HTML называют языком разметки, существуют три версии данного языка. Версия 1.0 содержала в основном спецификации по созданию гиперссылок. На смену ей пришла версия 2.0, появились возможности работы со встроенными изображениями и интерактивными формами.Дэйв Раггет из организации «W3» предложил расширенный набор спецификаций ХТМЛ, который стал известен как HTML+. Некоторые поставщики программ просмотра Web вводят в них собственные расширения ХТМЛ. Версия HTML 3.0 поддерживает URL, в виде адресов электронной почты. Ожидается, что в ХТМЛ будет обеспечена поддержка дополнительных возможностей компоновки документов и форматирования текста. Так же эта версия поддерживает создание списков с произвольной степенью вложенности, а элементы списков теперь могут включать горизонтальные разделители. Добавлены дополнительные теги для запуска программ поиска информации в Web. Появилась возможность определять текст и графику как объекты. Си(время создания – 1972 г.) – компилирующий язык программирования. Это набор ключевых слов и функций, представленных привычными словами, которые для выполнения их компьютером должны быть переведены в двоичные коды. Существует несколько достоинств этого языка: скорость (Си является более близким к ассемблеру, чем другие языки высокого уровня, так как многие инструкции Си адресованы непосредственно аппаратной части компьютера. Поэтому программа на Си выполняется очень быстро), переносимость (Си использует стандартные наборы ключевых слов), структирование (имеет свою структуру и правила создания программы.ASP (Active Server Pages) – это мощная технология от Microsoft, позволяющая легко разрабатывать приложения для WWW. ASP – это не язык программирования, это внутренняя технология, позволяющая подключать программы к Web-страницам. Основа успеха ASP – простой скриптовый язык (Visual Basic Script или Java Script) и возможность использования внешних COM-компонент.Perl является интерпретируемым языком, созданным программистом Лари Уоллом (Larry Wall) для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl можно создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты.С изобретением World Wide Web, Perl оказался прекрасным средством для взаимодействия с web-серверами через Common Gateway Interface (CGI) – общий интерфейс взаимодействия. Perl достаточно гибок для обработки введенных данных. Бейсик (BASIC – Begginners Allpurpose Symbolic Instruction Code, т.е символический командный универсальный код для начинающего, в переводе с агнл. – «базовый» ) довольно старый язык, разработанный ещё в 1964 г. один из самых простых языков программирования. Объединяя в себе простоту, гибкость и универсальность, он стал прообразом многих других языков программирования.За выходом первой версии BASIC последовал выпуск других, улучшенных и обладающих большими возможностями, версий – GW-BASIC, QuickBASIC, BASIC для профессионалов.Повсеместная “Виндуализация” PC компьютеров, вынудила к разработке версии Бейсика для Windows приложений. Таким клоном в 1991 году стал Visual Basic, позволяющий визуально создавать прикладные программы, довольно приличного уровня. Visual Basic стал почти столь же структурированным, как и язык С, почти таким же гибким, как Паскаль, он почти столь же хорош для научных расчетов, как и Фортран, по сравнению с Коболом лучше подходит для бизнеса, обладает лучшими возможностями обработки данных по сравнению с xBase… Мощный и достаточно лёгкий в изучении объектно-ориентированный язык – Java – обеспечивает многопотоковость приложений, а также самостоятельно, в фоновом режиме, производит сборку мусора, освобождая ненужные области памяти. Интерфейс прикладного программирования Java (API) дает программисту независимый от операционной среды доступ к необходимым для создания сложных приложений Интернет средствам, таким как сетевые сокет и графическая оконная система. При помощи этого языка стала реальностью идея о независимости программы от платформы. В новой версии значительно повышена производительность исполняющей системы, реализована новая гибкая модель безопасности и включен расширенный набор программных интерфейсов (API). платформа Java 2 – это Межплатфоpменная совместимость и совместимость с предыдущими версиями.Объектно-ориентированный язык сверхвысокого уровня – Python. Python, в отличии от Java, не требует исключительно объектной ориентированности, классы в Python просто изучить и удобно использовать. Python поддерживает множественное наследование, переопределение инфиксных операторов, причем можно переопределить операцию как для левого операнда, так и для правого; в версии 2.1 есть полное переопределение операторов сравнения.В Python имеются исключения и механизм их перехвата; таким образом программист может построить правильную обработку ошибок и создать надежную программу. Встроенные механизмы интроспекции позволяют опрашивать интерфейсы объектов во время выполнения программы. Перечисленные выше языки не являются основными, это наиболее известные языки, можно сказать, что более доступные. Т.к. найти учебный материал по этим языкам не составляет больших проблем. Большинство языков программирования очень похожи между собой, поэтому при знании хотя бы одного языка, изучение других облегчено…