Как вы мысленно справляетесь с переходом от написания управляемого к неуправляемому коду?

Спецификация языка Java должна дать вам идею:

Прямым суперклассом типа массива является Object.

Каждый тип массива реализует интерфейсы Cloneable и java.io.Serializable.

blockquote>

Кроме того :

Объект - это экземпляр класса или массив.

blockquote>

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

13
задан Glenn Sandoval 30 April 2010 в 01:32
поделиться

12 ответов

У меня такая же проблема. Я использую совершенно разные цветовые схемы для Visual Studio (темный на светлом для C ++; светлый на темном для C # и VB).

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

22
ответ дан 1 December 2019 в 17:58
поделиться

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

RAII поможет вам, если вы будете использовать его постоянно.

2
ответ дан 1 December 2019 в 17:58
поделиться

Не торопитесь и дважды проверьте свою работу. Как только вы вернетесь в канавку, вы мгновенно разгонитесь.

1
ответ дан 1 December 2019 в 17:58
поделиться

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

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

Но в C ++ есть такие вещи, как шаблоны, функторы, алгоритмы, потоки, над которыми нужно немного подумать, потому что это не java-C #, как вы, возможно, привыкли. И, конечно же, использование стандартной библиотеки шаблонов и, в конечном итоге, повышение.

Но что ж, «хороший» разработчик C ++ должен знать, почему он не использует указатели :)

0
ответ дан 1 December 2019 в 17:58
поделиться

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

7
ответ дан 1 December 2019 в 17:58
поделиться

Мне все время приходится переходить от программирования SQL на основе Oracle к SQL на основе Sybase.

Что мне помогает, так это наличие той же процедуры, сидящей на моем дополнительном мониторе, со всеми хорошими вещами в ней, простым курсором, настройкой процедуры, операторами «если-то» ... весь допустимый код на этом языке, так что если я Забудьте, какая среда имеет вариант ELSIF или ELSE IF, я могу проверить свой источник шаблона, чтобы узнать.

0
ответ дан 1 December 2019 в 17:58
поделиться

Я сам с этим столкнулся. Это не просто переход с C# на C++ или с управляемого на неуправляемый. Это происходит при каждом изменении. У меня была эта проблема при переходе с VB на VC++, CC++ на C#, C# на VC++, и даже c# на VB.net (правдивая история - любезность ';').

Отличается только время, затрачиваемое на адаптацию...

0
ответ дан 1 December 2019 в 17:58
поделиться

Это одна из причин, по которой я гораздо больше работаю в VB.NET, чем в C #. Я не забываю, на каком я языке. Если у вас есть такая возможность, я рекомендую ее. На C # действительно нет ничего такого, чего нельзя было бы сделать в VB.NET, и радикально другой синтаксис помогает мне переключать контекст.

0
ответ дан 1 December 2019 в 17:58
поделиться

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

a) использование RAII оберток

b) систематическое использование boost shared_ptr

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

Плюс у нас есть хорошо отлаженная библиотека для выполнения блокировок, потоков и т.д.

Очень помогает

И, конечно, время от времени я жалуюсь на то, что

  • в C++ нет try finally
  • в c# нет детерминированных деструкторов

но - эй - это жизнь

4
ответ дан 1 December 2019 в 17:58
поделиться

Я чувствую вашу боль; когда я перехожу на c # -> c ++, я пишу код как пьяный.

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

1
ответ дан 1 December 2019 в 17:58
поделиться

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

0
ответ дан 1 December 2019 в 17:58
поделиться

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

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

Тогда переключение между управляемым и неуправляемым кодом станет тривиальным.

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

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

7
ответ дан 1 December 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: