Языки программирования
В мире существует более тысячи разных языков программирования. Многие из них чуть меньше, чем полностью бесполезны. У вас может быть замечательная карьера, если вы владеете 3-4 языками программирования.
А нас будут интересовать
Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания — выражениями, предложения — операторами. Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.
Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.
Синтаксис — правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.
Семантика — система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.
Краткая история и классификация языков программирования
Первые языки программирования были очень примитивными и мало чем отличались от формализованных упорядоченных последовательностей единиц и нулей, понятных компьютеру. Использование таких языков было крайне неудобно с точки зрения программиста, так как он должен был знать числовые коды всех машинных команд, должен был сам распределять память под команды программы и данные.
Для того, чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд.
Один из первых языков программирования – Фортран (Formula Translation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.
Для решения экономических задач был создан язык программирования — Кобол.
Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп — алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта.
В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями.
Широкое распространение в школах в качестве обучающего языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования.
Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х г. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.
Появление функционального программирования привело к созданию языка Пролог. Этот язык программирования разрабатывался для задач анализа и понимания естественных языков на основе языка формальной логики и методов автоматического доказательства теорем.
В 80-х г. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.
Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня.
В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).
Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.
К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу — Лисп, Пролог, Снобол и др.
В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.
Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.
Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.
Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.
В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках — рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.
В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.
Можно выделить еще один класс языков программирования — объектно-ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме . Примером такого языка может служить язык программирования визуального общения Object Pascal.
Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.
Основные элементы алгоритмического языка
Основными понятиями в алгоритмических языках являются следующие.
Имена (идентификаторы) — последовательность символов для обозначения объектов программы (переменных, массивов, функций и дp.).
Операции. Существуют следующие типы операций:
— арифметические операции: сложение, обозначается символом “+”; вычитание, обозначается символом “-”; умножение, обозначается символом “*”; деление, обозначается символом “/” и дp. ;
— логические операции: операции “логическое и”, “логическое или”, “логическое не” и др.;
— операции отношения: меньше, обозначается символом “”; меньше или равно, обозначается символами “=”; равно, обозначается символом “=”; не равно, обозначается символами “”.
— операция конкатенации символьных значений дpуг с другом, изображается знаком «+».
Ключевые слова – это слова языка, имеющие строго определенное назначение, которые не могут использоваться в качестве идентификаторов.
Данные — величины, обрабатываемые программой. Имеется тpи основных вида данных: константы, переменные и массивы.
Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.
Примеры констант:
числовые: 7.5, 12;
логические: true(истина), false(ложь);
символьные: «А», «+»;
строковые: «abcde», «информатика».
Переменные – это данные, которые могут изменять свои значения в ходе выполнения программы. Они обозначаются именами. Переменные бывают целые, вещественные, логические, символьные истроковые.
Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами — одним в случае одномерного массива, или несколькими, если массив многомерный.
Выражения – элементы языка, которые предназначаются для выполнения необходимых вычислений, состоят из констант, переменных, указателей функций, объединенных знаками операций. Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, «многоэтажных» дробей и т. д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
Различают выражения арифметические, логические и строковые.
Арифметические выражения служат для определения одного числового значения. Арифметические выражения записываются по следующим правилам:
1. Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.
2. Индексы элементов массивов записываются в скобках.
3. Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.
4. Операции одного старшинства выполняются слева направо.
Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — «истина» или «ложь» (да или нет).
В записи логических выражений помимо арифметических операций сложения, вычитания, умножения, деления и возведения в степень используются операции отношения и логические операции.
Значения строковых выражений — тексты. В них могут входить строковые константы, строковые переменные и строковые функции, разделенные знаком операции конкатенации.
Оператор – это элемент языка, который задает полное описание некоторого действия, которое необходимо выполнить. Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка программирования и определяет некоторый вполне законченный этап обработки данных. В состав операторов входят ключевые слова; данные; выражения и т.д.
Стандартная функция – подпрограмма, заранее встроенная в транслятор языка для вычисления часто употребляемых функций. В качестве аргументов функций можно использовать константы, переменные и выражения.
Программа — это последовательность инструкций, предназначенных для выполнения компьютером. В настоящее время программы оформляются в виде текста, который записывается в файлы.
Программирование – это теоретическая и практическая деятельность решения задачи средствами конкретного языка программирования и оформления полученных результатов в виде программы.
На стадии программирования возникает этап отладки программы – процесс обнаружения и устранения ошибок в программе, производимой по результатам ее тестирования на компьютере.
После окончательной отладки программа документируется, т.е. к ней прилагается описание назначения программы и инструкция по эксплуатации. Только после этого программа становится законченным программным продуктом, подготовленным к реализации как любой иной вид промышленной продукции.
Языки высокого уровня работают через трансляционные программы —трансляторы, которые преобразуют исходный код в последовательность команд машинного языка. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для создания текста программы на машинном языке, которая затем выполняется отдельно.
В общем случае программа может иметь модульную структуру, т.е. состоять из нескольких программных единиц, связанных между собой командами передачи управления. Такой принцип построения программ называется модульным. Программная единица, с первой команды которой начинается выполнение программы, называется головной программой. Остальные программные единицы, входящие в единую программу, называются подпрограммами.
Подпрограмма — это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы.
Функция — это программная единица, которая может быть употреблена в выражении. Функция прямо возвращает величину, которая используется при вычислении этого выражения, и, кроме того, может возвращать величины через параметры.
Процесс разработки многомодульных программ эффективнее, особенно если разрабатывается программа большого размера, когда над реализацией проекта может работать несколько программистов, каждый из которых имеет возможность модифицировать фрагменты программы, не мешая работе остальных.
Подпрограммы и функции позволяют создавать большие структурированные программы, которые можно делить на части. Это дает преимущества в следующих ситуациях:
1. Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку.
2. Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.
3. Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно.
Инструментальные системы программирования
Для популярных языков программирования на ЭВМ существует множество систем программирования. Программисты предпочитают те системы, которые легки в использовании, позволяют получить эффективные программы, имеют богатые библиотеки функций (подпрограмм) и мощные возможности для отладки разрабатываемых программ. В качестве примеров таких систем программирования можно назвать Delphi, Visual C++, Visual Basic,Visual Studio.
Системы программирования прежде всего различаются по тому, какой язык программирования они реализуют. Среди программистов, пишущих программы для персональных компьютеров, наибольшей популярностью пользуются языки Си, Паскаль и Бейсик.В последнее время особо популярным стал Python.
Страницы сайта
- 13 ЕГЭ старое
- C
- CSS
- HTML
- Pascal
- Python
- Web-дизайн
- Главная
- ЕГЭ (11 класс)
- Задание 10 ЕГЭ
- Задание 22 ЕГЭ
- Задание 6 ЕГЭ
- Задание 9 ЕГЭ
- Обо мне
- Объектно-ориентированное программирование
- ОГЭ (ГИА 9 класс)
- Решение задач ЕГЭ
- Решение задач ОГЭ
- Справочник
- Языки программирования
Язык программирования
Язык программирования — это формальный язык, используемый для формулирования структур данных и алгоритмов, то есть вычислительных правил которые могут быть выполнены компьютером. Они обычно состоят из пошаговых инструкций, которые составлены из разрешенных (текстовых) шаблонов, называемых синтаксисом. [1]
Когда первые языки программирования были ориентированы на характеристики соответствующих компьютеров, сегодня в основном используются языки программирования высокого уровня, которые обеспечивают наиболее независимый от машины и поэтому более понятный для человека способ выражения. Эти языки могут автоматически переводить программы на машинный язык, который может быть запущен непосредственно процессором. На сегодняшний день все чаще используются языки визуального программирования, которые облегчают доступ к языкам программирования. В декларативных языках программирования алгоритм выполнения задан заранее и не формулируется/не описывается в исходном тексте, а задаются только его начальные значения и условия, а также правила, которым должен соответствовать результат.
- 1 Характеристики
- 2 История
- 3 Классификация языков программирования
- 3.1 Историческая классификация
- 3.1.1 Классификация по парадигмам
- 3.1.2 Классификация по назначению
- 3.2.1 Первое поколение
- 3.2.2 Второе поколение
- 3.2.3 Третье поколение
- 3.2.4 Четвертое поколение
- 5.1 Переменные и векторы
- 5.2 Условные выражения
- 5.3 Циклы
- 5.4 Функции
- 5.5 Синтаксис
Характеристики
Программирование — процесс создания надежного программного обеспечения путем написания, тестирования, отладки и компиляции компьютерной программы. Эти шаги определяют логическое применение следующих шагов:
- Логическое развитие программы для решения конкретной задачи.
- Написание логики программы с использованием определенного языка программирования (кодирование программы).
- Компилирование или интерпретация программы после преобразования её в машинный язык.
- Тестирование и отладка программы.
- Написание документации.
По сути язык программирования состоит из набора символов (называемого алфавитом), грамматических (лексических/морфологических и синтаксических) и семантических правил, которые вместе определяют допустимые языковые структуры и их значение. [2] Существуют ошибки, которые не позволяют рассматривать термины «язык программирования» и «компьютерный язык» как синонимы. Компьютерные языки включают в себя языки программирования и другие, такие как, например, HTML (язык разметки веб-страниц, который сам по себе не является языком программирования, а представляет собой набор инструкций, позволяющих структурировать содержимое документов).
Язык программирования предоставляет возможность точно определить, с какими данными должно работать конкретное программное обеспечение и как эти данные должны храниться или передавать. Язык, который пытается быть относительно близким к человеческому или естественному языку. Для языков программирования очень важным является то, что более одного программиста может использовать общие инструкции для совместного создания программы.
История
Если вы хотите, чтобы компьютер понял ваши инструкции, вам необходимо использовать определенный язык. Он известен как машинный код и легко читается вычислительной машиной, но слишком сложен для людей. Фактически, он состоит только из длинных строк чисел 0 и 1.

Пример кода COBOL
Чтобы облегчить работу, первые операторы компьютеров решили создать переводчик для замены 0 и 1 словами или абстракцией слов и букв, происходящих из английского языка; это известно как язык ассемблера. Например, для сложения используется буква A английского слова add (добавлять) Системный язык ассемблера имеет ту же структуру, что и машинный язык, но буквы и слова легче запомнить или понять, чем цифры.
Чтобы запомнить программные последовательности для обычных действий, их стали называть легко запоминающимися и ассоциируемыми именами: ADD (добавить), SUB (вычесть), MUL (умножить) и т. д. Эта последовательность позиций была названа «инструкциями», а этот набор инструкций был переименован языком ассемблера. Впоследствии появились различные языки программирования, которые получили свое название потому, что имеют синтаксическую структуру, аналогичную структуре языков, написанных людьми, также называемых языками высокого уровня.
Джон Бэкус в 1953 году представил своему начальству предложение разработать более практичную альтернативу языку ассемблера [3] для программирования мэйнфрейма IBM 704. Историческая команда Fortran Джона Бэкуса состояла из программистов Ричарда Голдберга, Шелдона Ф. Беста, Харлана Херрика, Питера Шеридана, Роя Натта, Роберта Нельсона, Ирвинга Циллера, Лоис Хейбт и Дэвида Сэйра.
Первое руководство по языку Fortran появилось в октябре 1956 года [4] , а первый компилятор Fortran был выпущен в апреле 1957 года. В результате клиенты не хотели использовать язык высокого уровня в случае, если их компилятор не мог создать код, производительность которого была сопоставима с производительностью кодов, созданных вручную на языке ассемблера.
В 1960 году был создан COBOL, один из языков, используемых до сих пор в управленческой информатике. Когда сложность задач, выполняемых компьютерами, возросла, возникла необходимость в более эффективном методе их программирования. [5] В результате были созданы языки высокого уровня, такие как BASIC на микрокомпьютерах 1980-х годов. Для выполнения простой задачи, как сложение двух чисел, может потребоваться несколько инструкций на языке ассемблера. На языке высокого уровня достаточно одного оператора.
Классификация языков программирования
Языки программирования исторически разделялись по разным критериям:
Историческая классификация
Из-за появления новых языков для более выразительного программирования, такие стили различались в нескольких поколениях, каждое из которых представляло языки разработки с похожими общими характеристиками. Что касается языков высокого и низкого уровня, то они имеют свои особенности.
Языки программирования обычно подразделяют на две широкие категории, относящиеся к их уровню абстракции, то есть к тому, насколько конкретно или в целом они относятся к вычислительной архитектуре, присущей используемым системам. [6]
Классификация по парадигмам
Основные понятия программирования различают различные модели вычислений и стили организации задач, которые должна выполнять программа. Можно предлагать поддержку одной или нескольких парадигм программирования, полностью и частично.
Классификация по назначению
Языки программирования общего назначения и языки разработки специального предназначения. Языки программирования могут быть разделены на семейства, имеющие определенные общие характеристики. Например: общий стиль синтаксиса языка программ. Все эти функции, как правило, унаследованы от прошлых языков программирования, которые стали источником вдохновения для создателей этого языка.
Классификация по поколениям
Компьютерное оборудование пережило четыре поколения, из которых первые три (компьютеры с клапанами, транзисторами и интегральными схемами) очень понятны; четвертый (крупномасштабные интегральные схемы) является более спорным. [7]
С компьютерным программированием (программным обеспечением) произошло то же самое. Он выполняется на языках, которые обычно делятся на пять поколений, из которых первые три очевидны, но не все согласны с двумя другими. Эти поколения не совсем соответствовали по времени поколениям аппаратных средств, но примерно соответствовали, и они следующие:
Первое поколение
На первых компьютерах был реализован машинный код [8] (основанный на двоичной системе), который может быть представлен последовательностями 0 и 1. Однако, каждая модель компьютера имеет свою собственную внутреннюю структуру при программировании. Они были названы языками низкого уровня, потому что они прямо контролируют оборудование и связаны с физической структурой компьютеров. которые их поддерживают. Из-за того, что этот тип языка намного ближе к машинной логике, чем к человеческой, программировать на нем очень сложно. Этот язык используется для планирования критически важных задач операционных систем, приложений реального времени или драйверов устройств. Другое ограничение этих языков заключается в том, что для выполнения логических инструкций требуются определенные знания программирования.
Второе поколение
Символические языки, которые характерны для машин, упрощают написание инструкций и делают их более удобными. Это относится к языку ассемблера, который собран с помощью макроассемблера. Этот язык использует ряд мощных макросов, которые позволяют объявлять сложные структуры данных и управления.
Третье поколение
Языки высокого уровня заменили символические инструкции машинными кодами [9] , подобными человеческому языку или языку математики. Это сделано для того, чтобы обычный пользователь мог быстрее решить проблему обработки данных. Они используются для создания программного обеспечения в вычислительных областях, где достигается высокая производительность по сравнению с языками предыдущих поколений. Среди них, в частности, C, Fortran, Smalltalk, ADA, C++, C#, Cobol, Delphi, Java и Python. Большинство этих языков могут быть универсальными, то есть язык не ориентирован на одну специальность, а может использоваться для создания различных программ. Для многих самых популярных задач существуют библиотеки, упрощающие программирование, которые позволяют повторно использовать код.
Четвертое поколение
Это название был присвоено определенным инструментам, которые позволяют создавать простые приложения путем объединения готовых деталей. Сегодня считается, что эти инструменты, в общем-то, не являются языками. В частности, некоторые предлагают зарезервировать название четвертого поколения для объектно-ориентированного программирования. По структуре они напоминают английский язык. Другие функции: доступ к базе данных, графические возможности, автоматическая генерация кода и возможность визуального программирования (например, Visual Basic или SL). При этом его преимущества — это более высокая производительность и меньшая утомляемость у программистов, поскольку предоставляемые инструменты включают последовательности инструкций. Необходимость концентрации ниже, поскольку некоторые инструкции, которые даются инструментам, включают последовательности инструкций на другом уровне внутри инструмента. Когда нужно поддерживать уже существующие программы, это менее сложно, поскольку требует более низкого уровня концентрации. Однако его недостатки заключаются в том, что эти готовые инструменты обычно менее гибкие, чем прямые инструкции в языках низкого уровня. Также часто создается зависимость от одного или нескольких сторонних поставщиков, что приводит к потере автономии. Они часто содержат библиотеки других поставщиков, что влечет за собой установку дополнительных опций, которые считаются необязательными. При отсутствии договоров с поставщиками, это программы, которые работают исключительно на языке, на котором были созданы. Это означает, что они обычно не соответствуют международным стандартам ISO и ANSI, что сопряжено с риском в будущем, поскольку время их пребывания на рынке неизвестно.
Парадигма программирования
Парадигма программирования состоит из метода выполнения вычислений [10] , а также способа, которым задачи программы должны быть структурированы и организованы. Это технологическое предложение, принятое сообществом программистов и разработчиков, центральное ядро которого не вызывает сомнений в том, что оно касается только вычислений, решение одной или нескольких четко обозначенных проблем; решение этих проблем должно, следовательно, предполагать значительный прогресс по крайней мере в одном параметре, влияющем на разработку программного обеспечения. Это особый подход или философия к разработке решений. Парадигма отличается друг от друга концепциями и способом абстрагирования элементов, участвующих в проблеме. Другими словами вычислениями.
Он связан с формализацией определенных языков на тот момент их определения. Это один из способов программирования. Задержка во времени с точки зрения принятия и использования ограничена, потому что новые парадигмы предлагают новые или лучшие решения, которые частично или полностью заменяют её. На данный момент наиболее широко используемая парадигма программирования — это «объектно-ориентированная» (объектно-ориентированная). Основной ядром этой парадигмы является объединение данных и обработки в сущность, которая называется «объект», связанную с другими «объектными» сущностями.
Элементы
Переменные и векторы
Переменные — это заголовки, которые присваивают пространствам в памяти для хранения определенных данных. Это контейнеры данных, и поэтому они различаются в зависимости от типа данных, которые они способны хранить. [11] При использовании большинства языков программирования требуется указать конкретный тип переменной для сохранения определенных данных. Например, в Java, если мы хотим сохранить текстовую строку, нам нужно указать тип переменной String. Однако в таких языках, как PHP или JavaScript, эта спецификация переменных не нужна.
Тип данных Краткое описание Char Эти переменные содержат один символ, то есть букву, знак или число. Int Они содержат целое число. Float Они содержат десятичное число. String Они содержат текстовые строки или, что то же самое, представляют собой вектор с несколькими переменными типа Char. Boolean Они могут содержать только ноль или единицу. Условные выражения
Условные операторы — это структуры кода, которые указывают на то, что для выполнения определенной части программы должны выполняться определенные условия; например: два значения равны, одно значение существует, а другое значение больше другого. Эти условия обычно выполняются только один раз в ходе всей операции. Наиболее популярными и часто используемыми для программирования условиями являются:
If Указывает условие для выполнения части программы. [12]
Else if Всегда предшествует «If» и указывает условие для выполнения части программы, если она не соответствует условию предыдущего if.
Else Всегда предшествует if, а иногда Else If. Указывает, что он должен быть выполнен, когда предварительные условия не выполняются.
Циклы
К циклам относятся условные выражения, но они постоянно выполняют код до тех пор, пока выполняется определенное условие. Самые частые из них — это:
For — Код выполняется, пока переменная находится между двумя заданными параметрами.
Нужно сказать что, несмотря на различные типы циклов, все они могут выполнять одни и те же функции. При выборе языка программирования, в первую очередь следует руководствоваться вкусом программиста.
While Выполняет код до тех пор, пока выполняется запрошенное вами условие.
Функции
Функции были созданы, чтобы избежать необходимости постоянно повторять фрагменты кода. Эту функцию можно рассматривать как часть кода. Поэтому когда мы получаем доступ к этой функции, на самом деле мы приказываем программе выполнить определенный код, предопределенный ранее. Все языки программирования содержат определенные примитивные учебные элементы для описания данных и процессов или преобразований, применяемых к этим данным (например: сложение двух чисел либо выбор элемента из коллекции). Названия этих примитивов определены синтаксическими и семантическими правилами, которые описывают их структуру и значение соответственно.
Синтаксис
Видимая форма языка программирования известна как синтаксис. Почти все языки программирования являются текстовыми, то есть используют текстовые последовательности, включая слова и числа. Аналогично письменным естественным языкам. Существуют языки программирования, которые по своей природе более графичны и используют визуальные отношения между символами для указания программы.
Типовой синтаксис языка программирования описывает возможные сочетания символов, образующих синтаксически правильную программу. Значение, придающееся комбинации символов (либо формально, либо как часть жесткого кода в справочнике по реализации).
Реализация
Реализация языка — это способ выполнения программы для определенной комбинации программного и аппаратного обеспечения. Есть два способа реализации языка: компиляция и интерпретация. [13]
Компиляция — это процесс, при котором программа, написанная на одном языке программирования, переводится на другой язык программирования, генерируя эквивалентную программу, которую машина сможет интерпретировать. Программы-переводчики, которые способны выполнять эту операцию, называются компиляторами. Эти программы также могут генерировать множество строк машинного кода для каждого предложения исходной программы. Интерпретация — это присвоение значения четко сформированным формальным языком. Если язык можно определить чисто синтаксически, его четко сформированные формулы могут быть не более чем строками символов без какого-либо смысла. Интерпретация придает этим формулам смысл.
Примечания
- ↑История языков(неопр.) . oselkschool.ru.
- ↑Грамматика языков программирования(неопр.) . www.psciences.net.
- ↑Персона. Джон Бэкус — создатель первого языка программирования высокого уровня(рус.) . Хабр.
- ↑Fortran: 65 лет с момента выхода первого справочного руководства(рус.) . www.linux.org.ru.
- ↑Вероника Елкина.COBOL — язык программирования, на котором работают почти все банкоматы(рус.) . Rusbase.
- ↑6. Языки программирования и их классификация.(рус.) . StudFiles.
- ↑IT&Life.Основные этапы истории развития компьютеров(рус.)(неопр.)?. ITandLife.ru (21 апреля 2021).
- ↑Алан Тьюринг, отец современного компьютера(неопр.) . itnan.ru.
- ↑Языки программирования высокого уровня: высокоуровневые языки(рус.)(неопр.)?. Уроки по программированию Programmera.ru (12 июля 2017).
- ↑Парадигмы программирования: что это, какие виды бывают, примеры использования(рус.) . Парадигмы программирования: что это, какие виды бывают, примеры использования.
- ↑Переменная в программировании. Что это такое?(рус.) . Skysmart.
- ↑Marat Abdrakhmanov.C#. Урок 6. Условные операторы и циклы(рус.)(неопр.)? (24 ноября 2020).
- ↑Трансляция, компиляция и интерпретация | Контент-платформа Pandia.ru(неопр.) . pandia.ru.
Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело!
- Знание.Вики:Cite web (не указан язык)
- Технологии
- Все статьи
- Языки программирования
Какой язык программирования учить прямо сейчас: 9 самых востребованных

Люди придумали больше 8 тыс. языков программирования. Их популярность меняется каждый год, а требования для входа в профессию все ниже. Разбираемся, какие языки востребованы, зачем нужны и как их учить непрограммистам
Самые востребованные языки программирования
- Python
- C
- C++
- Java
- C#
- JavaScript
- Visual Basic
- PHP
- Assembly Language

Рейтинг TIOBE, сентябрь 2023 года
1. Язык программирования Python
Python — логичный и относительно простой язык с минималистичным синтаксисом. У него небольшой набор основных правил, язык легко читать и писать на нем не сложно. Разработчики написали для Python множество библиотек, поэтому вы можете использовать готовые решения в своих проектах. Главный минус Python — его невысокая скорость. Программы на нем будут работать в среднем медленнее, чем на других языках.
С октября 2021 года Python стал самым популярным языком программирования, сместив с первой строчки рейтингов Java и C.
Игорь Музыкин, руководитель направления «Программирование» в Skillbox:
«Главная причина стабильного роста запросов на Python — растущая востребованность IT-специальностей для переориентирования карьеры в сферу разработки. Представим человека, который задумался о первых шагах в IT. Для начала он скорее всего начнет искать информацию в интернете. Что он увидит? Аргументацию об относительной простоте Python для новичков и статьи о широкой области применения языка — от научно-исследовательской работы до геймдева. Поэтому Python все чаще выбирают в качестве первого языка программирования для освоения.
В пользу простоты Python играет лаконичный синтаксис. Например, блоки кода отделяются отступами, а не скобками, это сокращает количество строк и символов. Еще есть синтаксические конструкции, введение которых позволяет все рутинные задачи по управлению памятью и потоками отдавать интерпретатору Python вместо дополнительного кода. За счет этого разработчик может сосредоточиться на задачах, а не коде как таковом.
Несмотря на критику некоторых аспектов работы Python, например, медленную скорость программ и зависимость языка от системных библиотек, в ближайшие годы он продолжит укреплять свои лидерские позиции в веб-разработке, machine learning, тестировании и DevOps».
Где используют. Чаще всего на Python создают серверы, обрабатывают данные и разрабатывают нейронные сети. После изучения Python можно работать бэкенд-разработчиком или разработчиком в сфере data science. С помощью Python можно «прикрутить» неочевидные функции к программам — это его главное удобство. Например, создать нейронную сеть для определения степени поражения легких, а заодно в этой же программе сделать просмотр снимков КТ.
Сколько платят программисту. Разработчик в крупной компании в Москве, знающий Python, зарабатывает от ₽100 тыс. до ₽250 тыс. При этом спрос на разработчиков в сфере data science растет, поэтому можно рассчитывать даже на более высокую оплату.
Зачем изучать. С помощью Python можно создать бота для мессенджеров или социальных сетей. Или написать программу для парсинга — поиска и переноса информации с разных сайтов в один документ. Такая программа пригодится дизайнерам и журналистам.

Марина Архипцева, ментор курса Data Science в SkillFactory, ETL-разработчик:
«Если следить за индексом TIOBE, то мы увидим, что месяц от месяца лидер меняется, но тройка остается неизменной — Python, Java, C. Собственно поэтому за ежемесячным рейтингом следить не так интересно, а что более любопытно — тот же TIOBE кроме ежемесячного рейтинга ежегодно выбирает язык года, и Python удостаивался этой чести неоднократно с 2003 года (в том числе и в 2023 году). Это лучший показатель среди всех языков программирования. Почему популярность Python растет с каждым годом?
Во-первых, сейчас наблюдается активный рост сферы Data Science. Если проанализировать, например, HeadHunter, то мы обнаружим множество открытых вакансий в данной области. Компании ищут инженеров данных, data scientist’ов, аналитиков данных, специалистов по большим данным, MLops’ов. Конкуренция большая, но спрос все еще превышает предложение на рынке. В 2012 году журнал Harvard Business Review выпустил статью «Data Scientist: The Sexiest Job of the 21st Century», в которой наука о данных была названа самой сексуальной профессией XXI века, и с тех пор, кажется, интерес к этой сфере только растет. И как раз Python является основным инструментом исследователя данных. Во-вторых, у Python обширное комьюнити — на любой вопрос практически со 100% вероятностью найдется ответ на StackOverFlow, главное правильно его сформулировать.
Во-третьих, Python — это язык для всех возрастов. Дети пишут на нем игры, создают миры в Minecraft и сдают ЕГЭ по информатике. Взрослые специалисты, кроме обработки данных, пишут бэкенд на Python и решают множество прикладных задач.
Безусловно, Python — это не идеальный язык и не панацея для всего, но основную тенденцию в мире программирования отлично иллюстрирует внутренний девиз Google: «Использовать Python, там, где можем, C++ — где должны». Здесь имеется в виду, следующее: С++ оптимален для разработки приложений, в которых важна скорость работы. За это приходится расплачиваться высоким порогом входа и сложностью самого языка. Поэтому там, где скорость не критична, Google предпочитает использовать Python».
2. Язык программирования C
C — один из самых старых и популярных языков программирования. Он «легкий» и быстрый, поэтому его используют там, где нужна высокая производительность. Например, для создания драйверов, операционных систем или ПО для микроконтроллеров. При этом C сложно изучить — многое приходится писать с нуля. Если сравнивать языки программирования с автомобилями, то C — гоночный болид, неудобный на городских дорогах, но очень быстрый.
Где используют. С помощью С создают драйвера, пишут ядра операционных систем, а также пишут библиотеки для Python и других языков.
Сколько платят программисту. В Москве разработчик на C получает в среднем от ₽100 тыс. до ₽250 тыс. В других городах зарплаты меньше — от ₽50 тыс. до ₽200 тыс.
Зачем изучать обычным людям. С — это не тот язык, на котором можно легко написать приложение для смартфона или программу для умного дома. Но с него можно начать изучение языков программирования. Учиться непросто, но если справитесь, поймете принцип действия почти всех остальных языков.
3. Язык программирования C++
С++ — кроссплатформенный язык семейства C с расширенными функциями.
Огромное количество программистов пишут на нем код, делятся библиотеками и шаблонами, отвечают на вопросы новичков.
Где используют. Чаще всего на С++ создают операционные системы, драйверы и утилиты. Делают популярные десктопные приложения серий Adobe и Office. Из-за высокой скорости и производительности C++ используют для разработки компьютерных игр. Например, на нем написан популярный движок Unreal Engine.
Движок Unreal Engine создали в 1998 году. Компания Epic Games продолжает выпускать на нем игры. Например, на Unreal Engine работает популярная игра PUBG
Сколько платят программисту. В регионах разработчик на C++ зарабатывает от ₽50 тыс. до ₽150 тыс., в Москве — от ₽100 тыс. до ₽250 тыс. Зарплата зависит не только от города, но и от сферы — в геймдеве можно заработать больше, чем в разработке системных приложений.
Зачем изучать. C++ плохо подходит для решения простых «домашних» задач, но с него можно начать обучение языкам, чтобы понять их структуру и принципы. Если решили изучать, запаситесь терпением — с С++ в полной мере работает принцип «тяжело в учении — легко в бою».
4. Язык программирования Java
Java — кроссплатформенный язык с большим количеством библиотек и большим сообществом разработчиков. Кроссплатформенность — это возможность написать программу один раз и сразу пользоваться ей на нескольких операционных системах: Windows, Linux и MacOS. Благодаря библиотекам Java подойдет практически для всего: работы с графикой, звуком, создания небольших игр. А в большом сообществе начинающий разработчик легко найдет готовые куски кода для разных задач и ответы почти на любые вопросы.
Программисты пользуются библиотеками, чтобы создавать программы быстрее. Библиотека — это набор готовых программ, объектов и функций для решения типовых задач.
Где используют. Java — это язык для всего. На нем пишут мобильные приложения для Android, программы для микроволновых печей и серверы. Для разработки мобильных приложений сейчас все активнее используют язык Kotlin. Но на Java уже написали очень много приложений, которые придется обслуживать и обновлять.
Сколько платят программисту. Зарплаты Java-разработчиков не сильно отличаются от обычных зарплат программистов — от ₽100 тыс. до ₽250 тыс. в Москве.
Зачем изучать. С помощью Java можно создать домашний сервер или приложение для мобильного телефона. Это будет не очень просто, но можно убить двух зайцев одним выстрелом — сделать программу и заодно выучить популярный язык.

5. Язык программирования C#
C# (си-шарп) — язык, изначально придуманный компанией Microsoft, чтобы создавать приложения под Windows. Это объектно-ориентированный язык — его сложнее изучать, но проще использовать, например, меньше писать одинаковый код. С помощью С# можно работать с платформой WPF, которая помогает создавать «красивые» оконные приложения. Например, последние версии MS Office.
Где используют. Чаще всего на C# пишут приложения для Windows и создают компьютерные игры. Например, на C# работает популярный движок Unity. Кроме того, на нем можно разрабатывать системные приложения и создавать библиотеки для С++.
Сколько платят программисту. В регионах разработчики на С# получают от ₽35 тыс. до ₽130 тыс., в Москве — от ₽100 тыс. до ₽250 тыс.
Зачем изучать. С помощью C# можно создать оконное приложение для Windows, например, калькулятор или небольшую игру. Но изучать его сложнее, чем языки для создания мобильных приложений.
6. Язык программирования JavaScript
JavaScript — быстрый кроссплатформенный язык для веб-разработки. С помощью кода на JavaScript разработчик «говорит» странице, как она будет реагировать на действия пользователя. С помощью JS можно показывать пользователю информацию без перезагрузки страницы — так работают выпадающие меню, всплывающие окна, оконные клавиатуры.
При этом у JavaScript есть свои ограничения — он позволяет допускать ошибки, которые затем сложно обнаружить. Поэтому его редко используют для создания сложного программного обеспечения, например, ПО серверов.
Где используют. JS постоянно используют для веб-разработки. На нем удобно создавать мобильные и десктопные приложения, которые будут работать через браузер. Например, Notion, Discord, Visual Studio Code.
Сколько платят программисту. Разработчик на JavaScript в Москве зарабатывает от ₽140 тыс. до ₽300 тыс.
Зачем изучать. С помощью JS можно создать простой сайт или модуль для него, работающий с запросами клиента. Например, онлайн-калькулятор.

7. Язык программирования Visual Basic
Visual Basic — язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемые корпорацией Microsoft. Visual Basic во многом похож на своего предшественника — язык BASIC, у которого есть немало диалектов, у них схожи стиль и синтаксис. Однако при этом Visual Basic также сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Интегрированная среда разработки VB включает инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса, а также инструменты для отладки приложений.
Где используют. Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows. Главной особенностью Visual Basic, отличающей его от большинства языков, стало применение в программировании графического интерфейса.
Сколько платят программисту. От ₽30 тыс. до ₽100 тыс. Средняя зарплата по России ₽62 тыс. Многие программисты считают, что Visual Basic отошел в прошлое — тем не менее, в интернете можно найти хорошие вакансии — и предложения работать за эти деньги удаленно.
Зачем изучать. К достоинствам языка относят достаточно простой синтаксис, что обеспечивает низкий порог входа для начинающих программистов.
8. Язык программирования PHP
PHP — используют в веб-разработке для создания программ, которые работают на сервере и помогают обрабатывать запросы клиентов. PHP постепенно теряет популярность, потому что серверы можно создавать с помощью других языков. Но на PHP до сих пор работают многие ранее созданные сайты, например, «ВКонтакте».
Где используют. С помощью PHP создают программы, которые работают на сервере и помогают отправлять почту с сайта, взаимодействовать с базами данным. PHP облегчает работу интернет-магазинов — можно не создавать 1 тыс. одинаковых страниц, а генерировать их автоматически из базы данных по запросу клиента.
Сколько платят программисту. В регионах PHP-разработчик получает от ₽50 тыс. до ₽120 тыс., в московских компаниях — от ₽80 тыс. до ₽220 тыс.
Зачем изучать. Со знанием PHP легко начать карьеру разработчика. Такой разработчик сможет найти работу, даже если у него мало опыта.

Вакансии PHP-разработчика в Москве на HeadHunter
9. Язык программирования Assembly Language
Assembly Language или язык ассемблера — это язык программирования низкого уровня, который используется внутри операционной системы для того, чтобы в автоматическом режиме преобразовывать исходную программу (заданную компьютеру) на машинный язык. Он работает непосредственно с процессором, и каждая его команда — это инструкция процессора, а не операционной или файловой системы. Перевод языка ассемблера в машинный код называется ассемблированием.
Где используют. Ассемблер используют те, кто работает с железом. На нем пишут драйверы устройств и некоторые компоненты операционных систем — например, ядро или загрузчик. Любительские операционные системы MenuetOS и KolibriOS полностью написаны на ассемблере. На нем также разрабатывают встроенные программы для микроконтроллеров, игровых приставок, его активно используют в реверс-инжиниринге.
Сколько платят программисту. От ₽80 тыс. до ₽300 тыс. в зависимости от уровня квалификации и опыта.
Зачем изучать. Если хотите писать высокопроизводительный код для конкретной аппаратной платформы или устройства. Также Assembly Language пригодится для отладки низкоуровневых проблем в программах или оборудовании. Но учтите, что изучать его сложнее, чем языки более сложного уровня, и его знание не пригодится для понимания других языков, поэтому он не подойдет для новичков.

Общие тренды IT-сферы вне зависимости от языков программирования
Код становится более читабельным. В последние годы разрабатывают все больше приложений, в том числе для мобильных устройств. Приложения становятся все сложнее по архитектуре, их нужно постоянно обновлять и обслуживать — важно, чтобы код можно было легко прочитать и понять. Приложение может жить десять лет. За это время сменится несколько разработчиков, которым нужно будет понимать код, написанный другими. Поэтому важно, чтобы программы не только решали свои задачи, но и были аккуратно, понятно написаны.
Растет популярность мобильной разработки и машинного обучения. Мобильная разработка стала привычным делом за несколько лет. Многие компании запускают только мобильные приложения, не думая об их браузерных и десктопных версиях. Из-за этого сильнее разрабатывают стандарты мобильной разработки. С одной стороны, это усложняет работу, с другой — сообществу выгодно обучить новичков этим стандартам.
Машинное обучение из диковинки становится неотъемлемой частью жизни — предсказывание и обработка данных слишком часто помогают в обычных ситуациях. Становится больше приложений по распознаванию лиц и обработке голосовых сообщений в текст.
Нужно писать код для всех платформ. Платформ становится все больше — например, Apple оснастила свои ноутбуки ARM-процессорами, которые раньше использовала только для смартфонов и планшетов. Поэтому разработчики должны учитывать все существующие технические возможности и писать приложения так, чтобы они работали везде.
Работодатели хотят посмотреть портфолио на GitHub. Если раньше при найме сотрудника работодатели смотрели приложения, к которым программист приложил руку, то теперь даже непрофессионалы все чаще хотят увидеть код. На Гитхабе можно посмотреть все проекты разработчика, увидеть, как он думает и пишет, как развивался и рос.
Программирование молодеет. Дети и подростки изучают программирование на онлайн-курсах или самостоятельно. Из-за этого уже в 13–15 лет они могут писать приложения, выкладывать их в Appstore или GooglePlay и даже зарабатывать деньги. Некоторые из них так начинают карьеру разработчика и конкурируют с выпускниками вузов и более старшими коллегами.

Еще пять статей о программировании
- Программирование с нуля: с чего начать и как выучить
- Вчерашняя техника уже завтра: могут ли устареть языки программирования
- Почему программистам не обойтись без гибких навыков
- Стартап или гигант: что выбирают ИТ-специалисты
- Где брать программистов: почему компании приходят в буткемпы
Языки программирования в школе
Уроки по информатике в школе и вузе: какой язык программирования выбрать? Насколько глубоко его изучать и нужно ли вообще в школе изучать языки программирования? Есть мнение, что учащихся нужно знакомить с различными языками и различными стилями программирования. Видимо, наиболее подходящими учебными языками программирования сегодня являются Форт, Ruby, Python, Си, Паскаль и Java.
Введение [ править ]
Первым кодировки на бумаге придумал Паскаль. В одной строке умещалось от 0 до 255 символов. Первым языком электрического типа считается Планкакюль. Его изобретателем считается немец Конрад Цузе. Элементы ячейки располагались в две строки. В первой писались натуральные, а во второй аргументы. Один из четырех его компьютеров был частично из консервных банок. Использовалась двуличная система в одной ячейке. Один элемент заряжен положительно, а другой отрицательно. Мнения о том, какой язык лучше преподавать в школе, разнятся: от того, что программирование изучать не нужно, а следует просто поднимать компьютерную грамотность и осваивать офисные программы (как на Западе), до того, что нужно изучать операционные системы и несколько языков программирования различных уровней абстракции и с различными парадигмами. Это крайние случаи, но золотую середину найти непросто. В первую очередь, нам нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться интернетом, электронной почтой и текстовыми редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям? А может, нам нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Но синусами и уравнениями Кирхгофа в жизни тоже пользуется не каждый. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её непросто. Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.
Неужели действительно не так важно, какая среда и какой конкретный язык программирования будет использован для практических занятий? Оказывается, что у каждого преподавателя есть свой список требований к учебному языку программирования. Например: простой, интуитивный синтаксис, наличие высокоуровневых инструментов для обнаружения и недопущения ошибок и для отладки программ, наличие качественной документации с примерами, наличие дружелюбной среды разработки, межплатформенность (наличие версий под различные платформы), … У некоторых преподавателей этот список очень короткий, например: «Только Паскаль» или «Любой, кроме Бейсика!» Попробуем подойти к проблеме конструктивно.
Бейсик и Паскаль [ править ]
Когда-то наиболее популярными языками программирования в школах мира были Бейсик и Паскаль. Бейсик всегда считался самым простым языком программирования, а Паскаль — самым подходящим языком для обучения программированию. Но теперь это не так. Да, Бейсик прост. Но он создавался во времена, когда человечество не имело никакого опыта создания компьютерных систем, и основан на устаревших и не оправдавших себя принципах. Собственно, никакой фундаментальной целостной идеи в основе Бейсика не лежит. Сегодня есть простые и при этом более наглядные и идейно замкнутые языки программирования, нежели Бейсик. Паскаль удобен в учебных целях; ведь именно для них он и создавался. Студенты быстро учатся решать с его помощью алгоритмические задачки. Но так получается, что изучать Паскаль полезно только для того, чтобы писать программы на Паскалe. А если нужно создать настоящий программный продукт, Паскаль оказывается неудобен. И студентам, знающим только Паскаль, приходится переучиваться, что часто сложнее, нежели изучить правильные языки и технологии с нуля. Часто слышишь от преподавателей школ и вузов:
«Уж лучше Паскаль, чем Бейсик. И лучше Java, а не Паскаль: в Java есть сборка мусора, а это очень удобно для изучения программирования. А еще лучше какой-нибудь сценарный слабо типизированный язык. Там и сборка мусора есть, и в типах путаться не будут, всё будет просто и понятно.»
Но есть и другие мнения:
«Первый язык программирования должен быть требовательным к ученику. Необходимо, чтобы ученик имел чёсткое представление о том, что его программа делает на каждом шаге, и уметь записывать алгоритмы на строгом формальном языке, без лишних поблажек, которые имеются, например, в языке Перл, где можно писать круглые скобки вокруг аргументов функций, а можно не писать, и делать другие подобные вещи. Первый язык должен быть cтрого типизированным, ибо смешение целых чисел, вещественных чисел и текстовых переменных приводит у начинающих программистов к неправильному представлению о методах хранения данных в памяти компьютера. Чем больше сообщений об ошибках ученики увидят от компилятора, и чем больше из этих сообщений они поймут, тем больше фундаментальных знаний о программировании они получат. Паскаль — неплохой язык в этом смысле. Особенно приятно, что в нём есть проверка на принадлежность индекса массива допустимому множеству значений. Это школьникам очень полезно. Но Паскаль редко применяется на практике, и специалист по паскалю оказывается мало востребованным на рынке труда; для реальной работы приходится учить более популярный язык [1] (Java, C/C++, PHP и т. д.). С языком Си другая проблема: в нём много отпугивающих конструкций. С другой стороны, никто не заставляет учителей показывать все глубины Си. С ним можно [источник?] работать на том же уровне, что и с Паскалем, не занимаясь сложными махинациями c указателями и не используя сложных конструкций.»
«Язык Бейсик, используемый сейчас в большинстве школ, просто вреден как для будущих программистов, так и для обычных школьников. Он не имеет никакой системы отладки [источник?] , не имеет контроля типов и не требует явного объявления переменных. Это приводит к тому, что ученики не могут находить ошибки в своих программах. Ошибки, с которыми они встречаются, обычно неадекватны и создают у учеников отвратное представление о программировании вообще. Бейсик в принципе не пригоден для учебных, и тем более практических целей.»
«Скриптовые языки больше соответствуют потребностям среднего пользователя компьютера. Многие из существующих скриптовых языков имеют достаточно серьёзный идеологический фундамент, замкнутую модель, наглядный естественный синтаксис и хорошие учебные материалы с примерами, в том числе на русском языке. В первую очередь, я имею в виду языки Форт, Руби и Питон.»
«Ныне школьникам приходится работать с морально устаревшими и неудобными системами Borland Pascal и Бейсик. Введение в школах более современных языков программирования автоматически поднимет уровень преподавания информатики, и уровень учителей тоже.»
«Если кто хочет заниматься программированием и идти дальше, желательно начать изучение с Паскаля, прорешивать задачи по циклам, массивам, матрицам и т. д. Когда базовые понятия уже будут заложены можно переходить на Borland Delphi, это тот же Паскаль, только там используется объектно-ориентированный подход. Этот язык имеет Ооо! какие возможности.»
Какие есть альтернативы? [ править ]
Альтернатив много. Ныне есть целый зоопарк (экосистема) языков программирования, которые постоянно эволюционируют, расщепляются и сливаются. Это уже упомянутые выше языки Форт, Ruby и Python. Дерево эволюции видов языков программирования можно найти в Сети [1] [2]. Перечислим ключевые факторы, управляющие отбором:
- Предоставление языком высокоуровневых средств контроля за целостностью и безошибочностью кодa на первом этапе сборки проектов. Это относится в первую очередь к языкам Java, Haskell, и Python. Языки стараются делать такими, чтобы программист просто не мог допускать ошибок. А если ошибки все-таки делаются, то на этапе компиляции (трансляции) они должны находиться. В частности, опечатка в одном символе не должна приводить к тому, что программа компилится и запускается (а такое бывает, например, в языках Бейсик и Perl, если не указан явно специальный режим strict. Язык Java создавался в контексте анализа типичных ошибок и проблем, возникающих в проектах на языке Си++. Создатели Java постарались внести в синтаксис и базовую парадигму такие ограничения, чтобы типичные ошибки программистов на Си++ просто не могли появиться в проектах на Java. Это очень важная идея: если умело заключить себя в рамки, можно получить выгоду. Следует отметить, что в крупных корпорациях часто программистам выдаётся список правил оформления программ и набор конструкций, которые нельзя использовать в коде, несмотря на то, что сам язык их допускает. Излишняя гибкость языка иногда вредна, так как позволяет программистам писать мутные и запутанные программы. Новые языки программирования делают так, чтобы не искушать программистов и не давать им возможности писать запутано и с ошибками.
- Чистота и ясность кода, читаемость кода. Далее всего здесь продвинулся, видимо, Руби. Сегодня на всех официальных сайтах программных средств среди первых достоинств указывается «естественность синтаксиса» или «близость к естественному языку» (обычно английскому). Конечно, это немаловажный фактор. Давно прошло время, когда люди подстраивались под компьютеры и кропотливо переводили свои идеи и алгоритмы в машинный язык нулей и единиц. Сегодня компьютеры все более и более подстраиваются под человеческий язык. Это удобно. Увеличивается скорость написания программ, хотя обычно это идёт в ущерб скорости выполнения и вообще рациональности получающейся программы.
- Чистота и целостность парадигмы, заложенной в основу языка. Например, языки Smalltalk и Ruby базируются на чистой объектно-ориентированной парадигме, а Haskell — на чистой функциональной парадигме. Эта чистота полезна, чтобы программист чётко представлял модель, которой он ограничен, и в терминах которой ему нужно мыслить при проектировании программы.
- Простота синтаксиса, прозрачность интерпретации языковых конструкций. Например, синтаксис языка Python настолько прост, что его описание помещается на одну страницу. Это позволяет программисту всегда понимать то, что он написал. Простота синтаксиса, которая с одной стороны является ограничением, может быть очень полезной, так как позволяет писать ясные, читаемые программы и не думать о том, как же именно компилятор (интерпретатор) оттранслирует ту или иную конструкцию.
- Многогранность и гибкость, возможность писать сложные программы коротко и красиво. Таким свойством обладают сейчас языки Perl, Ruby, Python. Но следует отметить, что такая универсальность языков может иметь и недостатки, так как часто приводит к излишнему усложнению синтаксиса. Например, очень многогранен Perl, он богат различными конструкциями и хитрыми штучками, которые позволяют записывать сложную логику очень коротко («коротко о многом»). В итоге очень легко написать программы, которые потом невозможно читать. Впрочем, то же самое касается и языков Си и Си++. Языкам Ruby, Python многогранность даётся с меньшими потерями, нежели Perl и Си++.
- Наличие стандартных библиотек и наличие средств интеграции проектов друг с другом и с другими системами и технологиями. Cегодня все уважающие себя языки предоставляют средства для работы с базами данных, для создания графических интерфейсов, для работы с сетевыми протоколами и создания приложений с архитектурой клиент-сервер. Сегодня идёт непрерывное соревнование между скриптовыми языками программирования типа PHP, Ruby, Python, Perl и др. в том, насколько хорошо развиты в них средства интеграции с различными технологиями. Кто-то умеет работать с OpenGL, а кто-то нет.
- Возможность разрабатывать адаптивные системы. Язык должен быть таким, чтобы программы, написанные на нём, не были косными и неповоротливыми. Язык должен допускать возможность внесения малых изменений в код, чтобы подстроится под динамически меняющуюся и усложняющуюся задачу. Краеугольными камнями адаптивности языковых программных средств являются гибкая многоуровневая модульность (как у языков Java, Ruby, Python, Tcl) простота средств экспорта и импорта функциональности (имеются в виду средства, направленные на то, чтобы проекты могли делится друг с другом классами, объектами и функциями) и средства поддержки рефакторинга — глобальных революционных изменений кода, проходящих сквозь модули и направленных на улучшение читаемости кода и избавление от накопившегося в процессе эволюции груза ненужной функциональности.
Есть и другие номинации. Язык Python сегодня победитель в номинации «простота синтаксиса», а Perl более, чем какой-либо другой язык удобен для обработки текстов и CGI-программирования. Язык Python в принципе создавался как язык интегратор. С его помощью можно интегрировать различные приложения и создавать свои собственные пакеты и новые макроязыки. (Прошу извинения у школьников, которые, скорее всего, не знают, что такое «парадигма программирования», «Скриптовые языки», «Объектно-ориентированное программирование» и «макроязык». На страницах этого журнала мы понемножку будем освещать эти понятия и давать базовые знания, которые необходимы молодому уму, для того, чтобы развиваться и творить, используя современные компьютерные технологии.)
Итак, Perl многогранен, Python прост, Python красив, Ruby тоже молодец, Java и Си технологичны. Номинаций много и явного победителя нет, так же как и нет одежды, которая одинаково хорошо подходит под летнюю, дождливую или зимнюю погоду. Температура и влажность — всего лишь два параметра, а в языках программирования их гораздо больше.
А что можно сказать про Паскаль и Бейсик?
- Когда-то я сам программировал на Visual Basic формочки и диалоги, и мне это даже нравилось. И сейчас многие продолжают это делать. Но в программировании на Visual Basic очень мало от программирования и ещё меньше фундаментальных основ информатики.
- Borland Pascal нужно просто отправить на пенсию — он своё отслужил.
- Статистика показывает, что победители школьных и студенческих олимпиад по программированию пишут в основном на Паскаль. Но следует отметить, что Паскаль активно теснят языки Java, C# и Haskell. В частности, на последней олимпиаде на международном соревновании по функциональному программированию два победителя писали на Haskell (http://www.haskell.org, http://www.cs.luc.edu/icfp). А на международном соревновании ImagineCup победитель использовал язык C#.
- Паскаль и Бейсик по-своему неплохие языки, только не пригодятся они при решении практических задач. Конечно, на Delphi (32-разрядная расширенная версия Паскаль) пишутся промышленные системы, но делается это программистами, которые так и не смогли избавиться от своих школьных привычек.
В индустрии компьютерных технологий возникают самые различные задачи. Для одной задачи удобен один язык, для второй — другой. В индустрии WEB-программирования популярны языки Perl, PHP. Мало кто пишет динамические сайты на машинных языках типа Си, так как «игра не будет стоить свеч». Зато при написании операционных систем и системных инструментов, при решении задач, где скорость важна, при разработке крупных систем, от которых требуется переносимость, производительность и технологичность, язык Си является стандартом де-факто. Физики и математики (в том числе школьники) просто обязаны познакомится с функциональными языками программирования типа Лиспа, Хаскелла или Mathematica. Mathematica позволяет строить различные модели и интерактивно исследовать их, по ходу дела визуализируя (О языках, предоставляющих инструменты для визуализации данных, следует отвести отдельный разговор.) результаты и анализируя их статистическими и другими методами. Кроме того, Mathematica позволяет производить символьные вычисления, например, находить производные и первообразные функций, вычислять суммы бесконечных рядов, и др. По-своему хороши, интересны и уникальны языки Prolog, Caml, Clips, Assembler — познакомиться с их принципами полезно каждому программисту.
В поисках царского пути [ править ]
Давайте вернёмся к нашему вопросу — какой язык программирования преподавать в школе?
Бесспорно можно сказать лишь одно: каждый из языков стремится удовлетворить определённому набору требований, жертвуя другими. Так, выбор языка для преподавания определяется в конечном итоге педагогическим методом. Нельзя просто «выучиться программированию», ибо это слишком богатая, необъятная и сложная область. Но можно действовать по принципу отбрасывания бесполезного и изучать то, что содержит больше фундаментальных и полезных идей на единицу технических деталей и сложности усвоения. Интересные эксперименты проводятся в московских школах, в школах Петрозаводска, в физико-математической гимназии № 17 города Винницы и многих других школах. А именно, там используются различные современные языки типа Ruby, Python или Java как первые языки программирования, которым учат школьников. Отзывы учителей и школьников очень положительные. За рубежом накоплен большой опыт в преподавании информатики в школах и колледжах с практикой программирования на самых разных языках. В качестве первого языка используются Java, Lisp, Haskell, Си, Паскаль, Prolog и др. Наиболее популярны следующие линейки языков (последовательности изучения):
Высокоуровневый набор Питон или Руби → Лисп или Хаскелл → Java или C# Путь уменьшения абстракции от машины Питон или Руби → Java → Си → Ассемблер
Пути увеличения абстракции:
От ассемблера до самых «человечных» языков Ассемблер → Си → Питон или Руби Смещённый в сторону высокоуровневости Си → Си++, Java или C# → Руби, Питон, Лисп или Хаскелл, С математическим уклоном Си → Java → Хаскелл или Mathematica Набор популярных языков разных видов Паскаль → Си → Лисп или Хаскелл → Си++ или Java.
Здесь правильнее рисовать дерево зависимостей между языками. Не имеет смысл изучать и Python, и Ruby, ибо они похожи. Изучать их оба значит загружать учащихся двойным грузом технических деталей, и при этом одарить лишь одним стилем программирования (стилем мышления при проектировании программ). Также неправильно рассказывать студентам и про Си, и Паскаль. Время, потраченное на один из них будет просто потеряно зря. Но тем не менее, шаг от Паскаль к Си делали многие программисты, после чего Паскаль успешно ими забывался. Язык Java стоит рассказывать вместо языка Си++, так как Java более модульный и имеет явно выраженную объектную парадигму, да и намного проще в изучении. Не имеет смысла учить Lisp и Haskell одновременно, разве только студентам факультетов и групп, специализированных на функциональном программировании. А школьникам и студентам первого курса достаточно одного из них. Просто полезно получить представление о том, что бывают стили программирования, отличные от императивного. В этом смысле также полезен язык Prolog. Очень много педагогов соглашается, что рассказывать про один язык программирования так же нелепо, как учить повара готовить только одно блюдо (правда очень хорошо). Нет необходимости знакомить учащихся со всеми тонкостями и техническими подробностями языка программирования. Необходимые детали он сможет узнать сам, если его научат пользоваться документацией. Гораздо важнее познакомить учащегося с различными парадигмами программирования (чтобы наш повар знал о китайской, о русской кухне, и имел представления о всех этапах подготовки пищи — от выращивания овощей до сервировки). Но при этом есть опасность того, что наши поварята не смогут приготовить для себя ничего съедобного. Мнений очень много, и нельзя ничего здесь категорично заявлять.
Важно, чтобы учитель информатики не забывал о главном — о том, что цель не изучить конкретный язык программирования (конечно, живые примеры и практика с конкретным языком нужна), а цель в том, чтобы развивать алгоритмическое мышление, знакомить с разными стилями мышления и методами, которые применимы при решении различных → задач . Мне кажется, что в школе правильнее познакомиться (без детального изучения) с несколькими языками программирования. Достаточно вместе с классом разобрать несколько простых классических алгоритмических задач, и посмотреть на то, как они решаются на различных языках программирования.
Вот примерный список этих задач:
- Сложить два введённых числа.
- Найти максимум из n введённых чисел (однопроходный алгоритм)
- Найти n-е число Фибоначчи (знакомство с рекурсией).
- Вывести таблицу умножения (цикл в цикле).
- Вывести треугольник Паскаля (попробовать рекурсивный алгоритм с запоминанием и без).
- Найти сумму обратных квадратов натуральных чисел.
- Определить правильность скобочной структуры («[]», «[[][]]», «[[]]» — примеры правильных скобочных структур, «][», «[[]», «[[]]]]» — примеры неправильных скобочных структур). Найдите однопроходный алгоритм.
- Сортировка пузырьком и быстрая сортировка. Численные эксперименты по определению времени работы.
- Найти кратчайший путь в лабиринте.
/* По рассматриваемому вопросу полезно ознакомиться с проектом Информатика-21. Уже в 2006 году предлагался переход на язык Оберон/Компонентный Паскаль http://is.ifmo.ru/education/_v2a_public.pdf */
О программировании [ править ]
Программирование развивает ясность мысли, умение решать новые задачи и логически мыслить.
- 3.1 Историческая классификация