Вначале было слово.
Определимся с основными терминами.
Программа - это описание на языке программирования последовательности операций по преобразованию (или формированию) данных, которую может выполнить ЭВМ.
ЭВМ - электронно-вычислительная машина. К ЭВМ относятся компьютер, планшет, смартфон, микроконтроллер и т.п.
Язык программирования(ЯП) - это система синтаксических и семантических правил для записи программ.
Реализуется ЯП в виде специальной программы: компилятора или интерпретатора(виртуальной машины).
Программирование - это преобразование задачи пользователя в программу(комплекс программ), выполняемую на ЭВМ.
Главное для программиста - это быстро и эффективно решать задачи пользователя с помощью программирования.
Именно, по скорости написания программы определяется уровень программиста. А навык программирования оттачивается временем проведённым за написанием различных программ.
Изучение языка программирования - не простой и достаточно длительный процесс.
Естественно, первым этапом - является изучение синтаксиса ЯП.
Вы должны чётко понимать:
- как задать переменную, массив значений и т.п.
- какие простые типы данных используются в ЯП и как создавать свои составные типы данных.
- как задаются арифметические, логические операции и операции сравнения.
- как задаются управляющие конструкции: условного перехода, цикла и т.п.
- как описываются функции(подпрограммы) и в каком месте программы должны располагаться.
- в каком месте программы должно быть стартовая точка запуска программы.
Изучение ЯП должно всегда сопровождаться практикой, т.е. написанием программ.
После того как вы написали такие простенькие программы как вывод на экран сообщения "Привет, Мир" или арифметического калькулятора, встаёт вопрос: а дальше что делать?
Написать несколько игр. Начать можно с программирования игры крестики - нолики, где одним из игроков будет ЭВМ.
Приведу несколько правил игры крестики - нолики.
Традиционные крестики - нолики: Один из игроков играет крестиками, а второй - ноликами. Игроки по очереди ставят на свободные клетки поля 3х3 свои знаки(один всегда ставит крестики, а другой - нолики). Выигрывает тот игрок у которого первым в одном ряду окажутся стоящими три его знака.
Есть другой вариант этой игры, т.н. безумные крестики - нолики, предложенные А. К. Остиным. В этой игре оба игрока, делая очередной ход, могут ставить, что пожелают - хоть крестик, хоть нолик. Выигрывает тот игрок у которого первым в одном ряду окажутся стоящими три его знака.
Важно: Не двигайтесь дальше в изучении ЯП, пока вы самостоятельно не запрограммировали игру.
Затем можно расширить функционал программы добавлением записи результатов игры: сколько длилась игра, кто выиграл. Также вывод различной статистики: самая короткая партия, кто больше всего выиграл, сколько ничьи и т.п.
После этого, можно говорить, что базовый(начальный) уровень программирования изучаемого ЯП освоен.
Дальнейшее изучение ЯП уже зависит уже от той прикладной сферы, которая вам интересна. Здесь уже идёт изучение не как самого ЯП, а изучение различных библиотек, фреймворков и т.п.
Где черпать задачи для развития навыков программирования?
Лучшая тренировка это повторение понравившиеся вам программы. Как говорится в пословице: повторение - мать учения.
При поиске задач на тренировку, обратите внимание на такой ресурс как GitHub. На этом ресурсе программисты размещают исходные коды своих проектов. Можно взять идею и самостоятельно её реализовать, а если что-то не получается, то всегда посмотреть как реализовали ту или иную функции задачи другие программисты.
Если возник "ступор" в реализации какой - то функции, посмотрите на таком ресурсе как Stack over Flow. Возможно уже кто-то спрашивал что-то похожее. Если нет, то там можно задавать вопросы и получать на них ответы
Возможно ли самостоятельно изучить язык программирования и если да, то с чего начать?
Самостоятельно изучить язык программирования возможно, я бы взял какую-нибудь книгу по изучаемому языку программирования и в параллели бы прошел бы бесплатный курс по основам языка программирования. Например, на ресурсе Code Basic. И конечно никто не отменял поиск в интернете :).
Если это первый язык программирования, то лучше всего выбрать ЯП с простым синтаксисом. Например, Python. Вам необходимо "прочувствовать" связку перехода от задачи к программе, так сказать ощутить "жар холодных цифр и пафос бесстрастной логики."
Важно: Выделите в неделю хотя бы 4 дня по паре часов на изучение языка программирования, а лучше ежедневно. Если вы не можете найти столько времени, то не стоит браться за изучение ЯП. Займитесь чем-нибудь другим. Не тратьте время в пустую.