Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Assembler или C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Советы начинающему http://www.cyberforum.ru/cpp-beginners/thread896705.html
Здравствуйте дорогие форумчане, отнедавна решил воплотить мечту своего детства и попробовать стать программистом, осенью на первый курс заочки, вследствие чего уже сейчас хочу выучить как можно...
C++ Вызов функции (шаблона) Здравствуйте. Есть шаблон, никак не получаются его вызвать. template <class T> void print(const T &a) { int b; cout <<"Input number:"; cin >> b; const unsigned... http://www.cyberforum.ru/cpp-beginners/thread896703.html
C++ Вычислить сопротивление по рисунку
Используя функцию, которая вычисляет супротивлення электрической цепи, который состоит из двух резисторов, вычислить общее сопротивление четырех проводников с электрическими супротивлення,...
Вычислить интеграл C++
Помоги пожалуйста))
C++ Наибольшее количество одинаковых элементов http://www.cyberforum.ru/cpp-beginners/thread896680.html
Составить программу для подсчета наибольшего количества одинаковых элементов, расположенных последовательно, в массиве для каждого из одномерных массивов Х и Y . Инициализацию, вывод элементов...
C++ Подсчет нечетных элементов Сформировать динамический массив В размера m × n из случайных целых чисел. Составить программу для подсчета произведения нечетных элементов двумерной матрицы В, используя функцию для обработки... подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15633 / 7143 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
10.06.2013, 11:24
Цитата Сообщение от YYwww Посмотреть сообщение
Так как быть и на чём начать писать и в какой стороне двигаться -- С++ или Assembler, для ядра, хотя бы.
* Ассемблер жестко привязан к платформе.
Написав программу под одну платформу, вы делаете ее почти непортируемой на другие.
Даже между "родственными" платформами, такими как, например, IA-32 и AMD64, существует
много принципиальных различий - разные размеры указателей, разные наборы регистров,
разные соглашения о передаче параметров и т.д. Это значит, что для поддержки 32-битной и
64-битной версий программы придется иметь две кодовые базы.

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

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

Для С++, напротив, имеется огромное количество библиотек на все случаи жизни,
используя которые, вы экономите значительное количество времени и сил.

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

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

* Вопреки распостраненному мнению, использование ассемблера в 99% не сделает вашу
программу быстрее. Современные компиляторы достаточно умны и умеют оптимизировать
код значительно лучше человека, не говоря уже о том, что делают они это намного
быстрее и точнее. Некоторые компиляторы, такие как Intel C++ Compiler, умеют
оптимизировать код под конкретную модель процессора, существует также двухпроходная
оптимизация (Profile-Guided Optimization), рассчитанная на сбор информации о
конкретных сценариях использования программы и улучшения по максимуму критических
участков кода, а еще масса различных инструментов профилирования и т.п., доступных
только для C, C++ и других языков высокого уровня.

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

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

Также существует мнение, что школу ассемблера, или другого низкоуровневого языка, в
любом случае нужно пройти. Человек, который это сделал, лучше понимает происходящее
"за кадром", да и вообще ему потом "сам черт не страшен". Я с этим полностью согласен.
6
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru