Перейти к содержимому

Что сложнее java или c

  • автор:

Насколько сложнее C++ чем Java?

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

Вопрос состоит в том насколько сложнее стать разработчиком на C++ чем на Java, правда ли что работа с памятью на больших проектах это что то сверх сложное ?

Еще C++ ругают на Linux из за того что много неразберихи с плагинами на g++ что не дает нормально собрать собрать программу.

Интересует мнение эмигрировавших или использующих два языка одновременно.

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

2 комментария

Простой 2 комментария

Михаил Усоцкий @AquariusStar

Вообще-то C++ и Java из разных весовых категорий по целям задач. Вам нужно для начала определиться, что именно будете писать. Не понятно ещё, почему присобачили в тегах C#, Swift и Objective-C.

sim3x

Еще C++ ругают на Linux из за того что много неразберихи с плагинами на g++ что не дает нормально собрать собрать программу.

покажите, где такое пишут
Решения вопроса 0
Ответы на вопрос 5
Иван Корюков @MadridianFox
Web-программист, многостаночник

Вы не то спрашиваете. Вот зачем вы спрашиваете? Хотите выучить что-то полегче?
На самом деле вы должны ответить на вопрос — какие программы вы хотите писать.
С академической точки зрения плюсы сложнее. Да, не в последнюю очередь из-за ручной работы с памятью. Но после нескольких месяцев практики вы привыкните и это не будет сложным.

Ответ написан более трёх лет назад
Нравится 6 4 комментария
два плюса (зачеркнуто) чая этому господину!

Да, не в последнюю очередь из-за ручной работы с памятью. Но после нескольких месяцев практики вы привыкните и это не будет сложным.

Под ручной вы понимаете смарт поинтеры или вы отстали лет на 15 и используете везде new delete?
Иван Корюков @MadridianFox

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

Иван Корюков, ну тогда согласен.

Джава — переносной ящик с инструментами неизвестного производителя. Плюсы — старый советский металлический лего-конструктор с болтиками и шайбами, к каждой из которой приклеен дробовик. Оба работают всюду. Но в плюсах прежде чем забить гвоздь тут нужно вырезать рукоять молотка, выплавить/вырезать боек, слепить все это вместе — а потом забить один-единстенный гвоздь. Или расколоть материк.
А если короче — в джаве автоматизировано 90% того, что в плюсах считается обычным делом пилить вручную. Да, это круче, но в разы дольше в разработке. Хотя, опять же, смотря с какой стороны, ибо Джава с ее BufferedReader reader = new BufferedReader(InputStreamReader(System.in)) тоже хороша.
О себе: начинал с JS -> Java -> C++ -> Python. Сейчас согласен с великой цитатой гугла: «Python — где можем, C++ — где должны».

Ответ написан более трёх лет назад
Нравится 3 1 комментарий

Nerevar86

Добрый день, знаю некропост, но всё же спрошу, изучаю принципы ООП выбрал Java, потом планирую перейти на C++, вообще насколько тяжело может дасться такой переход? Интересно услышать мнение опытного программиста

Свободный Добби

Чистый Си намного проще чем Java, а C++ сложнее чисто из-за метапрограммирования (шаблоны). Да шаблоны — очень мутная и сложная тема имхо. В плюсах (особенно в STL) их пихают везде где можно (даже где не нужно). Плюс всякие копирующие и move семантики тоже добавляют сложности. И да, про память — насколько я знаю (я не плюсовик, но немного знаком) в плюсах не особо много ручной работы с памятью. Там как и в других языках есть коллекции (типа std::vector и пр.) которые избавляют от ручного выделения памяти, а если все-же понадобилось выделять память самому — есть всякие там умные указатели (shared_ptr и т.п.) которые сами ее освобождают.

Ответ написан более трёх лет назад
Нравится 2 1 комментарий

Да шаблоны — очень мутная и сложная тема имхо. В плюсах (особенно в STL) их пихают везде где можно (даже где не нужно).

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

С++ сложнее джавы в плане метапрограммирования.

Все эти разговоры про сложность управления памятью — крупное преувеличение, само по себе управление памятью вещь весьма простая — нужно просто не забывать что её нужно освобождать. Хоть в джаве и есть сборщик мусора (т.е. в принципе джава течь как С++ не может) по факту плохо использующая память программа на джаве может жрать память как не в себя и постоянно вставать на очистку мусора, как по мне — никакой разницы с С++ программой которая будет течь и падать, С++ хотя бы падать будет быстрее, что поможет при отладке 🙂

Метапрограммирование в С++ это уже отдельная тема, там довольно много правил выведения типов, нет отладчика шаблонов и сообщения о простых ошибках могут быть очень многословны.

Еще C++ ругают на Linux

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

C++ Или Java — Какой Язык Программирования Выбрать?

Не знаете, какой язык программировния выбрать? C++ или Java? После прочтения этой статьи у вас не останется больше вопросов!

Обновлено: June 01, 2023

C++ Или Java - Какой Язык Программирования Выбрать?

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

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

Введение

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

Java

 c++ или java

Java был создан Джеймсом Гослингом и двумя его коллегами еще в 1991 году. Первоначально он основывался на синтаксисе языка программирования C, поскольку тогда это было нормой. Java — это язык программирования общего назначения. Это означает, что он предназначен для повседневных задач.

Одной из наиболее важных особенностей, которые выделяет язык Java при сравнении C++ или Java, является его слоган — «напиши один раз, запускай везде» (или WORA — “write once, run everywhere”, для краткости). Этот слоган призван подчеркивать универсальность Java — его создатели предполагали, что язык программирования будет применим для большинства задач программирования.

Уникальная адаптивность и универсальность Java сделали его языком программирования для многих компаний-разработчиков программного обеспечения по всему миру. Это особенно верно для разработки приложений под Android. Если сравнивать C++ или Java, язык Java выделяется своей хорошей репутацией среди различных разработчиков.

Большинство замечаний, направленных на язык Java, можно обобщить в три большие группы: скорость, возраст и безопасность. Тема скорости может стать неожиданностью — об этом упоминается не во многих статьях, где сравнивают C++ или Java, но язык Java имел большие проблемы, когда речь шла о скорости. Это может быть новостью для вас, потому что в настоящее время он считается одним из самых быстрых языков программирования! Такой вопрос вообще не уместен при текущих мощностях процессоров!

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

C++

c++ или java

C ++ был создан в 1979 году Бьярном Страуструпом. Как и Java, C ++ — это язык программирования общего назначения, предназначенный для повседневного использования.

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

Одна из заметных особенностей C ++ (и это будет весьма важно, когда мы будем сравнивать производительность C++ или Java) — это то, что он имеет практически несравненные уровни производительности. Большинство отраслевых экспертов сравнивают его с C. Кроме того, язык C ++ является легким с точки зрения занимаемой памяти, имеет ручное управление памятью и может использоваться на любой платформе.

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

Самые Полюбившиеся Статьи

Ищете более подробную информацию по какой-либо связанной теме? Мы собрали похожие статьи специально, чтобы вы провели время с пользой. Взгляните!

Что Такое Дополненная Реальность: Разбираемся в Работе AR

Что Такое Дополненная Реальность: Разбираемся в Работе AR

Понимание, что такое дополненная реальность будет важным для изучения новейших технологий. Прочитайте руководство, чтобы узнать необходимую информацию!

How to become a teacher: teacher in classroom

Как Стать Учителем: Со Степенью и Без Неё

Мечтаете стать преподавателем? Узнайте, как стать учителем со степенью и даже без неё, а также быть частью сообщества учителей.

Python Или C++: Что Лучше? Давайте Узнаем!

Python Или C++: Что Лучше? Давайте Узнаем!

После прочтения этой статьи у вас сложится полное понимание того, какой язык программирования вам лучше выбрать Python или C++.

C++ или Java. Схожесть и различие

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

Если бы вы спросили профессиональных программистов, что, по их мнению, является основным отличием C ++ от Java, они, вероятно, ответили бы вам, что дело в платформе. Язык C ++ зависит от платформы, а язык Java — наоборот независим платформы. Это имеет огромное значение для людей при выборе C++ или Java.

Сходство заключается в том, что язык Java является объектно-ориентированным, а язык C++ — объектно-ориентированным и процедурным, и это является основной разницей между ними. В последнее время ООП (или объектно-ориентированное программирование) стало нормой — большинство современных языков программирования сегодня полностью или частично объектно-ориентированы. Это позволяет языкам сосредоточиться на объектах, а не на процессах, повышая их эффективность и общую производительность.

Язык C ++ процедурный и это является уникальной особенностью этого языка программирования. Процедурное программирование фокусируется на процессах и функциях, которые затем выполняются набором команд, которые их активируют.

Итак, вот некоторые из ключевых моментов, которые определяют разницу и сходство между C++ или Java. Учитывая все вышесказанное, давайте найдем некоторые критерии для нашего сравнения, и тогда мы сможем перейти к самому анализу C++ или Java.

Критерии для сравнения

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

Три рассматриваемых критерия — производительность, популярность и зарплата специалистов. Давайте быстро пройдемся по ним, а затем перейдем непосредственно к сравнению C++ или Java.

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

Производительность

В некотором смысле, производительность является отправной точкой анализа. Это очевидно — если язык программирования может использоваться в любых задачах, он должен хорошо работать, верно? Как бы это ни было, не всегда все так просто. Некоторые языки ориентированы на другие аспекты производительности, — это просто способ их построения и разработки. Кроме того, даже несмотря на то, что язык программирования может быть неэффективным «на бумаге», на производительность влияют и другие переменные. Например, некоторые языки программирования могут быть разработаны для определенных конкретных целей и, следовательно, требуют меньшей производительности, чем их конкуренты (я говорю о C#).

Популярность

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

Представьте, что вы хотите выучить очень узкий язык программирования, скажем, для личного интереса. Теперь вы зайдите в Интернет и постарайтесь найти информацию, которая будет иметь отношение к вашему процессу обучения. Итак, вы гуглите этот язык программирования . Только обнаруживаете, что в Интернете практически нет информации о нем. Конечно, вы, скорее всего, найдете разрозненные фрагменты, но это не поможет в формировании всестороннего, полного понимания рассматриваемого языка. Это может быть крайне неприятно, но это то, что происходит, когда вы решаете изучать язык, у которого нет БАЗЫ — за сильным языком программирования стоит сильное сообщество.

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

Зарплата специалистов

Наконец, зарплата программиста. Возможно, вас не удивит, если я скажу, что разные специалисты по конкретным языкам программирования имеют разные зарплаты. Это зависит от множества различных факторов, но некоторые из основных — это сложность, спрос на язык, уровень квалификации программиста, потребности компании (работодателя) и т. д. Именно поэтому люди все больше обращаются к объектно-ориентированным языкам — они универсальны по своему дизайну и поэтому могут использоваться во многих различных ситуациях.

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

Сравнение

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

У какого языка лучше производительность?

Хотя оба языка программирования довольно различны по своему дизайну. Язык программирования Java и язык C++ считаются первоклассными с точки зрения производительности. Тем не менее, язык C++ немного быстрее — это потому, что код Java должен интерпретироваться во время выполнения, что делает процессы, выполняемые языком, более медленными. Однако когда дело доходит силы языка (возможностей), оба эти языка показывают себя хорошо, хотя и по-разному.

Какой из языков популярнее?

Не секрет, что и Java, и C++ очень известны и популярны. В то время , когда C++ доминировал на рынке, язык программирования Java начал набирать все большую популярность примерно в 2012 году. Сегодня язык программирования Java широко используется как более популярная альтернатива, хоть он не предназначен для такого широкого использования, как язык C++. У обоих языков есть свои поклонники, и есть множество информации о них, доступной каждому, кто ищет, какой из них изучить.

Преимущества

  • Простой в использовании
  • Предлагает качественный контент
  • Очень открытый в своих ценах

Особенности

  • Бесплатные сертификаты об окончании
  • Фокус на навыки науки о данных
  • Гибкое расписание занятий

Java vs C++. Что полезнее?

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

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

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

Комментировать
Решения вопроса 3
ProkletyiPirat @ProkletyiPirat

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

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

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

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

Ответ написан более трёх лет назад
Комментировать
Нравится 18 Комментировать
Знаю и умею всё

Графики langpop.com/,
если на википедии не забанили то еще сравнение
А вообще решите что именно писать собираетесь, просто учить язык смысла немного. А имея задачу в голове можно и язык под нее подобрать поудобней, я до сих пор всякие кодогенераторы на perl пишу, потому что для части задач он удобен.
Для просто для развлечения можно и brainfuck выучить.

Ответ написан более трёх лет назад
Нравится 2 1 комментарий
С жиру бесятся 🙂 Чем ASM плох для вынесения себе мозга путем крючкотворства с коммандами? :)))
LucemFerre @LucemFerre

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

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

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

Ответ написан более трёх лет назад
Нравится 1 1 комментарий

fixik228

А c++ прям не запустится?
Ответы на вопрос 9
DancingOnWater @DancingOnWater

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

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

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

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

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

Ответ написан более трёх лет назад
Комментировать
Нравится 24 Комментировать

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

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

Удивляюсь почему в сравнении Java vs C++ многие упоминают, что Java кросс-плафторменна. Си++ тоже кросс-платформенный ЯП. Программа написанная на нем может быть скомпилирована практически под любой платформой. Да, программу на си++ нельзя перенести на уровне бинарников, но часто ли вы видели универсальные бинарники?
Для Си++ есть множество очень полезных библиотек позволяющих писать красивый и быстрый GUI ( единственная известная мне хорошая GUI программа написанная на Джаве — Eclipse ). Большинство же десктопных приложений пишется именно на плюсах.
В новом стандарте появилась нативная многопоточность ( впрочем раньше никто не мешал использовать одну из множества кросс-платформенных библиотек для достижения тех же целей ).

Из основных недостатков си++ скажу что первые 2 года работы с этим языком программист больше вредит, нежели помогает. Это учитывая что он неплохо уже знает синтаксис и уже пишет на нем какие-то программы. Огромное количество скрытых ям, граблей, заряженный ружей — заботливо разложены создателями нескольких версий стандартов, в безумной мечте об обратной совместимости языка ( что конечно очень круто ).

Ответ написан более трёх лет назад
Нравится 4 7 комментариев

Мечта о совмещении несовместимых крутейших и привлекательнейших концепций вкупе с естественным желанием программиста использовать их все еще более мощна и богата на выкапывание на себе ям и котлованов, из которых потом проблематично выбраться, я думаю 🙂 Вообще, наверное, ад, когда в такую команду нужно включить начинающего программиста 🙂 За какое-то время они, конечно, выберут для себя единый стиль и набор средств и будут в их рамках неплохо понимать друг-друга, но каждый новичок — это ад для всех — и для новичка :))) Жуть :))) Никогда об этом не думал, всегда воспринимал его как тактический боеприпас для одиночки :))) Жуть, жуть, жуть :))) Избави боже :)))

Глупо, конечно, энтузиасту-любителю, давать советы профессионалу, но может быть Вам для новичков стоит краткий свод используемых Вами концепций и приемов создать? А еще вспомнить пару привлекательнейших вещиц, которые Вы никогда не используете, потому что они Вашу концепцию рушат или багам способствуют? Они бы, может, и быстрее в суть дела вникали и портили бы меньше 🙂 Ведь путей много, но как только Вы требуете от человека, чтобы он работал с Вами, становится важным только Ваш путь? 🙂

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

bogolt: То, что стандартов полно, это, конечно. Но Ваши подходы гораздо уже общих стандартов. А Ваши соображения, которыми руководствуетесь и, может быть, случайный неудачный опыт с какими-то из средств, который заставил Вас раз и навсегда их исключить, тоже уникальны для Вашей группы. Если задуматься, то внутри огромного пространства возможностей С++ длинные своды выделяют ограниченные, но значительные области. Которые гораздо шире того, назовем так, диалекта, который Вы создали для себя и используете. Едва ли Ваш диалект слишком уж широк. Скорее всего, Вы ограничиваетесь небольшим, но проверенным и засевшим в подкорках набором средств. И этот Ваш диалект, конечно, непонятен тем, кто говорит на другом диалекте. И длинные своды тут бессильны — Ваш диалект — надстройка над ними. Опиши Вы Ваш подход в виде короткого списка, дай простые и увлекательные примеры — Ваш код, который нравится лично Вам, потратьте пару дней на новичков, увлеките новичков своим видением — и, глядишь, веселее бы пошло обучение Вашему диалекту 🙂 А так, жуть, жуть — казнить нельзя помиловать — ужос 🙂 Не брать новичков Вы не можете, а брать морока 🙂 Очень Вам сочувствую 🙂

Десять — пятнадцать простых правил какими средствами Вы решаете проблемы. И пяток строжайших запретов 🙂 Например, за generic programming — на кол :)))

coodan: Теряюсь в догадках о том где я описывал свои подходы.
PS. Новичков люблю, с ними интересно

Так в том то и дело, что, получается, нигде 🙂 А ведь стоило бы 🙂 И легко бы было новичкам и интересно — интересно, потому что увидели бы сразу глубину профессионала 🙂 А легко, потому что не пришлось бы им Ваши правила учить методом погружения, а узнали бы они их от учителя 🙂

Jakeroid

Для саморазвития? Учите все что нравится. Любые знаний это не только информация, но еще и идеи, мысли, концепции и др. ваших предшественников.

Для работы? Какую работу хотите — такой стек технологий и выбирайте. Сравните вакансии и выберите тот набор, что вам по душе. Слишком много незнакомого? Попробуйте всего по немного и вы сами поймете к чему у вас душа лежит.

Фриланс? Еще проще. Берите Java или C# для программ настольных компьютеров или приложений под Android и Windows Phone. Эти языки и технологии похожи. Если хотите веб, то тут немного по другому. Если цель — заработать денег — то начните с PHP и быстрее придете к конверсии ваших усилий в деньги. Если хотите саморазвитие + фриланс. Можете писать на PHP и не стеснятся этого, но параллельно учите еще один язык. Можно Python / Ruby или те же C++ / Java.

Работа над какой-то задачей? Выберите тот язык, который больше подойдет.

Преимущества, которые выделил я для C++:
1. ООП вместе с преимуществами Си;
2. Компиляторы под все платформы;
3. Скорость.

Преимущества, которые выделил я для Java:
1. Кроссплатформенность;
2. Удобство;
3. Схожесть на C# (точнее наоборот, много пишу на C#);

Из последнего. Под Windows написал программу под Mac не имея оного. Поправил пару строчек и все работает.

Ответ написан более трёх лет назад
Нравится 3 2 комментария

dabich

Andrew Dabich @dabich Автор вопроса

Честно говоря, я работаю веб-разработчиком. =)
Просто решил развиваться ещё и в сторону мобильных и десктоп-приложений, расширять возможности. Ну и интересуют «за» каждого из этих языков чтобы ставить приоритеты.

Jakeroid

@dabich Ну основные за, которые могу выделить я допишу в вопрос.

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

Практичен ли С++ для говнокодерства? Нет. Он будет беспощаден. И в этой беспощадности его сила. Код, написанный идеально, будет работать идеально. Но где этот идеал? И сколько времени Вам понадобится, чтобы найти свое в С++ нуля?

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

Вместе с тем, не совсем согласен с ним же в том, что он упоминает STL несколько пренебрежительно. Уже один только STL, но не только базовые контейнеры вместо массивов, как его обычно используют, а во всей полноте его подхода, вместе с Boost, который его концептуально расширяет — вот удар для неподготовленного сознания. И вот мощь, которую необходимо обрести тому, кто желает играть в шахматы с гроссмейстерами.

Ответ написан более трёх лет назад
Нравится 3 5 комментариев

Вместе с тем, неверна и постановка вопроса. Едва ли спрашивающий, замечая, что неплохо знал С++ точен в своей оценке. Потому что С++ абсолютно живой. Отложив его на несколько лет и вернувшись к нему снова, я не узнал этот язык. Все старые книги стали бесполезны. Там первый край борьбы нескольких несовместимых между собой парадигм, концепций программирования. Которые сосуществуют в том смысле, что одинаково доступны тому, кто желает их использовать. И ставят перед ним выбор. Это очень большие возможности. Но сам выбор парадигмы неизбежен. Как неизбежно и полное постижение выбранной парадигмы. Потому что стыковка с другими парадигмами проблематично. Вы не сможете использовать объектный подход в полной мере используя темплейтное программирование. Это враждующие между собой лагеря и враждующие между собой программисты. Но тем не менее и то и другое есть внутри С++, одинаково доступное. Разные школы. Разные гроссмейстеры. Все в одном.

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

Про себя могу сказать так. Поняв истинные возможности этого языка, я отложил его для решения наиболее важных для меня задач. Постигнув в небольшой степени сложное, я по-новому оценил простое. Я увидел, что для большинства моих задач, особенно на стадии Concept Proof достаточно простого Excel с его наглядностью обработки данных, простыми и аррейными формулами, простыми макросами и удобными графиками. Распространенность платформы MS Office дает достаточную на первом этапе переносимость. Для по-настоящему сложных и важных задач у меня есть С++. Промежуточных между этими двумя крайностями задач передо мной пока не возникало.

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

Критерий же для того, чтобы определить, где достаточно Excel, а где пора переходить на C++, для меня очень прост. Как только я с досадой натыкаюсь на необходимость писать пузырьковую сортировку или другую подобную ерунду, STL сразу сам напоминает о себе. C++ сам требовательно стучится в двери.

И последний кирпичик, о котором совсем забыл. Реляционные базы данных. До сегодняшнего дня сам удивлялся, почему некоторые задачи, над которыми пришлось бы долго думать в С++, а потом мучительно отлаживать, легко, быстро и безошибочно решались внутри базы данных. Причем выбор этого инструмента во всех случаях был неосознанным и случайным — просто результат мне был нужен в виде базы данных, оттого и делал внутри. А сегодня неожиданно получил ответ.

Здесь автор книги раскрывает основное отличие декларативного языка SQL от тех языков, которые нам привычны и рассказывает об основных ошибках восприятия новичков и пришельцев из других языков и стилей:
az-design.ru/index.shtml?Support&DataBase&SQL/Celk.

SQL изначально ориентирован на работу с множествами. А следовательно, и задачи, ориентированные на работу со множествами, решаются им легко и быстро. Те задачи, которые меня удивляли, относятся как раз к таким.

Так что реляционные базы данных тоже очень неплохо бы добавить в список для самообразования 🙂

Java developer

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

Ответ написан более трёх лет назад
Нравится 2 1 комментарий

Я год занимался С++\Qt, но потом свалил с него в пользу Java, несмотря на выход С++11.

Заработать можно и там и там, С++ хорош но всё-таки он устаревает. Выберете Джаву — не пожалеете!

Ответ написан более трёх лет назад
Нравится 1 3 комментария

dabich

Andrew Dabich @dabich Автор вопроса
Спасибо, пока остановлюсь на развитии с java.

Андрей Дабич: Для личного развития Вам необходим С++. И необходимо понять и признать, что то, каким Вы его увидели и те глубины, которые оказались для Вас незаметны разделяет огромная пропасть. Это если говорить о личном развитии. А для практической стороны, Вы, неверное, с java неплохо за этот год познакомились, что-то простое накидать быстро сможете 🙂

Странно, что по поводу устаревания C++ не разразилось священных войн. Странно называть меняющийся до неузнаваемости язык, в котором происходит основное ломание копий между разными лагерями программистов, устаревающим 🙂 Да он на наших похоронах еще спляшет :))) Вдвойне странно, что при этом Джава подразумевается неустаревающей — это при том, что она теперь и не на каждом компьютере просто так из коробки работает :)))

afiskon

Ответ написан более трёх лет назад
Pantene742 @Pantene742
Pantene742 @Pantene742

Смотря где применять ? то там и полезнее. у джавы есть большой плюс. Она практический во всех сферах задействована, и хороша для определенных задач в каждой из сфер своего применения. Например в вебэ оч круто можно применить, сервер видеочатов, онлайн кинотеатра с псевдостримингом и рекламными паузами без джавы не написать. (Node, Python, Ruby с модулями и каракулями будут такое уметь, за php молчу). Но это не повод учить джаву. Так как крупный функциональный проэкт заказывают только у фирм. А для небольшого сайтика своему другу только php + WP или Laravel. Веду к тому что для мелких задач мощный инструмент также некоректен как и не мощный для сложной задачи. Java впринцыпе умеет делать все тоже что и C++, только суть джави в том чтоб пожертвовать производительность но отвязать пользователя от работы с памятью, и API операционной системы(WIN API, POSIX). JVM как бы слой между етими сложными вещами и твоей джава программкой. Вообще джаву юзают вовсю там где ненадо производительности ее оч любят работники гугла и яндекса. Когда дело доходит до критической производительности сразу слезы на глазах и «о нет опять этот C++ глюки при зборке, опенсорсовские возможно з глюками плагины к GCC или библиотеки для конкретных могут выдать 1000 ошибок при зборке + их мощные компы иногда собирают 10 часов проэкты СПП» из за этого рабочие гугла (ребята участвующе в разработке Unix и Java еще в SUN Microsystems) которым надоел C++ создали GO для своих задач. Да C++ мощный, его сделали мощным и впихнули туда все что только можно, но пожертвовали всем. Это инструмент для крупных корпораций где над глюком будуть ломать голову минимум 10 чел. Если есть желание таки попробовать то советую под WIN API писать в Visual Studio. там оч много стандартов. и получить уникальный глюк очень сложно. и как правило есть ответы на многие глюки. как то так.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

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

java

  • Java
  • +1 ещё

Как добавить записи в две таблицы в Hibernate?

  • 1 подписчик
  • 13 часов назад
  • 7 просмотров

Стоит ли изучать С и С++ после 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++:

  1. Вам нужно написать программу, которая тесно взаимодействовала бы с железом.
  2. Вы хотите изучить низкоуровневый язык программирования.
  3. Вы хотите следить за последними обновлениями в языках программирования.
  4. Вам хочется писать на “гибком” языке программирования, который предложил бы несколько решений проблемы.
  5. Вы хотите писать лаконичный код.

Зачем учить С

Обычно С предлагают учить перед С++, потому что кажется, что сперва нужно изучить менее развитый язык и понять концепции низкого уровня вроде 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, но на которые перейти было бы удобнее, чем на С-языки? Напишите в комментариях! ?

Следите за новыми постами по любимым темам

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

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

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