2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Программирование на ассемблере.
Сообщение27.12.2011, 17:18 
Заслуженный участник


12/07/07
4448
Я привык считать низкоуровневым программированием программирование на ассемблере или в кодах. Такое программирование раньше использовалось не только для написания драйверов и ядра операционной системы, но и для ускорения выполнения фрагментов кода. Низкоуровневое программирование неизбежно связано с особенностями железа. Написание драйверов — даже на языке высокого уровня — также связано с особенностями железа. В советских вузах связанные с архитектурой курсы, если только это не спецкурсы для узких специалистов, обычно сопровождались изложением ассемблера. Даже, если ассемблер был независимым курсом, в его рамках обычно давались некоторые начальные сведения о «железе» или «биосе». Поэтому естественно вопросы программирования на ассемблере и программирования аппаратно-зависимых вещей на языках высокого уровня размещать в разделе “Hardware”. Компиляторы языков высокого уровня (а иногда и сами языки) включают возможности низкоуровневого программирования. Противопоставление алгоритмическое программирование — низкоуровневое программирование, на мой взгляд, нельзя связать с противопоставлением алгоритмические языки — ассемблеры. Но видимо все согласятся, что целью введения алгоритмических языков была минимизация зависимости программирования от аппаратных особенностей, как для облегчения труда программиста, так и для улучшения переносимости программы. Т.е. в разделе «Программирование», по смыслу, должны обсуждаться программирование, не зависящее от железа, а в “Hardware” — им определяющееся.

Однако в учебных курсах, посвященных языкам высокого уровня, да и в практической работе, есть вопросы, связанные с включением ассемблера в код, написанный на языке высокого уровня (ЯВУ). Да и при попытках разобраться с особенностями работы компилятора конкретного ЯВУ, или при отладке на уровне ассемблера программы, написанной на ЯВУ, возникают вопросы, связанные с «железом». Такие темы раньше не переносились, и, на мой взгляд, их нецелесообразно переносить в “Hardware”. Действительно видит участник, что в разделе «Программирование» обсуждается Pascal, он и создает там тему «Как прилинковать ассемблерную процедуру к Паскалю». Ну и пусть: модераторам меньше работы по переносу, участникам — головной боли.

В разделе “Hardware” реже появляются новые темы и размещение тем, посвященных программированию на ассемблере, позволяет сбалансировать нагрузку на разделы. Например, в “Hardware” можно сделать прилепленной тему, посвященную литературе по ассемблеру. А в разделе «Программирование» сделать прилепленными темы, посвященные литературе по Си, Паскалю, … И это не приведет к тому, что вся первая страница будет полностью закрыта прилепленными темами.

В общем, действительно, хорошо бы добавить в описание радела «Hardware»: «…, программирование на низком уровне (в частности на ассемблере)» и, если возможно, внести уточнения в тему Правила выбора раздела для размещения новой темы.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение28.12.2011, 15:42 
Заслуженный участник


26/07/09
1559
Алматы
Спорить не люблю и не умею, но вопросы имеются. Как например быть с темами по системному программированию вообще? Вот например такая темка была про небольшую проблему начинающего разработчика ОС: Стек и bootloader. Вот куда её? Вроде проблема с ключем к компилятору, а вроде и про ассемблер...

Забавно будет наблюдать за сортировкой тем модераторами. :) А описание раздела обязательно нужно модифицировать.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение29.12.2011, 21:55 
Заслуженный участник


11/05/08
32166
То, что ассемблеры завязаны на железо -- это понятно. Непонятно другое. Железные проблемы -- они если есть, то возникают со спецификой функционирования именно железа (грубо говоря: перегреется там или не перегреется). Ассемблер же сам по себе -- это именно язык программирования, и место ему именно в программировании. Тем более что в подавляющем большинстве случаев речь идёт конкретно о PC-подобных архитектурах, и тут уж специфика железа вовсе не при чём.

Короче -- присоединяюсь со своим недоумением к ТС.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение29.12.2011, 23:31 
Заслуженный участник
Аватара пользователя


30/01/06
72407
ewert в сообщении #521455 писал(а):
Железные проблемы -- они если есть, то возникают со спецификой функционирования именно железа (грубо говоря: перегреется там или не перегреется).

Вы понимаете слово "железо" столь же узко, как e2e4, и столь же расходитесь в этом с общеупотребимым значением слова. Состав регистров, набор команд, способы доступа к памяти - это всё в неменьшей степени специфика функционирования железа, а ассемблер от них неотделим.

ewert в сообщении #521455 писал(а):
Тем более что в подавляющем большинстве случаев речь идёт конкретно о PC-подобных архитектурах, и тут уж специфика железа вовсе не при чём.

В данном случае "PC-подобные архитектуры" - и есть специфика железа. Если вы не в курсе, в вашем телефоне и в вашем броузере работает Java VM (и иногда Dalvik), не имеющая ничего общего с "PC-подобием", а под ней в телефоне ещё и ARM, со своим ассемблером. "PC-подобные архитектуры" всего лишь наиболее популярны в преподавании, хотя и здесь их положение не абсолютно. И не объяснять студентам, что то, что им дают, от специфики железа зависит, - было бы ошибкой.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 07:06 


21/03/06
1545
Москва
Munin писал(а):
Если вы не в курсе, в вашем телефоне и в вашем броузере работает Java VM (и иногда Dalvik), не имеющая ничего общего с "PC-подобием", а под ней в телефоне ещё и ARM, со своим ассемблером. "PC-подобные архитектуры" всего лишь наиболее популярны в преподавании, хотя и здесь их положение не абсолютно. И не объяснять студентам, что то, что им дают, от специфики железа зависит, - было бы ошибкой.


Пушкин писал(а):
Мы все учились понемногу,
Чему-нибудь и как-нибудь,
Так воспитаньем, слава Богу,
У нас немудрено блеснуть.


Munin писал(а):
В данном случае "PC-подобные архитектуры" - и есть специфика железа.

А Вы не поняли, что имелось ввиду, что уточнять спецификации PC-подобной архитектуры просто не требуется, а не то, что она свободна от аппаратных спецификаций вообще?

Munin писал(а):
Вы понимаете слово "железо" столь же узко, как e2e4, и столь же расходитесь в этом с общеупотребимым значением слова.

Ура, мои знания оценены на том же уровне, что и у уважаемого мной заслуженного участника ewert'а. Я польщен :appl:. Пусть у нас оценка "двойка" глазами, видимо, железячного "гуру" Munin'а, который вызвался оценивать, но все же :D .

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

опять цитата из Пушкина подходит... Munin, зачем Вы начали объяснять тривиальные вещи?

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 17:19 
Заслуженный участник
Аватара пользователя


30/01/06
72407
e2e4 в сообщении #521548 писал(а):
А Вы не поняли, что имелось ввиду, что уточнять спецификации PC-подобной архитектуры просто не требуется, а не то, что она свободна от аппаратных спецификаций вообще?

Не понял, а это аргумент, чтобы не помещать темы в раздел "Hardware"?

e2e4 в сообщении #521548 писал(а):
Munin, зачем Вы начали объяснять тривиальные вещи?

Затем, что пытаюсь не терять нить разговора. Из ваших изречений не видно было, что это для вас тривиальные вещи, скорее, выходило, что для вас "вопросы железа" - это питание, тепловыделение, синхронизация и гонки.

Знаний ваших я не оценивал.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 20:07 
Заслуженный участник


11/05/08
32166
Девочки, давайте жить дружно.

Я до сих пор так и не понял, какое отношение сугубо алгоритмические вопросы (а вопросы, относящиеся конкретно к ассемблеру, не важно к какому конкретно -- суть сугубо алгоритмические) могут иметь к конкретно железу.

Наверное, в силу своей недоразвитости. Ну так давайте меня лично (в качестве выхода из положения) прихлопнем и закроем наконец эту странную тему.

Годится?...

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 20:19 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Вопрос обсужден среди модераторов. Концепция разделения на подразделы будет скорректирована в соответствии с высказанными замечаниями. Вопросы алгоритмического характера будут возвращены в "Программирование". В раздел "Hardware" пойдут вопросы, которые действительно содержательно завязаны на работу с конкретным железом.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 20:54 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

ewert в сообщении #521700 писал(а):
а вопросы, относящиеся конкретно к ассемблеру, не важно к какому конкретно -- суть сугубо алгоритмические

Не понимаю почему вы делаете столь решительный вывод.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение30.12.2011, 23:18 


21/03/06
1545
Москва
PAV писал(а):
Вопросы алгоритмического характера будут возвращены в "Программирование". В раздел "Hardware" пойдут вопросы, которые действительно содержательно завязаны на работу с конкретным железом.

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

Munin писал(а):
Из ваших изречений не видно было, что это для вас тривиальные вещи, скорее, выходило, что для вас "вопросы железа" - это питание, тепловыделение, синхронизация и гонки.

Я просто пытался быть разнообразнее. Состав и разрядность регистров, способы пересылки данных между ними и памятью - ну совсем уж тривиально ИМХО. Извиняюсь за грубость, тем не менее.

-- Пт дек 30, 2011 23:29:24 --

P. S. Вопрос "ассемблера и железа" на самом деле может быть отнесен к таким, для которых граничные проявления эффекта - вполне легко отнести либо к классу А, либо к классу Б, а вот близкие к условной середине явления - практически невозможно дифференцировать. Ясно, что алгоритм пузырьковой сортировки (абы какой, на результат) - вопрос именно алгоритмический, и неважно, на асме ее писать, или на чем-то другом. Также ясно, что оптимизация mov AX, 0 и XOR AX, AX - вопрос ближе к железкам (если копнуть чуть-чуть). А вот написание оптимального алгоритма пузырьковой сортировки на x86 - это куда отнести? Нет тут грани, и быть не может. Более того, ассемблер конкретной архитектуры вполне можно считать спецификацией ее "железа" на каком-то уровне. А язык MIX (с) Д. Кнут - создан для объяснения алгоритмов, образования, никогда в железе воплощен не был, а по сути - тот же ассемблер.

 Профиль  
                  
 
 Re: Программирование на ассемблере.
Сообщение31.12.2011, 02:38 
Заслуженный участник
Аватара пользователя


30/01/06
72407

(Оффтоп)

e2e4 в сообщении #521742 писал(а):
Состав и разрядность регистров, способы пересылки данных между ними и памятью - ну совсем уж тривиально ИМХО.

Ну наверное. Однако, вот на Sparc регистры сдвигаются видимо для пользователя. На современных x86 доступно в какой-то мере управление предзагрузкой из памяти в кэш. Схемы страничной организации памяти тоже везде разные... Думаю, что это "тривиально" либо на совсем уж простом уровне, либо на совсем уж высокопрофессиональном, а так есть о чём поговорить.

e2e4 в сообщении #521742 писал(а):
А язык MIX (с) Д. Кнут - создан для объяснения алгоритмов, образования, никогда в железе воплощен не был

Я бы не исключал, что был, сделать его на ПЛИС или БМК - задача студенческого уровня.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

Модераторы: cepesh, Forum Administration



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group