Как перейти с java на c
Перейти к содержимому

Как перейти с java на c

  • автор:

Сложно ли перейти с Java на C#?

Учу в данный момент Java, но какое то профессиональное (студенческое) выгорание и хочется что то поделать а не просто читать учебник, и решил поделать что нибудь на Unity, но там пишутся скрипты на C#, сложно ли перейти от JAVA (я собираюсь его учить , и не собираюсь останавливаться) к C# ?

  • Вопрос задан более трёх лет назад
  • 6119 просмотров

1 комментарий

Оценить 1 комментарий

C# для Unity несколько отличается от стандартного. Не по синтаксису, а в части построения приложения. Или подходу к этому самому построению. При прочих равных, опыт Java будет скорее полезен.
Удачи.

Решения вопроса 0
Ответы на вопрос 6

Ewintory

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 но нам кидают очень различные проекты, и в понедельник должен прийти проект (связан с сетевой защитой) для долгосрочной поддержки и баг-фикса который написан на чистейшем «Си» (так нам сказали) типа вспоминайте «Си-шку», а я хоть и окончил ВУЗ но изучал с самого начала php потом Java (даже немного C# после Java), а вот с чистым «Си» как-то не приходилось встречатся и вот дкмаю занятся изучением этого «Си» или идти работу искать так как пока проектов на Java у нас нет !
На первый взгляд вроде простой язык без ООП, а там кто его знает .
Всем большая благодарность кто осмелится ответить хоть строчкой .

Отслеживать
4,730 3 3 золотых знака 29 29 серебряных знаков 46 46 бронзовых знаков
задан 17 янв 2014 в 17:16
Oleg_Samitch Oleg_Samitch
89 1 1 серебряный знак 9 9 бронзовых знаков

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

17 янв 2014 в 17:37

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

24 мая 2014 в 12:15

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

Ещё одна проблема — указатели, массивы и строки. Они очень похожи в C синтаксически, что часто приводит к недопониманию.

Отдельный пункт — ручное управление памятью и понимание того, что указатель в C (в отличие от ссылки в Java) может указывать на невыделенную, неинициализированную или освобождённую память.

Ещё одно серьёзное отличие: у ресурсов в отсутствие GC появляется владелец — сущность (код), ответственная за своевременное освобождение ресурса.

Отслеживать
ответ дан 17 янв 2014 в 19:22
207k 28 28 золотых знаков 294 294 серебряных знака 526 526 бронзовых знаков

@VladD Наличие/отсутствие арифметики указателей. В Си это естественное следствие его низкого уровня. Других различий пока не вижу (кроме именно синтаксических — нет операций & и * ) указатель в C (в отличие от ссылки в Java) может указывать на невыделенную, неинициализированную или освобождённую память. А в отличие от WeakReference?

17 янв 2014 в 23:56

@alexlz: Ну, да, естественное отличие, конечно. Однако адресная арифметика всё же специфична для C, соотношения типа &a[i] = a + i довольно специфичны и не присутствуют, например, в ассемблере. Отличие от WeakReference состоит в том, что вы не можете, имея указатель, гарантировать его валидность «локально»: вам нужно знать всю логику программы, чтобы уметь доказать/опровергнуть этот факт. С WeakReference же ситуация другая: если из него получилась сильная ссылка, то она гарантировано валидна, вам не нужно анализировать program flow, чтобы это выяснить.

18 янв 2014 в 0:26

@VladD Разумеется слабые ссылки — они везде слабые ссылки (и созданы для взаимодействия программы с GC, которого в Си изначально не было предусмотрено). Адресная арифметика — красивое и машинно-эффективное обобщение индексации (которая появилась в конце 50х вроде). В ассемблере не присутствуют потому, что там все эти механизмы должны быть расписаны до инструкций. Кстати, &a[i] == a + i &i[a] == a + i И ещё никто не вспомнил про селекторы структур в K&R C (там вроде селекторы полей не привязывались к структуре, хотя могу и перепутать за давностью).

18 янв 2014 в 1:15

@alexlz: Угу, меня всегда удивляло, что i[a] компилируется. Как мне кажется, это нужно лишь для того, чтобы сказать «а вы знали такое?», и не имеет вообще никакого практического применения. Впрочем, в остальном C очень милый и изящный язык. А что такое селекторы структур? Какой синтаксис и что это даёт? (Я правда не в курсе.)

18 янв 2014 в 1:20

@VladD ну термин скорее из другого языка (хотя, может, и в Си применялся). Имена полей. struct a ; b = a.a1; Ежели не путаю, в K&R Си имена a1, a2 должны быть уникальны и могли применяться к любым структурам. Но дальше — не помню. Откуда ноги растут понятно — «фиктивные секции» ассемблеров для архитектур с базовыми регистрами, где имена задавали смещения относительно базы. Сейчас такой подход используется в haskell.

Легко ли с Java перейти на C++? В чем основные трудности?

В том что там ручной контроль памяти, библиотеки не столь интуитивны как в Java, требуют понимания архитектуры. а еще вы никому не нужны на с++ без опыта. там сидят дядьки с 15+ лет опыта и возьмут на работу их, а не вас. вакансии C++ Junior очень редкие и если этот язык используют, то в этом случае важна оптимизация и скорость работы, что начинающий в этом языке обеспечить не сможет

Леонид ТиторенкоУченик (194) 6 лет назад

С джавой я хочу в индустрию пойти, а c++ для себя, для знаний, опыта.
Я кстати научился программировать на ней, это мой самый первый и самый любимый язык.

Кому Какая-Разница Мудрец (12770) Удачи вас. Главное помните, что пока кран не открыт, вода из него не потечет

Сначала надо ответить на вопрос «Зачем?». Эти языки сильно отличаются. Только базовый синтаксис похож. Библиотеки совершенно разные. Назначение языков разное.

Леонид ТиторенкоУченик (194) 6 лет назад

У меня на 2 курсе будет c++, а сейчас на первом джава, мы на ней учимся программировать и пониманию всех основ ООП и алгоритмов.

Голова Робота Просветленный (36328) Тогда зачем спрашивать, если тебе в любом случае придётся изучать С++, независимо от того буду я его хвалить или ругать? С++ сложнее чем Java, на нём сложнее программировать.

не льсти себе. ты в джаве полный ноль.
Леонид ТиторенкоУченик (194) 6 лет назад

А тебе по чем знать!? Ты даже кода моего не видел! Может быть ты и прав, но как можно судить не знаю ситуации !?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *