
Другие языки программирования и технологии
Что может ассемблер?
Я тут поссорился с одним умным человеком на том что ассемблер даёт больше возможностей чем другие языки. Я считаю что только ассемблер позволяет создать такую программу, которая может сама себя строить! Только на ассемблере можно сэкономить память, место, и производительность, причём в разы! Но он утверждает что ассемблер ни чуть не лучше языков высокого уровня, а оптимизация и ускорение программы не более 20%. Однако тема была важная, Искусственный Интеллект, и Я настаивал что только на ассемблере, языке низкого уровня, можно сделать нечто подобное. Однако, творить на ассемблере - довольно сложная задача, и Я задумался. . .Перечислите различия между ассемблером и другими языками, какие есть плюсы и минусы!


Многие языки и. среды исполнения позволяют генерировать код программы во время выполнения - это и Lisp, и Java и Python и масса других. Кроме того, существуют библиотеки, позволяющие генерировать код на стадии исполнения для таких языков, как C, C++.
А так - я согласен с Yurek. Поддержка и развитие программы на ассемблере весьма дорогая и непростая вещь
А так - я согласен с Yurek. Поддержка и развитие программы на ассемблере весьма дорогая и непростая вещь
Я честно говоря не программист, с языками знаком посредственно, но с учётом, что ассамблер язык низкоуровневый и сложный под него и делают более понятные языки оболочки, которые как мне кажется не настолько тонко могут повторять функции изначального языка
Обозначу общую суть данного вопроса.
__1. Ассемблер конечно же позволяет достичь самой высокой скорости выполнения кода.
__2. Трудоёмкость (здесь же подразумевается и время написания) написания программ на Ассемблере на порядки выше, чем это характерно для языков высокого уровня.
__3. Трудоёмкость написания программ на Ассемблере возрастает весьма нелинейно при увеличении сложности задачи. Это может быть квадратичная или инача степенная зависимость.
__4. Все современные программы весьма сложны, а задачи по программирования ИИ чрезвычайно сложны.
__5. Написание программы на Ассемблере отвлекает программиста от основной задачи на второстепенные, связанные с архитектурой аппаратной части компьютера, в основном процессора. Приходится продумывать все последствия каждой команды, на что повлияет, какие регистры что будут содержать в каждый такт выполнения программы и прочее.
__6. Программа с очень высокой вероятностью будет содержать ошибки, невыявленные на момент отладки. Исправление ошибок весьма трудоёмко ввиду сложности с чтением кода программы.
__7. Чтение программы сторонним программистом будет ещё более трудоёмким, а совместная работа нескольких программистов над одной задачей станет практически невозможной.
__8. Внесение даже небольших изменений в программу может оказаться настолько сложным (особенно спустя какое-то время после создания проекта) , что будет проще написать новый высокоуровный язык программирования и написать всё на нём.
__9. Не смотря на высокое быстродействие при выполнении простой программы, для сложной программы общая скорость выполнения может оказаться меньшей, чем для задачи, решённой на языке высокого уровня. Это вполне объяснимо, так как сложная программа на Ассемблере может бысть весьма запутанной и неоптимальной, поскольку программист в определённый момент поймёт, что либо он бесконечно оптимизирует код и никогда не выдаёт готовый результат, либо он выдаёт результат, допуская в программе какие либо упрощения и несовершенства.
_10. С целью ускорения выполнения программы, написанной на языке высокого уровня, в неё включают код на Ассемблере, который выполняет самые частовызываемые функции, тормозящие выполнение программы. Например, если в программе миллион раз производится умножение на 2, то заменив эту часть на код ассемблера, получится выигрыш по времени 1e6 x dt, где dt - выигрыш от выполнения одной операции умножения.
--
Так что сам думай кто из вас прав =)
__1. Ассемблер конечно же позволяет достичь самой высокой скорости выполнения кода.
__2. Трудоёмкость (здесь же подразумевается и время написания) написания программ на Ассемблере на порядки выше, чем это характерно для языков высокого уровня.
__3. Трудоёмкость написания программ на Ассемблере возрастает весьма нелинейно при увеличении сложности задачи. Это может быть квадратичная или инача степенная зависимость.
__4. Все современные программы весьма сложны, а задачи по программирования ИИ чрезвычайно сложны.
__5. Написание программы на Ассемблере отвлекает программиста от основной задачи на второстепенные, связанные с архитектурой аппаратной части компьютера, в основном процессора. Приходится продумывать все последствия каждой команды, на что повлияет, какие регистры что будут содержать в каждый такт выполнения программы и прочее.
__6. Программа с очень высокой вероятностью будет содержать ошибки, невыявленные на момент отладки. Исправление ошибок весьма трудоёмко ввиду сложности с чтением кода программы.
__7. Чтение программы сторонним программистом будет ещё более трудоёмким, а совместная работа нескольких программистов над одной задачей станет практически невозможной.
__8. Внесение даже небольших изменений в программу может оказаться настолько сложным (особенно спустя какое-то время после создания проекта) , что будет проще написать новый высокоуровный язык программирования и написать всё на нём.
__9. Не смотря на высокое быстродействие при выполнении простой программы, для сложной программы общая скорость выполнения может оказаться меньшей, чем для задачи, решённой на языке высокого уровня. Это вполне объяснимо, так как сложная программа на Ассемблере может бысть весьма запутанной и неоптимальной, поскольку программист в определённый момент поймёт, что либо он бесконечно оптимизирует код и никогда не выдаёт готовый результат, либо он выдаёт результат, допуская в программе какие либо упрощения и несовершенства.
_10. С целью ускорения выполнения программы, написанной на языке высокого уровня, в неё включают код на Ассемблере, который выполняет самые частовызываемые функции, тормозящие выполнение программы. Например, если в программе миллион раз производится умножение на 2, то заменив эту часть на код ассемблера, получится выигрыш по времени 1e6 x dt, где dt - выигрыш от выполнения одной операции умножения.
--
Так что сам думай кто из вас прав =)
Sasha Urmanov
А как же самостроительство программы по ходу выполнения? Как говорится "Сложно но можно. " Меня интересуют принципиальные отличия!
По-моему вопрос создания ИИ зависит далеко не от выбора между ассемблером/явой/сями...)
Похожие вопросы
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...
- Ассемблер сегодня и завтра.
- стоит ли изучать ассемблер, если программирую на Делфи? и вообще реально ли что нибудь хорошее, дельное, нужное написать
- Неужели ассемблер действительно проще чем C ?
- Ассемблер - за сколько его реально базово выучить?
- Ассемблер. помогите решить!!!
- Плюсы и минусы Ассемблера
- Какие преимущества сохранил Ассемблер к Си?