Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Насколько реально востребованы навыки программирования на ассемблере

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Насколько реально востребованы навыки программирования на ассемблере?

Имеется в виду не допотопный ассемблер под MS DOS, а версии под новейшие аппаратные и программные платформы, например под 64 bit Vista и 64 bit Linux.

А то практически во всех ВУЗах на программистских факультетах преподают этот язык, а в списке требований к вакансиям я его встречаю очень редко?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Химик нам раскажет как на ассемблере писать, беспезды...

2hellip
DSP від АД, наприклад, мають асемблер, подібний на С.

писати на ньому — шо вірші складати

Они объяснили, что там все равно чистая математика и в С нету смысла.

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

Встретил на Харьковском ABC ребят, которые пишут софт для ДСПшников мобильных телефонов. Был искренне удивлен, что на делают это на голом асме. Они объяснили, что там все равно чистая математика и в С нету смысла. Такая вот фигня...

И почему я не удивлен?: -)

Это ДОУУУУУ! [орет и сталкивает ногой клавиатуру со стола]:)

Ну где-то 1.5к Вы имеете, но для жизни в Киеве в съемной квартире это не много и таких как Вы в этом городе полным-полно.

Тихо. Спокойно. Всем ховац*ц*а в жыто. Антон тут уже неоднократно заявлял, что собирается к мелкомягким в Париж. Вот и maxdz может подтвердить мои слова:

Зачем ему жена, если у него квартира в центре Парижа
По сути вашего замечания: 1.5 к для жизни в Киеве в съемной квартире в пределах Малой Окружной вполне достаточно.
***
Как и следовало ожидать, к девятой странице вопрос
Насколько реально востребованы навыки программирования на ассемблере
плавно трансформировался в
Можно ли считать нищебродами тех, кто получает менее 2.5К, и хватит ли этого для красивой жизни в Киеве

И почему я не удивлен?: -)

> а жены нет

Зачем ему жена, если у него квартира в центре Парижа, да яхта на Женевском озере? Неужто, некому будет в старости горшки за ним выносить?:)


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

Типа: чем больше капусты настругал, тем больше жизнь удалась.?

Денис прав. Зарплата определяет не «синиорность», а степень аутизма. Пока свободные старперы-аутисты, годящиеся мне в отцы, не хотят работать нужное количество часов, мучаются совестью, наслаждаются работой и просто «довольствуются текущей ЗП» нормальные люди наслаждаются жизнью...

И еще одно, как правило, хвастаются о денежности своей работы те, у кого денег-то и нет.

У богатых есть одно правило: "Деньги любят тишину. А большие деньги — гробовую тишину."©

Антон, согласитесь, Вы — пока еще не синьор в области программирования. Ну где-то 1.5к Вы имеете, но для жизни в Киеве в съемной квартире это не много и таких как Вы в этом городе полным-полно.
И на будущее: «синьор» от «не синьор» отличается уж чем-чем, но только не по уровню ЗП и тому есть огромное количество причин, Вот только несколько из них:
— человек получат 40 уе в час (что есть около 7000 уе в мес), но он не хочет работать полный рабочий день, что может сократить его месячный доход до 2500−3500 уе в мес. — многие синьоры работают за 1000−1500, хотя стоят 10 000 — 15 000, просто они этого не знают, а роботодатель этим пользуется, ровно как Люксофт пользуется сегодня Вами; — некоторых просто совесть держит, они не хотят все и вся бросать в текущей конторе ради лишних 500 уе. — некоторым нравится та работа, которой они занимаются в текущей конторе и они не хотят страдать багофиксингом или быть болтиком в другой конторе, но за большие деньги; — кого-то устраивает и текущая ЗП, которая нормальна для его региона, а ехать за три-девять земель он не желает или не может (жена, дети)...
и т. д. и т. п.

Хотя не спорю, те у кого цель всей их жизни бабки — этого достигают, но для этого необязательно кодить на Java — с таким же успехом можно и шмотками торговать.

2hellip
як каже мій малий:

«Дід про хрін, а баба про фіалки»

Тру ельфи (зі знанням ДСП або без) працюють тоді коли їм хочеться над проектами які їм цікаві і за ту винагороду, яку вважають достойною.

"Чжу Пинмань учился убивать драконов у Чжили И. Он извел все семейное состояние, составлявшее тысячу золотых, но за три года в совершенстве овладел этим искусством. Одно было плохо: за всю последующую жизнь он так ни разу и не воспользовался приобретенными навыками."©

В вашем возрасте я буду точно больше получать =)

Какой оптимист. А вы уверены что доживете до возраста Майка? (это не угроза... наверно:))

2Антон
Зрозумій одне,
Тру ельфи (зі знанням ДСП або без) працюють тоді коли їм хочеться над проектами які їм цікаві і за ту винагороду, яку вважають достойною.
А якщо ти залежиш від з/пл яку дає дядя — ти, згідно нових формвулювань ти — робоча сила, або згідно старих — раб.

Власне «робота», «робити», «робітник» — всі вони походіть від слова раб.

2Mike Gorchak
[/offtop on]
В вашем возрасте я буду точно больше получать =)
Вы же не знаете сколько мне лет — хотя если захотите, то сможете найти.
Кстати, я никогда не утверждал что получаю 2, 5к. Более того, политика Люксофта (и других больших компаний) не одобряет разглашение зп. Таким образом, я не могу ни подтвердить ни опровергнуть что я получаю 2, 5к.

[/offtop off]

Мне оч. нравилось как 2 года назад толпы таких сеньеров бегали по Киеву как угорелые и работу искали, хотя бы на 1к. Причем некоторые из них были мегасеньеры — они получали 4к и 5к..., а потом че-то не пошло у них вдруг... халявный спонсор пропал:)

ПО-моему трусиньоры никогда проблем с работой не испытывали, даже в кризис. Может быть у эльфов со знание DSP и прочего проблемы с работой были, но толковые джависты и дотнетчики даже в кризис были нарасхват.

Ви коли-небудь загляньте в екран касира ж-д каси, коли квиток на поїзд купляєте. Я не знаю, на чому та Сирена написана, але символьний екран — явно не сілверлайт
А кстати...
en.wikipedia.org/...of_Silver_Light

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


Ведь мы ничего вообще не знаем и знать не хотим. Клепаем свои быдлоформочки и получаем по 2.5к нахаляву...
[/flame on]
Потому только 2.5к и получаете, ибо ничего не знаете:)

[/flame off]

Автор фразы я — можна не шукати

Ну и че, твое мнение на сей счет осталось неизменным?: -)


Ящко ти заробляєш менше $2500 — ти не сенйор (автора фрази шукай десь тут на ДОУ)

Мне оч. нравилось как 2 года назад толпы таких сеньеров бегали по Киеву как угорелые и работу искали, хотя бы на 1к. Причем некоторые из них были мегасеньеры — они получали 4к и 5к..., а потом че-то не пошло у них вдруг... халявный спонсор пропал:)

2flyman

Автор фразы я — можна не шукати =)

А вот с этого места немного поподробнее, при чем тут преобразование Фурье и как вы его в 30 строк воткнете?

FFT часто используется в аппаратуре связи (например OFDM), а асемблеры разные бывают;). Вот, например, FIR фильтр на одном из них:

rep 256 mac x0, y0, a x: (r0) +, x0 y: (r4) +, y0

вот, скоро появится поле боя для адептов низкоуровневого программирования

Компания Intel объявила о фундаментальной смене подхода к обеспечению безопасности на всех своих платформах, построенных на базе архитектуры x86. Вместо традиционных методов, реализованных в современных антивирусных продуктах для Windows, компания Intel предлагает на аппаратном уровне запретить исполнение любого кода, если этот код не удостоверен подписью от известных и уполномоченных организаций. С помощью своей фирменной технологии vPro, которая будет присутствовать во всех новых продуктах с архитектурой x86, Intel планирует предложить производителям и пользователям готовую инфраструктуру наподобие нынешней инфраструктуры для мобильных устройств, взять хотя бы аппараты Apple или Android. В предлагаемой инфраструктуре будет присутствовать магазин приложений и независимый орган сертификации. Таким образом, пользователи устройств на базе компонентов Intel смогут запускать на своих компьютерах (или другой технике) только те приложения, которые официально одобрены производителем устройства или другими уполномоченными сторонами. В роли органа сертификации приложений будет выступать компания McAfee — ее специалисты будут удостоверять безопасность приложений для тех или иных платформ.

2.5к+ уе в мес. — нормальный доход для ITшника,

Ящко ти заробляєш менше $2500 — ти не сенйор (автора фрази шукай десь тут на ДОУ)

> кто же врёт: отладчик, компилятор

Kомпилятор так интерпретирует «bool». Сложно сказать, баг это или фича, т.к. в таких тонкостях стандарт и описание компилятора, пока не изучал.

2.5к+ уе в мес. — нормальный доход для ITшника, живущего далеко за пределами Киева. Тем более, как я понимаю, немолодого.

В Киеве немало людей кодит за вдвое меньшие деньги. А люди постарше в большинстве своем вообще за копейки работают.

maxdz, так кто же врёт: отладчик, компилятор или; I)

> и там можно добиться неодинакового смещения относительно разных сегментов данных безо всяких багов

В приведенном мною примере, фишка в другом. VC++ представляет встроенный тип «bool», как байт. При этом, если ты ему присваиваешь «true» / «false», этот байт устанавливается в 1/0, соответственно. Но когда этот байт инициализируешь извращённым образом (скажем, как у меня в примере), сравнение равенства не проходит, т.к. содержимое байтов неодинаковое (несмотря на то, что формально обе переменные будут «true» и отладчик тоже их покажет, как «true» )

> і з понеділка іде на інтенсивний курс французької

Краще, опанyй німецьку — більше користі та можливостей буде. Тим більш, якщо працюєш y ембеді.

2Денис

Боюсь большинство пишущих здесь типа «программистов» банально не понимает, как устроен компьютер с которым они ежедневно работают, сколько там стоит внутри процессоров, и как они взаимодействуют, как устроен мобильный телефон, как передаются данные через узкий радиоканал на скоростях в неск мегабит в секунду, почему телефонон может работать неделями без подзарядки, на чем основана электроника в современных автомобилях, самолетах и космических кораблях и т. д. и т. п... раз для них существуют только Java и C#, а все остальное скоро вымрет:).
Есть разные приложения, у них разные задачи, для решения этих задач используют разные методы и соответственно разные языки.

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

Куда уж нам говнокод-копипастерам и формошлепам против д’артаньяна в белом плаще.

Ведь мы ничего вообще не знаем и знать не хотим. Клепаем свои быдлоформочки и получаем по 2.5к нахаляву...

Муха, иди лучше на интенсивный курс по джаве — толку больше будет =))

Кто-то месяц парится с 30 строчками преобразования Фурье на ассемблере — его задача, чтобы программист на С# работал с файловым сервером

А вот с этого места немного поподробнее, при чем тут преобразование Фурье и как вы его в 30 строк воткнете?

Как комментарий, о знании реализации типов данных на платформе.:)
(хотя, довольно бредовая ситуация, как по мне, которую я отношу к “багам” компилятора).

ну как сказать, я вот хотя и мало что смыслю в асме, но в школе пионервожатая из народознавчої світлиці говорила, что и там можно добиться неодинакового смещения относительно разных сегментов данных безо всяких багов, вот так примерно:

cseg segment 'code'
assume cs:cseg, ds:data1, es:data2, ss:stack
main proc
      mov  ax, data1
      mov ds, ax
      mov ax, seg val2
      mov es, ax

mov ax, val1
      mov bx, val2
      mov ax, 4C00h
      int 21h
main endp
cseg ends

data1 segment 'data'
     val1  word  1001h
data1 ends

data2 segment 'data'
     val2  word  1002h
data2 ends

stack segment para stack 'stack'
     byte 100h dup('s')
stack ends
end main

пан флайман ложив кодити дешевше чим за 2куе5 в місяць і з понеділка іде на інтенсивний курс французької
Ага, квебекскую визу хотим?
Осторожно.

Канада, как тут уже неоднократно отмечали, ужесточила политику в области иммиграции высококвалифицированного персонала. Les territoires interdits, parsemes de neiges éternelles, так сказать.

пан флайман ложив кодити дешевше чим за 2куе5 в місяць і з понеділка іде на інтенсивний курс французької

Для возраста пана Мухи 2.5к уе звучит конечно... эээ... гордо!

Пан flyman кодит контроллеры на ассемблере за миску супа и лютой ненавистью ненавидит и лютой завистью завидует говнокодерам зашибающим бабло после прочтения одной книжки =)

пан флайман ложив кодити дешевше чим за 2куе5 в місяць і з понеділка іде на інтенсивний курс французької

Пан flyman кодит контроллеры на ассемблере за миску супа и лютой ненавистью ненавидит и лютой завистью завидует говнокодерам зашибающим бабло после прочтения одной книжки =)

Куда нам жалким джаваговнокодерам до великого Вас, да святяться... и т.д.

Низький поріг длявходу жабістів/шарпістів, відносно-великі з/пл, от і результат — прогерів зара, «як грязі», або як колись бухгалтеров/економістів/юристів.

Лови момент і рубай бало, поки є момент, та думай про те, чим будеш займатись у майбутньому, чи ти думаєш «ета музика будет вечной»?

У каждой платформы есть свои ньюансы, и программист это должен учитывать. Просто пример, компилятор GCC, платформа PowerPC, какое значение будет возвращено в результате выполнения данного кода:

Не стоит игнорировать warnings компилятора и всё будет хорошо.;)

2Denis
Вы, судя по всему, перфекционист-максималист =) с возрастом пройдет, не переживайте.
Класс программиста не зависит от инструмента скорее от умения им пользоваться. Плотник делающий рубанок не хуже и не лучше плотника делающего рубанком стул, у них просто разная работа и разные навыки.

Но вы конечно гуру — это да. Куда нам жалким джаваговнокодерам до великого Вас, да святяться... и т.д.

2 Soft: речь шла о концепции написания кода на ассемблере, которая впринципе не меняется, а не о конкретных процессорах и их ассемблерах.

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

Ассемблера как языка не существует. Он зависит от процессора. На разных процессорах разный ассемблер.

Впринципе да, для абстрактного программиста ПК знание ассемблера не просто бесполезно, а даже опасно:).
Более того, для многих матерых Java программистов зачастую является новостью тот факт, что ресурсы памяти оказывается ограничены и их бывает не хватает (даже на ПК), та и вообще сам факт существования памяти — это новость... регистры процессора — для них это как конденсаторы на плате. Какой там ассемблер и архитектура железа, когда под тобой дюжина виртуальных машин, программных интерфейсов и тонны левого кода. Хочешь отправить видео-ролик в Лас-Вегас — вызови функцию. Хочешь отправить ракету в космос — вызови функцию. А что лежит за этими функциями и библиотеками уже редко кого волнует.
Возможно, по этим причинам программистов Java и им подобных зарубежем готовят уже не в ВУЗах, а в специальных колледжах. Впринципе, и у нас организуются «школы» для различных людей, где можно за пол года при желании стать классным С#, PHP, Java программистом и срубать штуку-две, а то и три-три с половиной зелени в месяц.
Но это не исключает необходимости нормальных программистов, ведь все эти API, VM, драйвера и т. д. кто-то должен писать, я уже молчу о встраиваемх системах, вариаций которых миллион и которых значительно больше чем ПК. Здесь если вы не знаете принципов написания программ на ассемблере, то вы не программист.
Ну и наконец, ассемблер — самый старый способ программирования (если не говорить о конкретном проце, а о концепции языка в целом), ведущий начало с первых процов. С тех пор было выдумано много языков: Cobol, Algol, Fortran, B и т. д. Где все эти языки сейчас? Кто-то ими пользуестя? Вот подобное будущее ждет большинство современных «модных» языков — их заменят еще более «модные»:).

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

Это уже зависит от стандарта языка. Если постинкремент для каких-то вариантов использования C/C++ в стандарте не специфицируется (т.е. результат такой операции, может быть разным, для разных компиляторов) — то это уже приколы языкa/компилятора, а не платформы.

Как раз это и есть «прикол» платформы. Потому что используя signed char по-умолчанию, компилятор будет генерировать неоптимальный код для этой платформы, и как раз из-за ограничений платформы,

Думаю для всех адекватных людей так и осталось загадкой какое отношение имеет неопределенная стандартом знаковость/беззнаковость чара к знанию архитектуры.

а не наоборот, потому что это неопределено стандартом.

Кстати, прикол из серии «как тру может быть неравен тру»:)

MS VC++ 2005:

bool bVal1 (true);

char nVal (2);

bool bVal2 (*(bool*)&nVal);

if (bVal1 == bVal2) //здесь bVal1, bVal2 равны "тру", но внутрь условия мы не попадём ;)
{
}

Как комментарий, о знании реализации типов данных на платформе.:)

(хотя, довольно бредовая ситуация, как по мне, которую я отношу к «багам» компилятора).

Думаю для всех адекватных людей так и осталось загадкой какое отношение имеет неопределенная стандартом знаковость/беззнаковость чара к знанию архитектуры. «Знатоков архитектуры», которые пишут такую херь потому что уверены что на их целевой платформе оно будет работать определенным образом надо увольнять с волчьим билетом.

Ну и в итоге получилось быстрее? Если да, то на сколько?

да наша ф-ция на 40 процентов (в среднем) быстрее стандартной memcpy работает. ну это если объем копируемой памяти более 32 байт. Если копируется несколько байт (для строк, например), то выгодны нету.

Мы gcc под линух юзаем.

В таких случаях проще купить Intel C/C++ компилятор и не знать проблем...:)

Хороший компилятор, но тут ключевое слово — купить.

Ну и потом, я не знаю, а как на счет преимущества интеловского копмилятора на АМД процах?

> компилятор GCC, платформа PowerPC, какое значение будет возвращено в результате выполнения данного кода
Это уже зависит от стандарта языка. Если постинкремент для каких-то вариантов использования C/C++ в стандарте не специфицируется (т.е. результат такой операции, может быть разным, для разных компиляторов) — то это уже приколы языкa/компилятора, а не платформы.

Хотя, могу предположить, что отсутствие «жёсткой спецификации» каких-либо вещей языка, может быть связано со сложностью одинаковой реализации для всех платформ.

В нынешних же условиях Винды — это всё заменено вызовами «нативного» АПИ и библиотеками, типа ДиректХ, ОупенГЛ, етц. В таких условиях, знание архитектуры, как минимум, бесполезно. Может быть и вредно, если чел «от многих знаний», начинает пользоваться вещами платформы/языка, которые не являются стандартными/могут быть изменены впоследствии.

Все равно идёт заточка под платформы, от этого никуда не деться. Начиная от маркетинга, что у нас всё работает быстрее, заканчивая тем, что всё действительно должно работать быстрее, ибо так надо:) И затачивают игрушки под конкретные видеокарты и даже под конкретный драйвер... и так далее...

У каждой платформы есть свои ньюансы, и программист это должен учитывать. Просто пример, компилятор GCC, платформа PowerPC, какое значение будет возвращено в результате выполнения данного кода:


int main()
{
    int sum=0;
    char idx;

for (idx=7; idx>=0; idx--)
    {
        sum++;
    }

return sum;
}

Могу привести различные куски кода, которые будут работать неправильно под ARM процессорами, etc, etc, etc…

> Естественно, те кто понимают, находятся в более выиграшной позиции по сравнению с теми, кто не понимает... Точно так же и в программировании...
При решении обычных задач — редко бывает необходимо знание архитектуры. Скажем, в 90-х когда многие задачи решались под ДОСом, разработчику приходилось иметь представление об организации памяти, работе в защищённом/виртуальном режимax, организации видеопамяти (для низкоуровнего, но быстрого рисования), итд.
В нынешних же условиях Винды — это всё заменено вызовами «нативного» АПИ и библиотеками, типа ДиректХ, ОупенГЛ, етц. В таких условиях, знание архитектуры, как минимум, бесполезно. Может быть и вредно, если чел «от многих знаний», начинает пользоваться вещами платформы/языка, которые не являются стандартными/могут быть изменены впоследствии.
Для дот-нетовцев, пишущих под CLR — «знание архитектуры» и вовсе, будет уже не аппаратная часть, а низкоуровневое знание КОМ-модели/АТЛ.

Но, с одной стороны, «не виндой единой», а с другой стороны, знание аппаратной архитектуры позволяет понимать, почему многие вещи в той же Винде (типы данных, та или иная организация памяти в используемых АПИ структурах, те или иные параметры функций АПИ, итд) именно такие, а не другие и это позволяет, как минимум, легче приспосабливаться к новым версиям АПИ и прочим новым СДК.

Вот и я, о том же подумал. Или СДК/библиотеки, реализующие функции через «экстеншнс», с возможностью вызова из плюсов, от производителя.

Вся соль Intel C/C++ компилятора как раз в том, что он совместим и с MSVC и с GCC, поэтому его можно использовать в 99% случаев в качестве замены, а об оптимизации он позаботиться сам:)

П.С. Но, возвращаясь к асму — не вижу сейчас смысла знать конкретные регистры/команды (и, тем более, уметь на асмах программировать). Но знать архитектуру (как там, внутри, всё устроено) — бывает полезно.

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

Как раз недавно случай был, неделю назад на СТО я начал задавать кучу глупых, с точки зрения автомеханика, вопросов, на что был мне дан ответ, когда начнёшь чувствовать и понимать что внутри машины происходит, тогда эти вопросы ты задавать не будешь, примерно как, когда встаешь со стула, ты не спрашиваешь о том, какие мышци напрягать, а какие нет. И он полностью прав, на машине можно ездить понимая, что там внутри, а можно и не понимать, и тоже ездить. Меня поразило то, что мне ответили именно моими словами, я всегда так говорю о программировании:) Естественно, те кто понимают, находятся в более выиграшной позиции по сравнению с теми, кто не понимает... Точно так же и в программировании...

> В таких случаях проще купить Intel C/C++ компилятор
Вот и я, о том же подумал. Или СДК/библиотеки, реализующие функции через «экстеншнс», с возможностью вызова из плюсов, от производителя.
Там более, такие СДК/библиотеки, зачастую, бесплатны.

П.С. Но, возвращаясь к асму — не вижу сейчас смысла знать конкретные регистры/команды (и, тем более, уметь на асмах программировать). Но знать архитектуру (как там, внутри, всё устроено) — бывает полезно.

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

В таких случаях проще купить Intel C/C++ компилятор и не знать проблем...:)

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

Ну и в итоге получилось быстрее? Если да, то на сколько?


Ви коли-небудь загляньте в екран касира ж-д каси, коли квиток на поїзд купляєте. Я не знаю, на чому та Сирена написана, але символьний екран — явно не сілверлайт.

Їй вже років 20, по-моєму. Щось там є й новіше (наприклад — квитки в інтернеті я бронював), але основа ще та.

Там хороший самописный эмулятор IBM PC3270 под линуксом:) Вся платформа написана четырьмя людьми, включая меня за пол года:)

Ну начинали за асм, а закончили про то что круче жава или плюсы и что умирает.
А на счет того, что асм жизненно необходим всем программерам на С++, я искренне не согласен.
Я сам уже лет 7 пишу на плюсах, и асм я давно забыл. Мне, как программеру на С++ (не С) более полезно поизучать специфику использования того же stl, новый стандарт или какуе то либу (например, мне для работы с сетью понадобилось юзать curl).
Но, все же, пару раз приходилось возвращаться к истокам (наша прога активно юзает память, поэтому было решено переписать memcpy, через sse расшириение, пришлось один рабочий день перелистывать учебник по асму, и вспоминать что там и к чему).

Но повторюсь, такие кам-бэки к асму возникают крайне редко, и я не вижу смысла в том, что бы С++ программеру, держать в голове набор всех x86 инструкций, при условии, что по работе ему не приходится часто возвращаться к асму (те же копмиляторы, хаккинг и т/д).

> Ви коли-небудь загляньте в екран касира ж-д каси, коли квиток на поїзд купляєте.
> Їй вже років 20, по-моєму.

Ці каси, нiбито, для Укрзалізниці Софтлайн у 90-х роках писав. Мабуть, не на асемблері.;)

Я б не розкидався заявами:

глюкавый и убогий, как всё совковое

Ви коли-небудь загляньте в екран касира ж-д каси, коли квиток на поїзд купляєте. Я не знаю, на чому та Сирена написана, але символьний екран — явно не сілверлайт.

Їй вже років 20, по-моєму. Щось там є й новіше (наприклад — квитки в інтернеті я бронював), але основа ще та.

> Боюсь большинство пишущих здесь типа «программистов» банально не понимает, как устроен компьютер с которым они ежедневно работают, сколько там стоит внутри процессоров, и как они взаимодействуют, как устроен мобильный телефон, как передаются данные через узкий радиоканал на скоростях в неск мегабит в секунду, почему телефонон может работать неделями без подзарядки, на чем основана электроника в современных автомобилях, самолетах и космических кораблях и т. д. и т. п...

+1!

2 Зануда:
около 10k. Но на С в нашем случае далеко не уедешь, ресурсов проца едва ли хватает, а компилятор С не использует вторую память данных, аппаратные циклы, параллельную пересылку данных, модульную адресацию и т. д. и т. п. В целом программа на С выходит в 3 раза больше и в 3 раза медленнее.
Боюсь большинство пишущих здесь типа «программистов» банально не понимает, как устроен компьютер с которым они ежедневно работают, сколько там стоит внутри процессоров, и как они взаимодействуют, как устроен мобильный телефон, как передаются данные через узкий радиоканал на скоростях в неск мегабит в секунду, почему телефонон может работать неделями без подзарядки, на чем основана электроника в современных автомобилях, самолетах и космических кораблях и т. д. и т. п... раз для них существуют только Java и C#, а все остальное скоро вымрет:).
Есть разные приложения, у них разные задачи, для решения этих задач используют разные методы и соответственно разные языки.

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

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

Не знаю удивишься ли, но по другому они не умеют.

Как здесь сказано выше: «Кнута и Страуструпа они не открывают», но каждый день пользуются формоклепанными браузерами.

> Но и листингли ассемблера там выходят на 100, максимум 200 строчек (с комментариями).
Там пара регистров, да десяток команд. В общем, с ассемблером для сложного процессора — не сравнить. Для таких, действительно, нет смысла писать C-шный транслятор, да и программу на C.

Но уже те же популярные среди постсовковых разработчиков 90-х микрочиповские «пики» — шли с C-шными трансляторами.

Какой смысл писать на ассемблере (и кто будет такие программы сопровождать и модифицировать?), когда любой производитель процессоров, начиная от всяких Mикрочипов и прочих однокристалок, предоставляет инструментарий, для написания и трансляции программ на C?

Не для всего можно писать на С. Если у вас 32 байта ОЗУ (и из них половина это регистры), то тут на С особо не попишешь. Но и листингли ассемблера там выходят на 100, максимум 200 строчек (с комментариями). Другое дело когда люди сознательно пишут сложные системы на ассемблере, вот это уже клиника и последствия тяжелого советского прошлого.

> Базы данных десятков тысяч вагонов, поездов, отправок (от посылки до составов с нефтью...), контейнеров, локомотивов...и все их взаимосвязи в реальном времени ведутся почти на всём пространстве бывшего СССР программами на ассемблере.
Потому совок обанкротился и сдох. Потому что, в то время, как весь мир писал такие системы уже с 60-х годов на Коболе, а затем переписывал на плюсах (сейчас, вероятно, уже и на Джава) — совки сидели и чего-то там мастерили на ассемблере.

При этом, код, который писал один западный разработчик на Коболе за месяц — десяток совков мастерили за год, глюкавый и убогий, как всё совковое.

Коментар порушує правила спільноти і видалений модераторами.

В нынешнее время, писанина на ассемблере — отголосок убогого совкового прошлого.

Какой смысл писать на ассемблере (и кто будет такие программы сопровождать и модифицировать?), когда любой производитель процессоров, начиная от всяких Mикрочипов и прочих однокристалок, предоставляет инструментарий, для написания и трансляции программ на C?


hihi-haha 9 час. назад!
От сам зараз як дотнетчик щось читаю по асемблеру.
І от думаю собі чи варто це робити, чи може краще щось по сілверлайту скачати і почитати?!

Безусловно лучше, в том случае если ты думаешь о заработке, а не о каком-то гипотетическом кайфе от своей уникальности в способности поговорить о низкоуровневых системах.

У нас в конторе пишут на ассемблере.

А какой размер программ, который получаются? Сколько килобайт? Сколько ресурсов доступно на кристалле?

У нас в конторе пишут на ассемблере. Делаем довольно наукоемкие аппаратно-программные системы на кончике пальца, ценой в несколько десятков центов.

IRINA, конечно, достовляет хотя IBM’м красноглазикам «закон» не писан.
wasm уже не торт, но десяток годных статей наберется.

hihi-haha, силверлайт однозначно. Знание Асма без знания архитектуры камня и архитектуры ОС вообщем-то бесполезная штука.

Базы данных десятков тысяч вагонов... ведутся... программами на ассемблере

Мне одному эта фраза кажется странной? Т.е. если писать клиента СУБД (сервер приложений) на C++/C#/Java, то узким местом у вас был именно сервер, а не сама СУБД?


І от думаю собі чи варто це робити, чи може краще щось по сілверлайту скачати і почитати?!
ИМХО, лучше почитай по Силверлайту, пользы будет больше:)
Навыки программирования на Асме по-моему сейчас востребованы там, где делается железячная часть, DSP, цифровая обработка сигналов — там, где упор идет на разработке аппаратуры. Хотя, есть такая очень интересная весчь (правда. SDK для нее дорогое) — Micro Framework: микроконтроллеры с системой команд от Microsoft Micro Framework (но тут паять нужно уметь, не перегреть и не спалить дорогой девайс:) И то, Ассемблер — это понятие очень абстрактное: это ведь просто сборщик (прим. перев.:)), ориентирован он на систему команд определенного процессора (или микроконтроллера). В процессоре разбираться нужно.

Максимум практически — это можно потешить свое самолюбие, что можешь на макроассемблере юзать DLLки, и писать для себя никому не нужный говнокод (типа, вывести формочку на экран). Ну или попробовать написать говновирус:) Компиллятор сишный генерит код очень оптимальный, как на Асме, кстати, так что Асм — это не панацея для производительности. Очень полезный ресурс — wasm.ru, там можно все найти.

> Насколько реально востребованы навыки программирования на ассемблере?

Смотря где — в банке работу на ассемблере не найдешь, в машиностроении без ассемблера никак...

От сам зараз як дотнетчик щось читаю по асемблеру.

І от думаю собі чи варто це робити, чи може краще щось по сілверлайту скачати і почитати?!

Дав ответ ГДЕ востребованы у нас навыки программирования на ассемблере я вызвала целую страницу обсуждений слова «классический». Имелось ввиду не макро.

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

.
Базы данных десятков тысяч вагонов, поездов, отправок (от посылки до составов с нефтью...), контейнеров, локомотивов...и все их взаимосвязи в реальном времени ведутся почти на всём пространстве бывшего СССР программами на ассемблере. Пишутся сейчас, а не когда-то и работают быстрее программ, написанных на языках более высокого уровня.
Пример просто куска из программы:
MVCR1 EQU *
LA 3, 256
CH 5, =H’256’
BC 2, *+6
LR 3, 5
BCTR 3, 0
EX 3, MVCR1M
LA 2, 1 (3, 2)
LA 4, 1 (3, 4)
SH 5, =H’256’
BC 2, MVCR1
B FNZM651

MVCR1M MVC 0 (1, 2), 0 (4)

Ну, значит, я чего недопонял:)

Да, я на Marser’а отзываюсь, может кто слыхал: -)

Да мы тут все друг друга уважаем, если че.


святе місце пустим не буває,
це я про те, що після того як юджин_н попросив вбити його акоунт на ДОУ бачу появилася нова колоритна фігура,
п.с.,

а можна про взаєми про з компанією мрії.

Дякую за комплімент:)
До речі, я говорив не персоніфіковано, і вже точно не про вас, я вас поважаю.

Я сам люблю паперові книжки, але я ж їх і читаю, а дехто просто купляє, мова була про них, власне.

2hellip,
варіант 1.
(просто в мене мисля біжить поперед тайпання на клави, і я щоб не втратити її приходиться набирати швидко і всліпу, так що звиняй за очепятки)

2silverwolf

это вредить окружающим хорошим специалистам (демпинговать):)

І собі теж.
Хороших спеціалістів мало, тим більше ембедерів,
а дефіцитний штичний товар работорговці хочуть брати по оптовій ціні
хто має самоповагу — хоче особливого підходу,

хто не цінує і не поважає себе — погоджується на те що пропонують основній сірій масі.

Кстати, motus после этого тоже куда-то пропал: -)

Да, и без qwerty_smarty, я вдруг стал меньше задумываться о том, что получать ЗП меньше 2500 багза — это вредить окружающим хорошим специалистам (демпинговать):)

hellip, но вы ведь уходить не собираетесь?

Да вроде нет пока:) Просто motus когда-то распинался, что меня на этом форуме больше всего, после анонимуса и Макса, и даже склепал апликуху, долженствовавшую иллюстрировать это утверждение.
Я решил, что, по такой недружественной обстановке, следует несколько сдержать свои позывы к участию в конференции.

Кстати, motus после этого тоже куда-то пропал: -)

За последний месяц отпускного сезона из наших стройных рядов выпали не только junior_dev, но и eugene_n (!)

junior_dev, вроде, что-то писал после своего удаления.

Надо теперь беречь flyman’а, без него станет совсем скучно.

hellip, но вы ведь уходить не собираетесь?


Desired skills:

• Assembler;

Ага, Харьков. Понятно, flyman же туда вроде ездил и остался недоволен предложенным уровнем материальной компенсации.

ацкийІР, з твоїми вражаєчими зібностями до навколаматематичних тем практики тролінга

не совсем понял эту часть фразы, возможные варианты расшифровки:
1. з твоїми вражаєчими зібностями до навколаматематичних тем і практичними навичками тролінга
2. з твоїми вражаєчими зібностями до тролінга з навколаматематичних тем
* * *
Я просто сейчас несколько реже здесь появляюсь, потому и пропустил такое нерядовое событие.

* * *

eugene_n 1 нед. назад!
В связи с окончательной деградацией ДОУ прошу удалить мой эккаунт.
Ужас. За последний месяц отпускного сезона из наших стройных рядов выпали не только junior_dev, но и eugene_n (!). Вот это я понимаю, голову напекло.

Надо теперь беречь flyman’а, без него станет совсем скучно.

Я этот момент тоже как-то прошляпил...

отож, одні інтроверти, вся увагана на самого себе, красівого та умного,

а що відбувається з іншими — на те уваги можна не звертати

ацкийІР, з твоїми вражаєчими зібностями до навколаматематичних тем практики тролінга мене дивує твоя неуважність і слабка пам"ять

Я этот момент тоже как-то прошляпил...

ацкийІР, з твоїми вражаєчими зібностями до навколаматематичних тем практики тролінга мене дивує твоя неуважність і слабка пам"ять

это не eugene_n был, а junior_dev. Ты чего, перепутать таких выдающихся мыслителей?: -)

eugene_n 1 нед. назад!

В связи с окончательной деградацией ДОУ прошу удалить мой эккаунт.

А при чем тут ассемблер к ГЛ?

Desired skills:

• Assembler;

flyman,
это не eugene_n был, а junior_dev. Ты чего, перепутать таких выдающихся мыслителей?: -)

А при чем тут ассемблер к ГЛ?

святе місце пустим не буває,
це я про те, що після того як юджин_н попросив вбити його акоунт на ДОУ бачу появилася нова колоритна фігура,
п.с.,
а можна про взаєми про з компанією мрії.

може навіть в окремому форумі, тільки не в розіділі «Компаніі», бо там жостка цензура, і змінилась форма та зміст й мені там не цікаво


А буйное фонтанирование гуано обычно идёт от тех, кто Кнута купил и поставил на полку...

Ну это навроде культа Карго — раз купил три тома, значит, автоматически суперпрограммист, жди оффера от компании мечты: -)

DWIM-like ассемблер Кнута, не принесёт понимания тому, кто захочет разобраться в алгоритме. На него просто уйдёт собственное время без какой-либо пользы

+1

Майк, ну вы, судя по профилю, настоящая звезда: -)

Нет.©

Я сказал всего-лишь, что DWIM-like ассемблер Кнута, не принесёт понимания тому, кто захочет разобраться в алгоритме. На него просто уйдёт собственное время без какой-либо пользы. Я реализовывал второй том на протяжении года, когда было свободное время. А буйное фонтанирование гуано обычно идёт от тех, кто Кнута купил и поставил на полку...

А я вот Кнута ни разу даже не открывал

А я ні Кнута ні Страуструпа.

ще пару слів про класичність
Асемблер, як латина, мало хто на ній зара не пише, але знати треба.
п.с.

тре буде занести в меморіз як власне мною придуману фразу

*задумчиво*

Интересно, почему из моих постов обращение детка трут, а рыцарю-вампиру оно дозволено?

Майк, ну вы, судя по профилю, настоящая звезда: -)

А мы так, смертные, лично я в другой стране вообще мог бы стать гуманитарием (настоящим, а не ГСМ, ниасилившим матан)...

А я вот Кнута ни разу даже не открывал.

Наверное, это ещё не приговор... Хуже если вообще ничего по алгоритмам не открывал: -)


весь второй том? все упражнения? резюме дядюшке билли отправил?

Да. Да. Нет, это не предел моих мечтаний.

если не изменяет память там одна ф-ция на весь томе и еще 2−3 листинга в ответах к упражнениям. так что С там как кот наплакал. да и МИХа не очень много

Изменяет. Ты реализуй арифметику многократной точности в одной функции для начала (или таки открой Кнута, чтобы знать о чём говорить).

А, да, еще один аспект, немаловажный при переездах с квартиры на квартиру: тысяча книг по информатике умещаются на карте памяти размером с ноготь или же в двадцати чемоданах весом с десяток кило каждый

что читать с экрана сотни страниц. или ты нищеброд и не можешь себе заказать с амазона книжечки

понимаешь, dude, я считаю нонсенсом пользоваться девайсом без встроенной системы навигации по тексту, из которого вдобавок нельзя скопипастить понравившийся фрагмент кода, а вместо этого приходится впечатывать его ручками

бумажные книги по информатике — это как секс через три презерватива и шерстяной носок

Скорее, как секс на скамейке в парке под карканье ворон.

> бумажные книги по информатике — это как секс через три презерватива и шерстяной носок

а что читать с экрана сотни страниц. или ты нищеброд и не можешь себе заказать с амазона книжечки?

достань с полки и перелистай

бумажные книги по информатике — это как секс через три презерватива и шерстяной носок

А я вот Кнута ни разу даже не открывал.

достань с полки и перелистай.

@ dude
Не знаю, не знаю. Я точно помню, что алгоритм сложения очень больших чисел я оттуда почти без усилий переписал на С++, а не прикидывал, как бы транскрибировать его из псевдокодов MMIX.
Зато там математики гораздо больше, чем среднестатистическому софтвер энгинееру приходится асилить за девять жизней.

Самое прикольное, что Кнут знает русский, а потому свободно цитирует в своем магнаопусе работы навроде

Проблемы кибернетики, 5 (1961), стр. 17−29.

> даю совет, как реализовавший весь второй том Кнута на С...
весь второй том? все упражнения? резюме дядюшке билли отправил?
> Во втором томе некоторые алгоритмы уже изначально приведены на С

если не изменяет память там одна ф-ция на весь томе и еще 2−3 листинга в ответах к упражнениям. так что С там как кот наплакал. да и МИХа не очень много

даю совет, как реализовавший весь второй том Кнута на С

Во втором томе некоторые алгоритмы уже изначально приведены на С, например ran_start (long seed)

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

Ему даже вредно уделять внимание (даю совет, как реализовавший весь второй том Кнута на С...).

> то класика це асемблер (MIX та MMIX), використаний Дональдом Кнутом

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

У Кнута в разделе, посвященном описанию MMIX, есть следующее милое замечание:

Начиная с 1970 года я сам редко использовал машинный язык при написании своих программ, так как современные компьютеры обладают большими объемами памяти и высоким быстродействием.

Это было сказано в 1980 году.

А тут некоторые жалуются, что Глобал не может повысить оперативку с 3 ГБ до 4 ГБ.

Ну я тоже об этом думал, только это не ассемблер:)

Нет, классика — это машина Тьюринга с бесконечной длиной ленты:)

Ну якщо порівнювати з музикою, то класика це асемблер (MIX та MMIX), використаний Дональдом Кнутом: -)

Але такого комп"ютера не існує в природі. Класика асемблера це абстракція; -)

Хто визначає класичність і як її вХто визначає класичність і як її відрізнити від класичності самого процесора? ідрізнити від класичності самого процесора?

Це так само як з музукою.
Хто визначає її класичність.
Як відрізнити класичність музики від класичного інструменту?
А наскільки вона класична, якщо можуть бути різні аранжування?

Хто мені скаже — оце вже касика, а це ще ні.

Ну я б сказав, що змішаний стиль, С вклиненням АСМ.

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

Кстати, нет такого понятие как просто “ассемблер”, есть “язык ассемблера для архитектуры”.


анонимус,
як кажуть у нас

ти геній! (без букви «е» )

Флаймен, б"юся об заклад, у реалі ви приємний інтелігентний дядечко, бо там за хамство б"ють, або принаймні ображаються і там не закриєш браузер.
От скажіть мені, що воно таке — класичний асемблер? 8086 у реальному режимі? MCS-51? Викопний набір часів Ґрейс-Мюрей Гоппер? Хто визначає класичність і як її відрізнити від класичності самого процесора? Чи коректно чистий асемблер (без макросів) назвати класичним? А наскільки він класичний, якщо доводиться взамоємодіяти з ОС?
Взяти хоча б тут yandex.ua/yandsearch text=%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9+%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80& from=fx3& ncrnd=637& lr=143

Ясно видно, що термін самопальний, часом навіть береться в лапки.

Если с запроса убрать слово джава, картинка немножко другая.

Точно такая же, только в другом масштабе.

Если с запроса убрать слово джава, картинка немножко другая.

Вот как востребован ассемблер за границей:

www.indeed.com/jobtrends q=java%2Casm%2Cassembler& l=

На голому АСМ багато не попишеш, ну в межах до 4КБ бінарника.
Ну я б сказав, що змішаний стиль, С вклиненням АСМ.

Хоча раз було навпаки, ОСь на АСМі, а приходилось на математику писати на С, потім компілити, викидати врапер і робити як виклик АСМ коду.

Анонимус 26 мин. назад

Классический ассемблер это что-то рядом с чернилами для восьмого класса: -)

анонимус,
як кажуть у нас

ти геній! (без букви “е” )

Утверждение, что на рынке труда, более востребованны программисты со знанием разновидностей си диез, бимоль, плюс в квадрате и т.д. говорит лишь о том, что фундоментальные разработки в нашей стране не ведутся.

А разве для кого-то это еще секрет? Львиная доля украинского рынка IT — это аутсорс, а фундаментальные разработки на аутсорс не отдаются. Правда, я бы поспорил насчет преждевременной кончины языка C — в embedded системах с очень критичными требованиями по надежности выбирают именно C, а не C++.

Классический ассемблер это что-то рядом с чернилами для восьмого класса: -)

на классическом ассемблере (с использованием SQL,...)

Что такое «классический ассемблер»? Что вы имеете ввиду под SQL?

На тему форума «Насколько реально востребованы навыки программирования на ассемблере » — на классическом ассемблере (с использованием SQL,...) уже много лет пишутся программы ведения в реальном времени БД на mainframe в системе РЖД (на каждой дороге и в ГВЦ — очень большие объемы информации). На курсах IBM говорили, что подобные системы на MF есть в газпроме и сбербанке.

Корпоративное обуение иностранным языкам:
# Курсы английского
# Курсы испанского
# Курсы итальянского
# Курсы японского
# Курсы турецкого
# Курсы немецкого
# Курсы китайского
# Курсы арабского
# Курсы французского
тел. 8 (044) 331−10−31

www.englishua.com/...yskomu-yazyiku

Здесь, как я вижу, идёт спор разработчиков с программистами. Всё просто. Разработчик обязан занать ассемблер, плюс несколько языков программирования высокого уровня. Програмисту достаточно С, Жаба и тому подобное. Программист пользуется результатом труда разработчиков и не обязан знать, в чём различие вызова API функции под win32 и win64. За него всю работу делает компилятор, написанный разработчиком. Утверждение, что на рынке труда, более востребованны программисты со знанием разновидностей си диез, бимоль, плюс в квадрате и т.д. говорит лишь о том, что фундоментальные разработки в нашей стране не ведутся. Рассуждение Анонима по созданию процессора, с помощью чужих разработок улыбнуло. Такой процессор, на стадии разработки уже устарел, так как это банальный тюнинг, пусть даже очень хороший. Такой \ «модульный\» подход переноса мозгов и ПО с одного разгонного модуля ракеты на другой ни к чему хорошему не приведёт. Нужно учитывать воздействие таких факторов как изменение ускорения, давления, температуры, влажности и т.д. В одних условиях например, преобразование 128 битного числа выполнится без ошибок, в других условиях этого не случится. Тут необходимы глубокие знания архитектуры программируемого устройства и машинний код (ассемблер).

2автор: почитайте wasm.ru, историю создания IDA Pro, а также о других интересных утилитах.
и вообще, как писали матерые ассемблерщики, их наработки (собственные библиотеки) позволяют писать на ассемблере не более многословно, чем на Си.
PS. со знакомым случилась success story, которая на тот момент позволила ему купить хороший комп за выполнение 2-х недельного проекта на асме (написание обмена с неким девайсом).

2Аноним

Да вы тролль, батенька. Вы еще скажите что выделенное жирным вы реализовываете с помощью си и ассемблера:
"Ото шо я там не видел"©

Если я тролль, то Вы, мультиуважаемейший, клоун:) Читай всю тему сначала.

Сорри за Dictionary, я имел ввиду класы разряда SortedDictionary итд... которые народ использует

и потом удивляеться что тормозит... приношу извинения

Глубокоуважаемый usix, вы сильно отошли от темы форума «Насколько реально востребованы навыки программирования на ассемблере ».
Если хотите обсуждать «Вообще-то Dictionary< TKey, TValue> это хеш.» то создайте отдельную ветку форума,

благо это делается мгновенно

Вообще-то Dictionary< TKey, TValue> это хеш.

Вставка (фрагмент):


private void Insert(TKey key, TValue value, bool add)
{
    ...
    int num = this.comparer.GetHashCode(key) & 0x7fffffff;
    int index = num % this.buckets.Length;
    for (int i = this.buckets[index]; i >= 0; i = this.entries[i].next)
    {
        if ((this.entries[i].hashCode == num) && this.comparer.Equals(this.entries[i].key, key))
        {
            if (add)
            {
                ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_AddingDuplicate);
            }
            this.entries[i].value = value;
            this.version++;
            return;
        }
    }
    ...
}

Поиск:


private int FindEntry(TKey key)
{
    if (key == null)
    {
        ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key);
    }
    if (this.buckets != null)
    {
        int num = this.comparer.GetHashCode(key) & 0x7fffffff;
        for (int i = this.buckets[num % this.buckets.Length]; i >= 0; i = this.entries[i].next)
        {
            if ((this.entries[i].hashCode == num) && this.comparer.Equals(this.entries[i].key, key))
            {
                return i;
            }
        }
    }
    return -1;
}

junior_dev: спили мушку...тоист почитай MSDN.

И кстати не нужно никому тут ничего доказывать:) время рассудит или как сказал товарищь из Windows Core — чем меньше классных девелоперов, тем больше наша зарплата,
так что как бы кто ни считал, если он считает себя специалистом, то ему нет смысла что-то доказывать или спорить, через год, он будет зарабатывать те деньги которые получали не спецы.

И не важно на чем он писал, ASM & C/C++, C# vs Java или даже JavaScript.

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

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

там нет разницы, для тех у кого нет разницы что это список с ключем и бинарным поиском по нему, или хеш-таблица, с хешом ключа и распределением...
это пример того что много кто выбирает абстракции, но не думает что за ними стоит...
к примеру если вы возьмете и создадите Hashtable и Generic для обработки 10^6 b и выше обьектов — например задача ресерча, бизнес оптимизации итд...
то вы удивитесь что вставка пусть и с бинарным поискам занимает больше времени чем вставка в хеш-таблицу.
Когда вам все равно сколько ждет пользователь 5 минут или 1, 5 это не имеет значения... зачастую это справедливо при написании проекта под ключ,
тендер уже прошел и нас выбрали, или мы все равно тут работаем и софт будет наш...
а если вы делаете коробочный продукт или то что должно долго работать или куча конкурентов, то это минус из-за которого продукт может не попасть на рынок, ,

а вы нее принести деньги компании итд...

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

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

Кстати вопрос к програмистам на C# как много людей использует HashTable из 1го вместо дженериков из поздних (я имею ввиду Key-Value структуры)?

и почему? (это вопрос к теме абстракций и понимания что за ними стоит)

Господа, для сравнения языков просто посмотрите что вы САМИ СЕБЕ установили и чем пользуетесь и
на чем это написано, что ВЫ как програмист-пользователь выбрали, какие програмы и на чем они написаны.
У многих же стоит антивирус, файрвол, ОС, среда разработки, многие жалуться что все это тормозит или жрет много памяти, ,
а начем проще написать что бы это было не так? что бы ВАМ понравиться?
А теперь на кого ориентированы большинство приложений что пишуться на высоких языках?

на конкретного заказчика, а не в мир.

Все намного проще. Есть люди которые страются делать свою работу хорошо. И есть люди старающиеся срубить по-быстрячку капустки.

Непонятно одно — зачем публично хвалится своим невежеством?

по поводу необходимости знания ассемблера я бы процитировал такую-же холиварную тему из форума КПИ:

а зачем уметь считать, если есть калькулятор?

мое мнение:

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

2lestat

Да вы тролль, батенька. Вы еще скажите что выделенное жирным вы реализовываете с помощью си и ассемблера:

Приблизь будущее, изобретая его
ЗАО «Мальва»: научно-производственное предприятие с широким спектром деятельности в области информационных технологий.
Основные виды деятельности:
моделирование бизнес-процессов
проектирование и реализация распределённых корпоративных приложений
оптимизация бизнес-процессов с использованием автоматизированных систем
построение комплексных систем защиты информации
разработка программного и аппаратного обеспечения
консультирование в области ИТ
обучение персонала внедряемых систем

разработка мультимедийных и обучающих программ


Т.е. только аутсорсеры пишущие драйвера для embedded у нас теперь небыдлокодерами считаются.

Перечитай ещё раз... можно ещё один раз... и ещё... не тот твой кусочек фигурного квотинга, а всё предложение, быдлокодеры отличаются подходом к предметной области, одни вникают в суть вещей, других не заботит внутреннее устройство их конечного результата, причём тут всё остальное? Ты правда уверен что коры клепают имея библиотеки/наработки различной функциональности как домохозяйки на delphi?:) Ты правда уверен, что можно использовать чужие библиотеки/наработки особо не разбираясь как они устроены?

абстрактных быдлокодеров

Т.е. только аутсорсеры пишущие драйвера для embedded у нас теперь небыдлокодерами считаются.

Чтобы не грубить

Уже.


Предположим я инженер. Я работаю в компании VIA\INTEL\AMD\NVIDIA (нужное выбрать) и я создаю процессор нового поколения. Конечно же я для этого использую предидущие наработки, знания. Я могу использовать целые функциональные блоки с процессоров предидущего поколения. Например мне не надо с нуля придумывать кеш-память, я могу взять готовый проект. Также я могу использовать наработки по ALU\FPU\Multicore\Блоков управления и так далее. Также я могу использовать те же самые станки для производства, тех же людей (персонал), те же заводские помещения и т.п... При разработке нового процессора я буду оперировать абстракциями, например блоками (алу\фпу и т.д.). Я буду использовать специализированное програмное обеспечение, которое само мне построит оптимальную схему расположения блоков\транзисторов на кристале и т.д. Большую часть времени я буду думать о том (к примеру), как оптимизировать производительность\тепловыделение блока FPU, как синхронизировать различные потоки [оптимизация Hyperthreading] и т.д. В итоге я получу через год (два, три, пять) новый процессор, скажем с 1 млрд транзисторов.

Для сведения, IP corы тоже кто-то пишет. И если быдлокодер Вася налепит в кору пару десятков тысяч лишних транзисторов, потому что он мыслит только абстракциями, его яйца будут висеть при вхоже в гермозону... и звенеть каждому напоминанием о тяжелой судьбе абстрактных быдлокодеров.

Теперь представим эту же ситуацию, но с eugene_n (lestat). Он возьмет лист А1 (точнее десятки тысяч таких листов) и начнет рисовать на нем «схему электрическую принципиальную». Я не знаю сколько тысяч лет он потратит на рисование схемы [представьте себе бизнесс-приложение, которое писали 5 лет на C# 50 программистов, за сколько можно написать и отладить такое же по функциональности\надежности и др. критериям на асме?]. Большую часть времени он потратит на исправление ошибок, опечаток, заменой порваной бумаги, заточкой карандашей и т.п. После этого он возьмет паяльник, кучу транзисторов КТ 315, а и начнет лабать с процессор. Здесь он столкнется с тем, что не которые транзисторы не работают (но это выяснится в конце), некоторые транзисторы не отвечают своим характеристикам, припой может быть некачественный, в некоторых местах соединение может разорваться в любой момент и т.д.

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


Есть ложь, есть правда, а есть статистика упоминания языков в интернете

Ага, да. миллион мух не могут ошибаться:)

Вот вы, вроде бы, взрослый человек, позиционируете себя как профессионала. Но вы говорите неправильные вещи. Программист не должен представлять машинный код в голове. Он должен манипулировать абстракциями. Я намного больше верю отцам программирования, написавшим талмуды, чем какому-то eugene_n (или lestat) который пытается оправдать свои знания в ассемблере и незнания (как я понял) многих основных принципов программирования.

Платят не за абстракцию, а за реализацию:)

Например незнание того, что преждевременная оптимизация это плохо, думать какие компилятор сгенерит машинные коды — тоже плохо и т.д. В яве и дотнете не зря есть сборка мусора — она освобождает программиста от ненужного слежения за указателями, за бесконечной отладкой в поисках утечек памяти и т.д. Сборка мусора позволяет программисту сконцентрировать на более существенном в программировании: бизнес логике.И программист вместо того, что представлять в голове машинные коды и помнить про все указатели думает о своих абстракциях и взаимодействиях между ними.

У Вас узкий кругозор.

Если вы откроете глаза, то вы увидите, что подавляющее большенство софта — это софт для бизнеса, а не драйвера и операционные системы. А для софта для бизнесса наиболее сильные связки это Java+Oracle и.NET+MSSQL. Софт для софта — явление редкое. Я думаю, что если бы менеджер какого-нить ЕПАМа или ГЛ или другой большой конторы сюда заглянул, он бы вам пояснил, как сильно в их проектах нужен асм.

У Вас узкий кругозор. Если Вы откроете глаза, то вы увидите что софт для бизнесса — это не 90% всего софта, а от силы 25−30%, а по массовости в употреблении софт для бизнеса не дотянет и до 10%.

Вообще тема сливается в холивар. Автор поставил конкретный вопрос — я ему даю конкретный ответ. В нашей стране ассемблер не нужен. Доказательство — полное отсутствие вакансий, в которых бы были требования типа «5 лет опыта x86/SSE3/MMX/AMD64, год опыта SSE5, умение транслировать листинг в машинные коды на лету, зарплата $2500+».

Т.е. он Вам не нужен или Вы его готовить не умеете?:) Так и скажите, но не надо тут размазывать сопли по поводу нужен или не нужен он всем и каждому.

Дискуссия этой ветки еще напомнила диаграмму:

The Programmer Hierarchy (PDF).

Черт, как жаль!

А что актуально на сегодня?

2 Аноним
> MSP430 — семейство шестнадцатиразрядных микроконтроллеров фирмы Texas Instruments. Год разработки — > 1999.

1999 год уже не актуален. т.е. лучше вообще не программировать.

Посоветуйте пожалуйста, какой язык лучше использовать для программирования под MSP430. Я так понял что лучше всего использовать такие ЯВУ как Java или C#. Но я никак не могу определиться какой их них лучше...

Уважаемые, давайте немного абстрагируемся.
Предположим я инженер. Я работаю в компании VIA\INTEL\AMD\NVIDIA (нужное выбрать) и я создаю процессор нового поколения. Конечно же я для этого использую предидущие наработки, знания. Я могу использовать целые функциональные блоки с процессоров предидущего поколения. Например мне не надо с нуля придумывать кеш-память, я могу взять готовый проект. Также я могу использовать наработки по ALU\FPU\Multicore\Блоков управления и так далее. Также я могу использовать те же самые станки для производства, тех же людей (персонал), те же заводские помещения и т.п... При разработке нового процессора я буду оперировать абстракциями, например блоками (алу\фпу и т.д.). Я буду использовать специализированное програмное обеспечение, которое само мне построит оптимальную схему расположения блоков\транзисторов на кристале и т.д. Большую часть времени я буду думать о том (к примеру), как оптимизировать производительность\тепловыделение блока FPU, как синхронизировать различные потоки [оптимизация Hyperthreading] и т.д. В итоге я получу через год (два, три, пять) новый процессор, скажем с 1 млрд транзисторов.
Теперь представим эту же ситуацию, но с eugene_n (lestat). Он возьмет лист А1 (точнее десятки тысяч таких листов) и начнет рисовать на нем «схему электрическую принципиальную». Я не знаю сколько тысяч лет он потратит на рисование схемы [представьте себе бизнесс-приложение, которое писали 5 лет на C# 50 программистов, за сколько можно написать и отладить такое же по функциональности\надежности и др. критериям на асме?]. Большую часть времени он потратит на исправление ошибок, опечаток, заменой порваной бумаги, заточкой карандашей и т.п. После этого он возьмет паяльник, кучу транзисторов КТ 315, а и начнет лабать с процессор. Здесь он столкнется с тем, что не которые транзисторы не работают (но это выяснится в конце), некоторые транзисторы не отвечают своим характеристикам, припой может быть некачественный, в некоторых местах соединение может разорваться в любой момент и т.д.
Вам эта аналогия ничего не напоминает?...

ЗЫ. По поводу споров умер\не умер. Я написал, что языки умирают [я написал что С умер потому, что теоретически можно любую программу на С считать программой написаной на С++, разве не так?]. Умирают потому, что киты ИТ индустрии всеми силами толкают свои технологии, а в них я не вижу ассемблера\с\с++. Я говорю о Microsoft, Sun, Oracle... С\С++\асм рано или поздно ждет та же участь что и фортран, кобол, ада, паскаль... Если вы слепы, и не видите тенденций в ИТ — я вам сочувствую. Вам лет через 10−20 прийдется идти на пенсию, так как работу найти скорее всего не получится. Точно также через 10 лет могут выйти какиенить C## и Java++ — и точно так же начнут отходить сегодняшние фавориты.

Умный человек, поясните глупым украинским программистам (и мне в том числе), чем программа написанная на Си (++) хуже программы написанной на Си# или Яве? А можете еще привести пример компиляторов написанных на Си# или Яве (или Лиспе) и обьяснить, чем они лучше уже существующих компиляторов (ГНУ ЖеЦеЦе, например). Ну и пример нескольких ОС написанных на ЯВУ (но не Си или Си++). Желательно для всего этого приведи пример успешного использования (не обязательно коммерческого). А если вдруг ядро ГНУ/Линукса переписать на Яве, и Мозилу полностью переписать на Лиспе, то у меня под Линуксом, в Мозиле, сайты будут быстрее открываться?
А вообще вы правы! Правы на 100 процентов. Даже 120%. Загорелся я желанием найти какую-то ОС написанную на Лиспе. Нашел. Называется Movitz. Посмотрел исходники. И поразился. Нет, действительно поразился. Ни одной строчки на асме. Нет, я серйозно. Все написанно на голом Common Lisp’е. И ассемблер х86 знать не нужно. Одни плюсы. Пойду, возьму лопату, и буду хорошить Си++.

Вот, кстати, зацените кусок исходника.

(define-compiler-macro io-port (& whole form port type & environment env)
(if (not (movitz: movitz-constantp type env))
form
(ecase (movitz: movitz-eval type env)
(: unsigned-byte8
’ (with-inline-assembly-case (: type (unsigned-byte 8))
(do-case (: untagged-fixnum-ecx: untagged-fixnum-ecx)
(: compile-form (: result-mode: edx), port)
(: std); only EBX is now GC root
(: shrl, movitz: +movitz-fixnum-shift+: edx)
(: xorl: eax: eax)
(: inb: dx: al)
(: movl: eax: ecx)
(: movl: edi: eax)
(: movl: edi: edx)
(: cld))
(do-case (t: eax)
(: compile-form (: result-mode: edx), port)
(: std); only EBX is now GC root
(: shrl, movitz: +movitz-fixnum-shift+: edx)
(: xorl: eax: eax)
(: inb: dx: al)
(: shll, movitz: +movitz-fixnum-shift+: eax)
(: movl: edi: edx)
(: cld:)
(: unsigned-byte16
’ (with-inline-assembly-case (: type (unsigned-byte 16))
(do-case (: untagged-fixnum-ecx: untagged-fixnum-ecx)
(: compile-form (: result-mode: edx), port)
(: std)
(: shrl, movitz: +movitz-fixnum-shift+: edx)
(: xorl: eax: eax)
(: inw: dx: ax)
(: movl: eax: ecx)
(: movl: edi: eax)
(: movl: edi: edx)
(: cld))
(do-case (t: eax)
(: compile-form (: result-mode: edx), port)
(: std)
(: shrl, movitz: +movitz-fixnum-shift+: edx)
(: xorl: eax: eax)
(: inw: dx: ax)
(: shll, movitz: +movitz-fixnum-shift+: eax)
(: movl: edi: edx)
(: cld:)

ну и дальше в таком же духе...

Вы — виртуал Жени?

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

Лучше расскажи как там ваш багфиксинг поживает.

Вот! Наконец-то хоть один разумный человек на ДОУ появился. Программист вообще не должен думать что получается из его писанины, главное решать свою великую программистскую задачу — написание бизнес-логики. Особенно хорошо это понимают ребята из Индии Ссылка

Есть ложь, есть правда, а есть статистика упоминания языков в интернете
Но я все равно не отказываюсь от своих предидущих слов =) Время нас рассудит

2eugene_n, lestat

Как не смешно Антон — должен. В противном случае он делает такие ошибки, над которыми не знаешь — смеятся или плакать. То что Джава и Сишарп лишены указателей совершенно не означает, что в процессорах исчезла косвенная адресация:)
Вот вы, вроде бы, взрослый человек, позиционируете себя как профессионала. Но вы говорите неправильные вещи. Программист не должен представлять машинный код в голове. Он должен манипулировать абстракциями. Я намного больше верю отцам программирования, написавшим талмуды, чем какому-то eugene_n (или lestat) который пытается оправдать свои знания в ассемблере и незнания (как я понял) многих основных принципов программирования. Например незнание того, что преждевременная оптимизация это плохо, думать какие компилятор сгенерит машинные коды — тоже плохо и т.д. В яве и дотнете не зря есть сборка мусора — она освобождает программиста от ненужного слежения за указателями, за бесконечной отладкой в поисках утечек памяти и т.д. Сборка мусора позволяет программисту сконцентрировать на более существенном в программировании: бизнес логике.И программист вместо того, что представлять в голове машинные коды и помнить про все указатели думает о своих абстракциях и взаимодействиях между ними.
Если вы откроете глаза, то вы увидите, что подавляющее большенство софта — это софт для бизнеса, а не драйвера и операционные системы. А для софта для бизнесса наиболее сильные связки это Java+Oracle и.NET+MSSQL. Софт для софта — явление редкое. Я думаю, что если бы менеджер какого-нить ЕПАМа или ГЛ или другой большой конторы сюда заглянул, он бы вам пояснил, как сильно в их проектах нужен асм.

Вообще тема сливается в холивар. Автор поставил конкретный вопрос — я ему даю конкретный ответ. В нашей стране ассемблер не нужен. Доказательство — полное отсутствие вакансий, в которых бы были требования типа «5 лет опыта x86/SSE3/MMX/AMD64, год опыта SSE5, умение транслировать листинг в машинные коды на лету, зарплата $2500+».

>> Тоесть например использование Зетлиспа на ЛиспМашинах тоже было компромисом?:)
>> Просто сейчас в основном применяется железо, для которого С фактически является портабельным >> асмом, вот и все. Никаких мифическим приимуществ для низкоуровневого программирования
>> в общем случае у Ц нет.
ммм..., а я про що? По-перше — я ніде не доводив що це склалося не історично. По-друге я і говрю про мейнстім сучасних ЕОМ, до чого тут хардварні Lisp, Forth чи Java машини? Ви не повірите (:), та я з тих людей що може розробити свою хард-машине (нехай найпростішу) та втілити її в тих же ПЛІС, с особливою архітектурою оптимальною під видуманний вшитий язик — але кому з цього буде користь? Основний тезіс, який Ви чи не зрозуміли, чи пустили повз вуха, в тому мому вислові — переход між C та asmом і навпаки набагато швидший і безболісніший ніж між asm та Java.
//===
>> Простите, а сколько например на ocw.mit.edu Вы можете насчитать курсов с применением Ц.>> А сколько с Лиспом, Пистоном и той же Жабой?
Знову таки — я мав на увазі не учбові курси з циклу «Васік — та цеж дуже просто», а наукові дослідження — розробка тих чи інших числових методів, кріптографії, розробка ОС, компіляторів — тобто досліди фундаментальних речей в програмуванні розвиток яких скеровує майбутє, от як це було з C та UNIX. Та ще корпоративні досліди — наприклад відеокодек для конкретної моделі побутової камери — потрібна як корпоративна «зрозумілість» так і максимальна швидкість, мінімальна рисурсоємність, тощо... Не пишуть це (серьйозні дослідження) ні на LISP, ні на C#.
//===
>> Вам 2 по истории. Заберайте зачетку и не приходите на перездачу не просветившись на тему
>> Genera как минимум. А то Ваши потуги о «академических кругах» смешно выглядят.
Вам питання — скільки Вам років? Там де у Вас незостається аргументів — все зодиться до такої собі, посередьної театральної постановки. І, доречі, у мене немає ніяких потуг, у мене є аргумени, на відмуну від чийогось дурнуватого ржача і апеляцій до категорій про які він десь, колись, якось чув...
//===
>> Тоесть кернел и драйверы это «високий рівень абстракціі»?:)
А звідки з моїх слів Ви узагальнили в одній множені мікроядро та драйвери?
Мій, як я вже здогадався — юний, друже, давайте я Вам розповім про философію мікроядерних ОС — ідея полягає в тому, щоб зоставити в ОС тільки основни сервіси (системи) — планувальник задач, систему розподілу фізичної паямяті, IPC та обробник аппаратних переривань — драйвери, мережевий стек, GUI, та прикладні программи — все це процесси користувача з точки зору мікроядра. Так от це мікроядро по своїй суті — бібліотека (об’ектний модуль) що завантажуесться в SDRAM. І цей модуль очевидно повинен мати той чи інший інтерфейс. І от вже цей інтерфейс можна оформити під яку завгодно парадигму програмування та під будь який язик — хоть під Pyton, хоть під Basic, а хочаб і під наближення справжнього суахілі...
Ось саме так і зроблено в Microsoft Singularity — asm+C — мікрядро. Та діалект C# — як інтерфейс взаємодії з мікрокернлом. С# вже ізольовано від аппаратних ресурсів, диспетчиризаціею, всю работу з залізом винесено на рівень зверненнь до системи — вся робота по розробці драйвера проходить на більш високому рівні абстракції... Подібно зроблено і в Inferno — язик Limbo, а от у Minix та plan9 — не пішли цим шляхом, хоча філософія та сама нові язики не придумували всі питання вирішуються через виклик C-подібних системних функцій. Зрозуміло що варіантів реалізації тут безліч...
//===
>> Бугага Ц единственный язык который умеет битики гонять. Жесть...
«Бу-га-га-га» казав робот Вертер втративши невеличку частину свого сталевого тіла:)...
У Вас якась підліткова манера ведення спору методоб банальної підміни понятть...
Почали з того що C помер. Я протестував апелюючи до того, що всі компілятори, ОС та вбудовані системи на критичних об’єктах це суміш C та asmу.
//!!! ...Тобто основний тезіс C і не думає вмирати...
//!!! , а Java, C# та різні інші маркетенгові штучки це для індусів (просто засвоюється, легко відригується) — немає такого неподобства у F-22...
Ви ж тепер звели все до оперування бітами — хоча я явно назвав СУМІШ asm (з якого можна визвати такі команди що не передбачені данним цільовим компілятором C, смішно слухати про бітики) + C (на якому, я к я вже пояснив дуже доречно программувати в суміші з asm — той самий «ритм» (стиль), є безліч підручників, є стандарт, багато спеціалістів тощо)...
Доречі, росіяни які спромоглися виготовити для своєї промисловості декілька різновидів процессорів — чомусь написали мерщій компілятор asm, а десь згодом з’явився і C. І як це вони не додули до жаби чи шарпа? Майбуть поряд не було такого кібірнетика-теоретика як Ви... Чи не їх Ви відїзжаєте консультувати?:)

>> Уезжаю на неделю, так что у Вас будет много времени на мат часть.

>> Высокоуровневость языка это уже недостаток?:)
Це, як і у всі часи, компроміс... швидкість освоєння+зручність використання < —vs—> надлишковість коду+архітектурна оптимізація...
//===
>> В академическом мире любят Ц? Вы уверены?
Так, я впевнений:)...
//===
>> Смелое заявление. Мужикам в МС Ресерч уже сообщили?
>> А то они там глупенькие пишут Сингулярити у которой кернел и драйверы написаны на диалекте Сдиеза
Не потрібно демагогії — топік про asm, я доводжу до автора топіка думку — ні компілятор ні ОС не можливо написати тільки на високорівневій мові програмування — Ш ЦЕ АБСОЛЮТНО ТАК І ДЛЯ Microsoft Singularity — де широко використовуються asm та C. На високому ж рівні абстракціі ОС можна викристати будь яку мову (java (доречі є й така ОС), basic, чи придумати свою) — потрібно тільки забеспечити механізми її пидтримки на конкретій платформі і робится це силами asm + C, бо більше ніяк...
//===
Нет, это индикатор того, где Вы на данный момент находитесь в безграничном мире CS

Не зрозумів вираз...

>> Насколько реально востребованы навыки программирования на ассемблере?
десь настількиж наскільки потрібні навички рукопашного бою в реальному житті. Якщо їх немає то нічого трагічного, але якщо вони є, то це чималенький плюс:)
//===
>> Понятно, что ассемблер преимущественно используется для программирования критичных
>> по скорости участков
>> кода, остальной код намного рациональнее писать на высокоуровневом языке.
>> Хотелось бы знать, насколько его реально используют в программистских фирмах
>> при программировании критичных по скорости участков кода?
“Реально” натільки наскільки бірюзовий кольір “реально” використовують художники:) Яке питання така і відповідь.
//===
>> Есть масса направлений, где поддержка этих инструкций последних моделей микропроцессоров
>> просто жизненно необходима: компьютерные игры, программы сжатия/анализа/шифрования
>> данных и т.д. Если кто сталкивался с этим направлением — просьба откликнутся
Щось я слабко собі уявляю навіщо криптографії, чи не приведіть боги Валгалли — зтисненню інформації — підмножина машинних інструкцій які можуть не зустрітися на кожній другій цільовій машині... Чи мався на увазі ассемблер як такий?
//===
>> Хорошую фразу где-то читал: “Изучение ассемблера должно предварять изучение ЯВУ,
>> также как изучение латыни должно предварять изучение романо-германских языков”
добра фраза — але...!!!
це важливо!!!
Чомусь ніхто не зауважив такого важливого питання — одне діло знати як ходять шахи і зовсім інше вміти в них грати.
Так і з ассемблером — знати (логіку, філософію, а не завчити напам’ять) як працюе ЭВМ це одне — і доречі те, що повинен знати кожен хто називає себе программістом; -). Вміти ж эффективно застосовувати ассемблер для написання швидких та надійних програм — це абсолютно інше (!!!). Тому прграммістам-початківцям я порекомендував би не вивчати талмуди по asm-программуванню, а розібратися з якимось 8-ми бітним мікроконтроллером — логікою його роботи, призначенням вузлів, основним командам та методам їх написання.
//===
>> Скорее всего востребован специфический ассемблер для какихнить контроллеров...
для контроллерів — навряд, а для DSP — так, оскільки це їх пряме призначення — працювати щонайшвидше. Не потрібно забувати що DSP це не тільки обробка сигналів, а й, наприклад, контроллери в наших хард-дісках, CD-приводах та іншому. Там зовсім невеличка однозадачна мікропрограмма від швидкості виконання якої залежить ринкова вартість тієї чи іншої приблуди.
//===
>> Многие программисты считают что достаточно алгоритмической оптимизации кода,
>>, а различные оптимизирующие компиляторы выполняют за них остальную работу.
Діло навіть не стільки в цьому, скільки в дуже великій важкості ручної оптимізації, потрібно дуже багато всього тримати в центрі уваги і навіть краще писати программу в зовсім іншому стилі.
//*********************************************************************************************************************************
далі трохи емоційно, тому що мене розлютили
//*********************************************************************************************************************************
>> А по поводу С\С++ — переходите на шарп или жаву, С вообще мертв, а плюсы скоро умрут... ИМХО
Ви, пане хороший, по всьому десь на півсвідомому рівні вважаєте себе пупом землі. І куди б пуп цей не направив стопи свої центр всесвіту завжди слідує тим же напрямком:)... ну-ну...
Пару “словесних етюдів” на цю тему...
1) C — на початку його існування навіть називали переносимим ассемблером, що й не дивно — для портування ОС UNIX його і розробили. Хто програмував на будь якому сучасному (а не “чистому”, для якогось ЕОМ “Мікроша”:) ассемблері то знає — препроцессор, массиви, вказівник, структури — є як в арсеналі як C так asm. Зробити переход від C до asm — просто поглибити своє розуміння архітектури роботи конкретної платформи. Що принципово не так ні для яких там жава чи C-шарп.
2) Слідуючий пункт — прямий наслідок попереднього — світ операційних систем, драйверів, компіляторів, систем без ОС — це світ C. Тому що в академічному світі (університети з дослідницькою діяльностью), що в світі дійсно серьйозного прграммування — литаки (читав що з 500 мільйонів вартості сучасного винищувача — 250 софт:), підводні човни, ракети, etc — C панував і буде панувати аж до часів, а бсолютної зміни архитектур ЕОМ, якщо така колись трапиться:).
3) Ну, а C++ — відповідь на потребу розробки неосяжних (> 10 000 строк) проектів колективом розробників знаходячись в “фундаментальному мейнстрімі” — asm-C-ООП...
P.S.: ніхто не писатиме DSP проектів на java (тільки не треба про можливості роботи с мовними засобами), чи OS на C# -, а те що з’являються такі поради просто ідикатор того де наша країна знаходиться на данний момент у неосяжному світі програмування...

P.P. S.: панові студенту порада — нехай бестолковість підручника, особистість викладача, чи там оцінка (знаю таких “ботанів” що зненавиділи ту чи іншу дісципліну за те що їм не поставили високу оцінк — смішно) не накладає відбитків на Ваше відношення до asmу — так чи інакше розуміння роботи компьютерів на цьому рівні че слідуючий щабель розробника...

Когда 90% процов в мире будут исполнять код Java/C#/Haskel/TCL непосредственно, тогла и умрет ASM -, а пока он как Rock-n-Roll! Не знающих ASM даже не жаль, их добьет кризис, так как человек хоть раз писавший на ASM, способен выкрутится из любой ситуации, а на Visual Basic... гы-гы-гы;) туда им и дорога...

2AntonMartynenko:
«Вы неправы, программист не должен: „Программист всегда должен думать о том, что красивая запись, красивый и внешне понятный код на C/C++ может вылиться в тонну лишних строчек ассемблера при компилировании “.»
Я прав. Я даже не буду особо спорить на эту тему. А прав по простой причине, есть много, очень много людей готовых платить большие деньги именно, но не только, за это. Я так же не буду Вас переубеждать, т.к. мне это даже не выгодно. Я оставлю Вас с уверенностью, что новый интеловский компилятор под новый интеловский процессор выполнит за Вас всю работу:)
«Почитайте на досуге www.rsdn.ru/...ptimization.xml»
Перечитайте мой пост ещё раз. И ещё раз. А эта ссылка для младшей ясельной группы, философский трёп, теоретический изыск. Что вполне естественно для тех времён:)
Вот это должно быть в голове:
www.intel.com/...uals/245127.htm
www.amd.com/...Codec_amd64.pdf

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

2 AntonMartynenko

Просто человек, которому я написал ответ, искренне считает что программист во время написания кода должен чуть ли не машинный код в голове представлять)
Как не смешно Антон — должен. В противном случае он делает такие ошибки, над которыми не знаешь — смеятся или плакать. То что Джава и Сишарп лишены указателей совершенно не означает, что в процессорах исчезла косвенная адресация:)
По поводу С. На каком языке написаны все распостраненные ОС? От Windows до ecos и vxWorks?
По поводу ++. В каком еще языке можно в одном модуле и манипулировать битами в порту и заниматься метапрограммированием? Конечно адепты Александреску немного подпортили дело, но все же...

2 Андрей Светлов

писать на АСМе сейчас практически не нужно. Но ВСЕГДА рано или поздно сталкивался с тем, что нужно уметь читать АСМ

Золотые слова. Лучше и не скажешь.

«...С++ умер — ха. С умер — трижды ха-ха-ха. Просто на этих языках сейчас не стоит писать программу бухгалтерского учета или сайт интернет магазина...», а как же С++ под.NET?

Писал embedded. На C и немного на C++ -, но почти никогда не на ассемблере. Если у контоллера есть хоть немного памяти на программу и данные — существует C компилятор.
Писал gemedev — на Питоне и немного на C++ (хоть эта небольшая часть и была самая критичная).
Драйвера — С и С++ (последнего все больше, ибо удобен). Под винду и 3 года назад можно было писать на плюсах — сам делал (но stl был значительно обрезан).
Сейчас пишу на Питоне и немного на C#. Чуток на С++.
Так вот: писать на АСМе сейчас практически не нужно. Но ВСЕГДА рано или поздно сталкивался с тем, что нужно уметь читать АСМ. Либо для того, чтобы сделать действительно оптимальный код, либо — что гораздо чаще — чтобы суметь правильно прочитать stack trace и поймать эту самую чертову ошибку.
Мне довольно часто приходилось видеть этот «кошмар прикладного программиста», когда большая и сложная программа валится на невнятном сообщении «выполнена недопустимая операция». И без знания АСМа понять, что случилось — невозможно. Со знанием, впрочем, тоже не то чтобы легко.

С++ умер — ха. С умер — трижды ха-ха-ха. Просто на этих языках сейчас не стоит писать программу бухгалтерского учета или сайт интернет магазина. Но если потребуется нечто поболее и высоконагруженное — скорее всего прийдется подумать о том, чтобы сделать некоторые внутрисистемные части таки на сях/плюсах. Потому что иначе тормозят неимоверно.

Ну вы еще холивар тут начните: С\С++ против альтернативных языков программирования. Просто человек, которому я написал ответ, искренне считает что программист во время написания кода должен чуть ли не машинный код в голове представлять) Когда-то писали на Cobol, Fortran, Pascal... и где они сейчас?... Ну это все оффтоп

Спрашивали про ассемблер — ответ думаю в этом топике уже есть и довольно развернутый... Как видите, в нашей стране ассемблер нужен в виде бонуса к знанию С\С++, но не более.


а почему никто не вспомнил разработку микроконтроллеров разных?

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

Потому что для большинства микроконтроллеров код пишется на С

а почему никто не вспомнил разработку микроконтроллеров разных?

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

Си++ просто занял свое место в сегодняшней ситуации в ИТ. Там где он востребован и наиболее эффективен никто вытолкнуть его не сможет, те же джава и СиШ. Поэтому говорить о скоропостижной кончине пока смысла нет. Возможно он только начинает жить.:)

2 gorik

А по моему С++ вытесняют (те же C# и Java) оттуда, где ему не место

2 billneutron
Книгу обязательно взгляну, спасибо. Но попробую отмазаться:)
В последний раз писал kernel mode под винду 3 года назад, с этого времени много воды утекло... Да и висты еще не было. Хотя в user mode, кажется, уже тогда писали на плюсах (поправьте, могу ошибаться).
А пост мой навеян пагубным влиянием Linux’а и RTOS.

В остальном — согласен. Только причина «бессмертия» совсем не в существующих наработках. Зачем C/C++ дохнуть, когда они всем устраивают и активно развиваются?

«С» пожалуй еще некоторое время будет жить, а «С++» действительно потихоньку умирает. Имхо.

«... С вообще мертв, а плюсы скоро умрут... ИМХО...» при нынешней распространности С++ умрет очень, очень и очень не скоро.
Вы думали о том сколько человеко-лет нужно чтобы переписать существующий софт с С++ на шарп или жаву?
Сколько дестяков (а то сотен) триллионов долларов нужно потратить?

А самое главное какие весомые аргументы для перехода на шарп или жаву?

«...С вообще мертв, а плюсы скоро умрут... ИМХО...» это что-то новенькое, Вам нужно срочно докторскую писать по компьютерным наукам

«...По поводу „мертвого С“: Вы ведь не станете писать драйвер на джаве? И на С++ тоже не станете...» драйвера под Виста (за редким исключением) пишутся именно на С++, а не С.
Вот книга об этом:

www.proklondike.com/...contentview.php content=484

>> «А по поводу С\С++ — переходите на шарп или жаву, С вообще мертв, а плюсы скоро умрут... ИМХО»
Мир не заканчивается на корпоративных приложениях и интернет сайтах. ИМХО:)
Ни чуть не спорю с тем, что эти отрасли за счет аутсорса продвигают вперед весь отечественный хайтек. Наверное поэтому у Вас и сложилось подобное мнение.
По поводу «мертвого С»: Вы ведь не станете писать драйвер на джаве? И на С++ тоже не станете...
У С/С++ совсем другая целевая аудитория, где как первый так и второй — были, есть и будут. Здесь общие знания ассемблера целевой платформы не то что приветствуются, а просто необходимы (хотя на нем пишут крайне редко, даже вставки).

Чистый академический ассемблер (х86) у нас скорее всего пригодится только для академических целей (субъективно).

2lestat
Вы неправы, программист не должен: «Программист всегда должен думать о том, что красивая запись, красивый и внешне понятный код на C/C++ может вылиться в тонну лишних строчек ассемблера при компилировании».
Почитайте на досуге www.rsdn.ru/...ptimization.xml

А по поводу С\С++ — переходите на шарп или жаву, С вообще мертв, а плюсы скоро умрут... ИМХО

спрос на ассемблер совсем небольшой, но есть:

reboot.com.ua/...cgi-bin/job/vac q=assembler

На мой взгляд, без знания ассемблера не может быть ни одного программиста на C/C++, способного писать эффективный и быстро выполняющийся код. Программист всегда должен думать о том, что красивая запись, красивый и внешне понятный код на C/C++ может вылиться в тонну лишних строчек ассемблера при компилировании. Многие программисты считают что достаточно алгоритмической оптимизации кода, а различные оптимизирующие компиляторы выполняют за них остальную работу. Нет, алгоритмической оптимизации мало и компиляторы, какие бы оптимизирующие они не были, они не способны эффективно скомпилировать плохо написанный код. Это первое и самое главное для чего нужно преподавать ассемблер, как азы.
Всё остальное сказанное здесь тоже верно, ассемблер часто нужен для embedded программистов, для написания драйверов, бутстрапов, для оптимизации кода при использовании различных расширений процессора и т.д.

Тут звучала фраза о том, что свежие выходящие компиляторы используют при генерации кода все доступные расширения команд процессоров, упоминался даже Intel’овский компилятор, который может использовать все свежие расширения и наработки. Это всё так, но одной уверенности мало. Необходимо знать как писать код на C/C++, надо представлять, во что код на C/C++ выльется при компиляции, чтобы компилятор всё мог собрать, хотя бы с использованием MMX/SSE1/3DNOW!, не говоря уже про дальнейшие расширения. Простое включение галочки «Use SIMD instructions», либо указание /arch: SSE2 не поможет ни капли.

2Sherlok — читал я этот опус, читал. Чуть ли не в год выхода. И по моему мнению, это заурядная рефлексия русского интелегента. Программист пишущий только компиляторы сродни музыканту, который играет только Бетховена. Человек умеющий писать компиляторы должен разбираться в синтаксическом и семантическом анализе, операционных системах и процессорных архитектурах. Я уже не говорю про сам язык. И гуру в любом из этих направлениях идет на вес золота. Если конечно хочет и может продать свои умения. Чего руссская интелегенция не умеет и не хочет.

А на деле, за последний год мимо меня прошли ТРИ позиции спецов по компиляторам. В Украине. Что вобщем-то заставляет задуматься.

2 eugene_n: Насчет применения могу еще добвить все чаще появляющюся тему компиляторописания.
Компиляторописание — чрезвычайно редкая профессия, не думаю, чтоб с 1997го что-то резко изменилось
почитайте Зуева
www.interstron.ru/..._professiya.pdf
zouev.blogspot.com/...og-post_28.html

сам как (в том числе) компиляторописатель на себе почуствовал, когда-то.)

2billneutron
Используется в основном x86 ассемблер, который еще с процессорами 80386 появился, остальные почти не востребованны. Всякие там ТриДэНау и SSE5 — вы под них врядли сможете эффективно программировать, вы хотя бы посмотрите количество команд в них...
«Есть еще одно направление, где без ассемблера очень трудно обойтись. Это использование новых инструкций последних моделей микропроцессоров, всяких там 3DNow10, Ulta MMX, HiperSSE5 и т.д. Ведь не секрет, что компиляторы с высокоуровневых языков обычно включают поддержку новых инструкций с существенной задержкой во времени, кроме того, реализация поддержки этих новых инструкций зачастую заставляет желать лучшего.»
Тут Вы ошибаетесь. Во-первых, количество компьютеров с SSE5 ничтожно мало по отношению к общему количеству компьютеров, во-вторых, тот же интел, насколько мне известно, одновременно с процессором выпускает компилятор под него для языков (C++ и Fortran точно) www.intel.com/...lers/284132.htm

Ассемблер является необходимым профессиональному девелоперу, но не достаточным языком для успешной работы. Скорее всего востребован специфический ассемблер для какихнить контроллеров, но для x86-x64 процессоров писать программы на асме — это все равно что стоить небоскреб без подъемных кранов и прочей техники.

странно, неужели действительно программирование на АСМ настолько слабо востребовано

2 Sherlok ну собсно и подразумеваеться, что студент выучит асм в тоже время, когда и дискретную математику и теорию БД. Правда нынешний молодняк уже и «Hello world» без 300-мегабайтной ИДЕ не в состоянии написать: (

Насчет применения могу еще добвить все чаще появляющюся тему компиляторописания.

«... А Вы с какой целью интересуетесь?... » статистику подвести, работы у меня хватает

to eugene_n: предварять-то в идеале конечно должно, но кривая обучения от этого страдает, пойдет ли кто на это? из пары < готовый программист или фирма ему платящая>. наверное нет. ассемблер учить будут как и раньше только гик-студенты. ассемблер (весь CISC x86±го) реально выучить можно только за год, imo.
2 billneutron: А Вы с какой целью интересуетесь? найти работу или статистику подвести?
Если случай работы, то, мне кажется по-первых вакансий чистого асм уже ждать бессмысленно, не начало 80х, сейчас только вместе со знанием С/С++ asm может жить. Вы совершенно правы и про сложную отладку (что случается намного чаще) и про задачи числодробительные, когда применение низкого уровня может быть оправданно.
А если смотреть именно в такокй связке (C/C++/asm), то можно их встретить в задачах-или-вакансиях 1 драйверо-писания 2 антивирусо-писания, наверное в части вирусо-понимания, либо в ядре антивируса копошиться. правда в ядра антивирусов в основном не пускают, особенно, когда стабильно-денежный продукт:)

Из недавних примеров когда сделали что-то сами, не без ассемблера, так скажем — это группа создавшая RootKit Unhooker. просуществовали пару лет, создали лучший продукт в своей нише..., а после этого их купило Microsoft.

Хорошую фразу где-то читал: «Изучение ассемблера должно предварять изучение ЯВУ, также как изучение латыни должно предварять изучение романо-германских языков»
Практически на ассемблере никто не программирует, но без его знания программист не имеет представления о работе компьютера. Распределение памяти, передача параметров, сигнатура функций, все имеет под собой асмовый бэкграунд,
А без понимания этих вещей программист просто тупой пользователь фреймворка.
Кроме того асм крайне полезен (а иногда необходим) в случаях сложной отладки.

Так что учите — оно того стоит.

Есть еще одно направление, где без ассемблера очень трудно обойтись. Это использование новых инструкций последних моделей микропроцессоров, всяких там 3DNow10, Ulta MMX, HiperSSE5 и т.д. Ведь не секрет, что компиляторы с высокоуровневых языков обычно включают поддержку новых инструкций с существенной задержкой во времени, кроме того, реализация поддержки этих новых инструкций зачастую заставляет желать лучшего.
Есть масса направлений, где поддержка этих инструкций последних моделей микропроцессоров просто жизненно необходима: компьютерные игры, программы сжатия/анализа/шифрования данных и т.д.

Если кто сталкивался с этим направлением — просьба откликнутся

Понятно, что ассемблер преимущественно используется для программирования критичных по скорости участков кода, остальной код намного рациональнее писать на высокоуровневом языке.

Хотелось бы знать, насколько его реально используют в программистских фирмах при программировании критичных по скорости участков кода?

При программировании под Windows, практически нет разницы что использовать: Си или Ассемблер. Все равно все сводится к вызову множества системных функций. Так что код на Си не только будет работать очень быстро, но и лучше читаться. Конечно же ассемблер будет работать быстрее. Но, эта скорость реально нужна только при программировании критичных по скорости участков кода.

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

Підписатись на коментарі