@NekitZ0r

Изучил C#, написал пару своих проектов. Стоит ли переходить на С++?

Написал пару своих проектов, и почему то меня потянуло к языку С++, стоит ли его изучать после C#?
  • Вопрос задан
  • 963 просмотра
Пригласить эксперта
Ответы на вопрос 7
Да, переходи
Ответ написан
Комментировать
@vanyamba-electronics
Не стоит без необходимости. Это другой уровень сложности.
Чем сложнее язык, тем более сложный код на нём можно написать. А сопровождать чужой код проще, если код простой.
Рефакторинг всего кода приложения в Python может занять три дня. В C++ проще будет переписать приложение с нуля, потому что и рефакторинг, и написание с нуля займут одно и то же время примерно. И это будет не три дня, две недели минимум для аналогичного приложения.
Ответ написан
Комментировать
Язык - это инструмент. Есть задачи, которые требуют c++, тогда стоит его изучить.
Ответ написан
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
считаю уровень сложности и комфорта разработки - просто не сопоставимые

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

сам на плюсах не пишу, при необходимости читаю, а с помощью лома и какой то матери дебагера VS и МСДН, даже понимаю. пришлось изрядно покоцать лишнее в плюсовом проекте, прежде чем стало понятно происходящее, и стал возможен перевод

для примера коварных нюансов - в плюсовом проекте, огромные массивы обрезок картинок, так и передавались по значению (полагаю это какой то сишно/плюсовый дефолт? пусть спецы поправят). но там использовалась рукопашная многопоточность (реально довольно таки доморощенные запросы сколько ядер, разбивка массивов, и запуск количества потоков по одному на ядро)

в шарпе выстроил своего рода конвеерную обработку. ну и по дефолту, там подобные параметры передаются по ссылке

так вот при объемах входных данных ~50 Мб (типа тестовые выборки) плюсовые проект конечно обгонял. на ~150 Мб (типа тестовые выборки на перфоманс) мы выравнивались. на ~500+ Мб (рабочие примеры покадровой съемки) однопоточный шарп уже уходил в 1,5-2х кратный обгон, на скромно 4х ядерном i3 3330 (за PLINQ заказчик доплачивать не захотел, там и так был все жмотно)

ps особо отмечу - итоговые склейки, на одном и тоже входном наборе, были бинарно идентичны, как для исходного плюсового проекта, так и для покоцаного для ясности, так и для итогового проекта на шарпе ;)

..при этом для меня писать на шарпе было .. ну как дышать.. в лет..
можно и плюсы так же освоить, но это будет долго, и надо что бы от этого штырило.. иначе по моему не реально
Ответ написан
Комментировать
Casper-SC
@Casper-SC
Программист (.NET)
Я думаю, что просто изучить C# - этого мало. Нужно научиться писать сопровождаемый/поддерживаемый и тестируемый код. Научиться придерживаться какого-то адекватного стиля при написании кода, держать проект в чистоте и порядке, чтобы смотреть на него было не противно. Научиться строить более-менее грамотно архитектуру приложения. Научиться писать нормальный рабочий многопоточный код (а здесь нужны знания не только C#). Алгоритмы там и т.д. Просто знать язык и написать пару программ - этого мало. С++ можно изучить для общего развития и в целом это пригодится, так как иной раз нужно что-то написать на С++ и использовать в C#. В целом для понимания С++ кода.

Вообще, чтобы научиться писать нормальный код, нужно иметь такое желание. Если есть такое желание, то нужно написать несколько довольно-таки больших проектов, только тогда придёт понимание, какие проблемы могут в таких проектах возникать и там уже архитектура станет важной настолько, что нужно будет учиться её проектировать/рефакторить.

Скажу так, если алгоритмы всех своих программ, например, с UI, пишешь в MainWindow.cs или Form1.cs, то на С++ пока переходить не стоит, если хочется быть хорошим программистом, я бы развивался пока в C#. Книги бы почитал.

Ещё я бы на твоём месте попробовал F#, вот там мозг в первые несколько часов/дней будет поломан из-за объёма непривычных конструкций, но язык крут.
Ответ написан
Комментировать
Если дело только в желании изучать, то норм, можно переходить на любой язык.
Если дело в поиске работы, то лучше посмотреть вакансии, и решить что больше нравится.

C# - это web и игры (unity3d).
C++ не знаю.

И прикол - сложность языка и з.п. на нем почти никак не связаны. (ИМХО)
Ответ написан
veydlin
@veydlin
Мне никогда не жалко средств на свое любопытство
С++ неплохо сочетается с C#, наш программист пишет на плюсах либы разных алгоритмов/злого матана, считает это на куда ядрах и потом подключает эти либы в шарп

т.е. быстрый низкоуровневый код написан на с++
на с# написано все остальное т.к. на нем приятней и быстрее реализовывать что-то
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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