Почему для обучения важен именно русский язык программирования?

Почему для обучения важен именно русский язык программирования?

Предыстория (Кто виноват?)

Машинные коды, которые понимали и до сих пор понимают процессоры компьютеров всегда были двоичными: последовательности нулей и единиц. Однако, уже 16-ричная система счисления базировалась не только на цифрах, но и на буквах латинского (английского) алфавита. А появившийся в 1949 году язык ассемблера был полностью английским: он содержал английские слова и сокращения, соответствующие командам процессора. Первый язык высокого уровня, Фортран (FORmula TRANslator – «переводчик формул»), был создан в 1957 году группой программистов под руководством Джона Бэкуса в корпорации IBM. Разумеется, он тоже был английским.

Такая «языковая дискриминация» по национальному признаку обусловлена тем, что основная часть первоначальных разработок компьютеров и систем программирования в годы второй мировой войны и сразу после нее пришлась на англоговорящие страны — Англию и США. Дальше традиция сохранилась: английский язык стал «стандартом де-факто» в программировании. Кроме того, в первых операционных системах ввод-вывод был только на английском языке, что закрепило «лидирующие позиции» английского языка в IT отрасли.

Для чего вообще нужны языки программирования? Для компьютера хватает машинного кода, записанного в виде нулей и единиц. Только пиисать, читать и понимать такой машинный код для человека — адский труд. Я знал одного программиста, который писал программы для 8-разрядных процессоров непосредственно в 16-ричном коде, он даже умудрялся кодировать элементарную EGA-графику. Но это было на заре развития компьютерной техники и это был один единственный «сумасшедший профессор». Больше с подобными людьми я не сталкивался ни разу в жизни. А вот всем остальным людям для того чтобы писать программы и понимать написанное — и нужны языки программирования. И чем ближе эти языки к обычному разговорному, тем удобнее программистам и всем остальным.

Словарь современных «традиционных» английских языков программирования уже давно устоялся. Хоть в Algol’е, хоть в C++, хоть в Pascal’е операторы совершенно одинаковы: if, for, while, continue, print и т.п. — коротко и ясно… для любого англичанина или американца: это просто английские слова, фразы или их небольшие сокращения. А вот для всех остальных людей, не владеющих английским языком, начинаются «трудности перевода»: для простого восприятия текстов программ необходимо знать (не просто знать, но и понимать!) английский язык. И куда, в таком случае, деваться всем тем, кто английского в должном объеме не знает? Английский учить, а с программированием «пока» подождать 3-5 лет? Или зубрить английские команды, не понимая их значения, как ученый попугай?

Проблема (Что имеем?)

Вот пример фрагмента программы:

public TokenEnumerator GetTokenList(string lineText, int lineNumber)

{

if (lineText == null)

{

throw new ArgumentNullException("lineText");

}

}

Возьмите любого русского школьника из обычной средней школы или студента, не программиста, и попросите прочитать и понять эти строки. Сможет? Нет! А ведь тут все очень корректно написано — именно  так, чтобы читать этот код без комментариев. И такая проблема стоит не только в России: в мире множество стран, где английский — даже не второй по распространенности: абсолютное большинство населения его просто не знает — вообще.

Я сам постоянно ловлю себя на том, что знаю английскую клавиатуру лучше, чем русскую… Нонсенс? Нет! Закономерность, связанная с тем, что я как программист был вынужден большую часть своей жизни писать тексты и программный код на английском языке. Хорошо ли это? Для меня — уже все равно: английский язык я тоже знаю. А для обычных русских школьников?

В настоящее время большая часть учащихся в России либо не знает английского языка совсем (младшие школьники), либо не знает его в должном для полноценного восприятия текстов программ объёме, следовательно, понимать тексты программ, написанных на «традиционных» языках программирования (фактически — на английском языке) — не может. Остается существующий ныне вариант: учащиеся заучивают непонятные английские слова, являющиеся командами «традиционных» языков программирования, не понимая их смысла, что неизбежно ведет к серьезному ухудшению восприятия самих текстов программ. Следствие — множащаяся армия «кодеров», людей, которые что-то задолбили из программирования, как дятлы, и которым кажется, что они программисты. Крайне печальная картина для России.

Что делать?

Изучать сразу всё вместе – невозможно: достаточное знание английского языка должно предшествовать работе с текстами программ, написанных на этом языке, иначе не будет понимания текстов. Изучать «сначала» английский язык до определенного уровня, а «только потом» программирование — нерационально, кроме того, не всем и не всегда это вообще нужно. Таким образом, получается, что полноценное изучение программирования на основе современных «традиционных» языков программирования возможно только после изучения английского языка до необходимого уровня, а этот уровень достигается сейчас, как правило, только к окончанию школы или позже.

Что проще: сделать учебный язык программирования русским и на нем учить ребёнка программированию или учить ребенка и английскому и программированию? Я склоняюсь к первому варианту, хотя бы потому, что невозможно бежать в две абсолютно разные стороны одновременно и при этом результативно. А заставлять учить непонятные слова чужого языка и параллельно учить при этом мыслить алгоритмически — по-моему, вообще полная бессмыслица. Чем больше ребенок понимает, а не заучивает наизусть без понимания, тем лучше для него и для самого процесса обучения, тем проще, свободнее и четче он будет мыслить в дальнейшем и тем интереснее будет для него сам процесс обучения.

Кроме того, цель обучения программированию — это не изучение одного или нескольких языков программирования. В программировании это вообще не главное. Основная задача обучения программированию – формирование алгоритмического мышления, умения формализовать задачи, раскладывать их на элементарные подзадачи и выстраивать общую логику решения. Если вы можете написать правильный алгоритм решения задачи простым русским текстом на бумаге, то перевести потом этот алгоритм в команды какого-то конкретного языка программирования — чисто механическая и гораздо менее сложная задача, с которой в состоянии справиться любой кодер, инженер-программист для этого уже не нужен. Знание какого-либо языка программирования — это минимум, который еще не делает человека программистом. Чтобы стать программистом — в первую очередь, необходимо изучить основы формализации задач и алгоритмизации их решений, и только потом — учиться использовать для реализации алгоритмов какой-то язык программирования.

Язык программирования – это всего лишь инструмент, а не фундамент науки или области знаний. Если человек умеет программировать в принципе, изучить конкретный язык программирования и использовать его — крайне несложная задача. Настоящие, профессиональные программисты владеют не одним, а тремя-пятью языками программирования и выбирают их в зависимости от решаемых задач. Точно так же как токарь сможет работать практически на любом токарном станке, выбирая станок, резцы и приспособления в зависимости от конкретной задачи, а у лётчика нет необходимости заново изучать весь курс авиационных дисциплин для пилотирования новой модели самолёта, настоящий программист в состоянии быстро перейти на новый язык программирования в соответствии с решаемой задачей.

Необходимо учить детей программированию независимо от процесса изучения английского языка. Это самый простой, эффективный и не зависящий ни от чего путь. А для этого необходим простой, легко читаемый русский учебный язык программирования. Язык, все команды которого являются словами или фразами русского языка. Для освоения такого языка не придётся отвлекаться ни на что кроме понимания его особенностей, что позволит легко строить необходимые алгоритмические конструкции.

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

В настоящее время все, кто по окончании школы не посвящает себя IT отрасли и программированию, «с радостью» забывают все годы, «бессмысленно» потраченные на изучение всего, что связано с программированием, потому что «все это им никогда в жизни не пригодится». А когда у них возникает какая-либо задача, требующая программирования, особенно простая, они вынуждены либо решать ее без применения программ – вручную, крайне непроизводительно: тратя на тупые однообразные действия массу своего времени, либо искать в интернете какую-нибудь программу, которая хоть как-то поможет решить эту задачу. Однако, проблема в том, что все даже похожие задачи чем-то да отличаются, а писать абсолютно универсальную программу, которая учитывала бы всё разнообразие мелких отличий сходных задач – почти непосильный труд. Такие люди не подозревают, что способ быстрого и эффективного решения их задач они просто «не замечают» в силу пробела в образовании: этот способ – написание собственной программы, которая учтет все нюансы решаемой задачи.

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

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

Наш ответ «Чемберлену»!

В настоящее время в России существует такой язык программирования, который соответствует всем вышеперечисленным требованиям. На этом языке можно писать полнофункциональные программы, он прост и понятен любому русскоговорящему человеку.

RUbasic — это полностью русский учебный язык программирования, рассчитанный на начинающих русскоговорящих программистов любого возраста, а также, на людей с минимальными знаниями в программировании для решения ими элементарных повседневных программистских задач. Язык имеет всего 14 ключевых слов, обеспечивающих базовую алгоритмическую логику языка, основной функционал языка сосредоточен в подключаемых библиотеках объектов, используя которые можно взаимодействовать с различными программными и аппаратными элементами компьютера, а также, с подключаемыми устройствами. Язык отличается простотой и понятностью, но обладает при этом полноценной функциональностью настоящего, не учебного, языка программирования. Кроме того, язык позволяет писать программы для управления роботами, построенными на базе Lego EV3, управлять системами на базе Arduino и Raspberry. Одной из особенностей языка является возможность расширения его функциональности путём создания собственных библиотек.

Давайте рассмотрим фрагмент работающей программы на RUbasic в качестве альтернативы фрагменту программы в начале статьи:

Если цвет_кошки = "черный" ИЛИ цвет_кошки = "белый" То

цвет_кошки = "зеленый"

АЕсли цвет_кошки = "серый" То

цвет_кошки = "желтый"

Иначе

цвет_кошки = "красный"

Дальше

После выполнения этого фрагмента переменная «цвет_кошки» меняет своё значение в зависимости от того, какое значение у нее было до выполнения этого фрагмента.  Чем этот текст принципиально отличается от обычного русского текста, с помощью которого можно записать алгоритм «на бумажке»? Практически ничем. Для удобства восприятия давайте перепишем текст в виде предложений:

Если цвет кошки черный или цвет кошки белый, то цвет кошки будет зеленый ;
а если цвет кошки серый, то цвет кошки будет желтый;
иначе цвет кошки будет красный.
Идём дальше.

Мы только расставили совершенно необязательные для восприятия знаки препинания и снабдили комментарием оператор присваивания. И всё. Но даже и без этого текст нашей программы легко читаем и понятен без всяких комменариев. А теперь попробуем рассмотреть с позиции русскоговорящего человека всего одну (самую короткую) строку из алгоритма в начале статьи:

if (lineText == null)

Для её понимания нужен следующий комментарий: «Если Строка Текста — пустая строка»:

if (lineText == null) // Если Строка Текста - пустая строка

То есть, для понимания короткой (20 символов) строки «традиционного» языка программирования мы написали комментарий, превышающий саму эту строку. Нонсенс? В англоязычном мире — да, в России — нет. Без комментария смысл этой строки может понять либо настоящий программист (так или иначе понимающий английский язык), либо англичанин. Если оставить эту строку без комментария, то вернувшись к ней в следующий раз учащиеся опять окажутся в ситуации: «смотрю в книгу, вижу фигу». А если переписать ту же строку на языке программирования RUbasic, то мы получим совсем другую картину:

Если СтрокаТекста = "" То

Нужен здесь комментарий? Нет. Всё и так понятно. Вот почему простой и понятный русский язык программирования необходим — особенно в школе, на начальных этапах обучения текстовому программированию.

Разумеется, здесь приведены примеры правильного подхода к наименованию переменных объектов языка: констант, имён переменных и функций, — такого при котором эти имена несут смысл для любого человека, читающего программу. При этом, для соблюдения правил написания имён используется стандартный приём: если имя содержит больше одного слова, эти слова либо начинаются каждое с большой буквы (например, «СтрокаТекста»), либо разделяются знаком подчёркивания (например, «цвет_кошки»). Если мы хотим читаемости программ без комментариев, такой подход — однозначно необходим. В противном случае мы получим, например, вот такой код:

Если цк = "ч" ИЛИ цк = "б" То

цк = "з"

АЕсли цк = "с" То

цк = "ж"

Иначе

цк = "к"

Дальше

Этот код работоспособен точно так же как и предыдущий, однако тут программист поленился и воспользовался короткими, практически бессмысленными константами и именами переменных. И вот тут уж без комментариев понимание текста становится невозможным. Понять, что происходит в этом блоке в общих чертах ещё возможно: ключевые слова RUbasic нельзя сократить, а они определяют логику алгоритма. А вот разобраться в том, какой смысл несут переменные и константы без комментариев — практически невозможно. Придётся выполнять двойную «обезьянью» работу: сначала писать программу, используя «ленивые» нечитаемые константы и имена переменных, а затем документировать это всё комментариями.

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

Поделиться: 

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать rubasic.ru, вы соглашаетесь на использование файлов cookie.
Понятно