Языки программирования. Работа ученика 10“ет” Гимназии г. В. Луки Мурылёва Аркадия Первые программы. Первые программы заключались в установке ключевых переключателей на передней панели вычислительного устройства. Очевидно, таким способом можно было составить только небольшие программы. С развитием компьютерной техники появился машинный язык, с помощью которого программист мог задавать команды, оперируя с ячейками памяти, полностью используя возможности машины. Однако использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающие наличие и типы ошибок, которые надо анализировать. «Слова» на машинном языке называются инструкции, каждая из которых представляет собой одно элементарное действие для центрального процессора, такое, например, как считывание информации из ячейки памяти . Язык ассемблера. Язык ассемблера — тип языка программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком. Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данныx через метки с символьными именами (при ассемблировании для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес) и директивы Достоинства языка ассемблера. - Минимальное количество избыточного кода, то есть использование меньшего количества команд и обращений в память, позволяет увеличить скорость и уменьшить размер программы. - Обеспечение полной совместимости и максимального использования возможностей нужной платформы: использование специальных инструкций и технических особенностей данной платформы. - При программировании на ассемблере становятся доступными специальные возможности: непосредственный доступ к аппаратуре, портам ввода-вывода и особым регистрам процессора, а также возможность написания самомодифицирующегося кода (то есть метапрограммирование, причём без необходимости программного интерпретатора). = Последние технологии безопасности, внедряемые в операционные системы, не позволяют делать самомодифицирующегося кода, так как исключают одновременную возможность исполнения инструкций и запись в одном и том же участке памяти (технология W^X в BSDсистемах, DEP в Windows). Недостатки языка ассемблера. - Большие объёмы кода и большое число дополнительных мелких задач, что приводит к тому, что код становится очень сложно читать и понимать, а следовательно усложняется отладка и доработка программы, а также трудность реализации парадигм программирования и любых других соглашений. что приводит к сложности совместной разработки. - Меньшее количество доступных библиотек, их малая совместимость между собой. - Непереносимость на другие платформы (кроме двоично совместимых). Основные языки программирования. Используемые в разработке: ABAP/4, Ада, ActionScript, Ассемблеры, AutoIt, Awk, BASIC, C, COBOL, C++, C#, ColdFusion, D, Delphi, Erlang, Forth FoxPro, DataFlex, Фортран, Groovy, Haskell, Java, JavaScript, J++, J#, Icon, Limbo, Лисп, Lua, Objective-C, Оберон, Oz, Паскаль, Perl, PHP, PL/I, Пролог, Руби, Python, Tcl, Scheme, Smalltalk, SQL, Vala, DataFlex, Visual Basic, VB.NET, Visual FoxPro Академические: АПЛ, Clean, Curry, Лого, MATLAB, ML, Scala, IEC61131-3, Instruction List, ST, FBD, Ladder, Diagram, SFC Прочие: Алгол, Алгол 68, Модула-2, Miranda, Hope Эзотерические: INTERCAL, Brainfuck, Befunge, Malbolge, Unlambda Следующий шаг. Был сделан в 1954 году, когда был создан первый язык высокого уровня — Фортран. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения языков структурного программирования (англ. structured programming language), таких как Алгол(1958), Паскаль(1970), Си(1972). Также создавались функциональные (аппликативные) языки (Пример: Lisp — англ. LISt Processing, 1958) и логические языки (пример: Prolog — англ. PROgramming in LOGic, 1972). Фортра́н (Fortran). Первый реализованный язык программирования высокого уровня. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является аббревиатурой от FORmula TRANslator, то есть, переводчик формул. Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм. Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений и многие, многие другие. Ряд таких пакетов создавались на протяжении десятилетий и популярны (главным образом в научной среде) по сей день. Паска́ль. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Николаусом Виртом в 1970, после его участия в работе комитета разработки стандарта языка Алгол-68. Паскаль был создан как язык для обучения процедурному программированию (хотя, по словам Вирта, язык нельзя считать только учебным, поскольку язык, непригодный для написания реальных программ, для обучения использоваться не должен). Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Один из первых языков, для которых была создана реализация «на самом себе» — компилятор Паскаля был написан на самом Паскале. В начале 1970-х годов для переноса Паскальсистем на различные аппаратные платформы была создана система Pascal-P, в которой был единый компилятор Паскаля в промежуточный язык (P-код) и для каждой платформы создавался быстрый интерпретатор P-кода. Delphi. Delphi— среда разработки, использует язык программирования Delphi (начиная с 7 версии язык в среде именуется Delphi, ранее - Object Pascal), разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. Object Pascal - по сути является наследником языка Pascal с объектно-ориентированными расширениями. Турбо Паскаль начиная с версии 5.5 добавил в Паскаль объектно-ориентированные свойства, а Delphi — объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией. Язык “C” Си (англ. C) — стандартизованный процедурный язык программировании, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе (ОС) UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков (см. Cи-подобный синтаксис). программирования, не добавляя лишних накладных расходов на итоговый код программы компилятором, как это всегда делают языки очень высокого уровня, такие как Бейсик. Си имеет следующие важные особенности: • простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами; • ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования; • систему типов, предохраняющую от бессмысленных операций; • использование препроцессора для, например, определения макросов и включения файлов с исходным кодом; • непосредственный доступ к памяти компьютера через использование указателей; • минимальное число ключевых слов; • передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке выполняется с помощью указателей); • указатели на функции и статические переменные области действия имён; • записи — определяемые пользователем собирательные типы данных (структуры), которыми можно манипулировать как одним целым; BASIC. Бе́йсик (BASIC — сокращение от англ. Beginner's All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих; англ. basic — основной, базовый) — семейство высокоуровневых языков программирования. Был разработан в 1963 профессорами Дартмутского колледжа Томасом Куртом (Thomas E. Kurtz, 1928-) и Джоном Кемени (John G. Kemeny, 1926—1993). Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего, как язык для домашних микрокомпьютеров. Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC. Java. Java— объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания приложений и серверного программного обеспечения. Программы на Java могут быть транслированы в байт-код, выполняемый на виртуальной java-машине (JVM) — программе, обрабатывающей байтовый код и передающей инструкции оборудованию, как интерпретатор, но с тем отличием, что байтовый код в отличие от текста обрабатывается значительно быстрее. При классификации языков выделяют следующие типы языков: 1. Ассемблерные языки — являются символьным представлением машинных языков конкретного компьютера. 2. Метаязыки — языки, используемые для формального описания других языков. 3. Императивные языки — это языки, оперирующие командами, изменяющими значение элементов данных, располагают операциями присваивания и циклами. К ним относятся все современные языки программирования. 4. Декларативные языки — языки, оперирующие инструкциями данным и отношениями между ними. Алгоритм скрывается семантикой языка. Это аппликативные языки, языки логики и объектно-ориентированные языки. Примеры декларативных свойств - сложные множества и инструкции поиска по шаблону. 5. Процедурные языки — позволяют определять отдельные методы вычисления какой-нибудь проблемы. Включают в себя императивные и функциональные языки. 6.Аппликативные языки — функции применяются к значениям без побочного эффекта. Это Функциональные языки во всем своем многообразии. 7. Функциональные языки — оперируют функциями высокого порядка. В них манипуляции совершаются напрямую функциями, а не данными. К категории функциональных языков относятся Lisp, FP, APL, Nial, Krc. 8. Объектно-ориентированные языки — языки, в которых данные и функции, имеющие доступ к ним рассматриваютс как один модуль. Пример: Object Pascal, С++, Java, Objective Caml. 9. Языки запросов — обеспечивают интерфейс к базам данных. 10.Языки четвертого поколения (4GL) — высокоуровневые языки, могут использовать естественный английский язык или визуальные конструкции. Алгоритмы или структуры данных обычно выбираются компилятором. 11.Языки логики — языки, оперирующие предикатами и их отношениями p(x, Y). Программы состоят из набора заключений Хорна, которые могут быть: • фактами - p(X,Y) есть истина; • правилами - p истинно, если q1, q2 и qn истинны; • запросами - верны ли q1, g2 и gn? Где gi - цель. Спасибо за внимание.