Нужно ли уметь программировать?

     Я понимаю, что это очень специфическая тема и мало кому интересная. Но молчать тоже не могу! Тем более, что вопрос гораздо глубже, чем кажется…

Речь о небольшой статье про обучение программированию. И уже не первый раз в таких случаях комментарии к статье гораздо важнее и показательнее, чем сама статья.
     Раньше, лет 40 назад, словом «программист» называли человека, который имел хоть какое-то отношение к компьютерам — набору шкафов, занимающих огромную комнату и очень громко шумящих. Потому что в то время общение с компьютерами было уделом «избранных волшебников», которые могли заставить эту железку делать то, что им нужно.
     Уже лет 30 назад ситуация изменилась. Были отдельно наладчики, отдельно программисты, отдельно операторы ЭВМ… Всех их вместе все равно было мало, но они уже не казались волшебниками, тем более, что в институтах почти всех стали учить компьютерной грамотности (была такая кампания в СССР). Правда, бедным учителям физкультуры или истории приходилось туго, помню, как они в институтской библиотеке шпаргалки писали… 🙂
     Лет 20 назад появились персональные компьютеры и ореол волшебства окончательно исчез из компьютерного обихода… Но при этом практически все владельцы персоналок в той или иной мере умели программировать, хоть как-то! Тем более, что этому продолжали обучать принудительно всех, даже уже в школе.
     Лет 10 назад и сейчас — разницы уже нет. Персоналки стали привычным домашним агрегатом, как холодильник и телевизор. Вы знаете как устроен телевизор? Нет? Но смотрите его каждый день! Так и с компьютерами. Люди играют в тетрис и стрелялки, пишут письма и говорят по скайпу, но большинство этих «юзеров» (как их сейчас называют) даже не догадываются, что и Ворд, и Скайп, и Фотошоп — это программы, которые написаны живыми программистами. В их восприятии все эти иконки — неотъемлемая часть этого ящика с кнопками (не выдумка, а мой опыт).
     На чем пишут программисты? За десятилетия компьютерной истории языков программирования появилось огромное число — многие десятки, а с учетом версий и диалектов — сотни. Ситуация примерно как в реальной жизни! Есть языки распространенные, есть экзотические. Есть программисты, знающие один язык, есть полиглоты.
     На самом деле, языки делятся на несколько групп, причем можно делить по разным признакам.
     Есть языки низкого уровня, для программирования на уровне микросхем (грубо говоря). Это — различные версии ассемблера, языка, напрямую привязанного к конкретному «железу». Кстати, когда-то ничего другого и не было, даже ассемблера не было, писали в машинных кодах! Замечу, что к этой же группе относились языки программируемых калькуляторов (смотрите примеры калькуляторных программ).
     Есть алгоритмические языки, программы на которых однозначно отражали алгоритм решения задачи. Это и сейчас всем известные Фортран, Бейсик, Паскаль, Си, а также устаревшие Алгол, ПЛ и т.д. Эти языки развиваются в ногу со временем, а сейчас и вовсе стали очень похожими друг на друга, давно сравнявшись в своих возможностях. Сейчас они не столько структурные, сколько объектные…
     Есть языки для программирования в интернете — PHP, Javascript и т.д. А та же Java является почти универсальным языком, применяется для написания программ и для серверов, и для мобильников…
     Могу упомянуть и вовсе экзотические языки (кто-то их называет даже эзотерическими), самый известный из которых — язык «Brainfuck». Даже я сам когда-то создал два языка — один для калькуляторов («ПРАЛ»), один для компьютеров («Ellochka»).
     Есть еще «Форт», который мне когда-то очень нравился и который принципиально отличается от всего перечисленного… Есть «Пролог», для программирования экспертных систем, до сих пор где-то «в закромах» транслятор валяется… 🙂
     Впрочем, я не собираюсь писать историю языков, она давно известна. Тут речь о другом.
     Вопросов два: надо ли массово учить программированию, и если надо, то на каком языке?
     На первый вопрос я могу ответить однозначно — НЕ НАДО! Программирование — это, прежде всего, искусство. Бесполезно учить музыке человека, если у него нет музыкального слуха. Тут тоже нужен определенный «слух», плюс логика, математические способности и многое другое. А самое главное — любовь к этому занятию! Программистов «по призванию» не больше, чем музыкантов.
     Да, каждого можно научить «бренькать на рояле», особенно по чужим нотам. Но подбирать музыку самому — не каждого. А уж на скрипке играть — тем более… И как написано в рассматриваемой статье, каждому можно объяснить смысл операторов цикла и присваивания. В принципе, это полезно — он будет уважать и ценить труд программиста. Но сам программистом не станет…
     Что касается второго вопроса — тут сложнее. Каждый (и это хорошо видно по комментариям к статье) тянет рубашку на себя. Если человек знает Паскаль — он говорит, что надо учить Паскалю. Если он пишет на Си, то «только Си, все прочее — не языки, а барахло». Автор статьи предлагает начать с Бейсика, несмотря на свист «профессионалов».
     Лично я тоже поклонник Бейсика. И мне плевать на «свист». Почему? Объясню.
     Когда-то, когда я только начинал программировать, мне было все равно на чем. Я знал только фортран для «Больших ЭВМ», а на персоналках не знал ничего. Попробовал и Бейсик, и Паскаль, и Си. Бейсик мне понравился двумя моментами: логичностью и простотой синтаксиса, а также — своими огромными возможностями, которых не было ни в Паскале, ни в Си (не буду тут подробно писать, места не хватит).
     Так я его и выбрал. И должен сказать, что ни разу не пожалел! Но я знаю, почему «профессионалы» нстроены против Бейсика. Его просто дискредитировали неумелым использованием. Произошла примитивная девальвация! Бейсику учили всех подряд, учили поверхностно и самым примитивным его версиям (версий-то было много)… Понятно, что после такого «обучения» человек не мог называться программистом, но называл себя именно так! И искренне считал, что умеет писать Программы (с большой буквы). Разумеется, он не мог решить ни одной задачи, и явление это было массовым. В результате в глазах компьютерного сообщества виноватым оказался язык, а не безграмотные дураки, его применявшие… И стереотип этот тянется годами, хотя история его давно забыта…
     На самом деле, выбор языка — это дело вкуса. Понятно, что есть и языки специальные, и ситуации разные. Драйверы лучше писать на ассемблере, а написать для сайта скрипт на Паскале не получится при всем желании… Ну и т.д.
     Невозможно знать все языки. Точнее, можно иметь понятие о большинстве языков. Но на их детальное изучение — не хватит жизни. Поэтому лучше выбрать тот язык, который нравится, из той группы, которая подходит для решения задач в будущей профессиональной деятельности. Но выбрав язык, нужно освоить его в совершенстве! Тогда никто не станет свистеть и насмехаться, даже если вы пишете на «Фокале»… 🙂
     Пишите в свое удовольствие! Программа рождается «из ничего, из сумасбродства моего» — и это настоящее «Обыкновенное чудо»!

2 Ссылок на “Нужно ли уметь программировать?

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

    1. Программирование, особенно сейчас, это огромная и достаточно сложная область деятельности. Конечно, повторяю, каждому можно объяснить смысл операторов цикла или перехода, но какой смысл? Человек не сможет на основе этих «знаний» написать реальную программу, максимум — решение квадратного уравнения…
      Мне все же кажется, что как и любой другой отрасли, программированию на серьезном уровне нужно учить только тех, кто будет писать программы. А те, кто сам захочет, все равно научатся…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *