На данный момент обучаюсь в 10 классе частной школы, и именно в ней с 7 класса начал интересоваться программированием. Поначалу всё было просто, общая теория о программировании, в качестве практики олимпиадные задачи, был учитель информатики который вначале был полезен, но дальше мои знания требовали большего, и я учился сам по статьям и видео. Всё было хорошо до того момента когда вышел за пределы тем переменных, циклов и т.п., там где начиналось ООП. И его я со временем выучил, но и тогда понял что тот же С++ и Python которые я изучал можно реализовать на практике только с огромными знаниями библиотек, алгоритмов. Да и если честно их применение было для меня скудным, ибо требуется знать еще и другие дисциплины, от языков до баз данных. И тогда можно сказать "психанул", т.к. уже не знал что изучать, и в каком порядке. С одной стороны база есть, а с другой её недостаточно для маломальских проектов кроме калькуляторов и подобных. Из за этого кстати начал прыгать по языкам, последний из которых это Dart и Flutter, но с ним загнулся т.к. ноут не тянет тот же Android studio
Это всё предыстория, но основной вопрос, не тороплюсь ли я? Я по общим знаниям уже обогнал многие старшие классы(старшие у нас 12-е классы) которые взяли направление информатики, да и студентов вузов, кроме конечно некоторых гениев математики которые щелкают олимпиады. Нормально ли это в изучении программирования, когда словно в стенку уперся, а выхода не видишь, и есть ли у этого решение, или требуется дождаться вуза?
Дальше учиться на практике. Берете проект, который хотите сделать, например игру. Начните с чего-нибудь простого, тот же классический арканоид или тетрис. Сразу же возникнет уйма вопросов: а как это? А как тут? А как тогда здесь? И через решение этих проблем будете поднимать свой скилл. Для подобных игр не нужно каких-то сложных библиотек (единственная библиотека, которая необходима - это та, которая позволяет рисовать на экране линии, квадратики и кружки). А потенциал для развития - на полгода минимум. Добавление уровней, режимов, бонусов, таблицы рекордов и т.д. Затем, например, изучение на примере этой игры более серьезной графической библиотеки (тот же OpenGL): псевдотрехмерность, текстурирование, освещение и т.д. В конечном итоге может получиться вполне симпатично выглядящая игра и большое количество опыта в разработке реального проекта.
Разумеется, вместо игры можно взять любой другой проект, который вам интересен. Хоть программу для расчета рейтинга шахматистов по итогам турнира (это другая тема, тут придется изучать другие вещи) и совершенствовать эту тему, пока чувствуешь что есть еще что-то что можно сделать, но не знаешь как именно. Вот это постижение "как именно" и называется совершенствованием навыков.
Беда в том, что вы учитесь по статьям и видео, из-за чего получаете только иллюзию компетентности и не можете сделать ничего сложнее калькуляторов. Опыт показывает, что достаточно пары-тройки учебников, чтобы сделать хоть кривенький, но вполне реальный пет-проект.
P.S. Математика и олимпиадные задачи к умению программировать реальные вещи вообще отношения не имеет.
Понимаю, книги уже давно рассматриваю. А насчёт олимпиадных, математики и сам забил на них, только основные знания как рекурсия и т.п. оттуда взял и ушёл
Как раз таки математика и олимпиадные задачи развивают навык реального программирования. Все программисты так и должны начинать.Потому-что все сразу лезут в UI, кнопочки, игры они там хотят на Unity создавать...А по сути тупо копируют код какого нибудь урока, потому что тупые и мыслить вообще не могут, алгоритмы это для них страшный сон. А это первоначальный навык которым необходимо обладать.
А все эти ООП, структурное программирование, библиотеки и визуализация выучить не проблема. С опытом всё лучше и лучше будет получаться.
twobomb, мой опыт неизменно показывал, что олимпиадники в вопросах автоматизации бизнеса ничуть не лучше тех, кто олимпиадами не занимался. Более того, нередко бывали и хуже какого-нибудь самоучки. Может от них есть польза в задачах разработки поиска Яндекса или компиляторов каких-нибудь, этого не знаю.
Сергей Горностаев, Ну в решении однотипных задач автоматизации бизнеса можно даже программирование не учить, есть кучи инструментов которые создали умные люди, где можно клацать мышкой и оно всё магическим образом работает.
Сергей Горностаев, хах, так вы не в том отделе работаете, где сидят олимпиадники и решают сложные задачи, похоже вас посадили там где нужно решать однотипные рутинные задачи, такое бывает.
Сергей Горностаев, Понимаете, если бы на войне были одни офицеры, воевать было бы некому. Вот и тут, нужны болванчики, на которых можно скинуть монотонную работу, не требующую особо напрягать извилины
twobomb, тут пишут. что мы болванчики и работа у нас тупая, на хабре в каментах пишут, что работа у нас слишком сложная и поэтому мы по полгода вакансии закрываем, несмотря на готовность платить 300к в секунду. Сплошная неопределённость! Ну ок, соглашусь с вашей оценкой. Осталось только понять, почему иногда попадающие к нам олимпиадники так плохо справляются с работой, не требующей особо напрягать извилины?
Сергей Горностаев, Ух какая у вас самооценка, наверно на ваших плечах весь сбербанк держится.
Не знаю, что там за олимпиадники. Возможно они дальше олимпиадных задач не продвигались, поэтому им не стоило лезть туда. Вообще люди разные бывают, смысла нет это обсуждать.
Я просто за то, чтобы обучение программированию начиналось с математики и а-ля олимпиадных задач, которые должны развивать алгоритмическое мышление и решение задач в любых сферах с которыми они столкнутся. А потом уже имея такой багаж знаний в идеале определятся с направлением.
twobomb, может вы и правы в том, с чего должно начинаться обучение. Я не специалист в педагогике, не берусь судить. Просто фиксирую факт, что успешным востребованным программистом можно стать имея трояк по математике в школьном аттестате и не имея диплома о ВО. Любой, пытающийся это отрицать, в моих глазах - гейткипер.
Полностью согласен с ответом выше. Тебе стоит начать учится по книгам
Но так же хочу посоветовать Канал Тимофея Хирьянова. Хоть там лекции дляться часами, но объем получаемой информации заменит десятки роликов по 10 минут
Лично я после того как выучил базу Python переменныe, циклы и т.п. Перешел к telegpam-bot, сначала копировал чужие проекты и редактировал их под себя. Дальше стал углубляться, перейдя к библиотекам и так же пришлось изучать API, что тоже прокачает твой "skill" в програмировании
Спасибо за ответ. Думаю вернусь обратно к боту спустя год. А насчёт телеграм бота, используешь telebot? Помню изучал его, но знакомые использовали aiogram
@Lattuse, как по мне лучше aiogram. Используя telebot и в дальнейшем если захотеть загрузить его на host, и потом нормально запустить бота и все время держать его онлайн - тот еще велосипед, который разработчики telegram никак не хотят изобретать.
В таком случае, может быть полезно в учебных целях реально сделать какой-то небольшой проект (вместо решения задачек с олимпиад - этому уже можно и бота обучить).
Разработка собственного проекта как раз внесет конкретику в выбор рабочего инструментария и укажет на пробелы в знаниях.
Тогда стоит ли вообще "Начинать с нуля"? Сейчас в голове каша, и можно ли её убрать просто взяв например тот же C# или JavaScript для веба и тупо делать проект попутно обучаясь с нуля? Сейчас рядом есть книга Давида Динишио "Java Script. Algorithms and applications for Desktop and Mobile Browsers. Книга на английском, но его я понимаю, как и то что пишет автор, который сначала рассмотрел в принципе что есть такое IT, в отличии от Марка Лутца, вроде "Изучаем пайтон", в котором термины так и пестрят
Lattuse, я бы не советовал "с нуля". У вас есть C++ и Python - это достойные, хорошие языки. Не мечитесь, сконцентрируйтесь на чем-то одном. Не нравится "Изучаем пайтон" - возьмите другую книжку. Читайте документацию по языку - там тоже много полезного.
Javascript потребуется когда решите делать проект для браузера - это либо сайт, либо десктопное приложение на Electron. Вот тогда и будете его изучать.