Каков наилучший способ перехода с Java/C# на C++?


10

В моем университете большинство моих классов были на Java. Недавно я изучил C# (и среду Visual Studio) на летней стажировке. Теперь я беру класс Intro to Computer Graphics, и преподаватель grad, преподающий класс, предпочитает использовать C++ для доступа к связям OpenGL через GLUT.

Есть ли у кого-нибудь хорошие ресурсы о том, как сделать хороший переход с Java/C# на C++? Очевидно, что указатели будут большой проблемой, но я должен искать другие вещи? Любые учебники, руководства и т. Д. Были бы очень полезны!

Спасибо!

8

Да, я получил ту же ошибку. Университет склонялся к Java, а затем разрешил вам выбирать язык, с которым вы хотели работать во время проектов.

Лучший способ - просто вскочить. Начните с малого, сделайте детские шаги и просто вещи Google, которые вас смущают, когда вы доберетесь туда. Также найдите проекты, которые выпустили свой исходный код. Посмотрите, как они структурируют свои программы. В принципе, просто возиться с понятиями. В Интернете много информации.

Сделайте это весело и возьмите C++ game development book, чтобы он не стал слишком ошеломляющим.

Вот некоторые места, которые я нашел полезным во время обучения

http://www.cprogramming.com/

http://www.wikipedia.com

http://www.cplusplus.com/


4

Если вы уже знаете Java/C#, я бы рекомендовал перейти непосредственно к C вместо C++. Согласно веб-сайту, GLUT имеет те же привязки для C, что и C++, поэтому вы должны быть настроены. В любом случае, лучший способ узнать C - это купить и прочитать копию «языка программирования C» и сесть с вашим компилятором C и запустить ваши материалы.


2

Эффективный C++ от Scott Meyers - отличная книга, которая поможет вам изучить C++. Дает вам обзор языка и вводит много ключевых концепций, которые вы будете использовать во время разработки практически любой программы на C++.


2

Эффективное использование C++ Скотт Мейерс является большая книга, чтобы помочь вам выучить C++. Дает вам обзор языка и вводит много ключевых концепций, которые вы будете использовать во время разработки практически любой программы на C++.

Мне нравится эта книга во всех трех изданиях, и это была одна из книг в классе, который я имел в качестве старшего в UT, но это просто не стартовая книга. Вы можете стать комфортно на C++ намного меньше, хотя, конечно, вы не будете с компилятором, пока не прочитаете работу Мейера.

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


2

В Википедии есть статья о comparisons between Java and C++.

Вам не нужно беспокоиться о проверенных исключениях на C++, но вам нужно знать о const correctness.


2

Существуют два основных отличия: синтаксис и управление памятью.

В C++ у вас есть указатели, которые являются более мощными (или менее мощными в зависимости от вашей интерпретации мощности) объектные ссылки, о которых вы уже знаете о Java.

В Java вы могли бы сделать это:

Thing mything = new Thing(); // mything is an object reference 
mything.method(); 

В C++ вы могли бы сделать это:

Thing * mything = new Thing(); // mything is an object pointer 
mything->method(); 
delete mything; 

Синтаксическая разница очевидна: '->' вместо '' при вызове метода объекта из указателя на объект. В C++ вы должны освободить память явным образом, когда вы закончите с объектом. В конце дня вы делаете то же самое в C++ и Java, создаете объекты и вызывающие методы, помещаете бесполезные точки с запятой в конце каждой строки и т. Д. Неудивительно, что Python становится настолько популярным ?:

mything = Thing() # mything is whatever I want it to be 
mything.method() 

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


2

Я также полностью рекомендую Bruce Eckel's Thinking in C++. Фантастическая книга для уже опытных программистов, которые хотят попасть в умение C++.

Он достаточно любезен, чтобы сделать электронные версии своих книг available for free.


2

Я настоятельно рекомендую всем, кто изучает C++, читать Stroustrups «Язык программирования C++». Мейерс и Эккель имеют отличные вещи, но ничто не сравнится с обучением парня, который решил, каким должен быть язык и как он предназначен для его использования.


2

У меня была такая же проблема. Единственной книгой, которую я смог найти, была "Pro Visual C++ 2005 for C# Developers" by Dean C. Wills. Это хорошее чтение с отличными примерами, и я думаю, что угол, из которого приходит книга, вероятно, то, что вы ищете.


1

Для управления памятью вам понадобится совершенно другое чувство. Также подумайте о том, чтобы освободить все, что вам больше не нужно. В Java и C# вы просто отпускаете свои объекты, и память убирается для вас - вы не можете сделать это в CPP