Лингвистический подход к вопросам
изучения языков программирования
высокого уровня

         Современные образовательные системы разных стран вопросы изучения языков программирования высокого уровня (C, C++, Pascal, Basic, Java и других ) традиционно относят к области математических наук. Такая ситуация сложилась из-за исторических особенностей развития компьютерной техники: изначально компьютеры создавались и использовались в качестве вычислительных устройств, позволяющих существенно облегчить и ускорить обработку математических задач. Следовательно, подразумевалось, что программист-разработчик программного обеспечения должен пройти серьезную теоретическую и практическую подготовку по курсам математичесих дисциплин и точных наук.

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

         Примером такого программного обеспечения может служить программа для отправки и приема факсов:
                 - для работы с модемом она использует стандартный драйвер модема и системный API (функции набора номера, ответа на звонок, отправки и приема факсимильного сообщения);
                 - для преобразования разных форматов данных в TIFF (графический формат, используемый в факсимилии) используется стандартный драйвер принтера, осуществяющий печать «в файл» из любого приложения;
                 - для просмотра факсимильных сообщений используется стандартный компонент ActiveX, поставляемый вместе с операционной системой.


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


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

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

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


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

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

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

Выразительные средства В лингвистике В программировании
Использование знаков пунктуации для соединения и разделения выражений Да Да
Использование отрицания для изменения значения выражения на противоположное Да Да
Разделение длинного выражения (последовательности выражений) на логические отрывки Да, разделение текста на абзацы, абзацы на предложения. Не является обязательным, но существенно облегчает восприятие. Да, разделение программы на функции и процедуры, разделение функции на команды. Не является обязательным, но существенно облегчает восприятие.
Использование определенного порядка расположения членов выражения Да, фиксированный порядок членов предложения Да, фиксированный порядок передаваемых параметров в функциях
Использование условных выражений Да, «если»-«то», «пока»-«не ...» конструкций Да, “if-then”, “do-while”, “while” операторы
Повелительное наклонение Да Да, весь код программы представляет собой набор инструкций в повелительном наклонении – «открой, напиши, пошли...»




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


Я.Б.