LINUX.ORG.RU
Ответ на: комментарий от stpg

> А вот зачем жаберу знать асм?

Затем же, зачем и наСильнику - у Ява-машины тоже есть ассемблер.

Кроме того, Ява-программист - он что. всю жизнь будет Ява-программистом? Знание ассемблера нужно затем же, зачем в ВУЗах проходят "бесполезные" вещи типа процессорных и машинных архитектур, сетевых протоколов и системного программировнаия: чтобы не быть узконаправленным ${BUZZWORD}-кодером.

> Как часто Вы перепроверяете компилятор

Редко. Причем, обычно, в поисках ошибки.

> Сколько раз за последний месяц Вам приходилось отлаживатся без символов и исходных кодов

Тоже редко.

Ассемблер - это как парашют. Нужен редко, но когда уж нужен, то без него просто чехол.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>Блондинка - когда последний раз видела процессор ?
Когда его с гребешком перепутала?
>может он уже не нужен ?
Блондинке? Не нужен. Ей нужен ноутбук или по крайней мере монитор (с каким-то непонятным жужжащим ящиком в придачу).

И кстати вопрос в догонку - разве поддеожеваемость кода не важнее, чем небольшой выиграш в производительности?

stpg
()
Ответ на: комментарий от tailgunner

>Затем же, зачем и наСильнику - у Ява-машины тоже есть ассемблер.
А что ктото пишет на таком ассемблере?

>Знание ассемблера нужно затем же, зачем в ВУЗах проходят "бесполезные" вещи...
Уж лучше бы мне в вузе вместо ассемблера - читали какой-нибуть функциональный язык. Для развития больше бы пользы было.

>Ассемблер - это как парашют. Нужен редко, но когда уж нужен, то без него просто чехол.

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

Вот приведите примеры для чего Вам пригождается знание ассемблера (именно в работе), если Вы канечно не разрабатываете виртуальную машину или компилятор;)

stpg
()
Ответ на: комментарий от stpg

> Вот приведите примеры для чего Вам пригождается знание ассемблера (именно в работе), если Вы канечно не разрабатываете виртуальную машину или компилятор;)

понимать чем cdecl отличается от fastcall и stdcall потянет на знание ассемблера ? или допустим механизм работы buffer overflow ?

или это всё можно понять не зная, как работает процессор ?

anonymous
()
Ответ на: комментарий от stpg

> Там много про неблокируюшие контейнеры на многопроцессорных системах 
> на с++ (без асма).

прямую ссылку можно?
ассемблер вполне может быть скрыт под API
или могут быть использованы built-in расширения компилятора типа
__sync_fetch_and_add()
но сам понимаешь, они мало связаны с языком как таковым 

rei3er
()
Ответ на: комментарий от stpg

>> Затем же, зачем и наСильнику - у Ява-машины тоже есть ассемблер.

> А что ктото пишет на таком ассемблере?

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

> Вот приведите примеры для чего Вам пригождается знание ассемблера (именно в работе)

Работал на DSP, у которого компилятор Си не мог задействовать все узлы процессора, переписывал критические куски с Си на Ассемблер - в общем, как обычно.

Кстати, оба использования уже были упомянуты выше (и не только эти два).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Работал на DSP, у которого компилятор Си не мог задействовать все узлы процессора, переписывал критические куски с Си на Ассемблер - в общем, как обычно.

> Кстати, оба использования уже были упомянуты выше (и не только эти два).

Т.е. знание асма "в массе своей" нужно как знание химии повару - очень хорошо при обучении (помогает понять "почему так а не иначе", а не просто вызубрить), но на практике нужно в 0.[0]1% случаев :) (если обратного не требует специфика работы данного конкретного повара, но таких тоже 0.[0]1%)

Я "за" изучение асма (в курсе изученя процессоров), но напрочь не понимаю зачем _всем_ кодерам уметь читать (а значит и понимать) асмовский листинг "спросоня"

yyk ★★★★★
()
Ответ на: комментарий от yyk

> напрочь не понимаю зачем _всем_ кодерам уметь читать (а значит и понимать) асмовский листинг "спросоня"

К этому никто не призывал. Нужно знать достаточно, чтобы использовать _при необходимости_ (все признают, что необходимость возникает редко). Я и сам не потребляю "листинг спросонья" :).

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> понимать чем cdecl отличается от fastcall и stdcall потянет на знание ассемблера ?
А зачем тут ассемблер? Главное, что в cdecl - операнды пихаются в стек справа налево, а в stdcall - наоборот (как в паскале). То каким макаром компилер оптимизирует вызов и в какие регистры, что запихивает - в большенстве случаев знать не надо.

>или допустим механизм работы buffer overflow ?
Если человек хочет взламать программу - то асм нужен. Но для того чтоб писать секурный код (например тотже buffer overflow или integer overflow) можно обойтись и без асма. Прийняв за аксиомы некоторые правила программирования.

>или это всё можно понять не зная, как работает процессор ?

ну чтоб правильно использовать std::map достаточно знать юзкейсы, где он применим, его слабые и сильные стороны, но _совершенно_ не обязательно знать, что такое красно-чёрное дерево и не надо уметь его реализовывать. Или я не прав?

Точно также и с асмом - некоторые вещи можно брать на веру, что оно действительно так есть.

stpg
()
Ответ на: комментарий от rei3er

>прямую ссылку можно?
>ассемблер вполне может быть скрыт под API

например - http://groups.google.com/group/comp.programming.threads/msg/bbea1d0142adb5c7
Да - там используются встроиные функции - за которыми ассемблер. Но эти функции можно использовать не зная как они реализованы.

Но на самом деле я был не прав. Для lock-free - нужно знать, что на x86 CAS (Compare And Swap) - это одна инструкция процессора. Надо знать что такое memory barrier...

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

stpg
()
Ответ на: комментарий от stpg

> А зачем тут ассемблер? Главное, что в cdecl - операнды пихаются в стек > справа налево, а в stdcall - наоборот (как в паскале).

стек непосредственно связан с ассемблером ;) (через push/pop)

> Прийняв за аксиомы некоторые правила программирования.

применение без понимания не ведет ни к чему хорошему

rei3er
()
Ответ на: комментарий от stpg

> Но эти функции можно использовать не зная как они реализованы.

дело не в этом
какой бы уровень косвенности в конечном итоге не был, все равно изначально необходимо реализовывать базовую функциональность, причем не на ЯВУ ;)

rei3er
()
Ответ на: комментарий от tailgunner

> К этому никто не призывал.

Ну не совсем так, но похожее один перец требовал ;)

> Нужно знать достаточно, чтобы использовать _при необходимости_ (все признают, что необходимость возникает редко).

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

При этом можно _никогда_ больше с потребностью использовать асм не столкнуться :)

Я к тому, что спроси меня сейчас - знаю ли я асм (х86) - я честно скажу "нет", что тем не менее не запретит мне в кратчайший срок "вспомнить всё" при надобности ;)

yyk ★★★★★
()
Ответ на: комментарий от yyk

>> Нужно знать достаточно, чтобы использовать _при необходимости_ (все признают, что необходимость возникает редко).

> Т.е. нужно просто "в молодости" написать пару никому не нужных программулек, а потом преспокойно "забыть", зная что (где) в любой момент можно достать справочник...

Программы должны быть нужными, в остальном верно.

> Я к тому, что спроси меня сейчас - знаю ли я асм (х86) - я честно скажу "нет", что тем не менее не запретит мне в кратчайший срок "вспомнить всё" при надобности ;)

Это вопрос того, как определяется термин "знать" в данном случае.

tailgunner ★★★★★
()
Ответ на: комментарий от stpg

> В основном интересует язык C++

Да. Жаберы же и пишут. В рантайме генерят код, через BCEL. Благо, в жабе даже class GC есть, в отличии от .NET (и на этом её преимущества перед .NET заканчиваются).

anonymous
()
Ответ на: комментарий от anonymous

Блин клипборд сцуко, имелась в виду квота

> А что ктото пишет на таком ассемблере?

anonymous
()
Ответ на: комментарий от anonymous

Сборка мусора для кода классов + JIT-скомпилированного кода. Что не используется, то отправляется фтопку.

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

anonymous
()
19 июля 2008 г.

Железо в первую очередь. Суперкомпьютеры. Например сейчас заниммаюсь реализацией fft из библиотеки VSIPL под разрабатываемый процессор. Например, в библиотеках типа ALF(IBM Cell, http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/41838EDB5A15CCCD0025...) для инициации вычислений, библиотеке передаётся просто машинный код, который запускается на сопроцессоре, в случае Cell -- это SPU. А машинный код берётся, естественно, из ассемблера.

zerone
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.