09.04.2020
Что такое программирование? Почему многие ребята, занимающиеся не первый год, затрудняются дать ответ на этот вопрос? Об этом и о многом другом мы поговорили с Антоном Елохиным, наставником детского технопарка «Кванториум» в Челябинске.
— За свою практику преподавания я заметил интересную тенденцию — практически никто не понимает, что вообще такое программирование, даже ребята, которые довольно хорошо пишут код. Отчасти, они не задаются этим вопросом? Хотя понимание, что такое программирование, лично мне помогает не только в моменты, когда я пишу код, но и когда начинаю задумываться о вопросах бытия. Специалистов уровня «Линус Торвальдс» прошу меня не судить строго, сегодня мы говорим не только для гениев, поэтому некоторые моменты будут упрощаться, а некоторые отбрасываться.
Предлагаю начать например, с языка С++ (то, что описано здесь, скорее всего будет работать для любого другого высокоуровневого языка, однако в приведенных примерах подразумевается логика решения, которая используется именно в c++). С++ — очень простой язык, в нем есть условия, переменные и много всего другого прекрасного, что нас пока не интересует. Условия (как понятно из названия) — они проверяют что-то. Допустим, если мы говорим про ардуино, это может быть проверка, нажата кнопка или нет, прошло 4 литра воды или 200 и т.д. В зависимости от этого выполняются разные действия. Например, если условие истинно (что-то сработало, прошло достаточное количество воды), то мы включаем лампочку, запускаем какой-нибудь двигатель и т.д.
Но компьютер не знает, что в мире существуют какие-то «условия». Он только умеет считать. Точнее он умеет только складывать двоичные числа (то есть он даже не догадывается, что есть число, меньше чем 0 и больше чем 1 (на самом деле это тоже небольшая «ошибка», но не будем вдаваться в эти «процессоростроительные» дебри, мы не для этого здесь)).
Итак, что мы имеем? Когда мы пишем какие-то условия, происходит какая-то «магия» и компьютер, складывая числа, выполняет нашу работу. ЧТО??? И мы плавно подходим к такой теме, как «Абстракции» (или, как реже называют, «уровни сложности»). Что это за абстракции??
Смотрите, давайте пройдем эту дорогу снизу вверх (пропустим самый нижний уровень — работа транзисторов в процессоре, не об этом речь сегодня). На нижнем уровне у нас «булевая математика» — математика, в которой складываются числа не более 1 (говорил об этом чуть раньше). Потом идет какая-то программа-переводчик, которая, по сути, является сокращением некоторых операций, этот переводчик называется «ассемблер».
Низкоуровневые языки — Ассемблер — уже позволяют писать немного проще. По сути, это какое-то упрощение для «машинного кода», о котором мы говорили немного раньше: все, что написано на ассемблере, переводится в машинный код. Этот язык дает возможность достаточно «близко» общаться с железками, поэтому он до сих пор часто используется для написания драйверов (кекстов в случае линукс и мак ос) и модулей системы. В любом случае ассемблер — это все равно довольно сложно, мы не «ворочаем» условиями, мы продолжаем «ворочать» числами, которые не понятны обычным людям. И тут к нам на помощь приходит другое сокращение. Поднимаемся на один уровень абстракции выше…
Высокоуровневые языки программирования… На этом уровне находятся практически все языки программирования — C, C++, Java, Kotlin, Swift, Python, JS… Хотелось бы внести небольшое уточнение: несмотря на то, что все названные мной языки входят в одну группу, языки C и C++ ниже всех остальных. Они переводят код в ассемблер, а все остальные языки обычно переводят код в C или C++ (имеется в виду те, о которых говорилось в примере). И уже на этом уровне происходит что-то понятное обычным пользователям, хотя я не рассказал еще кое-что — библиотеки, фреймворки, драйвера (или кексты)...
Об этом я расскажу в следующий раз. Кроме того, тогда же мы подведем итог всему сказанному сегодня…
Продолжение следует
Вам понравилось? Расскажите о своем опыте своим друзьям в социальных сетях. Пусть им понравится тоже!
Подпишитесь на нашу рассылку
Остались вопросы по качеству обучения?
Вы можете задать их любым удобным для вас способом:
Анкета по оценке удовлетворенности качеством оказания образовательных услуг общеобразовательной организацией
Оценить качествоНажимая кнопку «Подписаться», я даю согласие на обработку моих персональных данных согласно 152-ФЗ