Переход с Java на С++
Доброго времени суток, я хотел узнать как можно переписать сервер LineAge II Java на С++.
Кратко о сути проблемы (возможно это не проблема просто я не понимаю что и как)
Когда мы компилируем исходники java-сервера создается «*.jar» архив, который в свою очередь запускается с помощью батника. Что хочу сделать Я, взять данные исходники и переписать их на С++, только я не могу понять какой проект мне надо создавать, обычный консольный режим ? и все файлы писать как header и подключать в основной «*.cpp» . вот что меня тревожит.
Объясните пожалуйста что да как, желательно на троллейбусном языке поскольку я новичок в этом деле. Решил заняться этим делом только для повышения профессиональных качеств Заранее спасибо.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Переход с С# на Java
Всем привет. У меня так сложились обстоятельства, что мне в течение недели нужно перейти с языка.
Переход с С++ на Java
Доброго времени суток, начну несколько издалека. Программирование начал изучать с С++, т.к. в.
Переход на Java
Здравствуйте! Как я не упирался, а пришло время, когда нужно начать писать на Java. Моим основным.
Переход по коду в Java
Всем привет! У меня вопрос: как переходить по коду в Java( по аналогии с goto в С++)? Есть код.
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
IceSqueez, Первое — в C++ нет работы с сетью в стандарте.
Есть зависимые от оси решения.
Есть буст и прочие фреймворки.
Второе — ну да, обычный консольный режим.
Третье — а что с хедерами и cpp тревожного? Декларация класса в хедере, описание функций в .cpp.
Стоит ли изучать С и С++ после 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/C# к C++?
В моем университете большинство моих занятий были в Java. Я также недавно изучил C# (и среду Visual Studio) на летней стажировке. Теперь я беру введение в класс компьютерной графики, и студент-выпускник, обучающий класс, предпочитает использовать C++ для доступа к привязкам OpenGL через GLUT.
Есть ли у кого-нибудь хорошие ресурсы о том, как сделать хороший переход от Java/C# к C++? Очевидно, указатели будут большой проблемой,но любые другие вещи, которые я должен искать? Любые учебники, руководства и т.д. было бы очень полезно!
Сведения об ответе
VERSUION
01:06, 25th August, 2020
Да, меня укусила та же ошибка. Университет, как правило, опирался на Java, а затем позволял вам выбирать язык, с которым вы хотели работать во время проектов.
Лучший способ-просто прыгнуть в воду. Начните с малого, делайте маленькие шаги и просто Google вещи, которые смущают вас, когда вы туда попадаете. Также найдите проекты, которые выпустили свой исходный код. Посмотрите, как они структурируют свои программы. В основном, просто возиться с понятиями. Существует много информации в интернете.
Сделайте это весело и возьмите книгу по разработке игр C++ , чтобы она не стала слишком быстро ошеломляющей.
Вот некоторые места, которые я нашел полезными во время обучения
Сведения об ответе
piter
14:21, 14th August, 2020
Если вы уже знаете Java/C#, я бы рекомендовал перейти непосредственно к C вместо C++. Согласно веб-сайту, GLUT имеет те же привязки для C, что и C++, поэтому вы должны быть все настроены. В любом случае, лучший способ узнать C-это купить и прочитать копию «The C Programming Language» и сесть с вашим компилятором C и запустить свой материал.
Сведения об ответе
PAGE
00:56, 2nd August, 2020
У меня была точно такая же проблема. Единственная книга, которую я смог найти, была «Pro Visual C++ 2005 for C# Developers» Дина C. Есть . Это хорошее чтение с отличными примерами, и я думаю, что угол, с которого приходит книга, вероятно, то, что вы ищете.
Сведения об ответе
SKY
19:45, 23rd August, 2020
Effective C++ by Scott Meyers-это отличная книга, которая поможет вам изучить C++. Дает вам обзор языка и вводит много ключевых понятий, которые вы будете использовать на протяжении всей разработки в основном любой программы C++.
Сведения об ответе
LIZA
01:04, 3rd August, 2020
Effective C++ by Scott Meyers-это отличная книга, которая поможет вам изучить C++. Дает вам обзор языка и вводит много ключевых понятий, которые вы будете использовать на протяжении всей разработки в основном любой программы C++.
Я люблю эту книгу во всех 3 изданиях, и это была одна из книг в классе, который я имел в качестве старшего в UT, но это просто не начальная книга. Вы можете чувствовать себя комфортно в C++ с гораздо меньшим количеством, хотя вы, конечно, не будете одним с компилятором, пока не прочтете работу Мейера.
Я не знаю, есть ли он еще в печати, но я нашел навигацию по C++ полезной, но мне также было очень удобно с указателями из Pascal. Конечно, я забываю, что 15 лет назад вы должны были узнать, что такое OOP, теперь это немного более предположительно. Так что, возможно, Мейер не выходит за рамки. Мысли?
Как перейти из C++ разработки в Java.
Работа – штука занятная. Бывает что пишешь в течении 10 лет на плюсах, знаешь их довольно хорошо, и, вдруг, херась, и ты стал ведущим Java-разработчиком. Причем, ты даже не хотел переквалифицироваться, т.к. работодатели разрывали на куски, да и вообще инструмент нравился. Но, раз уж ввязался, не разрывать же контракт из-за такой мелочи как новый язык программирования.
Тем не менее, после такой неожиданной «переквалификации», остро встает вопрос вхождения в тему. Да, языки похожи, но библиотеки имеют мало чего общего, да и вообще, надо бы понимать что ты делаешь. Конечная цель в моем случае, выглядит приблизительно так: сетевая низкоуровневая разработка + безопасность + немного WEB-морд (Spring + JSP).
Так как долгая разработка сетевых и распределённых приложений на плюсах дает довольно хороший бэкграунд, то, в качестве «Ведения в Java» пришлось прочесть/пролистать не так уж и много. Самое полезное, что я нашел:
- The Structure of the Java Virtual Machine. Глупо работать с инструментом, не имея представления о его внутреннем устройстве. Так что начать надо именно с этого.
- Memory Management in the Java HotSpotTM Virtual Machine. Терпеть не могу работать с каким-то языком, не зная как же язык обращается с памятью. На мой взгляд, это одно из основных знаний о любом языке программирования
- Java for C++ Programmers. Небольшое введение в язык. Все основные вопросы рассматриваются, писать код можно начинать сразу после прочтения.
- Effective Java , Second Edition . Joshua Bloch. Чем-то напоминает книги «Эффективное использование C++». По большому счету, чтобы понять Java после C++ этого полностью хватает.
- Java Network Programming . Elliotte Rusty Harold . Книга довольно бестолковая, тем не менее это лучшее что я нашел по сетям в Java. Читать не стоит, а пролистать — очень даже.
- Java Concurrency in Practice. Brian Goetz, … . Аналогично предыдущей. Читать много и муторно, но пролистать надо.
Собственно, это все, что на данный момент мне кажется нужным для нормального вхождения, т.е. выполнения первого пункта «сетевая низкоуровневая разработка». Как пройду ребус дальше — отпишусь.
Похожие заметки:
- Java + Ant + сетевой диск
- Методологии разработки ПО, лучшие книги
- Что не так с Java?
ABOUT THE AUTHOR
Alexander Stavonin
5 Comments → Как перейти из C++ разработки в Java.
- serb January 7, 2012 at 3:02 am Отсюда:
http://habrahabr.ru/blogs/java/67763/ 0. Java Language Specification 3rd Edition by James Gosling et al это самая главная книга, книга номер «ноль» этого списка, известная также как JLS. В третьей редакции описывается 5-ая версия языка. Я считаю, что каждый Java программист должен прочитать JLS хотя бы раз. Необходимо знать все возможности предоставленные языком для того чтобы использовать их самому и для того чтобы понимать код написанный другими. JLS это аналог JavaDoc или другой документации для используемых вами библиотек. Однако, в отличие от библиотечных классов, для которых документация обычно доступна из вашей среды программирования, по языку контекстная документация в средах программирования не предоставляется, поэтому JLS нужно читать практически «от корки до корки» хотябы на уровне оглавления и общего содержания каждого пункта. JLS является обязательной литературой при подготовке к сдаче экзамена на Sun Certified Java Programmer (SCJP). 1. Effective Java 2nd Edition by Joshua Bloch рассказывает как именно надо использовать язык Java, чтобы писать хорошие и понятные другим программы. Это сборник практических советов и шаблонов которые должны быть в репертуаре каждого Java программиста. Во второй редакции своего бестселлера Блох рассказывает об эффективном использовании всех возможностей 5-ой версии Java. Даже программист с многолетним опытом откроет в ней что-то новое и уж точно получит удовольствие от систематизации всех основных знаний про программирование на Java. 2. Java Concurrency in Practice by Brian Goetz et al(Must read если хотите писать хороший многопоточный код) необходима всем, кто пишет многопоточные приложения на Java. Её не нужно читать если вы пишете простые приложения а для бизнес-логики используете J2EE или другие каркасы приложений которые изолируют программиста от многопоточности. Однако, как только вам необходимо оптимизировать производительность или скорость реакции вашего приложения, то в современном мире от многопоточности вам не уйти. В этом случае книга Гоэтза будет вашим лучшим помощником. 3. Java Puzzlers: Traps, Pitfalls, and Corner Cases by Joshua Bloch, Neal Gafter это интересная книга которая состоит из интеллектуальных загадок исключительно на языке Java. Она раскроет перед вами все граничные случаи языка Java, научит как не надо программировать, чтобы ваш код был понятен. Книжка не обязательна для прочтения, но очень рекомендуется для подготовки к SCJP и для собственного удовольствия.
- Alexander StavoninJanuary 7, 2012 at 3:05 am Спасибо за дополнение
Кстати, про пункт 2 я написал, хотя, книга совершенно не впечатляющая.
- Alexei June 7, 2012 at 4:11 pm Ну если читать JLS, то и спецификацию JVM стоит прочитать для полноты картины.
- Alexander Stavonin June 7, 2012 at 9:26 pm Я ее начинал читать, но особо полезной мне она не показалась. Может позже вернусь к спецификации.