Вячеслав Чермных Дебютант

С какого языка изучать программирование?

Беседовал недавно со школьником на тему: какой язык программирования он собирается изучать. Буду, говорит, изучать PHP или С++. Спрашиваю: а кто тебе посоветовал именно их изучать? — Да кто-то из друзей…

Ну что на это сказать? Если начать с этих языков (PHP, вообще-то, трудно назвать языком программирования в классическом смысле), то я сильно сомневаюсь в результатах. Тем более, что советовал, скорее всего, такой же «грамотей», как и тот, с которым беседовал я.

Так что смысл в такой статье есть. Привожу краткие характеристики тех языков, которые я преподавал в течение ряда лет.

BASIC — язык наиболее простой для начального знакомства. Его осваивают не только те, у кого хорошо развито математическое мышление. Я его преподавал как начальный язык программирования. Так как в нем нет необходимости описывать типы переменных, он больше похож на обычные математические решения. Для олимпиад подходит до городского уровня, но не выше.

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

Си — язык профессионального программирования. Для начального изучения не рекомендуется. Его можно изучать после основательного знакомства с Паскалем. Но нужен он лишь для уровня международных олимпиад, ну может иметь преимущества для некоторых классов задач на уровне российских. С литературой по нему, доступной для школьников, я не знаком.

Delphi — в консольном варианте это Паскаль, может использоваться на олимпиадах. В объектно-ориентированном варианте не используется на олимпиадах. Для начального обучения не рекомендуется, также как и остальные ООП языки программирования. Я провожу пару занятий по Delphi в конце курса, но исключительно для того, чтобы у моих учеников не было комплекса неполноценности при общении с «распальцованными» выскочками.

Ассемблер — на самом деле, правильнее говорить ассемблеры, т.к. для каждого типа процессоров ассемблер свой. Для начального изучения категорически не рекомендуется. Его как первый язык может освоить только электронщик, детально знакомый с работой цифровой техники. В Интернете я встречал предложения начинать с ассемблера, но это не более чем стёб.

Общие замечания: языки программирования различаются синтаксисом, т. е. способом выражения мысли программиста. Главное не синтаксис, а алгоритмическое мышление. Если его нет, то нет и навыка программирования. Если выработано алгоритмическое мышление, то переход с одного языка программирования на другой не столь уж и проблематичен. Во многих школах преподавание ведется на BASIC-е просто потому, что других языков преподаватели не знают, а те кто знают, работают программистами и ерундой (вроде преподавательской деятельности) не занимаются.

Вывод: начинать изучение надо с TurboBASIC или TurboPASCAL. Подчеркиваю, что с турбо-вариантов. Изучение начинать после знакомства с алгеброй. Как вариант допустимо изучение программирования до знакомства с алгеброй, но тогда на примере языка программирования BASIC вводить алгебраические понятия. Но это в том случае, если идет индивидуальное обучение.

Моя практика показывает, что раннее обучение, как правило, неэффективно. Правда, встречаются дети с исключительной (высокой) мотивировкой, для которых общие рекомендации не работают. Но это очень редко. Если у ребенка есть явновыраженные математические способности, то можно начинать с PASCALя, если нет, то лучше начинать с BASICа. Если есть желание познакомиться с пользовательским аспектом (без серьезного вникания в синтаксис), то можно знакомиться с EXEL (без макросов).

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

Еще раз повторюсь, не на программировании свет клином сошелся. Жизнь разнообразна, и вполне возможно, что ваш ребенок найдет себя в совершенно другой области. Заниматься программированием — означает обречь себя на вечное ученичество. Сейчас те языки программирования, которые мы изучали в университете (30 лет тому назад), можно найти, как правило, в разделе история вычислительной техники. В то же время программирование — процесс творческий и заниматься им интересно (мне так точно). Желаю успехов в освоении этого предмета. От простого к сложному.

Обновлено 20.02.2009
Статья размещена на сайте 13.10.2008

Комментарии (38):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Для восстановления пробелов по алгебре можно почитать учебник Киселёва или Пёрышкина.
    А по высшей математике книгу Зельдовича "Высшая математика для начинающих" или учебник Пискунова для втузов.
    По геометрии, которая сейчас вообще один сплошной пробел, опять таки Киселёва.

    • Леонид Алексейцев Леонид Алексейцев Читатель 9 марта 2015 в 15:17 отредактирован 1 мая 2015 в 08:03

      Вячеслав Чермных, здравствуйте! Мне тоже интересна эта тема и, как выяснилось я здесь был 7 лет назад, комментировал. Много воды утекло, я продвинулся в сетевых технологиях, но о программировании не забыл, хотя уже понял что это не моё. Но какое-то время назад задумался что неплохо было бы поразмять мозги, так я вновь вернулся к идее почитать книги о программировании. С другой стороны, если это типа моего хобби, то тж подумал что неплохо будет восстановить хотя бы минимальную школьную программу в мозгах, по комплексу математических предметов, а тж возможно по физике. Поскольку в целом есть планы, если самостоятельное изучение пойдёт, то хочу попробовать поступить на электронщика, тк я в ВТ прикладник-пользователь, ну и как сист.админ-техник, но тянет разбираться в радиоэлектронике, хотя бы на уровне сервиса по починке тех же ноутбуков, для начала. Вот в целом именно для этой задачи подготовки себя к радиоэлектронике и задумался об "основах основ"- математике и физике.
      Собственно, если Вам не сложно, не могли бы вы посмотреть по следующим ссылкам- это те самые книги, которые вы рекомендуете человеку выше. Я бы хотел уточнить у Вас, правильно ли я идентифицировал их и во-вторых, услышать от Вас совет- именно эти ли книги нужны мне для подготовки к решению моей задачи (поступление на радиоэлектронщика).
      Благодарю заранее.

      MATH - Киселев А.П. - 1.0 АРИФМЕТИКА.djvu

      MATH - Киселев А.П. - 2.1(.2) АЛГЕБРА, Ч.1(.2).djvu

      MATH - Киселев А.П. - 3.0 Геометрия (Планиметрия и Стереометрия).djvu

      MATH - Зельдович Я.Б. - Высшая математика для начинающих и ее приложения к физике [1960 - 2010].pdf

      MATH - Пискунов Н.С. - Дифференциальное и интегральное исчисления. Т.1(.2).djvu

      FiZ - Перышкин А.В. - Физика. 7 класс. Учебник [2006].pdf

      FiZ - Перышкин А.В. - Физика. 8 класс. Учебник [2010].pdf

      FiZ - Перышкин А.В. - Физика. 9 класс. Учебник [2009].pdf

      FiZ - Перышкин А.В. - Сборник задач по физике. 7-9 класс [2010].pdf

  • Начал с паскаля(17 лет)... Как мне говорят, математическое мышление у меня хорошее, но по математике еле вытягиваю на тройку)
    Сейчас учусь на втором курсе колледжа, заинтересовался разработкой приложений и вирт. миров, для обучение на отлично не хватает упущенных знаний математики и английского(С 7ого класса забил на учёбу, английский не учил вообще) У самого овладеть математической наукой не получается... Средств на репетитора не нету.. Хотел попросить помочь с освоением "фундамента" для понимание Высшей математики..

  • Поверьте моему опыту. В школе не нужно преподавать устаревшие языки программирования. От этого ученики начинают ненавидеть предметы информатики и вычислительной техники. Язык программирования должен быть не сложный и в тоже время, современным. Учеников нужно заинтересовать предметом и они его будут изучать с удовольствием.
    Одним из лучший языков программирования для изучения в школе я считаю PureBasic, потому что он обладает всеми необходимыми качествами - простотой и увлекательностью для учащихся. Для него имеются компиляторы под многие системы в том числе и бесплатные (Linux) что актуально в наших школах.

    • Константин Леванов, а какие языки устаревшие? (ехидничаю )
      От этого ученики начинают ненавидеть предметы информатики и вычислительной техники.

      Да не от языка это зависит вовсе. А от того, что пытаются научить программировать тех, кому это совсем не нужно. Каких-нибудь гуманитариев начинают мучить переводами цифр из системы в систему. Оно им надо? Да современные программисты с этим почти не сталкиваются. С этим сталкиваются лишь те, кто работает с микропроцессорной техникой. Уровень "железа", а их не много. В этом и причина нелюбви. А конкретный язык, дело десятое.
      Лично я преподаю Паскаль. Причина проста - в КубГУ, для поступления в который я готовлю детишек, обучение ведётся на Паскале. Перейдут на Си, и я перейду на Си.

      • Вячеслав Чермных, вообще очень странно. Как Паскаль, так и С уже канули в лету - если на 100 вакансий пара таких встретится - уже хорошо.

        • Юрий Лях, ну если Паскаль = Делфи действительно уходящая натура, то насчёт Си Вы сильно, сильно загнули. Дело в том, что на "чистом Си" сейчас, конечно-же, практически никто кроме микропроцессорщиков не работает, но вот на Си-шарп вполне себе трудятся. А кроме того есть такое понятие как Си-подобные языки. Ява, РНР - на них сейчас работает немало программистов. А основой для них служит "старичёк" Си. И начинают изучение этих систем с него.
          Повторюсь: главное не с какого языка начинать, главное - овладеть алгоритмическим мышлением, на каком-нибудь языке. А в дальнейшем, жизнь покажет, что потребуется. Важно не давать себе установку, что полученных знаний хватит на всю жизнь. Теперь точно не хватит. Лично мне довелось практически работать где-то на шести алгоритмических языках, да ещё на куче Ассемблеров. Так что те, кто хочет работать в области программирования, должны настраиваться на постоянное переучивание.

  • Начинал с нуля на C++, высшая математика, выучил 1C.
    Спустя 2 года работаю программистом 1C
    Всем всё нравится. Заколачиваю бабло.
    Начинал с нужных и понятных книг. Нет ничего сложного.
    Почитал Вас и посмеялся. Вы не умеете выбирать и читать книги.

  • Из личного опыта

    В моей школе (точнее, гимназии) 8-9 классы были посвящены изучению программирования на Паскале. Предполагалось, что мы уже знаем Логомиры, которые были 5-6 классы.
    Мне нравилось, достаточно просто и понятно. Хочу продолжить обучение, но всё руки не доходят, увы.
    Хотя у нас уроки информатики больше на практические навыки ориентированы, например, в 10 классе было повторение Ворда и Экселя (которые были в 7 классе на самом начальном уровне), последнюю четверть - редактирование фотографий в Фотошоп. Что в 11 классе - пока не знаю, сама только десятый закончила. Но обещают создание простеньких сайтов.
    Вообще, по-моему, программирование в школе быть должно хотя бы на начальном уровне. Развивает.

    • Ольга Потапова, ворд, эксель и фотошоп - это пользовательские программы и к программированию они отношения не имеют. В них есть такая штука, макросы-это программирование если работать в режиме конструктора, но вряд ли Вам это покажут.
      Бейсик, Паскаль и Си - вот программирование.

    • Ольга Потапова, Наверно, ваша школа при каком-то вузе. А в каком городе?

      • Ю. Лях, нет, не при вузе) Гимназия №35, г. Екатеринбург.
        Хотя у нас система профильных классов, там с десятого как раз идет плотное сотрудничество с вузами. "Медицинский" класс слушает лекции по химии и биологии от преподавателей из Медицинской академии, "физмат" - УГТУ-УПИ, мы, "юристы", - Юридическая академия. Есть еще другие классы, но точно не знаю.
        И еще нам очень-очень повезло с учительницей)

        • Ольга Потапова, Завидую по-хорошему, значит Екатеринбург впереди планеты всей. У моих пацанов даже полагающегося английского с 4 класса не было - то учитель была в декрете, то вышла и сразу уволилась и так несколько раз . Сейчас кроме школы им приходится в универ на подкурсы ездить, английский, математика и химия - с репетиторами (на больше денег не хватает), с физикой договорились - спасибо, хороший человек попался.

  • Вячеслав Чермных, то, что Delphi не для начинающих, ещё не дает основание пренебрежительно и нём высказываться. Конечно, это высшая математика программирования, но для создания экспертных систем - идеальная среда.

    Оценка статьи: 5

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

      • Вячеслав Чермных, не совсем согласен с Вами. И не зря же Вы своим студентам всё-таки даёте понятие о Делфи, и правильно делаете. Сейчас есть пособия и курсы для "чайников", каждый может научиться. Другое дело - каждому, кто знает другой язык, он милее нового.

        Оценка статьи: 5

        • Вячеслав Чермных Вячеслав Чермных Дебютант 30 января 2009 в 21:30 отредактирован 30 января 2009 в 21:33

          Богдан С. Петров, я не работаю со студентами. Речь идет только о школьниках.
          Мое мнение, профессиональный программист должен быть знаком, по крайней мере, с VB, Pascal, C++, Assembler. А на их основе работать с любым новым языком, который потребуется.
          А тех, кто изучал Delphi и в течении нескольких месяцев не в состоянии перейти на С++ - зря учили.

    • Богдан С. Петров, Вот я об этом и говорю - получили знания по учебному языку раскаль, легко перешли на Делфи, а дальше и сами мучаются - работу не могут найти, и работодателей напрягают. Богдан, самое простое - запустите поиск работы - хоть у нас, хоть за бугром. За бугром вообще ни одного оффера не найдете. В свое время при подготовке CV для забугорного работодателя мне настоятельно порекомендовали убрать/заменить в нем все ссылки на Borland/Delphi/Pascal - не любят там.

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

      PS - кстати - даже в форумах не поднимают вопрос об этой ветке программирования, а с появлением шарпа - вопрос окончательно закрыт.
      PPS - совсем отошли от темы. А детям учиться - на чем-то простеньком (к сожалению не знаю, что такое Кукарачи, Черепашки). MS выпустила SmallBasic - с майкрософтовского сайта скачать - 4Мб всего. Наши программеры были в восторге, как дети.

      • Марианна Власова Марианна Власова Бывший главный редактор 3 февраля 2009 в 12:56

        Ю. Лях, "писать экспертную систему - да на чем угодно"... В 1990 году для диплома я написала экспертную систему на Паскале, поскольку научный руководитель считал, что мне будет полезно его изучить. Изучила, написала - вот только вычислительные машины были не настолько мощные, чтобы такую вещь обсчитывать... Смешно, пришлось делать заново...

        • Марианна Власова, Вы изменили ударение в моей фразе. Суть - ДЛЯ СЕБЯ писать..... , т.е. есть коммерческое (промышленное) программирование и любительское. И если бы Вы писали в 1990 что-то серьезное распределенное - это был бы *NIX , где с Паскалем было совсем никак. А для себя - я уже упоминал SmallBasic, от которого наши профессиональные программисты - в восторге в силу простоты, понятности и больших возможностей.

  • Вячеслав Чермных, у меня тоже такое чувство, что мы жили и живем в эпоху ПОКАЗУХИ. Причём, ПОКАЗУХА поразила практически все стороны жизни. Как сейчас учитель должен объяснять родителям и учащимся, что не смогут они сдать ЕГЭ по информатике без репетитора? Ведь родители, увидев, что их ребёнок разобрался в двух игрушках, считают его спецом по компьютерам и практически программистом.

    Оценка статьи: 5

    • Наталья Галимзянова, ...Как сейчас учитель должен объяснять родителям и учащимся, что не смогут они сдать ЕГЭ по информатике без репетитора?...
      Это не ко мне, это к министру...

  • В школе нужно начинать с Кукарачи, Черепашки, Лого, Бейсика. А потом можно браться за Паскаль. Но нужно ли? Ведь всего один час в неделю! И тем разных хватает. Правда, ЕГЭ по информатике - сплошное программирование...

    Оценка статьи: 5

    • Наталья Галимзянова, согласен в Вами. Более того, можно было бы написать статейку по теме: "Можно ли сдать ЕГЭ по информатике без репетитора?".
      Но можно и в двух словах посоветовать: "Если Ваш ребенок учится в специализированной физ-мат школе, выпускники которой успешно сдавали в течение ряда лет централизированное тестирование, то волноваться не стоит. А если ребенок учится в обычной школе, то бегом на курсы или к репетитору, иначе скорее всего, не сдаст".
      По поводу часа в неделю вспоминается такая шутка.
      Профессор Румер, соратник Ландау, написал совместно с ним книгу "Теория относительности для миллионов". Книга стоила 5 копеек. (1961г) Об этой книге Румер говорил так: "Два плута обещают дураку, что за пятак он будет знать теорию относительности".
      Сейчас говорят, что мы вступем в эпоху Водолея, а у меня такое чувство, что мы жили и живем в эпоху ПОКАЗУХИ.

  • Вячеслав Чермных, Вот по-этому в начале тысячелетия было засилие паскакалевских программистов и нехватка С/С++ - обучающие виноваты. Чтоб учить, что нужно будет в работе - обучали учебным языкам. Для обучения алгоритмическому мышлению не нужен никакой язык - это всего лишь описательная последовательность действий на том же русском, но только с помощью существительных и глаголов. Переход от алгоритмического мышления к объектному - не настолько простой (хотя бы прочитать того же Г.Буча 400 страниц). Кстати - сын у меня самостоятельно учит С и что-то пытается на нем делать, а на курсах в университете школьников учат С/С++. Я рад, что не учебным языкам. Серия "для чайников" особенно по плюсам - просто находка для обучающихся.

    А вообще, если бы это было так просто - не шли бы в институты ;).

    • Думаю, что переучиться с Паскаля на Си не так уж сложно, при наличии "алгоритмического мышления". Я сам Си изучил после Паскаля, правда уже с неплохим знанием Ассемблера. За вечер прочитал книжку, врубился в синтаксис, на следующий день уже переводил программы с Паскаля на Си. Небольшие, типа эмулятора Кубика-Рубика. Листинг после перевода сократился примерно в 2 раза и стал более читабелен, для меня самого, по крайней мере.

  • Считаю, ни в коем случае не надо начинать с Бейсика (хотя сам с него начинал). Паскаль ничем не сложнее, чем Бейсик, такой же язык для начинающих, но более строгий.
    Согласен, что абсолютно нельзя начинать с PHP (это и не язык, вообще-то), и крайне нежелательно с Си++, без знакомства с Си.
    А лучше всего начинать, если есть "математические способности", с Ассемблера. К тому же у x86 Ассемблер очень простой, понятный и удобный. Я страшно балдел, когда пересел на него с Ассемблера Z-80. Учить Ассемблер нужно для того, чтобы лучше понимать Си, а потом Си++.
    Еще для меня в освоении программирования очень помогло знакомство с программированием калькулятора МК-61. Мы даже игры реального времени для него писали.

    • Андрей Лебедкин, А еще более обалденный ассемблер мотороловских процов или старой доброй IBM-360. А x86, кстати, по многим аспектам нелогичен (вспомните битовые операции), особенно при переходе на повышенную разрядность.

      • Не знаком, к сожалению, не довелось уже. Учил ассемблер БК (ДВК), он более "машинноориентированный" и 16-битный, но программировать на нем неудобно.
        А что за нелогичность битовых операций?

        • Андрей Лебедкин,
          именно против тогочтобы начинать с СИ и Ассемблера я и писал статью.
          Алгоритмические языки высокого уровня для того и создавались, чтобы отойти от "железа", с тем чтобы язык программирования был более похож на обычные матемачиские вычисления.
          Я речь веду об обучении ДЕТЕЙ, о том каким должен быть первый, а не очередной язык программирования. И мои рекомендации основываются на 7 летней практике преподавания детям, ане студентам.

  • Ежели кому ненароком в душу плюнул, назвав выскочками, так уж, пожалуйста, извините.
    Только суть заметки не в этом.
    Пошли родители книжку ребенку покупать, ну захотелось ребенку научиться программировать. Пришли на рынок ( в магазин ), а книг море и дорогущие аж жуть. Языков программирования немеряно. Начать-то с чего?
    Так вот я рекомендую начать с BASIC или PASCAL.
    BASIC проще, PASCAL сложнее. Сдругих языков НАЧИНАТЬ я не рекомендую. Вот это я и хотел сказать.

    • ..по поводу книг. можно посоветовать включить в статью не просто ориентацию на простой язык прогр-я.., но и искать такую книгу по простому языку, чтобы она была написана, что называется, для чайника! Есть же серия даже такая. всё её хорошо знают - жёлтые книги с оригинальным чувачком-чайником в очках! И я не случайно вспомнил о возможности начать изучать прогр-е именно по "методике чайника" , т.к сам, когда в техникуме учился, преобрёл первую свою книгу по прогр-ю как раз из серии для чайников! Эта книга и сейчас мне особо дорога.. как память!.. Автор У.Вонг. Она так и называется "Программирование для чайников". Что мне нравилось при чтении этой книги, так это то, что в ней автор буквально всё разжёвывал, это раз /теперь я воспринимаю это как - чем проще о сложном, тем лучше воспринимается и укрепляется!/, два - информация преподносится с юмором и очень по-дружески /ака автор входит в доверие и.. ему можно доверять.. => у него можно учится.. как теперь я это воспринимаю!/ и 3 - базовым язык прогр-я в данной книге избран бэйсик, но практически все примеры того, как работает тот или иной механизм прогр-я, автор приводит не только на бэйсике, но параллельно и на нескольких других языках, избранных им чтобы показать преимущества и недостатки разных подходов в прогр-ии, которые отражаются в использовании разных языков прогр-я. Имхо, очень не плохая стратегия!

      P.S: Я почему так подробно об этом.. о книге.. и вообще.. о прогр-ии.. Да просто сам иногда нет-нет, а открою эту заповедную мою книгу, чтобы полистать.. немного вспомнить.. а потом иногда сажусь и если приходит какая-нибудь интересная простенькая идейка, то пытаюсь её запрограммировать в примитивном виде.. обычно это что-то связанное со строковыми данными.. Просто интересно побалаватся! Это что-то типа хобби!

    • ))

      Из личного опыта.

      В Бейсике в свое время написал свои геодезические считалки для МК-85, счастье было неописуемым, после МК-52.

      Затем переписал для доскомпа в Паскале, ими и обрабатываем.

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

      Оценка статьи: 3

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

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

    преподавание ведется на BASIC-е просто потому, что других языков преподаватели не знают, а те кто знают, работают программистами и ерундой (вроде преподавательской деятельности) не занимаются

    Кстати да, коль государство склонно числить преподавательскую деятельность ерундой, соответственно оплачиваемой, какждый ценой личного усердия и наличия таланта продвинувшийся в ЛЮБОЙ отрасли будет считаться распальцованным выскочкой.

    Статья имхо троешная.

    Оценка статьи: 3