Рубрики
Обучение Преподавание

Живет ли учитель так, как учит?

Когда-то давно мне встретилась восточная мудрость: «если учитель не живет так, как учит, брось его, это ложный учитель». Я посчитал ее важной и запомнил. Потому что вся моя жизнь — это обучение. А все и всё вокруг — учителя.

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

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

Ущерб от взаимодействия с такими людьми тоже может быть разным. От потери небольшой суммы денег за очередной невероятно полезный курс или программу до проблем со здоровьем или даже с законом.

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

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

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

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

«По плодам их узнаете их…» — как говорит еще одно великое учение.

Рубрики
Обучение Преподавание

Загадка неодинаковых одинаковых текстов в PHP на Степике

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

Представим себе задачу. Нужно что-то сделать и затем вывести на экран какой-то текст. Человек пишет код решения. Ему кажется, что все правильно. Он отправляет решение на проверку и неожиданно видит следующее:

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

Тот, кто читал мою статью Строки в программировании — невнимательность и кодировки, или просто в теме, может сказать, что все очевидно — где-то попал кириллический символ в строку с латиницей. Визуально нам кажется, что строки одинаковы, но для компьютера кириллические и латинские символы являются разными. Даже если выглядят идентично.

И этот человек окажется не прав. По крайней мере в этом случае. Сравниваем текст правильного вывода и вывода учащегося, используя специальные инструменты и видим, что тексты полностью идентичны:

В этот момент может начаться паника. Как же так, в чем же проблема и что делать?

Спокойствие, главное спокойствие. Тексты действительно отличаются. Просто из-за особенностей работы буфера обмена браузера некоторые символы в процессе копирования теряются (не спрашивайте меня как это работает, я не в курсе). В нашем случае это невидимый символ неразрывного пробела. Чтобы убедиться, что он там действительно есть, копируем из логов ошибки задачи наши строки под «Your code output:», например, в Word. Там включаем отображение всех символов и видим следующую картину:

Видите мааааленький кружочек, который я выделил желтым на скриншоте? Вот это и есть наш неразрывный пробел, который каким-то образом попал в строку и ломает проверку нашего отправленного решения. Так как для компьютера тексты РАЗНЫЕ. В правильном ответе обычные пробелы. А в отправленном нами затесался ненужный символ — неразрывного пробела.

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

Обычно такая ошибка проявляется при решении задач с использованием языка программирования PHP. Почему так — я не знаю. Но, имейте ввиду.

Удивительно рядом. Иногда оно еще и невидимо. Но мы то выведем такие ошибки и неточности на чистую воду. Так что учитесь, решайте задачи и будьте внимательны. Как видите, существует множество мелочей, которые хотя и кажутся незначительными, но могут здорово потрепать наши нервы в попытках выяснить, а что же пошло не так?

Рубрики
Обучение Преподавание

Строки в программировании — невнимательность и кодировки

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

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

Поэтому здесь будет лишь краткое вступление.

Вступление

Кто-то знает, а кто-то нет, что я работаю преподавателем уже около 20 лет. Но в институте я преподаю право. Что слабо соотносится с тем, о чем пойдет речь ниже. Однако с 2019 года я создаю и поддерживаю различные курсы на Степике, в том числе, с осени 2020 года и курсы по программированию. За прошедшие годы накопилось много интересного опыта, собралось много наблюдений, было исправлено множество часто однообразных ошибок учащихся. На что-то можно было указать прямо в теории курсов, на что-то я писал развернутые комментарии под тем или иным шагом. Но многое остается у меня в голове и в тех решениях, которые никто не видит. Я долго шел к тому, чтобы попробовать все это проанализировать и как-то преобразовать во что-то полезное. Например, в заметки на этом сайте. Хочется верить, что эта заметка окажется первой ласточкой и дальше будет больше и интереснее.

С и C — это разные буквы для компьютера

Итак, начнем с ошибки, которую часто совершают начинающие обучаться программированию при работе со строками. Это ошибка связанная с путаницей между кириллицей и латиницей.

Учащиеся очень часто путают буквы кириллицы и латиницы. Человеку кажется, что они одинаковы и видит он их тоже одинаково. Но компьютер буквы (символы) воспринимает совсем иначе. И для него они могут отличаться.

Например, у нас есть два слова:

cop
сор

Визуально вам может показаться, что это одно и тоже слово. Однако для компьютера эти слова состоят из совершенно разных символов — верхнее написано на латинице, а нижнее на кириллице. А вот как их «видит» компьютер:

99 111 112
1089 1086 1088

Можете сами проверить.

Чаще всего ошибаются, когда первым символом в строке идет буква с. Человек начал набирать на английском, увидел на каком-то символе, что ошибся с раскладкой и убирает явно английские, но буква c ему кажется вполне русской и ее он оставляет. Однако, периодически бывают случаи, когда люди умудряются вставить латинский символ в середину кириллической строки. Это мне объяснить уже сложнее, но вот как-то получается. Так что будьте внимательны и не путайте символы кириллицы и латиницы. Или, если вам кажется, что правильный вывод в задаче со строками и вывод вашего решения совпадают — проверьте, не перепутали ли вы символы разных раскладок.

Если же вы уже прошли этап «перепутать с и c», то можете взглянуть на статью Абсолютный минимум об Unicode на 2023 год, чтобы понять, насколько глубока кроличья нора строк и кодировок. Беременным и людям со слабым сердцем по ссылке лучше не переходить и не пытаться во все это вникать) Я предупредил.