Программирование обучение – Основы программирования для начинающих — бесплатные курсы программирования с нуля | онлайн-обучение для детей, школьников и чайников на GeekBrains.ru | GeekBrains

Курс «Основы программирования» / Habr

Всем привет. Мы, команда BEEGEEK, запускаем курс по основам программирования. В данной статье расскажу, почему создали такой курс, о его содержании и отвечу на часто задаваемые вопросы.

Сразу отмечу, что данный курс не является "идеальным". В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!

Проблема


Процесс решения задачи с помощью вычислительной системы состоит из нескольких этапов:
  1. постановка задачи
  2. формализация
  3. алгоритмизация
  4. программирование
  5. тестирование

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

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

Таким образом, люди, начинающие свой путь программиста останавливаются в самом начале, так как не могут перейти от простых упражнений на синтаксис к более профессиональным задачам, требующих целого комплекса умений:

  • Умение читать и понимать уже существующий код. Современный разработчик чаще всего работает в команде или продолжает работу своих предшественников, поэтому должен уметь вычленить из существующего кода замысел автора.
  • Умение представить как будет работать написанный текст программы. Разработка больших профессиональных приложений может приводить к тому, что скомпилировать код и посмотреть его работоспособность представляется не очень часто, поэтому умение мысленно запустить код на выполнение может сохранить большое число человеко-часов.
  • Умение тестировать программу в мысленном режиме, не используя специализированные системы. Именно это умение позволяет еще на этапе написания программы предотвратить многочисленные ошибки. Также, составление трассировочных таблиц помогает выявить ошибку в программе, когда становится ясно, что выходные данные не совпадают с эталонными.
  • Умение строить гипотезы неработоспособности кода программы и проверять гипотезу. При обнаружении ошибки в выходных данных программы часто учащиеся пытаются методом случайных изменений текста программы, подогнать решение под верный вывод. “А что если так попробовать” — такой подход свойствен начинающим программистам, не умеющим анализировать совокупность входных и выходных данных.

Решение проблемы


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

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

в качестве домашних заданий предлагается довольно много задач.

Содержание курса


Курс состоит из следующих модулей:
  1. Типы данных. Переменные. В данном модуле научимся вводить и выводить информацию. Познакомимся с понятием «переменная», с помощью которой будем хранить некоторую информацию. Посмотрим какие типы данных существуют, ведь с типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций.
  2. Условный оператор. В данном модуле научимся пропускать или выполнять некоторый блок кода в зависимости от некоторого условия. Рассмотрим короткую и полную запись условного оператора. Разберем оператор "switch-case".
  3. Операторы цикла. Самый большой и важный модуль. В данном модуле разберем цикл со счетчиком for, цикл с предусловием
    while
    . Также рассмотрим операторы управления циклом: break, continue. Разберем вложенные циклы, задачи про последовательности, минимаксные задачи, задачи на перебор и задачи на анализ цифр числа.
  4. Строки и символы. В данном модуле узнаем подробнее про символы, а именно как они представлены в компьютере, какие операции можно производить. Также поговорим про строки и как они связаны с символами.
  5. Массивы. Большой модуль с большим количеством практических заданий. В данном модуле познакомимся с массивами. Рассмотрим как их объявлять, заполнять, оперировать с элементами массива. Также познакомимся с многомерными массивами, в частности с двумерным массивом.
  6. Функции. В данном модуле поговорим о том, как структурировать программы. Изучим главный "строительный блок" программирования — функции. Рассмотрим примеры, где уместно написание и использование функции.

Для кого предназначен данный курс?


Курс является вводным и больше всего подойдет слушателям, не имеющим опыта программирования.

На каком языке программирования будет проходить курс?


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

Где будет проходить курс?


Данный курс будет проходить на образовательной платформе Stepik. Уже сейчас можно записываться на курс.

Что кроме изучения языка программирования будет на курсе?


Кроме изучения языка программирования, затронем базовые алгоритмы поиска, алгоритмы со строками, теорию чисел.

Сколько стоит курс?


Курс будет проходить абсолютно бесплатно!

Записывайтесь на курс! Жду от Вас обратной связи для улучшения курса!

«С какой книги начать изучать программирование?» – Яндекс.Знатоки

Рекомендую начать изучать программирование с книги «PHP 7» авторов Котерова Дмитрия Владимировича и Симдянова Игоря Вячеславовича https://www.ozon.ru/context/detail/id/137538198/. Также рекомендую список отличных курсов по программированию с отзывами https://otzyvmarketing.ru/best/kursy-po-programmirovaniyu/. Выбирайте любой по вкусу.

Я не знаю вашу ситуацию, но уверена, что лучше всего изучать программирование в университете. Там вы получите наиболее комплексные знания. Начинать нужно с усвоения азов: базовых операторов и подходов. Как в программировании задаются циклы, рекурсии, сравнения и т. д. Вы должны усвоить всю эту базу на зубок. Иначе потом вам будет очень сложно. Обычно на усвоение этого материала уходит полгода. Нужно не только прочитать теорию, а это как раз можно сделать за неделю. Следует решить больше число задач и пройти десяток тестов, чтобы убедиться в хорошем усвоении материала.

После этого можно приступать к выбору конкретного языка и технологии программирования. Есть php, который подходит для веб-разработок, а есть java, которая нужна для создания разнообразного ПО и игр. Также можно выбрать языки программирования, которые используются для программирования на iOS и Android. Кстати, учтите, что именно в мобильном программировании люди зарабатывают больше всего.

Кстати, есть еще одна очень прибыльная отрасль в программировании: программист 1C. Вы будете программировать в среде 1C, разрабатывая различные приложения для работы мелких и крупных компаний. Это очень популярная профессия в России. Многие компании используют Битрикс 24 для автоматизации управления компании, поэтому вы никогда не останетесь без работы.

Я рекомендую вам поработать в компании, чтобы усвоить все необходимые вам компетенции. Дело в том, что программирование – сложная штука. Так книга, которую я привела выше, содержит только самые базовые вещи. Далее придется освоить одну из сред программирования, а также несколько фрейморков. Обязательно нужно понять, что такое объектно-ориентированное программирование, MCV и многие другие подобные штуки.

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

Так что не думайте, что вы прочитает и усвоите книги – и сразу станете программистом. В этой книге содержится информация за первый курс универа.

Обучение программированию с азов / Habr

Подрастающий в семье ребёнок рано или поздно начнёт приставать к папе или маме, занимающемся программированием дома:

– А что это ты делаешь?

– А что значит это слово?
– А почему здесь зелёненькие буквы, а здесь синенькие?
И обязательно придёт к главному вопросу:
– А ты научишь меня программировать?

Мне этот вопрос тоже был задан. Я оказался не готов к ответу. И начал размышлять над проблемой. Как приобщить ребёнка (около десяти лет) к этому интересному и увлекательному занятию?

Далее некоторые мысли на эту тему и к чему они меня привели…

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

Я придерживаюсь того мнения, что азы программирования должен понимать любой современный человек. Это как знать математику в объёме начальной школы. Мы все пользуемся калькуляторами и электронными таблицами, но всё равно умеем складывать и умножать на бумажке или в уме. И обучаем этому детей. Так же и с программированием — человек должен владеть навыками алгоритмизации и иметь представление о том, как реализовать придуманный алгоритм на каком-нибудь языке.

Таким образом стоит задача познакомить ребёнка с программированием. Хорошо бы при этом не уничтожить зарождающийся интерес. Что мне удалось найти:

Scratch и другие визуально-игровые системы


Лично я такими никогда не пользовался. Уверен, что многим детям нравится в них играть и заниматься. Для моих целей такое мало годится т. к. я вижу в них слишком большую развлекательную составляющую.

Многочисленные онлайн курсы по обучению программированию


GeekBrains, JavaRush, Codecademy и другие. Опять же, в силу давности приобретения профессии, курсы не проходил. Просмотрел их маркетинговые материалы и пробные уроки. Так же не счёл их подходящими. Либо материал даётся не с азов, либо обучение слишком нацелено на дальнейшее трудоустройство. Общее впечатление — это не для обучения младших школьников, а скорее для овладения профессией.

Учебная литература


Нагуглил книгу Якова Файна «Программирование на Java для детей, родителей, дедушек и бабушек». Несколько устарела, но возможно как вспомогательное чтение подойдёт. Подробное изложение в первых главах как поставить и настроить JDK и Eclipse не каждого вдохновит на дальнейшее изучение. Лично на меня такие описания нагоняют сильную тоску и уныние.

Так же есть «Философия Java» Брюса Эккеля — хороший учебник. Но детям я бы его рекомендовать не стал.

Итак, мне не удалось найти идеальную систему обучения ребёнка программированию, но зато я выработал набор критериев, которым она должна удовлетворять:

  • комплексная подача материала — теория, примеры и практические задания
    учебные материалы на русском языке
  • обучение настоящему, современному языку программирования (Java)
  • простой редактор кода с подсветкой синтаксиса и ошибок компиляции
  • контекстная справка по стандартной библиотеке, желательно на русском языке
  • русскоязычный не перегруженный инструментами интерфейс системы
  • сообщения компилятора на русском языке
  • учебные материалы рассчитаны на совсем не знакомого с миром программирования человека, т. е. должны разъясняться даже совсем очевидные вещи

По поводу многократно упоминаемого русского языка. Многие могут возразить, мол в мире ИТ без английского никуда, а значит его нужно учить. Вот пусть ребёнок и учит. В том числе и таким способом.

Я согласен что программист должен владеть английским хотя бы на уровне «чтение документации». Но мы сейчас говорим не об обучении программиста. Возникающий на этом этапе обучения языковой барьер может стать непреодолимым препятствием и очень быстро погасить энтузиазм ребёнка. Именно поэтому я считаю русификацию всего и вся критически важной.


Как вы уже начинаете догадываться, я подхожу к сути статьи. Не найдя идеального в окружающем мире, я, как и многие из нас, решил создать его сам. Так уж у нас, программистов издревле заведено. Задача мне показалась интересной и выполнимой за конечное и разумное время.

Рабочее название проекта «Java класс». Идея следующая. Настольное приложение — «интегрированная среда обучения». Скачал, установил и сразу можно читать уроки, писать код и запускать его на выполнение.

Технология JavaFX. Среда может находится в трёх режимах: чтение учебных материалов, работа с исходным кодом и выполнение запущенной программы.

Режим: чтение учебных материалов


Здесь можно читать доступные уроки и документацию. Предполагается возможность скачивать материалы из онлайн хранилища.

Материалы будут авторскими. Предполагается разработка специального XML формата, для разметки текста. Внутри программы XML файлы будут преобразовываться в HTML документы и отображаться во встроенном браузере (WebView). В страницы будут встраиваться интерактивные элементы. Например, в конце текста урока будет стоять кнопка «Открыть проект» которая будет переводить среду в режим редактирования кода с загруженным примером из урока.

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

Режим: работа с исходным кодом


Код организуется в проекты, которыми можно управлять. Операции с файлами только основные — создать/добавить, удалить и «Сохранить как...». Из редакторов пока будет только редактор java-кода. Изменения сохраняются автоматически. Код компилируется автоматически. Используется компилятор ECJ из проекта Eclipse JDT, что обеспечивает поддержку современной версии языка. Помимо прочего, это позволяет полностью перевести на русский язык все сообщения компилятора.

Для подсветки синтаксиса и ошибок компиляции используется библиотека richtextfx. Функцию code completion делать не предполагается.

Если в редактируемом java-файле есть метод main() то будет доступна кнопка запуска программы, которая переводит среду в режим выполнения кода.

Режим: выполнение запущенной программы


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

Сейчас идёт работа над прототипом. Реализованы следующие функции:

  • работа с проектами и файлами
  • редактор с подсветкой java-кода
  • интеграция java-компилятора
  • подсветка ошибок и предупреждений компилятора в редакторе
  • анализ кода для включения кнопки запуска на выполнение


Внешний вид окна прототипа в режиме работы с исходным кодом

Работа ведётся как над самой средой, так и над созданием цикла уроков «Java для начинающих», которые должны войти в начальную версию системы.

Что вы думаете обо всём сказанном? Нужна ли такая штука кому-либо кроме меня? Буду благодарен за высказанные замечания и конструктивные предложения. Также очень интересно услышать рассказы о вашем опыте вовлечения детей (и не только) в мир настоящих ИТ.

Спасибо за внимание.

Изучить программирование с нуля? — Хабр Q&A

прочитал предыдущих ораторов — большинство технари и их точка зрения очень ясна и понятна.
Но, парень четко указал, что он не технарь, потому что занимается дизайном. Хотя я и работа программистом и учился на разработчика, но также я сам художку закончил и студентом дизайнером подрабатывал. Мы, люди искусства, — не гуманитарии и не технари, поэтому оба эти направления даются нам одинаково легко и тяжело одновременно.
Я бы на твоем месте сперва спросил себя:
«Ты хочешь „видеть“ что ты создаешь или же тебе очень нравится понимать и решать математические задачки?»
1) Если «видеть», то в твоем случае html+CSS+javascrip + твой дизайн = оптимальный вариант. Как альтернатива — silverlight сайты или наконец flash. Быть спецом по user Interfaces. Им, кстати, тоже нормально платят.
2) Если же тебе нравится решать головоломки (а со временем я стал за собой замечать, что решаю их даже в повседневной жизни), задачки по физике или алгебре или геометрии (или потому что от учительницы многое зависеть может) в школе и эти предметы шли + ты понимаешь их, то можно и пробовать программировать.
Добавлю про себя: даже код писать в универе меня не научили (зато алгоритмы составлять и описывать ясным языком), пришлось карпеть самому. Советую взять книгу Дж. Либерти «С++ за 21 день» (читать её можно на много дольше) и читать. Там будет все очень разжовано и понятно написано.
Но, конечно, бех технического образования программировать можно, но тренероваться и набивать руку будет очень сложно. На собеседованиях джунеоров гоняют по 3 вещам:
1) ООП. Основы. Знать на зубок (в приведенной мной книги все очень ясно описано с примерами)
2) Сам язык, на котором хочешь писать. Синтаксиса + основные библиотеки (строки, числа, даты пожалуй все для начала)
3) SQL запросы и базовая теория баз данных.
Что касается языков, то тут можно разводить кучу споров и холиваров, но есть 2 их типа по синтаксису: С++ подобные и все остальные (когда уже знаешь 1 язык, тогда синтаксис перестает быть важным, сперва он только и важен).
С++: С++, JAVA, C#, Javascrtipt, actionscript, php и др.
не С++: Pascal, Python, Basic, Prolog и др… тут кто во что горазд.
Я бы рекомендовал как и сам начать изучать С++ (а потом перейти на C# или Java). Учить любой язык с 0 будет одинаково сложно а потом легче и легче, поэтому не слушай тех, кто говорит: не учи «С++, он сложный». Он скорее основа основ + синтаксис похожий с другими языками группы. А решать любые задачки можно на любом языке.
Я бы на твоем месте и проучился больше 2 курсов, то уже закончил бы универ, попутно изучая javasctipt+дизайн и занимался интерфейсами с точки зрения психологии пользователя и не парился сменой профессии, применил все свои знания универа + программирование.

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

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