Что стоит учить с или c++ или c#?

Добрый вечер! Столкнулся с такой проблемой: Мне очень нравятся семейство языков Си, у меня есть выбор учить C++ либо C#, хочу разрабатывать ПО для ПК. Подумал начать с C++ и говорят что сначала поучить чистый СИ, а после переходить на C++, так что же из этого правильно? Надо ли учить Си? Или может лучше начать с C#, а дальше уже выучу C++?
  • Вопрос задан
  • 637 просмотров
Решения вопроса 6
mayton2019
@mayton2019
Bigdata Engineer
Добрый вечер! Столкнулся с такой проблемой: Мне очень нравятся семейство языков Си, у меня есть выбор учить C++ либо C#, хочу разрабатывать ПО для ПК. Подумал начать с C++ и говорят что сначала поучить чистый СИ, а после переходить на C++, так что же из этого правильно? Надо ли учить Си? Или может лучше начать с C#, а дальше уже выучу C++?

Тема сравнения С/C++/C# в публичном пространстве - опасная тема. Она обычно заканчивается
топиком в 1000 страниц и великой войной всех против всех. Я видел много таких войн.
Они ничем не заканчиваются. Специалисты остаются при своих мнениях. А зритель просто развлекается.

Сам по себе выбор языка ставят только новички. Професиионалу безразличен язык (почти). Его может больше интересует отрасль, стек технологий, стандарты и протоколы. С моей точки зрения сегодня
таким стандартом может быть выбор облака (AWS, Azure, GCP).

Чистый СИ учить смысла нет. Учи сразу С++. Но даже его создатель Бьорн Страуструп считает что С++ это
сложный язык и он настаивает чтобы новички не брались учить все фичи сразу. Исключение по языку
СИ может быть в том случае, если ты собрался быть инженером по разработке микро-контроллеров
и у тебя скорее всего будет только СИ как основной (на 80-90%) инструмент взаимодействия с таким железом. Выйти на мидловый или синьорный уровень в С++ очень тяжело. Тяжелее чем в других языках.
Поэтому будь готов терпеть. Вот когда виски станут седые - тогда и будешь господин-синьор.

C# - это очень сильно корпоративный стандарт от Microsoft. Никакой связи с С++ он не имеет. Он конечно
внешне похож но это сходство обманчиво. Да изучать его тоже можно. Он учится легко. Существуют книги
вроде ".... C# за 14 дней". Разработка бизнес-приложений на шарпах идет гораздо быстрее чем на С++
например. И завалить систему в синий экран в этом языке гораздо труднее. В нем реализованы методы
защиты памяти и нельзя грязно трюкачить с указателями как это любят в С или С++. Производительность
шарпов в численных методах будет слабее чем в С++ но обычно бизнес не ставит таких задач и чаще
надо будет писать веб-хендлеры или хендлеры MQ-систем. Кач уровней синьорити идет быстрее в шарпах.
Ответ написан
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Это 3 совершенно различных, с точки зрения целей, языка. Лучше пойми что ТЫ хочешь, а потом выбери
Ответ написан
Комментировать
хочу разрабатывать ПО для ПК.

"ПО для ПК" - это очень широкий набор и каждый из этих языков подходит, но для разных подмножеств.

Или может лучше начать с C#, а дальше уже выучу C++?

Если хочешь C++ - учи сразу C++.

Надо ли учить Си?

Если будешь писать на си.

Подумал начать с C++

Если хочешь потом с C++ перейти на что-то другое, то начинай с этого "чего-то другого".
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
или по вкусу.. или оба! .. понимание различий даст быстрый рост многих пониманий ;)))
PS
Надо ли учить Си? Или может лучше начать с C#, а дальше уже выучу C++?
уже три разных языка.. мое мнение - если хватит азарта, учите все ;)))
.. и все внимание на различия областей применений и возможностей ;)))
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Если ты умеешь программировать на чём угодно, хоть на Скрэтче — можно любой по желанию. Разберёшься.
Если с нуля — только C#, на нём меньше шансов напортачить. Главная проблема Си, плохо решённая в Си++,— для простых вещей приходится работать со сложными концепциями вроде указателей для scanf.
Ответ написан
Комментировать
@MarkusD Куратор тега C++
все время мелю чепуху :)
Начинать нужно всегда с того языка, на котором ты думаешь, разговариваешь в быту и пишешь. С Русского языка. У тебя с ним, видно, все вполне хорошо. Пишешь понятно, мысли за словами прослеживаются.
Значит нужно двигаться дальше. Следующим языком для тебя должен быть интернациональный. На этом языке идет общение в сообществах и передаются знания, как через книги, так и напрямую. Английским нужно владеть на уровне способности читать без запинки и словарей, также на английском нужно уметь внятно писать. Навыки устного общения будут плюсом, но на этапе обучения сильно не требуются.

Языки программирования - это инструменты. А инструменты всегда надо выбирать от условий задачи. У тебя не выйдет решать все задачи только каким-то одним языком. Знать во всех тонкостях и уметь использовать строго по назначению Python, Java, C#, C++, Lua, TypeScript и, например, PHP не просто нормально, а важно.
Бьерн Страуструп один раз говорил о том, что для настоящего инженера важно знать порядка 5 разных языков и разбираться в их особенностях, чтобы считать себя настоящим специалистом.

Поэтому вообще не важно что ты выберешь на свой первый раз. Качество инженера раскрывается в его умении полноценно владеть множеством инструментов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
igolets
@igolets
Программист C#, MSSQL
На C/C++ имеет смысл смотреть в случаях:
  1. Если есть в планах разрабатывать ПО, которое работает с железом на низком уровне.
  2. Если есть в планах разрабатывать высокопроизводительное ПО.
  3. Если есть в планах разрабатывать ультра-портируемое ПО.
  4. Если есть желание разобраться как ПО на любом другом языке переводится в машинный код и как его оптимизировать.

В остальном эти языки требуют относительно высокой дисциплины от разработчика, т.к. предоставляют широкие возможности для доступа к железу/памяти (ошибок).

Касательно C# — я бы сказал, что он похож скорее на Java, чем на C. Как минимум, внутренней логикой. Его хорошо использовать для разработки разного рода прикладного ПО, быстрой разработки, обучения — много готовых инструментов, прощает многие ошибки. Ещё для обучения хорош Pascal — его создавали специально для этих целей.

Учить C# рекомендую по экзаменационным курсам Microsoft — в них довольно последовательное изложение, покрывающее все существенные темы. Для C# это "Exam Ref 70-483 Programming in C#" (сам экзамен отменён с 2021, но знания особо не устарели ;) книжку в виде PDF можно найти в поиске за пару минут).

И ещё момент — в вопросе явно не было указана степень знакомства с темой, но от себя рекомендую уделить пристальное внимание структурам данных и алгоритмам. Без этих знаний преобразовать задачу в код будет очень сложно и больно от изобретаемых велосипедов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы