• Мнения
  • |
  • Обсуждения
Валерий Сибиряков Дебютант

С чего начать учиться программированию?

Как познать искусство программирования на ЭВМ? А программирование — это именно искусство! Как заставить сложную машину выполнять ваши команды? Как разобраться во всем множестве языков программирования?

Andrey Smirnov Shutterstock.com

С чего начать? На что обратить особое внимание? От обилия информации по этому вопросу кружится голова. Не отчаивайтесь, я помогу вам.

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

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

Советую начать с языка BASIC, и не с визуализированных версий этого продукта, а с простейшего интерпретатора под DOS.

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

Давайте попробуем разобраться в терминах. BASIC (кроме того, что это аббревиатура Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих) в переводе с английского означает «Основной». Это означает, что в языке присутствуют только основополагающие конструкции. Оператор — специальная конструкция языка, позволяющая выполнить то или иное действие. В языке также представлены переменные и константы. Константы бывают числовые и строковые. Числовые константы — это просто числа: 1; 5.34; -0.99 и так далее. Строковые константы — это какие-нибудь слова, заключенные в кавычки, например: «BASIC — простой язык!» или «Мне нравится программировать».

Переменные языка — это ячейки памяти, в которых хранятся константы. Рассмотрим простейший из операторов, оператор присваивания: A = 0. Здесь A — это переменная, = — оператор присваивания, он помещает число 0 в ячейку A. Или Pi = 3.14, сейчас мы назначили переменной Pi значение 3.14. Аналогично поступаем со строковыми переменными: B$ = «Привет». B$ — строковая переменная, об этом говорит знак $.

Рассмотрим оператор цикла:

FOR I = 1 TO 10
[набор операторов]
NEXT

Эта конструкция позволяет выполнить набор операторов, заключенных между словами FOR и NEXT, 10 раз, причем в каждом цикле переменная I будет равна номеру цикла, а именно от 1 до 10. Границы цикла могут быть произвольными.

Условный оператор выглядит следующим образом:

IF A > 0 THEN [оператор-1]
ELSE [оператор-2]

То есть если условие, заключенное между IF и THEN, — истинно, то выполняется оператор 1, иначе — оператор 2.

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

[метка]
[Набор операторов]
RETURN

Это описание подпрограммы, оператор RETURN говорит о том, что подпрограмма закончена, и компьютер должен вернуться в точку вызова. Вызов осуществляется так:

GOSUB [метка]

После того как компьютер встретит оператор GOSUB, он перейдет к исполнению набора операторов, заключенных между [метка] и RETURN.

Есть еще один случай, когда операторы выполняются не в том порядке, в каком написаны: оператор GOTO [метка] сообщает компьютеру, к какому помеченному оператору нужно перейти.

После запуска программы интерпретатор, в отличие от компилятора, начнет исполнять операторы в том порядке, который задан алгоритмом. Если он встретит ошибку, то сообщит вам об этом. В отличие от интерпретатора, компилятор заранее проверяет программу на ошибки и создает исполняемый файл.

Преимущество интерпретатора в простоте, а компилятора — в том, что после удачной компиляции он больше не нужен. Операционная система умеет сама исполнять такие файлы.

Статья опубликована в выпуске 12.01.2012
Обновлено 22.07.2020

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

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

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

  • Начинать советую с языка SCRATCH лет в 6-8!

  • Лучше начинать все ж с Паскаля (не сложный, но все же более приближенный к реальности язык) или в современных видовских реалях с Делфи (вообще можно не программировать знай только компоненты собирай )
    Кстати если мне не изменяет мой склероз Паскаль и создавался для обучения студентов.
    А для серьезного уровня надо будет ещё осваивать Си/Java и ООП
    С таким багажом можно уже двигаться в любую сторону
    Да и лучше начинать изучать программирование ещё в школе так будет проще

  • Дмитрий Елисеев Мастер 15 января 2012 в 13:10 отредактирован 15 января 2012 в 13:10 Сообщить модератору

    Чтобы читатели не мучались с поиском Бейсика, решил написать другую статью

    https://www.shkolazhizni.ru/school/articles/51699/

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

  • Привет, я тут новенькая!
    А что значит "запустить программу?" Я написала в ворде то что вы написали тут. И что мне делать?

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

      • Марианна Власова, это был саркастичный иллюстративный комментарий. Новичку эта статья напомнит картинку. Ее вы можете найти в гугле по запросу "как нарисовать сову".

        То есть "берем и программируем - видите как просто!". Хотя на деле это действительно просто, новичок не допрет куда писать волшебные буквы и что с ними делать и как запускать. Это я вам точно говорю. Я сам объяснял неглупому человеку что такое html-файл и как эти волшебные значки связаны с тем что отображается в браузере примерно 40 минут. С примерами! А вы говорите "открываем бейсик, пишем, компилируем - вуаля." да все сразу развернутся и убегут от такой "простоты".

  • Ну, все мои юзерские предположения подтверждены компетентными лицами, можно спокойно ставить заслуженную 2-йку.

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

  • Олег Антонов Аксакал 12 января 2012 в 11:37 отредактирован 12 января 2012 в 12:00 Сообщить модератору

    Валерий Сибиряков, отличная статья! Идеальная выдержка из книги "Что такое ЭВМ?". В 1975 году это зачитали бы до дыр. А сейчас для обучения - структурный объектно-ориентированный событийный язык и никак иначе.
    Какой GOTO? К тому же вас кто-то обманул, GOTO не применяется для вызова подпрограмм, это безусловный переход. Для вызова подпрограмм используется GOSUB. А в вашем примере попав через GOTO [метка] на:
    [метка]
    [Набор операторов]
    RETURN

    компилятор выдаст ошибку "RETURN без GOSUB", потому что нет адреса возврата.

    Практически невозможно научить хорошо программировать студентов, ориентированных первоначально на Бейсик: как потенциальные программисты они умственно оболванены без надежды на исцеление.
    Это сказал Эдсгер Дейкстра, а мужик в программировании разбирался

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

  • Какой basic, какой ДОС? Это позавчерашний день, в том числе и по удобству отладки, ну а учить новичков goto, это вообще дурной тон.

    В С и С++ также можно писать консольные приложения, в которых не будет ничего лишнего, а код прост и понятен. Как бонус - синтаксис С++ явился основой для других популярных языков (Java, C#), так что его изучение в любом случае будет полезно.

    Впрочем есть и альтернативный вариант - сразу привыкать к объектно-ориентированному мышлению, и делать красивые программы сразу для Windows, на C# или том же Visual Basic. По большому счету это даже проще, наверно.

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

    • Олег Антонов Аксакал 12 января 2012 в 11:53 отредактирован 16 января 2012 в 15:28 Сообщить модератору

      Дмитрий Елисеев, Ассемблер же по большому счету новичкам вообще нафиг не сдался, только тем кто захочет изучить углубленно как оно работает.
      Ну не скажите. У меня, правда, предмет немного специфический, программирование микроконтроллеров. И студенты приходят уже со знанием ЯВУ, у нас их учат на С. Так я на первых занятиях сначала слушаю остроумные (на их взгляд) мнения о мощности контроллеров (а там тактовая частота 1 МГц и память на сотню килобайт максимум), а потом отвечаю на вопросы типа "А почему тут нет long double?" или "Почему компилятор ругается на двумерный строковый массив?".
      Поэтому теперь сначала идут 3 лабораторных на эмуляторе КР580 - старом советском процессоре, аналоге Z80. Там простейший ассмблер, мизерные ресурсы процессора, но смоделирована богатая периферия. Один так увлекся, что чуть шашки не написал. После этого вопросов и шуток не возникает.

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

      • Олег Антонов, я писал и под контроллеры AVR, все прекрасно работает на С. Для популярных PIC тоже есть и С и даже вроде Basic, про более сложные ARM уже не говорю даже. А чем тратить время на КР580 имхо, лучше уж макетную плату с ATTiny за 10$ собрать.

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

        Хотя конечно профессиональный программист должен иметь понятие, как оно внутри работает.

        • В дополнение - чем тратить время на древний КР580, лучше сделать например цифровой термометр с ЖК-экраном на микроконтроллере (ATTiny + DS1820 + Winstar16x1), по затратам времени столько же, зато на порядок интереснее да и в быту полезно.

          Далее, проект можно развить, добавив например передачу данных на комп по COM-порту, для особо продвинутых AVR-USB и свой драйвер

          • Дмитрий Елисеев, а чего учить алфавит? Он уже черт его знает сколько лет всем известен! Лучше сразу в первом классе забабахать поэму в стихах о десяти главах, куда как интереснее! А потом еще развить, в акростих переделать.

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

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

  • По мне так нужно начать с простых языков(basic,java,delphi), чтобы понять основы. Затем изучить C++ и assembler чтобы понять как именно выполняются программы. Изучить булеву логику и основы электроники. Затем в совершенстве изучить какой либо промышленный язык, библиотеки, расширения, технологии, разрабатывая реальные программы. Попутно перечитать гору книг и документации по computer science. Ну и изучить ряд прочих популярных языков (в том числе и функциональных) чтобы понять их в сравнении.
    Конечно это минимум, требуемый чтобы не быть индусом-быдлокодером. Помимо этого придётся изучить тьму прочей всячины, в зависимости от специализации. Обучение никогда не закончится.

    • Тимур Шакиров, Это не простые языки, а языки высокогоуровня, assembler- язык низкого уровня
      Простой язык- машинный код. Но для людей- он самый трудный.

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

      • Владимир Иванович Пресняков, "ассемблер...Но для людей- он самый трудный" - как сказать, даже - не согласен. Ассемблеры - однозначны. Для разных (микро)процессоров они очень одинаковы по сути, ну, может, в синтаксисе небольшие различия. А ЯВУ придумывают чуть ли не под конкретные задачи, плюс - дальнейшее накручивание/расширения всевозможными библиотеками, без которых языка, на практике, не знаешь. Ну, на вскидку, по плюсам - переход на STL, потом на Вoost, не забывая прикладные библиотеки, для винды - те же WTL, MFC. По работе с базами тоже и ODB, и ADO и др.
        В результате каждые полгода нужно переучиваться, чтоб что-то коммерческое делать.
        И вопрос вопросов - а что мы собираемся делать? Для чего?

        • Юрий Лях, однозначность Ассемблера - миф. Один только цикл там можно организовать грудой способов, в то время как в ЯВУ обычно бывают For, While и (чтобы сразить читающего код) - If-GoTo.

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

          • Линда Кайе, "однозначность Ассемблера - миф." не понял, что имеете в виду. На асме циклы реализованы однозначно только при пересылке/сканировании (автоинкремент/автодикремент, в зависимости от флага D, адреса источника[результата] индексных регистров ESI/EDI и счетчика на СХ, как помню). К вашему примеру For(...) loop. Где же тут горка? Остальное - программные конструкции.

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

            • Юрий Лях, я имею в виду, что обилие атомарных "функций" позволяет реализовать цикл разными способами, в то время как в ЯВУ еть оператор цикла и никаких альтернатив кроме костылей.

              Без библиотек на Асме гораздо дольше ^^' ЯВУ появились как раз для соращения времени разработки программ.

  • Статья явно переписана из учебника 20-летней давности, судя по аббревиатуре "ЭВМ", сто лет её не видела.

    Наш педагог по программированию 25 лет назад говорил, что "выучить" язык программирования можно за несколько часов/дней, а для программиста главное - иметь специфическое, программное (системное) мышление.
    И за 25 лет я в этом убедилась. За эти годы пришлось писать программы на разных языках, и названия уже забыла, иногда - прямо с листа (тех/задание и справочник по языку)

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

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

  • Григорий Петрик Читатель 12 января 2012 в 03:19 отредактирован 26 мая 2018 в 19:48 Сообщить модератору

    А вот интересно, что нужно, чтобы самому создать новый язык, какие знания нужны для этого?

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

    • Григорий Петрик, "чтобы самому создать новый язык, какие знания нужны для этого" - прежде всего нужно иметь здравый смысл, чтоб понять - а для чего это нужно делать? Дальше - аналитические, чтоб проанализировать существующие и вывести все их "+" и "-". Дальше- манагерские - нанять исполнителя и найти инвестора.

      • Юрий Лях, инвесторов в общем-то и не надо

        "Теория компиляторов" - уже давно развитая область, есть и формальные описания грамматик, и синтаксические анализаторы. Есть и интерпретаторы, встраиваемые в программы на С/С++ (Lua, Питон).
        Так что технически вполне реально, другой вопрос "зачем" - языков сейчас десятки, на любой вкус и задачи.

  • Прим Палвер Прим Палвер Дебютант 12 января 2012 в 01:32 отредактирован 12 января 2012 в 01:39 Сообщить модератору

    Помнится, ещё 20 лет назад от goto морщили носы учителя информатики. Не думал, что ещё его увижу.

    А так, в качестве азов, пойдёт. if, for... ещё бы функцию/процедуру добавить. Есть оно в бейсике? Не довелось. В школе информатик был фанатом турбо паскаля.

    И я бы посоветовал учить то, с чем будет дальше работаться. C++ или C# для настольных программ, php - если есть планы на создание сайтов. Просто бейсик - это язык для обучения и больше ни для чего. Не хочется быть ханжой, но как-то так...

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

  • Да уж...