Человек, который хочет начать программировать, обращается в интернет, с вопросом: «С чего начать изучение программирования?" В данной анализируется, какие преимущества может получить программист, изучив формальные языки как до освоения первого языка высоко уровня, так и после.
Ключевые слова: язык, язык программирования, правило грамматики, синтаксис языка
В современном мире информационно-компьютерные технологии используются повсеместно. Вследствие этого есть потребность как в самих технологиях, так и в людях, программистах, которые создают программные продукты или их поддерживают. [1] Профессия программиста набирает всё большую популярность, поскольку актуальна и обладает низким порогом вхождения.
Человек, который хочет начать программировать, обращается в интернет, с вопросом: «С чего начать изучение программирования?" Большинство людей советуют начать с конкретного языка программирования, если быть точнее, с курсов по этому языку. [2] В случае, если вопросом интересуется ребёнок, то таким языком является Scratch, если интересуется взрослый, то в зависимости от интересующей его области программирования предлагается наиболее простой язык. Дополнительно советуют углублённо изучать информатику, математику и английский язык в школе и соответствующие им предметы в университете.
В данной статье рассматриваются основные понятия из области формальных языков, а также даётся ответ на вопрос, какие преимущества получит обучающийся, изучив данную область даже до освоения конкретного языка программирования высокого уровня.
Формальный язык — это созданный человеком, искусственный, язык, характеризующийся чёткими и однозначными правилами построения выражений и их интерпретации. [3] В основе формального, как и любого другого языка, лежит алфавит. Алфавит представляет собой конечный набор символов для обмена информацией. Далее описывается и синтаксис языка, т. е. правила построения конкретных выражений.
Наиболее эффективным способом формального описания языков программирования являются грамматики. [4] Грамматикой называется следующая четверка: терминальных символов, нетерминальных символов, правил грамматики и начального символа. Проведя параллель с вышеописанным, терминальные и нетерминальные символы составляют алфавит языка, стартовый символ так же принадлежит алфавиту, синтаксисом языка являются правила грамматики.
За счёт использования формальных грамматик можно описать любой язык программирования. [5] Если проанализировать все языки, можно заметить, что во всех есть некие общие конструкции, некоторые из которых приведены ниже:
- Операторы ветвления. Представляют собой выражение вида: if <условие> then <действие 1> else <действие 2>
- Операторы цикла. Отличаются от условных тем, что действия внутри повторяются до тех пор, пока выполняются определённые условия. Могут выглядеть, например, следующим образом: while <условие> {<действие1>... <действие n> }
- Операторы ввода и вывода. Предназначены для ввода или вывода данных в программу. Например, оператор вывода может выглядеть следующим образом: write (<данные для вывода>)
- Операторы для задания переменных или констант в программу.
- Операторы для написания функций или методов
Из вышеприведенного анализа можно поговорить о преимуществах изучения формальных языков.
В случае если формальные языки изучаются до того, как приступить к освоению первого языка программирования, преимущество заключается в более быстром пороге вхождения. Это происходит, потому что учащийся знает все конструкции, использующиеся в языке, понимает механизмы их работы и при изучении языка узнаёт только то, как они синтаксически выглядят в конкретном языке.
В случае, когда изучение формальных языков происходит когда учащийся знает уже хотя бы один язык программирования, то преимущество состоит в углублённом понимании конструкций языка и процессов работы программного кода. Важно отметить, что в данном случае при изучении второго, третьего и последующих языков, так же происходит ускорение процесса освоения соответствующего языка. Это происходит за счёт того, что обучающийся знает основу и может легко провести аналогию по уже имеющемуся опыту.
Независимо от времени обучения, знание формальных языков позволяет:
- Получить информацию о базовых конструкциях языка, а следовательно, сократить число ошибок связанных с непониманием базовых конструкций
- Получить более глубокое представление о работе компиляторов, трансляторов, интепретаторов.
- Получить базовую информацию, необходимую для написания собственного языка программирования или среды разработки
- Сократить время освоения новых языков, о чём было сказано выше.
Поговорив о преимуществах, следует отметить и недостатки, которые так же важно учитывать:
- Изучение формальных языков не подходит для детей. Дети больше приспособлены для обучения в игровой форме, что реализует язык Scratch. К сожалению, формальные языки берут свою основу в математике, что для юных обучающихся может показаться достаточно сложным.
- Могут оттолкнуть взрослого обучающегося. Такая вероятность существует из-за того, что формальные конструкции покажутся слишком сложными и неинтересными, из чего человек может сделать вывод, что и языки программирования будет очень сложно освоить.
Таким образом, проанализировав всю вышеприведённую информацию, можно сделать вывод, что изучение формальных языков даёт программисту ряд преимуществ. Такому человеку легче и быстрее освоить новые языки, он совершает меньше ошибок при написании кода, лучше понимает механизмы работы программ. Однако следует помнить, что детям не стоит начинать свой путь в программировании с изучения формальных языков, а взрослым, которые не понимают или не любят математику, лучше овладевать формальными языками после освоения какого-либо языка программирования.
Литература:
- Университет Синергия [Электронный ресурс] / Образование// Образование по специальности /// Актуальность профессии программист в 21 веке. Режим доступа: https://synergy.ru/about/education_articles/speczialnosti/kakie_programmisty_naibolee_vostrebovany
- Как стать программистом [Электронный ресурс] / Как стать программистом с нуля самостоятельно. Режим доступа: http://itman.in/kak-stat-programmistom-s-nulya-samostoyatelno/
- Мультиурок [Электронный ресурс] / Формализованные (формальные) языки. Режим доступа: https://multiurok.ru/files/formalizovannyie-formal-nyie-iazyki.html
- Афанасьев А. Н. Формальные языки и грамматики: Учебное пособие. — Ульяновск: УлГТУ, 1997. — 84с.
- Братчиков И. Л. Синтаксис языков программирования / Под ред. С. С. Лаврова. — М.: Наука, 1975. — 262с.