Я начал изучать С++, читаю щас Р. Лафоре ООП в C++, (кроме этого я программирую на (delphi, php и веб программирование) - эти у меня хорошо получаются языки, и я решил перейти на более серьезный язык, что бы писать программы с хорошей скоростью и развером. Темболее освоив его остальные языки будут легки как изучение html.
У меня знакомы не плохо программирует на C++, когда я попросил его показать что он пишет, он показал как программирует на C++, программы у него неплохие. НО на вопросы которые я ему задавал, например для чего ты написал gcnew перед строкой, на этот вопрос он не смог ответить, и сказал что видел примерах так пишется. И многое он не может объяснить зачем он это делает и для чего.
Он большенств моментов не смог объяснить.. .
По моему он грубо говоря говнокодер.
Я хочу знать при программировании что для чего пишу, что быстрее и что правильнее.
Что мне читать? что за литературу?
Например что быстрее ++iterator или iterator++ ?
При описании цыклов луче в ней переменную указывать или выносить за цыкл? я слышал что луче выносить переменную за цыкл так цыкл бысрее работает?
int i;
for(i =0; i<=10; i++)
Я бы хотел все такие нюансы понять что и почему.
Другие языки программирования и технологии
Изучение C++
Тебе надо изучить ассемблер, хотя бы на базовом уровне, чтобы понять, во что будут компилироваться программы. Что угодно, хоть того же Абеля. Цель - не научиться программировать на ассеблере (хотя это тоже неплохо было бы :) ), а увидеть, что именно делает та или иная операция в C.
gcnew выделяет память в зоне, доступной для сборщика мусора (garbage collector, gc). gc - уродливая вещь, лучше ею не пользоваться (какой смысл высчитывать такты и байты, если потом все равно gc будет долго и натужно проверять, не потерялся ли кусок памяти) .
>Например что быстрее ++iterator или iterator++?
Одинаково. Но если в сложном выражении, то скорее префиксная форма будет быстрее.. .хотя зависит от оптимизатора. Дело в том, что ++iterator - одна ассебмленая операция (увеличить на 1), а iterator++ -две (сохранить значение и увеличить на 1).
int i;
for(i =0; i<=10; i++)
будет работать с точно той же скоростью, что и
for(int i =0; i<=10; i++)
Но
int i;
for(i =0; i<=10; i++)...
for(i =0; i<=10; i++)...
будет капельку быстрее
for(int i =0; i<=10; i++)...
for(int i =0; i<=10; i++)...
- потому что не будет создаваться доп. переменная.
С другой стороны, захламлять пространство имен лишними переменным ради выигрыша в два такта - по-моему, глупо. Твою программу вряд ли запустят миллиард раз, поэтому выигрыш пикосекунды - ничто по сравнению с потерей минуты на отладку не очень очевидного кода.
>Я бы хотел все такие нюансы понять что и почему.
Я тоже :) . Всех нюансов не знает, увы, никто.
Да, и цикл пишется через И.
gcnew выделяет память в зоне, доступной для сборщика мусора (garbage collector, gc). gc - уродливая вещь, лучше ею не пользоваться (какой смысл высчитывать такты и байты, если потом все равно gc будет долго и натужно проверять, не потерялся ли кусок памяти) .
>Например что быстрее ++iterator или iterator++?
Одинаково. Но если в сложном выражении, то скорее префиксная форма будет быстрее.. .хотя зависит от оптимизатора. Дело в том, что ++iterator - одна ассебмленая операция (увеличить на 1), а iterator++ -две (сохранить значение и увеличить на 1).
int i;
for(i =0; i<=10; i++)
будет работать с точно той же скоростью, что и
for(int i =0; i<=10; i++)
Но
int i;
for(i =0; i<=10; i++)...
for(i =0; i<=10; i++)...
будет капельку быстрее
for(int i =0; i<=10; i++)...
for(int i =0; i<=10; i++)...
- потому что не будет создаваться доп. переменная.
С другой стороны, захламлять пространство имен лишними переменным ради выигрыша в два такта - по-моему, глупо. Твою программу вряд ли запустят миллиард раз, поэтому выигрыш пикосекунды - ничто по сравнению с потерей минуты на отладку не очень очевидного кода.
>Я бы хотел все такие нюансы понять что и почему.
Я тоже :) . Всех нюансов не знает, увы, никто.
Да, и цикл пишется через И.
На самом деле, после того, как ты написал в С++, происходит компиляция в машинные коды, там уже явно видно, как быстрее.. .
Чтобы знать, как работает процессор, надо ассемблером заниматься, там этот вопрос наиболее близко нужно знать...
Чтобы знать, как работает процессор, надо ассемблером заниматься, там этот вопрос наиболее близко нужно знать...
Мануалы и чужие исходники. То что ты с циклом написал - это нужно только для с совместимости с С без ++.Пихай смело переменную в цикл, если такой вариант не годный, то компиль это оптимизирует.
Если писать
int i;
for (i=0;i<10;i++)
то переменную i можна анализировать по выходу из цикла или еще раз ее где-то использовать.
Если же писать
for (int i=0;i<10;i++)
то переменная i будет доступной только в теле цикла, а за его пределами ее не существует.
int i;
for (i=0;i<10;i++)
то переменную i можна анализировать по выходу из цикла или еще раз ее где-то использовать.
Если же писать
for (int i=0;i<10;i++)
то переменная i будет доступной только в теле цикла, а за его пределами ее не существует.
Похожие вопросы
- Требуются ли знания C++ для изучения C#?
- Что делать после изучения C++?
- Какой компилятор C++ (c IDE) лучше юзать для изучения C++? (чтобы места на диске как можно меньше занимал)
- С чего начать изучение C++?
- Я знаю токо HTML что если я начну программировать с изучения C или C++ будет слишком тяжело?
- С чего начать изучение? C, C++, Java, Python, PHP, Perl, Lisp, HTML5, CSS3, JavaScript, MySQL, Adobe Flash
- Посоветуйте хорошую книгу по изучению C++..
- Какой из этих яп легче для изучения (C++/Java/C#/Python/PHP/JavaScript)
- Подскажите пожалуйста самые лучшие учебники и программы для изучения C,C++.
- Какой язык должен быть первым для изучения C# , C++ или pascal? Программирование