Что учить java или c

Что учить java или c

В далеком прошлом, я занимался пустой тратой времени. А именно — выбором языков программирования.

Сформулируйте ещё раз задачу. Например зачем вам вообще изучать какой-то ЯП? Разработка только под Винду и вы уже знаете с#? Так продолжайте, если это ваша работа. Если хочется чего-то нового в этой сфере, попробуйте .Net. Java тут явно лишняя, она не очень хорошо подходит для десктопных программ, как и python или не дай бог php. Не спорю их можно писать на этих языках, но согласитесь это legacy, у .net или c# как минимум больше Профит в этом.
Если вдруг встанет вопрос о кроссплатформености GUI приложения, то я бы рекомендовал Qt, там под капотом c++, можно конечно и python опять же через Легаси костыли типа pyqt, а pygtk так себе.

А вот на c# сделать веб приложение будет проблема, в отличие от рнр или python, да даже на java будет легче 🙂 и главное кроссплатформенность, но сейчас не об этом.

Вам нужно выбрать свою нишу деятельности, отсюда язык сам выберется.
Микроконтроллеры это c и c++ тут без вариантов, как бонус для развития ассемблер можете изучать.
Под андройды конечно же java, как бонус kotlin.
Но учтите мобилки и контроллеры это 2 разных направления, а десктопные ещё и под Винду это вообще 3 направление развития.

Скорее наоборот, на java можно сделать то, чего нельзя на C#. Например кроссплатформенное десктопное приложение или Andro >
Если рассматривать windows как платформу под которую разрабатывать, то лучше брать нативные решения — .Net, C#, C++ конечно же с применением winapi, все другие языки будут аутсайдерами.

С другой стороны, если взглянуть на таких гигантов как IDEA и его производных, то можно сделать вывод, что GUI на java это не так уж и плохо.

Кстати, если хочется какой-то язык с перспективой на Web разработку, то можно выбрать js, тем более хайповая штука, пиример гуёвого приложения — Atom, там кажись фреймворк Electron, но честно не уверен, что там чистый js.

Есть еще golang кстати 🙂

То, что ты написал — это жуткий трешак.

А то, что ты 4 языка параллельно изучаешь. От того, что ты можешь написать hello world на 10 языках, тебя никто на работу не возьмёт. Только если в вуз преподавать за 20к.

Вообще ответ очевиден, C# больше всего нужен только в экосистеме майкрософта, и на нем только корпоративная фигня.

А у Java есть JVM, мобилки, 90% автоматизации тестирования ведётся на Java, да и Scala с Kotlin есть. Ну и куда же без Spring

C# больше всего нужен только в экосистеме майкрософта

Начал учить Java, до того неплохо знал C++. Сейчас вот интересует вопрос, какой язык сейчас больше актуальнее для распространенных задач? Какой более нужен и приветствуется больше?

Знаю C++ мощный, но и возможности Java интересны. Надеюсь, кто-то сможет расставить "За" и "Против" насчет каждого, чтобы уже не сомневаться, на каком языке ставить акцент и больше развиваться.

  • Вопрос задан более трёх лет назад
  • 59998 просмотров
Читайте также:  Arduino mega 2560 программа

смотря что считать "распространенными задачами" .

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

так например на Java в сравнении с C++ проще и быстрее писать кросс платформенные приложения или много поточные приложения и при этом они будут работать быстрее C++, но зато когда дело касается железок или объёмной работы над памятью то на С++ писать быстрее и проще и работать будет быстрее чем Java.

а весь цимес в том что не надо говорить "Java" или "C++", надо говорить "Java" и "C++", за счёт того что есть JNI вы спокойно можете вынести все нагруженные вычисления в СС++, а в Java оставить всё остальное, и получить лучшее из двух миров.

Все зависит от задач. Наверное, которые больше интересуют.

C++ хорош для работы, в которой очень критична производительность, выделяемаяя память. Как примеры, когда надо работать с железом, игры, сложные математические расчеты.
Из минусов — писать на С++ сложнее. Намного больше способов "выстрелить себе в ногу".

Java проще в изучении и скорости написания. Из коробки, кросс платформенный (запустится на windows, linux и mac без дополнительных колнудств). Примеры задач на Java — энтерпрайз, бекенды для веба, андройд.
Из минусов — немного проигрывает в производительности, сильнее — в потребляемой памяти.

Про Java не знаю, но я расскажу про C++ и C#, даром что последний сравнивают с Java.
Макросы, нетипизированные шаблоны, частичная реализация этих самых шаблонов, указатели, константные ссылки, константные методы, перегрузка унарных операторов, разделение памяти на стек и кучу, — это только часть того, по чем я скучаю, программируя на C#.

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

Также стоит заметить, что C++ не заканчивается на голом синтаксисе и STL, после того как вы познакомитесь с ними перед вами откроется целый мир различных библотек. От того обилия высококласных математических библиотек, что есть на CC++ (а первый вы совершенно спокойно можете подлинковать к проекту и использовать без проблем) у меня слюны все клавиатуру заливают. А Qt с его сигналами и слотами. И да, не верьте, что многопоточные приложения сложны плюсах, Qt и C++11 упрощают до предела.

А когда баловство закончится и вы поймете, что вам надо решать задачи по-серьезнее, то перед вами откроется новый мир: вы начнете изучать компилятор и узнаете много нового о его ключах и возможностях оптимизаций. вы узнаете как можно ускорить свою прогу с помощью SSE, что такое OpenMP и OpenCL.

Читайте также:  Как посмотреть версию яндекс браузера

Да, C++ строг и беспощаден, его изучение сравни с игрой в шахматы с превосходящим по силе соперником, где любая мелкая ошибка может оказаться фатальной. Но работая на C++ (работая, а не кодя так, чтоб отвязались) вы получите гораздо больше в понимании того, как устроены It-технологии, на чем зиждются и в чем их ограничения.

Что такое C#?

Что такое JAVA?

C# VS. JAVA: ОСНОВНЫЕ СХОДСТВА

  • Безопасность типов. Ошибка типа возникает, когда тип данных одного объекта ошибочно назначается другому объекту, создавая непреднамеренные побочные эффекты. И C#, и Java работают на то, чтобы гарантировать выявление таких типов незаконных приведений во время компиляции. Если приведение не может быть применено к новому типу, тогда во время выполнения такие исключения будут удалены.
  • Сборка мусора: На языках более низкого уровня управление памятью может быть утомительным, ведь нужно помнить о том, что необходимо правильно удалить новые объекты, чтобы освободить ресурсы. На С# и Java есть встроенная сборка мусора, которая помогает предотвратить утечку памяти путем удаления объектов, которые больше не используются приложением. Утечки памяти все еще могут возникать, но благодаря основам управления памятью — это уже не ваша проблема.
  • Одиночное наследование. Оба языка поддерживают одиночное наследование – это означает, что существует только один путь из любого базового класса в любой из его производных классов. Это ограничивает непреднамеренные побочные эффекты, которые могут возникать при наличии нескольких путей между несколькими базовыми классами и производными классами. Diamond pattern – книжный пример этой проблемы.
  • Интерфейсы. Интерфейс представляет собой абстрактный класс, где все методы абстрактны. Абстрактным методом является тот метод, который объявлен, но не содержит подробностей его реализации. Код, определяющий любые методы или свойства, определенные интерфейсом, должен предоставляться классом, который его реализует. Это помогает избежать двусмысленности паттерна diamond, поскольку всегда ясно, какой базовый класс реализует данный производный класс во время выполнения. Результатом является чистая иерархия линейных классов одиночного наследования в сочетании с некоторой универсальностью множественного наследования. Фактически использование абстрактных классов является одним из способов множественного наследования языков, которые могут преодолеть проблему паттерна diamond.

C# VS. JAVA: ОСНОВНЫЕ РАЗЛИЧИЯ

Важно помнить, что C# берет свое начало в желании Microsoft иметь собственный «Java-подобный» язык для платформы .NET. Поскольку C# не создавался в вакууме, новые функции были добавлены и настроены для решения проблем, с которыми сталкивались разработчики Microsoft, когда они изначально пытались создать свою платформу на Visual J++. В то же время сообщество Java с открытым исходным кодом продолжало расти и между этими двумя языками развивалась гонка технических вооружений. Вот некоторые из основных различий между C# и Java.

  • Windows vs open-source. Хотя существуют реализации с открытым исходным кодом, C# в основном используется в разработке для платформ Microsoft – .NET Framework CLR и является наиболее широко используемой реализацией CLI. На другом конце спектра Java имеет огромную экосистему с открытым исходным кодом и у него открылось второе дыхание отчасти благодаря тому, что Google использует JVM для Android.
  • Поддержка обобщений (Generics): Generics улучшает проверку типов с помощью компилятора, в основном удаляя приведения из исходного кода. В Java средства обобщений реализуются с использованием стираний. Параметры общего типа «стираются», а при компиляции в байт-код добавляются приведения. C# также использует обобщения, интегрируя его в CLI и предоставляя информацию о типе во время выполнения, что дает небольшое увеличение производительности.
  • Поддержка делегатов (указателей): В C# есть делегаты, которые по существу служат в качестве методов, которые могут быть вызваны без знания целевого объекта. Для достижения такой же функциональности в Java вам необходимо использовать интерфейс с одним методом или другим способом обхода, который может потребовать нетривиального количества дополнительного кода, в зависимости от приложения.
  • Проверяемые исключения: Java различает два типа исключений – проверяемые и непроверяемые. C# выбрал более минималистский подход, имея только один тип исключения. Хотя способность ловить исключения может быть полезна, она также может отрицательно влиять на масштабируемость и контроль версий.
  • Полиморфизм: C# и Java используют очень разные подходы к полиморфизму. Java допускает полиморфизм по умолчанию, C# же должен вызывать ключевое слово «virtual» в базовом классе и ключевое слово «override» в производном классе.
  • Перечисления (Enums): в C# перечисления представляют собой простые списки именованных констант, где базовый тип должен быть целым. Java представляет перечисления более глубоко, рассматривая его как именованный экземпляр типа, что упрощает добавление пользовательского поведения к отдельным перечислениям.
Читайте также:  Hp elitebook 745 g5

Когда стоит использовать C# или Java?

Язык, который вы в конечном итоге решите использовать, будет во многом зависеть от платформы, которую вы выбрали для своего проекта. Сегодня C# используется в основном для реализации CLI на .NET Framework, Mono и Portable.NET. Если ваше программное обеспечение или веб-приложение создаются для Windows, C# будет работать лучше всего с набором технологий .NET.

Тем не менее, если вы хотите разрабатывать для Unix, Linux или других платформ за пределами платформы Microsoft, экосистема с открытым исходным кодом – Java – лучший выбор. Сообщество постоянно создает новые библиотеки и инструменты. Появились новые мощные языки, такие как Scala, Clojure и Groovy, и они все тоже основаны на JVM. К тому же это неплохо, что большинство реализаций JVM являются общедоступными и бесплатными. Java – основной язык разработки, который использует Google для Android – самой большой мобильной операционной системы в мире в настоящее время.

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

Итог: выберите язык, который лучше всего подходит для платформы вашего проекта.

Ссылка на основную публикацию
Adblock detector