Чудесное введение в программирование
Доброго времени суток хабр.
Хотел бы преподнести на суд общественности перевод одной чудесной статьи, в которой описаны базовые принципы программирования. Пару слов о том — зачем собственно это все и кому это надо? Отвечаю — последние несколько месяцев я, сам начинающий программист, активно пытаюсь обучать ребят из других сфер. В этом нелегком труде мне приходится шерстить интернет в поисках в первую очередь интересных материалов, чтобы разбить их стереотипы насчет того что код — это скучно и нудно. К моему глубокому сожалению, таких материалов не так уж много. Я уверен, есть огромное количество новичков, которые регулярно читают хабр и эта статья будет им крайне интересна и полезна.
Итак, оригинал здесь, автор Song Zheng.
Основы программирования
Часть 1. Простые примеры кода.
Возможно вы считаете, что программирование — это очень сложно. Но это не так. В действительности каждый из нас имеет навыки программирования. Не ожидали?
Давайте представим, что мы ведем машину и перед нами появляется знак «СТОП». И что вы сделаете? Вы остановитесь!
Глубоко в глубине нашего мозга, в сплетениях нейронов запрограммированны (На Ruby) примерно такие команды:
Чтобы вам было проще понять значение слова » self «, вы можете смело заменить его на » Я «, смысл останется прежним. В целом большинство языков программирования придерживается для своего синтаксиса следующего стиля:
Разбираем этот пример
Существительное в этом примере называется Объектом. Объект умеет делать разные полезные действия.
Глагол из примера называется Методом или Функцией. Метод содержит пару строчек кода и это код выполняется каждый раз, когда вы его вызываете.
Например, где-то внутри вашей головы метод, отвечающий за остановку машины мог бы выглядеть вот так:
«Предмет» находящийся в скобках называется параметром. Это просто какие-то данные, которые мы хотели бы передать в наш метод.
Теперь представим что вы учитель и вы решили проявить акцию невиданной щедрости и раздать всем своим ученикам по конфетке (в оригинале » fabulous teacher», неприменимо для наших широт). Каждому своему ученику вы раздаете по Ферреро.
Если бы вы были компьютером, то в вашей голове выполнился бы примерно такой код:
В этом коде вместо «е» подставляется по очереди каждый из ваших учеников, которому вы даете конфетку.
Как вы думаете, как можно было бы описать в коде то, как вы занимаетесь спортом? Например вот так:
Стоит заметить, что 90% логики в программировании приходится на выражения ‘ if ‘ — для управления ходом выполнения задачи и циклов ‘for’ и ‘while’.
Прежде чем идти дальше, я хотел бы показать вам пару строк кода, который вы можете запустить и посмотреть что из этого выйдет:
Ожидаемый результат в этом примере — это бесконечный цикл, который будет раз за разом увеличивать значение переменной на единицу. Это приведет к тому что процессор вашего компьютера начнет усердно работать, согревая вас своими теплыми потоками воздуха. Идеально в качестве грелки в холодный зимний день =)
Знание циклов и условных операторов позволяет вам начать программировать прямо сейчас. Стоит теперь научиться правильно с ними работать. Вы должны уметь создавать объекты всегда, когда это потребуется.
Часть 2. Основы.
Представьте что вы Б-г и в 6-й день создания мира. Вы все 5 дней трудились в поте лица, а теперь предстоит создать миллионы людей за 1 день. Как это реализовать? Возможно стоит просто сесть и делать людей один за одним? Нет, все что вам надо так это макет, который описывает, как должен выглядеть человек, и затем с этого макета можно создать столько людей, сколько вы успеете до конца дня.
Собственно этот «макет» — есть один из базовых концептов программирования и зовется он — Класс. Каждый раз, когда вы чувствуете себя неловко при упоминании слова «Класс» — просто замените его на «Макет», это облегчит ваше восприятие.
Давайте представим, что вы — разработчик игр и вы хотели бы создать в этой игре множество разных персонажей. Для начала вам стоит создать класс с теми свойствами, которые вы хотели бы видеть в созданном из класса объекте:
Метод ‘initialize’ выполняется каждый раз, когда создается новый объект и наделяет его теми свойствами, который вы описали в базовом классе. В методе мы задаем имя персонажа «nameVariable» и его уровень его интеллекта «intelligenceVariable» ( префикс » @ » является приставкой «self» для свойств персонажа ). Когда персонаж создан, создаются и его свойства. Давайте создадим 2-х персонажей — персонажа «А» и персонажа «Б»:
Для персонажа А мы задали 2 значения “aperson” и “10”, которые стали свойствами этого персонажа ( потому-что каждый раз при создании объекта выполняется метод «initialize» ).
В результате у нас есть 2 персонажа, одного из них зовут “aperson” и “bperson”, у которых уровень интеллекта равен 10.
Вы заметили как легко мы создали персонаж, всего лишь раз описав класс? Вы можете создавать объекты еще и еще, всего лишь вызывая Character.new(…). Например вот так:
Вот таким образом и было создано 5 миллиардов Адамов и Ев, которым постепенно увеличивали значение интеллекта. Примерно вот так:
Теперь давайте представим, что каждый наш персонаж обладает способностью смотреть известное телешоу «Джерси Шоур». Т.к. эта способность касается всех персонажей, то стоит это указать в нашем макете-классе:
С этого момента, каждый раз, когда персонаж будет использовать ‘watchJerseyShore’ метод, уровень его интеллекта будет снижаться. Например вот так:
Персонаж А посмотрел шоу 2 раза, соответственно уровень его интеллекта снизился до 6.
Возможно это не очевидно, но единственным способом как-то изменить значение интеллекта у персонажа — это вызвать метод watchJerseyShore(). Данная жесткость предотвращает возможность изменения значений у персонажа, в данном случае уровень интеллекта персонажа. Уровень интеллекта не может быть изменен случайно, его можно изменить только намеренно вызвав метод watchJerseyShore(). Эта важная концепция называется Инкапсуляцией, идея сводится к тому, чтобы доступ к свойствам объекта был ограничен. Например, если однажды, выпив лишнего, вы попытаетесь выполнить метод a.intelligence = 100000 — вы получите ошибку.
Ко всему прочему, если вы заходите создать класс «Тинейджер», у которого будут такие свойства как «имя», «интеллект» и который так-же смотрит шоу «Джерси Шоур», стоит ли вам слепо копировать весь тот код, который вы писали, описывая класс Персонаж? Нет! Все что вам необходимо сделать — унаследовать от базового класса его свойства. Если расширить класс Тинейджер классом Персонаж, то все свойства Персонажа унаследуются классом Тинейджер.
Дальше можно просто создать объект Тинейджер:
Teeny — это объект класса Тинейджер с именем «Teeny» и уровнем интеллекта равным 10. Для того чтобы снизить уровень интеллекта нашего Teeny стоит просто посмотреть шоу Джерси:
Эта способность является важной концепцией и называется — Наследование.
Тинейджер рос не таким как все и вы решили изменить значение его метода, отвечающего за просмотр шоу Джерси Шоур. Вы могли бы изменить этот метод следующим образом:
С этих пор, каждый раз как только тинейджер смотрит шоу Джерси, уровень его интеллекта увеличивается! Класс Тинейджеров может не только наследовать все методы и свойства от базового класса, он может так-же и переопределять их. Эта гибкость в переопределении методов, которые наследуются от базового класса — является важной концепцией и называется Полиморфизмом.
Все вместе — Инкапсуляция, Наследование и Полиморфизм составляют основу Объектно-ориентированных языков программирования. Если вы понимаете эти 3 принципа, то вам не составит труда постичь такие языки как Ruby, Java, Objective C, C#, Python и много много других.
Я попытался довольно вольно перевести некоторые части этой замечательной статьи. Я уверен что есть куда стремится в плане совершенствования подачи мысли в массы, так что судите строго, все будет учтено и исправлено.
Благодарю за внимание, искренне надеюсь что эта чудесная статья поможет начинающим в понимании 3-х краеугольных камней ООП.
Курс «Основы программирования»
Всем привет. Мы, команда BEEGEEK, запускаем курс по основам программирования. В данной статье расскажу, почему создали такой курс, о его содержании и отвечу на часто задаваемые вопросы.
Сразу отмечу, что данный курс не является «идеальным». В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!
Проблема
Процесс решения задачи с помощью вычислительной системы состоит из нескольких этапов:
С развитием сетевых технологий появилось большое число различных систем автоматической проверки, которые позволяют проверить правильность решения без участия учителя. Однако они ориентированы на учащихся уже готовых написать полную программу, т.е. готовых выполнить все шаги для получения решения, возможно не осознавая их.
Таким образом, люди, начинающие свой путь программиста останавливаются в самом начале, так как не могут перейти от простых упражнений на синтаксис к более профессиональным задачам, требующих целого комплекса умений:
Решение проблемы
Программа курса на базовом уровне освещает практические основы программирования. В ходе обучения предстоит решить множество небольших и интересных задач, в которых можно потренировать умение читать код, анализировать готовые программы, а также писать самостоятельно программный код.
Такой опыт будет полезен всем, кто хочет углубиться в изучение программирования. Едва ли возможно научиться программировать без практики, поэтому в качестве домашних заданий предлагается довольно много задач.
Содержание курса
Курс состоит из следующих модулей:
Для кого предназначен данный курс?
Курс является вводным и больше всего подойдет слушателям, не имеющим опыта программирования.
На каком языке программирования будет проходить курс?
Курс будет проходить на языке программирования C# (си шарп), однако данный курс не привязывается к одному языку программированию, так как в нем проходят базовые понятия и конструкции, которые включают в себя все современные языки. Решать задачи можно на любом из современных языков программирования.
Где будет проходить курс?
Данный курс будет проходить на образовательной платформе Stepik. Уже сейчас можно записываться на курс.
Что кроме изучения языка программирования будет на курсе?
Кроме изучения языка программирования, затронем базовые алгоритмы поиска, алгоритмы со строками, теорию чисел.
Сколько стоит курс?
Курс будет проходить абсолютно бесплатно!
Записывайтесь на курс! Жду от Вас обратной связи для улучшения курса!
Что такое разработка: объяснение для новичков
Авторизуйтесь
Что такое разработка: объяснение для новичков
Объясняем, что такое программирование и с чего начать, на примере JavaScript. Этот язык занимает лидирующие позиции в рейтингах популярности, а также поддерживает императивные, структурируемые, объектно-ориентированные и управляемые событиями парадигмы.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Набор инструментов для программирования с нуля
Инструментарий типичного программиста чаще всего состоит из следующих вещей:
Вы можете использовать бесплатное ПО в начале работы, такое как Atom и Notepad++. Также можно попробовать SublimeText, однако этот редактор является платным.
Переменные
В начале программирования нужно освоить переменные — именованные области памяти для хранения данных. Есть две основные причины, по которым следует именовать данные:
Примечание В названиях переменных нельзя использовать апострофы.
Чтобы переменная существовала, её нужно объявить. Объявление переменных служит в роли свидетельства о «рождении» для данных. Давайте посмотрим на пример:
Ключевое слово var означает переменную.
Переменной нужно присвоить значение:
Теперь вы можете использовать переменную, the_number_of_days_in_december вместо числа 31.
20–22 декабря, Онлайн, Беcплатно
Следует помнить, что вы также можете объявлять переменные для данных, которые ещё не существуют. Например, вы можете объявить var donalds_birthday и сообщить приложению, чтобы оно ожидало ввода значения. Всё, что будет введено пользователем для этой переменной, будет использоваться в тексте под именем donalds_birthday
Переменной также можно объявить целую строку или фрагмент текста:
Откройте консоль в Google Chrome нажатием клавиши F12 (для владельцев Mac рекомендуется ознакомиться с этой статьёй). Перед вами появится следующее окно:
Убедитесь, что выбрана вкладка «Console», кликните на пустом поле рядом со знаком «больше» ( > ), объявите переменную и присвойте ей значение, а затем нажмите клавишу ввода.
В консоли отображается сообщение undefined из-за того, что строка кода не вывела какие-либо данные, чего, собственно, делать и не должна. Теперь введите название своей переменной в строку и нажмите кнопку ввода.
Поздравляем! Консоль (которая также служит в роли интерпретатора) понимает вашу переменную.
Объекты
А что такое разработка без объектов? В JavaScript объекты объявляются почти так же, как и переменные:
Мы можем использовать объект human и ссылаться на него точно так же, как и на любую другую переменную. Компьютер поймёт, что нужно сослаться на какое-либо определённое свойство, если мы его напишем через точку:
Каждый из элементов сверху может быть изменён и ссылаться на другое свойство. Например, давайте изменим имя (name):
Массивы
Чтобы начать программировать, нужно изучить и массивы — списки похожих фрагментов данных. В программировании на JavaScript массивы выглядят следующим образом:
Для массивов принято использовать [квадратные скобки]. В данном случае вы можете использовать tweets в любом месте вашего кода, ссылаясь на массив, который только что определили.
Примечание Счёт массивов начинается с нуля, а не с единицы.
Если вы хотите обратиться к какому-то отдельному элементу, то можно сделать следующее:
Внутри квадратных скобок мы пишем индекс элемента, к которому хотим обратиться.
Каждое из приведённых выше выражений — переменная. Вы можете присвоить им какое-нибудь новое значение, чтобы поэкспериментировать:
Теперь tweets[2] будет ссылаться на новое значение.
Массивы могут содержать текст, числа, даты, объекты и даже другие массивы. Массивы также могут быть свойствами объектов.
Чтобы обратиться к message, вы можете написать следующее:
И компьютер поймёт, что вы имеете в виду ‘Blink twice if you need help’
API — набор свойств и методов (целевых фрагментов кода), которые имеют свои имена, как переменные.
Метод похож на свойство, потому что к нему можно получить доступ через точку. Он отличается от свойства тем, что после него нужно поставить (круглые скобки). В этих круглых скобках хранятся данные, которые мы хотим добавить в наш массив. Теперь в tweets четыре элемента. Это выглядит вот так:
Функции
Функция — это фрагмент кода, который что-то выполняет и имеет имя. Функции можно легко объявлять:
Объявление функции начинается с ключевого слова, затем ей даётся имя. return заставляет значение «выпрыгивать» из функции. Затем функция завершается (если вы напишете код после return, то он не будет выполнен). Таким образом, вы можете сделать следующее:
Функция может быть свойством объекта. Она может быть элементом массива. Она может возвращать число, дату, строку, объект, массив, другую функцию, массив функций и т. д.
Часть данных, которую мы добавляем в функции, называется аргументом. Объявление функции, которая может ожидать аргументы, выглядит так:
В JavaScript также можно писать математические выражения как на калькуляторах:
Вы могли бы записать предыдущую функцию таким образом:
Эта функция делает всё то же, что и предыдущая, только в неё введена переменная в качестве посредника.
Логические ветви и сравнения
Мы делаем это с помощью оператора if (если) — ключевого слова, похожего на метод. Аргумент, который он ожидает, представляет собой какое-то выражение (обычно сравнение). Сравнения принимают два значения и сравнивают их друг с другом. В результате чего выбирается одно из следующих ключевых слов: true — в случае соответствия правилу и false — в случае несоответствия. Это называется логическим выражением.
Циклы
Но что такое циклы в программировании? Иногда при работе с массивом может понадобиться выполнить какой-то блок кода несколько раз подряд. В таких случаях следует использовать циклы. Простейшим видом цикла JavaScript является while (цикл выполняется, пока условие истинно):
null и undefined
Области применения
Если вы объявите переменную внутри функции, то вы не сможете ею воспользоваться где-нибудь за пределами функции. Пример:
Комментирование кода
Не всегда бывает понятно, что выполняет тот или иной код. Поэтому всегда следует комментировать его. В JavaScript комментарии начинаются с // :
// переменная равна 21.
// Если она не равна 21, пожалуйста, измените на 21.
// Что сделать: добавить больше переменных.
Так что же такое программирование
Программирование — это написание приложений, основанное на определённых правилах, некоторые их которых перечислены в нашей статье.
Теперь вы понимаете, что представляет собой разработка на базовом уровне. Желаем успехов на пути к освоению мастерства программирования. Если же вы понимаете, что JavaScript — не ваше, узнайте, какой язык программирования подойдёт для новичка.



