Что и на чём программировать в 13 лет?
========================================

 Ситуация такая : мне 13 лет , знаю на уровне не очень сложных программ Java и C# (писал чаты , небольшие игры) . На уровне хеллоуворда и калькуляторов знаю Python и C++ . Куда двигаться дальше ? На чем остановиться , на чем сделать свой выбор ? С математикой все хорошо , английский средне. Что делать , чтобы к 16-17 годам я был неплохим программистом и мог поступить в ВУЗ ? Дайте совет !  

P.S Не знаете,так ли важен школьный аттестат ?(У меня с этим все хорошо :D) 

 Чтобы поступить в вуз, нужно сдать ЕГЭ. Последний ЕГЭ по информатике подразумевал вроде бы на выбор бейсик, паскаль, си или ЕАЯ. Для себя решай сам, что тебе интереснее. Можешь попробовать себя в разных сферах (веб-программирование — фронтенд и бэкенд, программирование графики, системное программирование, мобильные платформы и т.д.), освой линукс (главным образом, работу в консоли — лишним никогда не будет), попробуй самостоятельно разобраться в ООП и функциональном программировании и **обязательно** учи английский. 

 Как мне показалось, грамотного ответа дано ещё не было. В 13 лет хочется конкретики, а тут всё вода типа "изучай какую-то абстрактную ерунду", а что конкретно для этого делать - непонятно.  

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

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

Хороший сайт с олимпиадными задачами на русском - Codeforces.com. Для решения допускаются все самые популярные языки, так что с теперешними вашими знаниями можно сразу включаться в состязания.  

По теории хорошо бы изучать различные структуры данных и алгоритмы (да, тут я сам говорю "изучать какую-то абстрактную ерунду" xD). К сожалению, по этому поводу не могу ничего посоветовать кроме Никлауса Вирта "Структуры данных и алгоритмы", и то эту книгу нам советовала препод в вузе, а сам я её так и не открыл :) Но в целом вектор такой: изучать всякие списки, очереди, стеки, матрицы (это если ещё не знаете о них), устройство всевозможных деревьев (для начала бинарных деревьев поиска), классно было бы получить базовое представление о теории графов (о которой я слыхом не слыхивал до университета). А также различные алгоритмы сортировки, вещи наподобие алгоритма Кнута-Морриса-Пратта и многое-многое. Если всё-таки знакомиться с теорией графов, то там также имеется несметное количество алгоритмов.  

Но совет: не стоит зачитываться теорией, все полученные знания необходимо применять на практике. Идеально: поставить себе какую-нибудь задачу, например написание того же калькулятора, но не просто +, -, *, /, а с учётом больших чисел (тут уже надо будет самому написать структуру, поддерживающую очень большие числа), с возможностью задания переменных (для их хранения можно использовать ассоциативные массивы), с учётом прямой/обратной польской записи выражения (узнать что это за записи такие и реализовать их) и со всевозможными другими фичами. Причём важно не ошибиться: задача должна быть такая, что вы не знаете на 100% её реализацию, но примерное смутное представление имеете.  

И очень важно углубить свои познания в математике. То, что даётся как математика в школе - на самом деле мало чего стоит. Ближе к старшим классам конечно лучше, но с вузом не сравнить.  

Что касается поступления в вуз: на данный момент (во всяком случае два года назад было так :D) ЕГЭ по информатике очень лёгкое, я думаю вы можете уже сейчас открыть задания (их можно взять например на reshuege.ru) и с лёгкостью решить большую часть. Так что при нормальной подготовке нет ничего невероятного в том, чтобы сдать на 100 баллов. Другое дело математика - её надо подтягивать и подтягивать. Но вообще: не знаю как обстоит дело в Москве, Санкт-Петербурге и т.п., а у нас в Краснодаре поступить было не сложно - куда сложнее удержаться. На студента в первую сессию валится много-много новой информации. Но об этом думать вам пока рано =)  

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

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

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

Получилось длинно, но надеюсь, что максимально подробно =) 

 Я бы не назвал математику в 13 лет математикой.  

Много куда можно двигаться.  

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

Если из чего-то более конкретного могу посоветовать идти в сторону С++, C#, Java:  

1. Изучайте ООП  

2. Паттерны  
  

Можно будет писать программки по серьезнее(освоить ту же самую Qt - для С++).  

А там уже графика: WinAPI, OpenGL ну или что вам будет интересно. 

 Купи книжку с задачами по олимпиадному программированию для школьников.   

И книжку на тему алгоритмы и структуры данных.  

Участвуй в городских и областных олимпиадах по информатике.  

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

Из языков думаю хорошим выбором будет python или С#.  

Я верю что ты сам писал чаты и простые игры, многие начинают как раз в 12-13 лет.  

Ты молодец. Не останавливайся на достигнутом. У тебя все получится. 

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

Для разработки бери на выбор Java или C#, либо Python.  

К 16 годам сделаешь, это будет твоим портфолио для трудоустройства в компании.  
  

Школьный аттестат важен для поступления в ВУЗ. 

 Я сам начал программировать в 10 лет на Python. Язык довольно простой, выучил за 2 месяца (не совершенно). Но большая часть материала по Python на английском, и поэтому тебе нужно подтянуть технический английский. Если хочешь быть неплохим программистом - пиши программы разного назначения, участвуй в опен-сорс проектах, читай книги и различные статьи, читай мануалы и документацию и так у тебя уже будет хорошее портфолио.  

P.S. Удачи! 

 Если ты серьезно это все умеешь , глупо тебе рекламировать delphi , иди в сторону java и C#/C++, сейчас мало кто в твоём возрасте подобное может, мне самому 15, я дошел до уровня java , проходя до этого паскаль и делфи. Учись , пиши интересные проги , ходи на конкурсы , представляй свои проекты , сделаешь что-нибудь крутое , поедешь в Москву на конкурс Всероссийский , займешь место , на тебя обратят внимание, и у тебя обязательно найдутся люди заинтересованные тебе , изучай математику на перед, удачи тебе. 

 Прежде всего хорошо учи математику. Прорешай весь "Сканави" к 15-17 годам. Про Английский забывать тоже не стоит  

Из ЯП - учи любой из C++, C#, Java, Python. Хорошо умеешь программировать на одном - без труда научишься на остальных.  

На оценки в школьном аттестате можно забить. Они не имеют никакого значения. По крайней мере на сегодняшний момент 

**Hаучитесь пользоваться поиском.**  

Поищите перспективные варианты и остановитесь на том, что больше всего вам нравится  
  

p.s. топик выглядит как хвастовство =\ 

 на питоне 

[dlang.org](http://dlang.org) 

 На хаскеле искусственный интеллект 

 Сейчас лучше сосредоточиться на поступлении в ВУЗ и изучать, что там нужно... А уже потом начать что больше нравится... Т.к. технологии изменяются и может быть нужно будет программировать роботов, беспилотные автомобили и ИИ. А языки это дело второе. Т.к. язык это отражение образа мышления и зависит от стоящей задачи! 

 Как тут уже писали, нужно сначала хорошо закончить школу, хорош сдать ЕГЭ и поступить в хороший вуз по специальности. А это всё не совсем связано с программированием. Так что хорошо было бы прокачиваться в математике и информатике для начала. Ну и олимпиады будут в любом случае плюсом (и для поступления, в том числе).   

Как говорится, у программисты есть две функции - собственно программировать и устраиваться на работу. И эти две вещи не сильно между собой связаны. Что нужно для прохождения собеседований, не всегда нужно для самой работы. И наоборот - если ты пишешь хорошие программы, но не знаешь общей теории и тонкостей языка, то можешь и "не добраться" до работы. То есть ты просто не пройдёшь собеседование и всё. Тут такая же аналогия: одно делать это непосредственно программировать, другое дело выполнять всё сопутствующее, чтобы собственно этим программированием заниматься. А в данном случае сопутствующее - это математика и информатика в школе, сдача выпускных экзаменов, поступление в ВУЗ (ну и учёба в ВУЗе, его окончание на хорошие оценки).  

По поводу языка - точно не знаю, но если изучать джаву, то потом можно заняться андроидом. Обычно подросткам и молодым парням это нравится (программировать для андроида).