Как правильно подойти к изучению программированию с нуля?

Здравствуйте, уважаемые.
Нашел подобный вопрос на тостере, но нужного ответа там к сожалению не увидел.
Некоторое время назад загорелся идей изучения программирования, не как нового вида деятельности, а как новой сферы знаний в целом.
Вкратце о себе: имею техническую специальность (электромеханик), имею некоторое понимание о логических элементах, так как придавалось, почитал пару глав некоторых книг по программированию (Липман "Язык программирования С++" и "Самоучитель по С++" Васильева, Дейтелы тоже читались).
Основная загвоздка в том, что у меня нет самого понимая программировании, как науки. Вернее понимание есть - уровня все могу, но под копирку. Когда пытаюсь импровизировать, даже на логических операторах ловлю ступор, из-за того что не хватает погруженности в процесс и БАЗОВЫХ знаний.
У меня имеются огромные пробелы в образовании. Курс математики старших классов пролетел мимо ушей, а хочется все понимать.
Вот собственно и вопрос: как создать фундамент для правильного изучения программирования? Как правильно закрыть пробелы в образовании и в каких областях, для дальнейшего комфортного обучения.
Для чего оно мне? Хочу расширить свои границы знаний, освоить хотя бы на начальном уровне ООП. Очень сильно интересуют алгоритмы. В качестве языка выбрал С++, как широко используемый, если посоветуете что то другое буду признателен.
  • Вопрос задан
  • 7452 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 8
x67
@x67
Программирование в первую очередь - прикладная сфера знаний. Писать код всегда должно значить "решать задачу". Это не математи ка и не физика. Это просто язык, на котором вы объясняете машине как что-то сделать за вас. Начните с матлаба или питона, решая задачи, котопые очень долго считать вручную. Если понравится рабство компьютеров, продолжайте в любом направлении, решая и автоматизируя задачи других людей.
Ответ написан
maxminimus
@maxminimus
просто или ничего
обучение программированию невозможно без практики
просто ради расширения своих границ знания - плохая цель
программирование - это решение поставленной задачи на языке машины

веб-программирование проще любого другого в разы

js - очень простой язык, проще некуда, «Лисп в шкуре Си»
и самый кросплатформенный - новичкам самое то
не забываем принцип KISS - ценим минимализм-простоту-легкость

падавану юному говорить для начала свободно надо на основных языках веб-программирования -
js css html

js фирст, потом css и html
надо понять что ты при желании можешь совсем не использовать возможность декларативного программирования стилей оформления и структуры дерева документа

учебник Фленагана надо полностью переварить
и php немного для начала - только основные серверные функции для работы с папками и файлами
или лучше - изучить api node.js - и делать сервер на js

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

программирование это решение поставленной задачи -
сам придумай себе задачу в интересной области и решай ее несколько лет пока учишься

клиент толстый, сервер тощий -
сервер используй только для простых функций - чтение-запись файлов, сканирование папок, авторизация ...

офлайн и мобайл фирст -
надо понять, что мобильный сенсорный экран - это основное средство ввода 21го века
и что браузер работает в песочнице

велосипайд фирст -
чтобы научиться - делать ты должен сам
три-пять лет надо грызть гранит
просветление неизбежно после этого обретешь
и настоящим веб-мастером станешь
или даже джедаем или нинзем, если пребудет с тобой СИла

84e114455f594424ab60590ae6da6dea.jpg

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

нормальные программисты делятся на два типа:
1) инженеры - те кто могут написать шаблон для себя или для других
2) слесари-монтажники и чесальщики-мотальщики - те кто работают в рамках готового шаблона
- оба типа нужны, всё зависит от твоих способностей и талантов
Ответ написан
goricvet
@goricvet
Как вариант - пройти легендарный гарвардский курс CS50 (Introduction to Computer Science) на платформе edX.com
Сайт javarush.ru каждую неделю выкладывает очень качественный перевод лекций этого курса.
Ответ написан
@asd111
Изучайте php. Там и с алгоритмами особо запар нет(разве что графы можно изучить) и результат сразу виден и работу сможете найти если научитесь что то делать. Как выучите синтаксис сразу возьмите какой нибудь фреймворк, например symfony. Заодно можно будет изучить html, css, javascript, sql.
В php тоже есть ООП и сделано все по примеру Java т.е. довольно хорошо.
С++ сложный язык для изучения в том плане что там очень много нюансов как можно и как нельзя писать при этом код будет работать, но иногда может не работать. В то время как в php главное не смешивать логику работы и внешний вид насколько возможно - эту проблему решают фреймворки, тот же symfony.

Ещё гляньте книгу Кормен "Алгоритмы. Вводный курс". Она небольшая (200 стр) но информативная.
Ответ написан
@coodan
Программировать, конечно. В первую очередь.

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

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

Для профессионала программирование, конечно, это чистая практика, ремесло. Для любителя может быть искусством. Но вряд ли для кого-то, кроме академической среды, может быть наукой.
Ответ написан
@potan
C++ неоправдано сложный для большенства задач, слабо защищает от ошибок, трубует строгой дисциплины и внимания к деталям.
Для серьезного изучения программирования подходит Haskell, для легкого вхождения (в первую очередь в фронтенд, но и в программирование вообще) - Elm. Они же полезны для лучшего восприятия математики.
Если нужно быть ближе к железу, лучший вариант - Rust.
Из математики стоит познакомиться с теорией множеств и логикой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы