Привет)
Мой вопрос хоть и не имеет прямого ответа, хотелось бы услышать хоть намек от людей, имеющих больше опыта в сфере программирования.
В свои 17 лет я уже около 2 лет изучаю программирование, последний год - С#, до этого - С++.
Мне нравится С#, на нем приятно разрабатывать (насколько я могу судить по не самым сложным программам), да и востребованность на хорошем уровне.
Но все же.. чувствуется, что это немного не мое, хочется писать на более низком уровне, чуть ли не на ASM, в добавок к этому у меня устойчивое ощущение, что Си/С++ - языки для "тру девелоперов", и вообще писать на них очень круто. Не то что бы я хотел учить то, что круто, просто меня тянет к Си, при этом окружающие склоняют к С# и более высокоуровневым языкам, вроде Python.
Я понимаю, нужно учить не язык, а в первую очередь программировать, но, все же - стоит ли мне перейти на Си, какие перспективы у такого выбора?
Вам уже много написали о том что язык выбирается под задачи. Уточню лишь, что проблема нынче в том что всё меньше и меньше задач требуют низкоуровневые языки и C в т.ч.
Да, он по прежнему занимает определённую нишу(Микроконтроллеры, очень высокие нагрузки, разработка других ЯП и т.п.), но с ростом мощности устройств она неплохо так сократилась.
Если прет от низкоуровневой разработки - C самое оно. Сейчас есть новые языки типа Rust, которые тоже метят примерно в эту нишу, но большо всего кодовой базы наработанно именно на C, наверное. C++, в принципе, очень похож на C с объектной надстройкой, но не тождественен ему. Хотя грубо можно принять, что он включает в себя С.
Еще в C# довольно много низкоуровневых штучек (см unsafe, stackalloc, указатели)
Тру девелоперность понятие относительное. Вы можете знать наизусть все флаги процессора, но не знать как спроектировать объектную моель, например.
Имеет смысл только в том случае, если Вы не можете сделать то, что необходимо используя те языки программирования, знания которых у Вас уже есть. Про "КРУТО": Если просто для крутости - это время прошло.
Сейчас важно - не писать на С, а уметь создавать конкурентно способный надёжный бизнес-инструмент (продукт) высокого качества. А на чём - не так важно.
Если планируете когда-либо заниматься UNIX на уровне больше чем "настроить LAMP на локалхосте на убунте, собезьянив действия из манов" - то знать C надо. Знание С - оно все целиком постоянно проходит через админство и в общем-то понятно почему.
А вот насчет крутости... Язык - это инструмент ;) Язык программирования в том числе :) Он нужен для решения задач. А не наоборот! Если у Вас есть задача и ее надо решать Вам - сами должны выбрать, на каком языке ее реализовать. На С пишется одно, на С++ - другое...
Согласен с предыдущими ораторами, что язык под задачу, а не наоборот.
Если хочется низкого уровня, то сосредоточьтесь на С++. Сам по себе Си - язык очень компактный и простой. Изучая С++ для понимания внутренних механизмов уделите внимание указателям, адресной арифметике, работе с нативными массивами и строками (не std::valarray и std::string) - то же самое будет и в Си.
Когда пишешь на Си очень не хватает классов и иногда шаблонов из С++ - толковой альтернативы в Си нет.
Если когда-то придется участвовать в проекте на Си, то перейти с С++ будет достаточно просто. Адаптироваться к нюансам и привыкнуть к стандартной библиотеке Си можно быстро.
Все это я к тому, что необходимости отдельно изучать Си нет - освоив на хорошем уровне С++ вы сможете начать писать на Си, когда будет необходимо. Но наоборот - не выйдет.