Де поріг входження нижчий/вищий Java, С# or C++ ?

Цікава думка досвідчених програмістів...

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Если впадлу тратить год на образование учи Python — это явно быстрее будет и полезней !

Там проще, где делаешь с удовольствием.

Зависит от части. Скажу за Java. Синтаксис — в Java самый простой, отстрелить ноги тяжелее всего. Экосистема — здоровенная вундервафля для экстерминатуса.

чомусь подумалось — краще було спитати, де більше платять досвідченому сеньору (без менеджменту)

та навіть з менеджментом...

Мне кажется вы не по тем критериям сравниваете. Какая разница где порог вхождения выше? Все равно в IT всю жизнь учиться и дураком умрешь )) Тем более язык — это всего лишь инструмент, кроме него нужно изучить кучу всего — библиотеки, технологии в которых работать будете, инструменты для разработки, методологии разработки... Короче, выберите себе направление, которое наиболее интересно, а язык вторичен:
JavaEE — энетрепрайз приложения
Java под андроид (хоть язык тот же, но переходить с JavaEE почти так же как с C# или С++)
C# - в основном веб
C++ - обычно эмбеддед или поддержка старых приложений.
+ на всех этих языках разрабатывают игры, но это совершенно отдельная тема.

C# - в основном веб
не в основном

хмм цікаво
с# і джаву не трба місцями поставити?

Да, я бы поменял. В C# много простоты добавляет визуал студия. Х..як х..як и на продакшен, delphi-style. Для начинающего самое то — хоть что-то, хоть как-то но пишется.

А для продолжающего — пофигу. Языки очень похожи. А окружающие фреймворки (MVC, ORM и т.п.) — после 4-5 изученых, тоже будут казаться одинаковыми.

Это та простота, что хуже воровства

Тому, що дозволяэ обiйтися без глубокого розумiння. Пряма дорога до бидлокода

То есть программисты должны мучатся с неудобным не рационально сложным синтаксисом, и не продуманными библиотеками, ради того что бы не попасть на дорогу быдлкода? На С++ быдлокодеров не бывает?

Я вообще не о том. Непродуманные монстроидальные библиотеки — это абсолютное ЗЛО, пожирающее человекогоды на их изучение. Инструментарий должен быть компактным, изящным и гибким, но не примитивным, расчитанным на домохозяек и навязывающим жесткую идеологию.

Заявление в духе «архитекторы в майкрософте пидарасы, а я дартаньян» :)

Не архитекторы, а те, кто формирует бизнес-стратегию. Ничего кроме матерщины не вызывает очередное «новшество» от MS, которое заставляет выкинуть на помойку время, потраченное на изучение их предыдущего «шедевра». Это называется не прогресс, а лохотрон.

Уточню... вы точно про .Net и C# говорите? :)

Считаете что без этого ium.mccme.ru/...hsc/mathsc.html этого sharpc.livejournal.com/67583.html и т.п. к программированию подпускать нельзя?

Так и я же не говорю, что тот delphi-style должен оставаться навсегда. Для более менее сложного проекта уже придется брать и лезть в конфиги, разметки и т.п.

Но «порог вхождения» о котором спрашивали: в варианте «перетащить контрол мышкой» намного меньше чем в варианте «прописать нужный тег в этом файле — потом с соответствующим id контроллер в том»

І ще багато хто каже що на java скоріше можна вирости (в плані зарпалати) ніж на c++ ?
Правда ??)

Правда, тількі ідіть уже щось вчіть.

ахах
іду курсову робити по ОС а потім вчити ))

Заодно не забудьте вивчити англійську мову — це дуже важливо як для пошуку роботи, навіть першої, так і зарплати, незалежно від технологій програмування.

дякую, буду мати на приміті !!!

В условиях Украины, то это JavaEE, так как нужно кроме языка знать кучу фреймворков, sql, http, а также желательно прочитать пару книжек — паттерны и рефакторинг. В случае с С++ это всего две библиотеки, стандартная и boost и иногда мат. подготовка с которой у вчерашнего выпусника вуза хорошо. То есть в принципе, освоить С++ с его трюками ( кучу бумаги про них изморали всякие Гербы Саттеры) тяжелее чем джаву, но обьем материала который нужно изучить во втором случае гораздо шире.

скільки часу (на око) треба потратити на вивченн JavaEE і фреймворків до неї (якщо є занання С++) ?

Если 5-6 часов в день, то месяца 3.

ого за 3 місяця ?)
і ці знання дадуть змогу влаштуватися на джуна ?

А кто тогда в твоем понимании джун?

Junior я називаю тих, які тільки починає серйозно працювати в певній галузі технологій. У такого розробника є знання, що дозволяють йому працювати над реальним проектом, але дуже мало (чи ні) досвіду такої розробки. Тому, часто в технічних аспектах він радиться з більш досвідченим розробником. Накопичивши достатньо знань і досвіду Junior стає mid-level розробником.

Питання було адресоване юзернейму Volodymyr Mykhailov

человек проработавший > 6 мес. на реальном проекте

это уже зависит и от человека и от проекта, суть в том что после 3х месяцев изучения java ee джуном не станешь как бы не хотелось, учитывая что другого комерческого опыта разработки нету

Зато после 3-х месяцев работы на проэкте — станеш вполне.

Знаю про один случай, когда было так- год зубрежки книг параллельно с другой работой, а потом за полтора года работы прокачка от джуна до синьора. Главное не бросить в начале, т.к. энтерпрайз Java-экосистема при начальном изучении кажется абсолютно необъятной и неподъемной (имхо).

год зубрежки книг параллельно с другой работой, а потом за полтора года работы прокачка от джуна до синьора.
Мужчина! А вы (все остальные) — увы... :\
а потом за полтора года работы прокачка от джуна до синьора
Наверно как раз 23 года стукнуло.

вы серьезно или троллите?

а що якщо маєш досвід програмування(С++), то за 3 місяці (5 го/день) неможливо ?

В чем троллинг-то? Я просто описал путь от трейни до джуна, который вполне можно пройти и самостоятельно.

ну у вас как-то получается, что для джавы и паттерны надо, и рефакторинг, и http, и sql, и куча фреймворков, а для с++ достаточно выучить как со строками и с коллекциями и всё. можно приступать к работе

Не может быть ситуации, когда человек способен стать программистом, например, на C#, и не способен на C++.
Если же вы ищите ответ на этот вопрос с целью побыстрее получить работу, то очень возможно, что на исследование различий и уровня сложности языков вы как раз потратите столько времени, сколько смогли бы выгадать от знания ответа на этот вопрос.

Не может быть ситуации, когда человек способен стать программистом, например, на C#, и не способен на C++.

Запросто. Точнее, стать программистом-то может, но как начнёт с указателями баловаться, да память не освобождать (или освобождать то, чего не надо) — на этом всё программирование закончится. :)

Ну, в C# тоже — побаловался, и сотню записей из продакшен базы данных безвозвратно удалил. На том программирование и закончится. В яве тоже, наверняка, что-то можно наломать, если побаловаться.
Речь идет о «стать программистом», а не «побаловаться». Нулевому человеку, обладающему для этого потенциальными способностями. Такому, который готов методологически правильно учиться выбранному языку+технологиям необходимое для этого время. И если этот человек выбирает C++ и при этом забивает почему-то на тему управления памятью, то это, по-моему, клинический случай.

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

Кстати, разве можно удалить «безвозвратно» данные из продакшен баз данных? Не делается ли для такого какая-то бекап-защита?

Классно в аутсорсе — всегда найдется кто-то еще в команде, на кого можно спихнуть ответственность. А если не на кого — виноват ПМ!

С другой стороны, это не самый худший подход. Бывает и хуже:

Q: у нас проблема во взаимодействии команд...
A: у нас скрам и ажайл, команда должна самоорганизовываться (читай: никто не виноват, никто ни за что не отвечает, никто никаких решений-выводов делать не должен)

Q: у нас вот тут херня вылазит...
A: назнач митинг, вот есть три лида пяти человек, которым это будет интересно и Вася, который это делал (читай: пять человек проговорят полдня, размажут ответственность и примут какое-то дебильное решение — дебильное, потому что всем, кроме инициатора, по барабану на самом-то деле, ни с кого лично потом не спросят)

Q: ...
A: обсудим на ретроспективе.

Ну, к слову сказать, в скрамах есть (должны быть) «продукт овнер», который должен быть отвецтвенный за принятия решений по продукту, и «скрам мастер», который должен быть отвецтвенный за процесс.

Отвечу здесь всем, кто взбудоражился моим комментарием и дольше дискутировать не стану.
Мысль, которую я пытаюсь донести: НЕТ ОТДЕЛЬНОЙ ТЕХНОЛОГИИ ДЛЯ УМНЫХ И ОТДЕЛЬНОЙ ДЛЯ НЕ ОЧЕНЬ. И уж, тем более, нет технологии, которая сама по себе полностью защищает от «побаловаться», ну или от «дурака» — кому как больше нравится.
Речь идет о нулевом стартовом уровне для человека, ПОТЕНЦИАЛЬНО СПОСОБНОГО СТАТЬ ПРОГРАММИСТОМ И РАСТИ В ПРОФЕССИИ, А НЕ ОСТАВАТЬСЯ ВЕЧНЫМ ТРЕЙНИ, КОТОРОГО НИКОГДА НИКУДА НЕ ПУСКАЮТ. При обучении, разумеется, что-то проще, что-то сложнее, но финальное успешное освоение отличается только количеством затраченных усилий на этапе обучения. Я в целом согласна, что C# и все с ним связанное, вроде выглядит попроще, чем C++. Но опять-таки, мой опыт преподавания программирования показывает, что есть ребята, которые не имели никаких проблем с С++ (он самым первым шел), но врубиться, например, в SQL, (который, как, я думаю, все-таки встретится в жизни с большой вероятностью, если выбрать C#) для них, оказалось гораздо тяжелее. Подчеркиваю, что речь идет о студентах, которые на старте карьеры не ищут работу, а выбирают «лидера рынка», и спокойно туда проходят, а к выпуску из института они уже вполне состоявшиеся специалисты.

Мысль, которую я пытаюсь донести: НЕТ ОТДЕЛЬНОЙ ТЕХНОЛОГИИ ДЛЯ УМНЫХ И ОТДЕЛЬНОЙ ДЛЯ НЕ ОЧЕНЬ

Вы неправы ;-)

О, если вы распишите C++, C# и Java по критерию «ДЛЯ УМНЫХ» и «ДЛЯ НЕ ОЧЕНЬ» — может получиться знатный холивар :)

речь идет о студентах, которые на старте карьеры не ищут работу, а выбирают «лидера рынка», и спокойно туда проходят, а к выпуску из института они уже вполне состоявшиеся специалисты.
Не обижайтесь, но этот ваш фурункул веб таки не «лидер рынка». Кроме того, неважно закончили они ВУЗ или нет, главно могут они быть программистами или не могут.
но врубиться, например, в SQL
Потому что базового представления о реляционной модели нет, вот и не могут. Или препод мудак, который преподавал ACCESS с формочками и прочим говном, это вообще должно быть уголовно наказуемо, таких надо убивать без всякой жалости и самым жестоким образом вместе с теми кто пичкает студентов делфи или каким-нибудь MFC.

Егор, я отвечаю на ваш комментарий в последний раз. Я не могу общаться вашими терминами в принципе. Но по сути.
Речь в моем примере идет о моих студентах, которые не имеют к компаниям, где я работала и работаю никакого отношения. Лидером рынка в своем посте я назвала компанию, в которой никогда не работала, и компания эта действительно «лидер рынка» по определению того же ДОУ.
Объясняла я ТСу, а не вам (вы и так уже все знаете) на реальных примерах обучения реальных людей реальному программированию то банальное обстоятельство, что одному сложнее одно, а другому — другое.

Ну, в C# тоже — побаловался, и сотню записей из продакшен базы данных безвозвратно удалил. На том программирование и закончится.
ну в ембеді — сніс бутлоадер, здохла прошивка, згорів чіп — так що пальці в двері і нах із індустрії?
побаловался, и сотню записей из продакшен базы данных безвозвратно удалил.

Вы теоретизируете. Можно всю жизнь проработать, так и не написав запроса на удаление чего-либо из базы в коде (или не вызывав соответствующую функции бизнес-логики). А в C++ всю жизнь проработать и не попользоваться указателями и распределением памяти не получится. А тут и пойдут косяком вилы, каких в C# нет и в помине.

Вы теоретизируете. Указатели и «ручное» распределение памяти не ведут к «косякам вил» в С++. На какой-то косяк, конечно, можно нарваться, но они редки. Но и в .NET можно нарваться на косяк с Dispose, не говоря уже о том, что постоянное обрамление в using реальное зае***.

И какой косяк? Не пишите using, не вызывайте Dispose. В большинстве случаев, ничего страшного не будет, а если и будет — то скорее у вас там и без этого полно г-нокода (например создание 10000 одинаковых Pen в цикле, когда достаточно сделать один). Да и вообще, вызывать явно есть смысл только в случае открытого сетевого соединения, или выделенных unmanaged ресурсов, только лишь ради того, что в этом Dispose — вызовется close или release для этих ресурсов. Даже using используется чаще не ради освобождении памяти, а что бы просигнализировать что работа завершена (например что бы знать, когда закрыть транзакцию, закрыть сетевое соединение, освободить опять же unmanaged ресурсы). И все правильно написанные классы поддерживающие IDispose — делают Dispose также на финалайзере — который вызывает GC (когда ему нужно). Так что соединение так или иначе будет закрыто, а ресурсы освобождены, разве что — внешние ресурсы закончатся очень быстро, так что GC не успеет подобрать те объекты которые держат хендлы на эти ресурсы, но какова вероятность такого сценария? Дальше говорить — нужны конкретные примеры с кодом.

Не писать using, не вызывать Dispose — это считается плохим стилем и рано или поздно приведет к проблемам. Потом будете по всему коду тыкать GC.Collect() :)
Как и где используется Dispose, я как бы в курсе, и дергать его приходится достаточно часто. Открыл файл — будь добр вызвать Dispose, потому что следующий вызов этой же функции на этом же файле обломится. Создал System.Drawing.Bitmap — будь добр освободить память и ресурсы.
У нас вообще была какая-то хрень с WriteableBitmap, по-моему, во 2-ом сильверлайте (ага, он только в 3-ем появился, значит в 3-ем) — текла память и все вылетало с out of memory. Так что всякое бывает c памятью и в С#.

Зачем мне вызывать GC.Collect(), это ведь плохой стиль. К тому же не имеет никакого отношения в Dispose. Сколько Dispose не вызывай, и сколько using не пиши, GC быстрее объект не подберет, как я уже писал, это не для GC, это для закрытия сетевых соединений и освобождения unmanaged ресурсов, для flush буфера или другой дополнительной логики, для обьектов класса не использующих IDisposable интерфейс.
msdn.microsoft.com/...2(v=vs.80).aspx

Открыл файл — будь добр вызвать Dispose, потому что следующий вызов этой же функции на этом же файле обломится.
С таким успехом я могу делать файлу Close и не делать Dispose. Опять же, никакого отношения к языку или сборке мусора. Речь о ресурсе операционной системы, речь о логике работы с файлами, а не чистом выделении памяти при работе с абстрактными типа данных. Если я не сделаю Close или Dispose — то все что случится, это исключение IO — говорящее о том, что файл занят.
У нас вообще была какая-то хрень с WriteableBitmap, по-моему, во 2-ом сильверлайте (ага, он только в 3-ем появился, значит в 3-ем) — текла память и все вылетало с out of memory. Так что всякое бывает c памятью и в С#.
Присутствие сборщика мусора, не гарантирует бесконечный объем памяти. Но вероятность сделать memory leak в C# все равно гораздо ниже чем в С++, даже не вызывая Dispose.

Ты разделяешь «память» и «ресурсы ОС». С точки зрения .NET все ОК. Проблема только в том, что unmanaged ресурсы тоже используют виртуальную память процесса. Когда ты говоришь, что Dispose() особождает ресурсы ОС, но не память, это не совсем так. Да, он не трогает managed память, но он влечет осовбождение памяти, выделенной в том же процессе под ресурсы/или ресурсами.
И чем мне не очень нравится такой подход в C#. Получается такая себе двойственность: вроде и не надо освобождать, а вроде и надо. В одном месте/сценарии это прокатывает, а где-то вылазит боком.
В С++ в каком-то плане проще, там память — это ресурс, который нужно освобождать точно так же, как и любой другой ресурс.
Подитоживая, я не хочу разводить холивар на тему
С++ и С#, просто некоторые товарищи преувеличивают величину проблемы ручного управлением памяти в С++, сравнивая ее с C#.

А как собственно это влияет на что-то?

див. мій пост нижче, де я порівнював вакансії на с++ і джава .

Ну так или ты считаешь, что у джава джуниора требуют глубоких знаний всех этих фреймворков?

И как это влияет на конкретного джуниора?

Задумайся, что тебе нравится, сделай пару проектах на всех языках и пойми. Или ты хочешь проработать пару лет и делать то что тебе не нравится?

Автор вам потрібна мова для чого ? Бабло косити чи задоволення отримувати ? Яке направлення : веб, мобайл, десктоп, ембед, чи просто понтуватися перед одногруппниками ?

хотілося б звичайно отримувати задоволення, але гроші теж важливий фактор)) (я так розумію що ви вели до того щоо на плюсах бабла не наваришся ?? )
направлення : веб або десктоп( ще буду пробувати веб, тоді вирішу)
пантуватися не хочу.

все залежить від точки «входу» , якщо у вас «за плечима» асм і сі — то в с++ вам буде легше, ніж тим хто цих знань не має.
по фреймворкам — дещо рівнозначно — усюди купа «свого»

ну для входу на с++ я не дуже багато бачив фреймворків, хіба декілька бібліотек як STL, boost і рідкіше WinApi,MFC,QT(це переважно >Junior)

А если есть С++, то в джаву легче.

якщо є С++, то саме в нього і легше :)) а в шарп в порівнянні з джавою в такій ситуації набагато легше — менше альтернитивних ліб, продуманіші ті що є (більшість, але не всі), і набагато зручніше і безпроблемніше робоче середовище

Я думаю все зависит от конкретной кампании.
Где то С++ junior это з/п в 1700 баксов, опыт работы от 3х лет и знания C/C++ OOP+stl+boost etc.
А где то С++ junior это з/п в 300 баксов, умение написать «hello wrold». Посещение работы 3-4 часика в день,,, ...а там сами этого студента, как то доучим...

а на джава і шарп хіба не аналогічно?

С вакансиями для С#/Java не сталкиваюсь, поэтому написал за то, что знаю.

на шарпі з 2-3ма роками досвіду ви будете вже мідлом, або виявиться що ви даремно пішли в ІТ ..

Всі кажуть що на С++ найбільший поріг, але якщо глянути ванкасії джуніорів:
на junior C++ майже всюди :
— Знание С++, OOP, STL
— Знание базовых алгоритмов и структур данных
— Математическая подготовка

на junior java більшість з таким :
Java frameworks, tools and patterns: Java Core, Java EE, JavaBeans, JDBC, Hibernate, Spring, Struts, JSP, HTTP Servlet API

Я розумію що сама мова с++ тяжкіша, але на джуна джави треба знати кучу фреймворків....
А всі кажуть що входження на с++ найтяжкіше...
Хтось може пояснити ?

подтверждаю, на джава джуниор хотят с минимальными знаниями по перечисленным фреймверкам, пока в Харькове меня не хотят

Чем C# по порогу вхождения отличается от Java?

Название языка короче — порог меньше

Или j, там такие изящные решения:

quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ [email protected]#)) ^: (1<#)

И в этой шутке лишь доля шутки

Почему вы думаете, что в C# порог вхождения меньше, чем у Java?
UPD: чорд, это же была шутка( *самофэйспалм*

Для десктопа наверное самый простой способ писать простые программы.

Да, спору нет, но при чем тут входной порог?
Мне кажется, что Java и С# максимально подобны для начинающего изучать.

Если на Java не так просто написать первую программу для десктопа, значит там порог вхождения выше.

Тут, я думаю, дело не в языке, а в среде разработке. Конечно, легко натягать контролов и повесить на них обработчики в Visual Studio, не знаю есть ли что-то такое для Java. А написать первое приложение одинаково легко на любом из языков.

я когда-то в нетбинс тягал окошечки, так там да, не так весело, как в студии. А так, в общем и целом, те же яйца, только в профиль.

В Visual Studio намного легче разобраться — что как и где, и как скомпилить проект и поправить его настройки, чем к примеру в Eclipse. Название классов из архитектура их в целом в .NET более простая и более интуитивно понятна. Подсказка более внятная и сразу под рукой. Это конечно субъективные оценки (что значить более простые и понятные?), но мне кажется, что разница объективно все таки присутствует, не знаю как её правильно описать, и можно ли её посчитать.

Может такой пример подойдет
doc.sumy.ua/...gs/jfc_1101.gif
roque-patrick.com/...fig859_01_0.jpg

В классах java.io конечно можно разобраться, но для новичка все эти буфферед и не буфферед и инпут аутпут ридеры стримы — кажется монструозно.
Когда в случае с .NET, есть Stream абстрактный, и есть разные конкретные реализации — файл, память, сеть — так далее. А reader writer это отдельная самостоятельная штука, которая просто лепится поверх на абстрактный stream (чем то это все Delphi напоминает). В java.io — суть в общем у классов та же, но выглядит это все как то монструозно. Конечно за всем есть какой то свой смысл, но для новичка это не очевидно.

Підписатись на коментарі