Сложно ли перейти с Java на C#?
Учу в данный момент Java, но какое то профессиональное (студенческое) выгорание и хочется что то поделать а не просто читать учебник, и решил поделать что нибудь на Unity, но там пишутся скрипты на C#, сложно ли перейти от JAVA (я собираюсь его учить , и не собираюсь останавливаться) к C# ?
- Вопрос задан более трёх лет назад
- 5949 просмотров
1 комментарий
Оценить 1 комментарий
C# для Unity несколько отличается от стандартного. Не по синтаксису, а в части построения приложения. Или подходу к этому самому построению. При прочих равных, опыт Java будет скорее полезен.
Удачи.
Решения вопроса 0
Ответы на вопрос 6
Java / Android developer
Различия в синтаксисе — это мелочи по сравнению с огромными экосистемами вокруг каждой из этих платформ. И каждая со своими подходами, библиотеками и т.п.
Вот когда начнете углубляться в программирование, проблемы различного синтаксиса покажутся ничтожно малыми. Разобраться в синтаксисе — дело одной недели. А чтобы вникнуть в платформу, тут все зависит от вашего опыта. Так что учите сейчас что вам нравится, все равно наработки даром не пропадут.
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Что касается языка, то тут много похожих моментов как и различий.В первую очередь в C# в подавляющем количестве случаев вместо геттеров/сеттеров используются автоматические свойства, также в C# вам предстоит освоить библиотеку TPL(async/await , IAsyncResult , Parallel.Foreach(). etc), которая содержит много синтаксического сахара для создания многопоточных приложений и язык LINQ/PLINQ(Parallel LINQ) который используется для создания запросов к коллекциям, XML-кам и Relational базам данных.В C#, в отличие от java для реализации событий используются делегаты (Event) вместо экземпляров обработчиков, также для реализации lambda выражений в C# используются анонимные методы и тут нет функциональных интерфейсов .Что касается самой платформы .NET — вам предстоит увлекательный путь изучения недр CLR и DLR.
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Просто люблю качественно работать
где то за неделю перешел с джавы на сишарп от нечего делать
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Не сложно, но зачем, когда есть libGDX? Да, вряд ли этот фреймворк будет лучше Unity, но так ли сильно вам нужно изучать другой ЯП ради Unity?
Ответ написан более трёх лет назад
Нравится 2 3 комментария
Loligan @Loligan Автор вопроса
а вот это интересно
Loligan: посмотрите в сторону LWJGL и JMonkeyEngine.Но предупреждаю — java создана не для разработки игр, а для создания распределенных корпоративных приложений.
cthulhudx: C# тоже не для геймдева делался. Тем не менее он прекрасно смотрится в Unity.
Насчет JMonkeyEngine — не знаю, не могу судить, не поработав в них, но лично мне libGDX показался «покруче».
Переход с Java на C++
За свою карьеру встречал немалое число программистов, пришедших в Java из C/C++, а наоборот практически не встречал. Помню лишь одного, решившего уйти в C++, но по личным причинам — нежелании работать под руководством конкретного Java тимлида. Однако это весьма редкое исключение или даже казус, обсуждать который не стоит. Мне вот интересно, а какие у вас наблюдения и что вы вообще думаете о переходе с Java на современный C++ (не на C)? Скажем, как минимум на C++14.
bbk123 ★★★★★
02.10.20 20:13:31 MSK
← 1 2 3 4 →
Жаба необратимо повреждает мозг, поэтому
Harald ★★★★★
( 02.10.20 20:25:17 MSK )
Ответ на: комментарий от Harald 02.10.20 20:25:17 MSK
То есть считаешь, что это невозможно или переход на C++, для джаваиста, это дауншифтинг?
bbk123 ★★★★★
( 02.10.20 20:27:50 MSK ) автор топика
Я пишу на C++ уже лет 6-7. В принципе, если бы отмотать время назад, то я бы из этих двух вероятно выбрал бы Java. Потому что в случае C++ много времени приходится тратить на изучение самого языка, а не предметной области. А сейчас мне уже лень снова с джуна начинать и по з.п. спускаться обратно.
rumgot ★★★★★
( 02.10.20 20:31:39 MSK )
По-моему, Java более предпочтительна в плане поиска работы. Я живу в Java мире, везде вижу только джавистов. Возможно, профессиональный перекос.
Irben ★★★
( 02.10.20 20:50:18 MSK )
Зачем писать на С++, превозмогая боль, когда, в большинстве случаев, явы достаточно? Трудозатраты на разработку и поддержку ява-кода в разы меньше, чем кода на плюсах. Экосистема разработки на плюсах это тоже боль.
cocucka ★★★★☆
( 02.10.20 20:54:03 MSK )
Ответ на: комментарий от rumgot 02.10.20 20:31:39 MSK
По сложности языка Java тоже не стоит на месте. По-моему основное различие в привлекательности C++ и Java — это их экосистемы и методологии разработки. Засилие препроцессорных директив, делающих целые куски кода опциональными, засилие typedef-ов на typedef-ы, архаичные системы сборки и масса проблем с ними, нестандартные и несовместимые между собой расширения компиляторов, очень большой объём довольно древнего кода. Обычно это либо отпугивает, либо является аргументом для бывших сишников не возвращаться во всё это после Java или C#. Но ведь и C++ и его экосистема тоже не стоит на месте и в принципе на современном C++ и с современными инструментами тоже можно довольно комфортно программировать?
bbk123 ★★★★★
( 02.10.20 20:56:39 MSK ) автор топика
Ответ на: комментарий от cocucka 02.10.20 20:54:03 MSK
Эти языки применяются для разного. Эта тема — не о выборе языка программирования, а о смене карьеры.
bbk123 ★★★★★
( 02.10.20 20:59:35 MSK ) автор топика
Ответ на: комментарий от Irben 02.10.20 20:50:18 MSK
Да, знаю. Это всё кровавый энтерпрайз, которого просто больше. Но речь ведь не о выборе новичка, что ему учить. При желании можно сочетать разработку на Java и на C++. Знаю не мало контор, где есть и то и другое.
bbk123 ★★★★★
( 02.10.20 21:02:18 MSK ) автор топика
Ответ на: комментарий от bbk123 02.10.20 20:56:39 MSK
на современном C++ и с современными инструментами тоже можно довольно комфортно программировать?
Miguel ★★★★★
( 02.10.20 21:12:11 MSK )
Писал на обоих языках, пусть и не «профессионально». С джавы на плюсы бы не перешел однозначно.
Zhbert ★★★★★
( 02.10.20 21:14:16 MSK )
о переходе с Java на современный C++ (не на C)?
Спрос на с++ мал, а на начинающих исчезающе мал, так что лучше уж обсуждать переход на хруст или го какой-нить. Если уж хочется быть модным и пить смузи.
vtVitus ★★★★★
( 02.10.20 21:16:47 MSK )
Просто даже личный опыт — в 2008 году, у меня в резюме была java, с++ (linux qt, win directx + опыт в преподавании с++ и с) ну и перлятина. По java было 100500 предложений самых-самых разных. по с одно в моторолу, которая уже продавалась гуглу — собеседования ещё проводились, но уже никого не брали, ну и одно по перлу — поддержка системы пока её переписывают на java. По с++ не было ни одного даже намёка. Так что куда переходить ? 😀
vtVitus ★★★★★
( 02.10.20 21:25:48 MSK )
Я бы не перешёл с плюсов на продуктовые языки вроде джавы или го, потому что у нас тут своя атмосфера. Можно систему сборки свелосипедить или язычок описания тестов. А сколько компайл-тайм веселья можно придумать, особенно на последних стандартах! Куда интереснее чем композировать абстрактные фабрики или микросервисы.
filosofia ☆
( 02.10.20 21:26:36 MSK )
Ответ на: комментарий от filosofia 02.10.20 21:26:36 MSK
Куда интереснее видеть как бизнес логика хорошо и красиво ложится на архитектуру предложенную тобой. Или как то что ты написал используют несколько тыщЪ людей на работе каждый день уже 10 лет и от чего зависит работа одного из крупнейших предпреятий. Это прям реальных кайф. А велосипедить на самом деле скучно.
vtVitus ★★★★★
( 02.10.20 21:33:16 MSK )
Последнее исправление: vtVitus 02.10.20 21:35:06 MSK (всего исправлений: 1)
Стоит ли изучать С и С++ после Java
Разбираемся, зачем переходить с Java на С или С++, зачем учить С-языки и какие плюсы и минусы присущи С и С++ по сравнению с Java.
Java — отличный язык программирования, который проверен и временем, и количеством программ, которые на нём написаны. Java часто рекомендуют в качестве первого языка программирования, потому что он решает большинство проблем в написании ПО и потому что он максимально понятен.
Однако у Java есть и некоторые минусы, которые могут натолкнуть вас на мысль о переходе на другой язык программирования.
В этой статье разбираемся, зачем переходить с Java на С или С++, зачем учить именно С-языки и какие плюсы и минусы присущи С и С++ по сравнению с Java.
Зачем переходить на C/C++ после Java
За некоторыми исключениями C++ считается чем-то вроде надстройки Java, но это не значит, что при переходе с Java на C++ будет просто: вам нужно будет изучить новые концепции языка и новый синтаксис.
Основное преимущество C++ заключается в том, что он не обременяет новичка концепциями объектов. Также C++ лучше поддерживает более поздние классы, которые используются в написании операционных систем и построении компиляторов. Написание ОС в Java осложняется тем, что JVM сама по себе является подобием ОС.
Если вам нужно написать код, который управлял бы железом устройства, изучение байт-кода JVM не рекомендуется: он плохо переводится на язык ассемблера. Код Java “живет” в JVM, которая отрывает программу от железа.
Java присуща негибкость: например, код отличается многословным синтаксисом, который нелегко сократить. Код на Java, кажется, имеет другой стиль разработки, который поощряет крупные и сложные решения, тогда как более мелкие и простые были бы эффективнее.
C/C++, с другой стороны, ужасно беспорядочные языки, которые наполнены устаревшими функциями. Хуже того, из-за этого беспорядка можно выстрелить себе в ногу, написав отличный код, но не учтя нюансов его работы, о которых вы никогда и не слышали.
Однако код на C/C++ более гибкий, и как только вы его изучите, вы поймёте, что можете решить проблему множеством способов. В Java при этом обычно поощряется один способ решения задачи.
Кроме того, в процессе изучения C/C++ вы научитесь работе с указателями, стеком, производительностью, изучите процесс компиляции и системное программирование.
Резюмируя, вот причины, по которым вам стоит перейти с Java на C/C++:
- Вам нужно написать программу, которая тесно взаимодействовала бы с железом.
- Вы хотите изучить низкоуровневый язык программирования.
- Вы хотите следить за последними обновлениями в языках программирования.
- Вам хочется писать на “гибком” языке программирования, который предложил бы несколько решений проблемы.
- Вы хотите писать лаконичный код.
Зачем учить С
Обычно С предлагают учить перед С++, потому что кажется, что сперва нужно изучить менее развитый язык и понять концепции низкого уровня вроде malloc и free. И, конечно, эта точка зрения имеет право на жизнь.
К примеру, при изучении С вы сможете понять общие принципы языка, не вдаваясь в сложные концепции вроде классов, объектов, наследования, полиморфизма, шаблонов, обработки исключений и ссылок. Сперва полезнее изучить основные элементы С.
Ещё один существенный плюс С — его низкоуровневость. Если вы собираетесь писать операционную систему или драйвера для устройств, если вы хотите разрабатывать мобильные приложения, стоит присмотреться к С, а не к С++, потому что первый язык существенно выигрывает в производительности и скорости.
То же касается и геймдева: если игра требует быстрых вычислений, С станет отличным инструментом.
Однако у пути от менее развитого языка к более развитому есть существенные минусы. Вы можете обнаружить, что многие выражения C — это худшая версия выражений C++.
C — это низкоуровневый язык, который будет подталкивать вас к использованию небезопасных абстракций низкого уровня. Если вы сможете соблюдать типовую безопасность, проблем не возникнет.
Также способ управления памятью в C сильно отличается от C++, даже несмотря на то, что он построен на низкоуровневых абстракциях. Как ни странно, проще понять управление памятью через конструкции std::move() и std::unique_ptr в С++, чем malloc/free в C. Ещё один нюанс низкоуровневого С — сложность массивов.
Также в C++ есть выражения, которые были заимствованы из более современных языков и которых нет в C.
Оптимальный вариант — начать обучение с C++, а затем немного поработать с C, чтобы понять нюансы работы низкоуровневого языка.
Плюсы в пользу C после Java
- C — относительно простой язык с меньшим количеством функций, чем в C++.
- Изучение C углубит понимание концепций низкоуровневого программирования, таких как управление памятью и указатели.
- Код C легче переносить на разные платформы.
Минусы изучения C после Java
- В С меньше принципов ООП. C — это процедурный язык, и в нем не так сильно используется объектно-ориентированное программирование (ООП), как в Java или C++.
- В языке C отсутствуют современные функции и библиотеки, аналогичные тем, что уже есть в Java и C++.
Зачем учить С++
C++ — это язык, который лучше всего для жесткого контроля над управлением памятью. Также здесь играет огромную роль производительность программ.
С++ отлично подойдёт для высокопроизводительных вычислений, при которых вы не можете позволить себе расходы на память, но вам нужно, чтобы все работало как можно быстрее. C++ лучше подходит для высокопроизводительных численных вычислений, чем Java в целом. При этом учтите, что кривая обучения C++ очень большая.
Java, с другой стороны, не зависит от платформы и имеет большую поддержку библиотек (синтаксический анализ XML и т. д.). Java — это интерпретируемый язык, с которым вам не нужно беспокоиться об управлении памятью.
Недостатком Java является относительно плохая настройка производительности. В Java нет особого контроля над распределением памяти, и часто возникает нехватка высокопроизводительных числовых пакетов.
Что касается синтаксиса, в Java код очень подробный: всё должно быть классом, и каждый класс должен находиться в отдельном файле, и так далее. Однако и синтаксис C++ тоже непрост в изучении, так может быть препятствием в переходу с одного языка на другой.
Плюсы в пользу C++ после Java
- Как и Java, C++ является объектно-ориентированным и поддерживает классы, объекты и наследование.
- C++ предлагает более широкий набор функций, включая низкоуровневые манипуляции с памятью, шаблоны и стандартную библиотеку шаблонов (STL).
- C++ широко используется в разработке игр, системном программировании и приложениях, где производительность критична.
Минусы изучения C++ после Java
- C++ может быть сложнее в изучении из-за обширного набора функций.
- Хотя C++ предлагает контроль над управлением памятью, это также может привести к увеличению количества ошибок.
Заключение
Эта статья была написана на основе советов опытных программистов, которые больше 10 лет кодят на Java и С-языках. Надеемся, материал получился исчерпывающим и помог вам решить, стоит ли переходить с Java на С и С++.
Приглашаем вас присоединиться к дискуссии. Какие аргументы в пользу С/С++ мы забыли упомянуть? Или, может быть, есть и другие языки, которые закрывают проблемы Java, но на которые перейти было бы удобнее, чем на С-языки? Напишите в комментариях! ?
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Уходим в джависты. Как программисту перейти со своего ЯП на Java?
Популярность Java и его достаточно радужные перспективы на ближайшее будущее заставляют программистов, которые специализируются на других ЯП, задумываться о переходе на Java. Об этом в данной статье мы и поговорим — с каких языков программисты чаще всего переходят на Java, имеет ли такой переход смысл с карьерной точки зрения, и как это сделать наиболее быстро и эффективно.
С каких языков чаще всего переходят на Java?
Для начала кратко пройдемся по тем языкам программирования, с которых чаще всего переходят на Java, а также их основным недостаткам, точнее особенностям, которые могут быть причиной перехода на другой ЯП.
1. PHP
- Не подходит для масштабных приложений PHP довольно плохо подходит для создания многофункциональных и масштабируемых приложений, а в современном мире все больше и больше приложений должны быть именно такими. Поскольку PHP не является модульным ЯП, созданные на его основе комплексные приложения довольно трудно поддерживать.
- Проблемы с безопасностью Открытая, то есть open source, форма PHP — причина проблем с безопасностью: исходный код доступен всем, а значит, все желающие могут находить и эксплуатировать баги, приводящие к уязвимостям, в коде.
- Узкопрофильность Еще одним заметным недостатком, важным для самих программистов, является тот факт, что PHP — это все-таки язык, предназначенный в первую очередь для веб-разработки. Несмотря на то, что PHP можно использовать для реализации решений в разных сферах, он “заточен” под веб-разработку, и исключительно данной областью ограничены большинство PHP-специалистов. Помимо вышеуказанных трех, у PHP есть ряд общеизвестных недостатков, вроде ошибок в коде, слабой типизации данных и т.д.
2. C#
- Недостаточно широко распространен C# распространен далеко не так широко, как, например, Java, PHP или Python, и применяется преимущественно в разработке разного рода решений для коммерческих предприятий, а это означает, что позиций для C#-программистов не так уж много, особенно в небольших городах.
- Зависимость от компании Microsoft C# считается флагманским языком программирования для компании Microsoft, которая вкладывает довольно много сил и ресурсов в развитие универсальности и кроссплатформенности данного языка. Однако в этом заключается и один из недостатков C# — этот язык ассоциируется в первую очередь с решениями для платформы Windows, а его долгосрочное развитие будет зависеть от Microsoft в очень значительной степени.
- Высокая сложность C# невозможно использовать без фреймворка Microsoft .NET, на котором он основан, а .NET весьма и весьма сложен в изучении и применении.
3. Python
- Python плохо подходит для мобильной разработки Традиционно считается, что Python плохо подходит для разработки мобильных решений, несмотря на то, что в последние годы данный язык стал более адаптированным для мобильной сферы, например, благодаря появлению библиотек для создания приложений. Однако Python по-прежнему не будет основным языком разработки для двух основных мобильных платформ — Android и iOS, — тогда как востребованность приложений под них только растет.
- Python не пользуется популярностью в разработке корпоративных решений Несмотря на то, что Python — это один из наиболее популярных языков программирования в мире, и он часто применяется при масштабной веб-разработке, в корпоративной сфере, где работа программистов, как правило, оплачивается лучше всего, он не слишком популярен. Причина — ограничения Python в том, что касается доступа к базам данных.
- Python-кодерам тяжело даются другие ЯП Поскольку Python считается самым простым ЯП в мире, и это так, Python-программистам бывает трудно писать код на других языках, которые кажутся им слишком сложными. Хотя простота Python является преимуществом данного языка, она же может сыграть злую шутку с Python-кодерами, ограничив их профессиональное развитие.
4. Ruby
- Меньше материалов для самообучения и развития Сообщество Ruby-кодеров не такое большое, как коммьюнити Java или Python, и программистам, пишущим на Ruby, доступно меньше туториалов и гайдов по возможностям данного языка. В особенности это верно для материалов на русском языке.
- Ruby более сложен в изучении, чем другие языки Не помогает прогрессировать и повышать свою квалификацию и тот факт, что Ruby сам по себе более сложен, чем другие популярные ЯП. Из-за этого продвинуться в нем дальше начального уровня для многих может оказаться непосильной задачей.
- Новичку в Ruby будет сложно найти работу Данный пункт частично вытекает из предыдущего. Программистам-новичкам в Ruby обычно довольно сложно найти работу, потому что для полноценной разработки на Ruby требуется знать этот язык на хорошем уровне. В то же время, новичок в Java может достаточно легко получить junior-позицию и продолжать обучение уже работая и окупая расходы на свое образование.
5. C++
- Сложность в освоении C++ считается наиболее сложным в освоении среди языков в данном списке. Из-за этого он менее популярен среди программистов-новичков — решения на C++ получаются комплексными и трудными в отладке.
- Технические недостатки Для C++ характерен целый ряд особенностей, преимущественно унаследованных им от предшественника, языка С, которые большинство программистов относят к техническим недостаткам. В частности, это провоцирующий ошибки синтаксис, плохая поддержка модульности, примитивный препроцессор и т.д.
Стоит ли переходить? Карьерные преимущества перехода на Java
О достоинствах Java, таких как популярность этого ЯП в разных трендовых сферах (облака, блокчейн, Интернет вещей, большие данные, ИИ) мы на JavaRush и так говорим достаточно регулярно. Поэтому здесь просто перечислим основные преимущества перехода на Java для программиста с карьерной точки зрения.
- Изобилие рабочих мест Высокая популярность Java и применение данного языка в самых разных сферах обеспечивают стабильно большое количество открытых вакансий для Java-программистов по всему миру. Сегодня найти работу Java-кодеру не просто, а очень просто. Кстати, у нас есть статья о том, как джуниор Java-программисту повысить свою привлекательность в глазах работодателя (а также статья о том, как успешно пройти собеседование).
- Высокая популярность Java в корпоративной сфере По данным Oracle, Java работает на 97 процентах всех компьютеров в корпоративной сфере. Этот язык используют банки, ИТ-гиганты, медиа компании, государственные и некоммерческие организации. Зная Java, вполне реально устроиться на работу в такие известные и уважаемые компании, как Netflix, Spotify, eBay, Google, Oracle, Facebook и т.д.
- Java доминирует в мобильной разработке Android — это самая популярная мобильная платформа в мире, а приложения под Android пишутся, в том числе, на Java, что обеспечивает данному языку уверенное лидерство в сфере мобильной разработки.
- Официальные сертификации Java помогут трудоустроиться за рубежом Java-программистам доступны глобальные сертификации, такие как OCAJP и OCPJP, с которыми можно достаточно легко найти работу за рубежом и продвинуться по карьерной лестнице. Подробный обзор Java-сертификаций на русском можно найти на JavaRush.
- Возможности для карьерного роста до senior-позиций Обилие работы для Java-кодеров и применение данного языка в самых разных проектах открывают для разработчиков более широкие возможности для карьерного роста до высоких позиций — например, до архитектора или технического управленца.
Советы для желающих перейти на Java
- Постройте крепкий фундамент из теоретических знаний К счастью, всем желающим освоить Java доступно множество материалов в Сети, включая книги, YouTube-каналы, блоги и подкасты. Не говоря уже о форумах, на которых можно обратиться к опытным Java-кодерам за советом.
- Поставьте реалистичную цель Современный Java включает в себя множество систем и решений, овладеть которыми быстро не получится. Поэтому не стоит рассчитывать на то, что вы станете экспертом в Java за год или полтора. Но за этот период можно овладеть базовыми знаниями и получить практический опыт, которого будет достаточно для трудоустройства. Кстати, в этом может помочь наш обзор сервисов для борьбы с прокрастинацией и планирования обучения.
- Не забывайте о практике Одной из типичных ошибок при изучении нового языка программирования является излишняя фокусировка на теории. Поэтому не забывайте регулярно практиковать только что полученные знания — пишите код, разрабатывайте простые решения и применяйте недавно освоенные технологии. С практикой кодинга мы поможем 🙂
- Попробуйте перенести свои проекты на Java Один из популярных советов по переходу с одного ЯП на другой от экспертов в кодинге состоит в том, чтобы пробовать переносить уже написанные программы со “старого” языка на тот, изучением которого вы занимаетесь. Перенос кодовой базы существующего проекта на новый язык может занять много времени, но будет очень полезным с точки зрения практического опыта, потому что этот процесс позволяет как нельзя лучше понять особенности нового языка и трудности, с которыми придется иметь дело, разрабатывая на нем.
- Аутсорс, аутстаф, продуктовые компании: где программисту лучше работать?
- Подборка: YouTube-каналы, блоги и подкасты для Java-программистов
- Java и AI. Можно ли написать искусственный интеллект на Java?
- Java-джуниор в поиске работы. Как прокачать скиллы и получить практический опыт
- Исследование: где работают и сколько получают выпускники JavaRush