bemaniacs
23 Декабрь 2024, 02:07:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
 
   На сайт    Начало   Помощь Поиск Галерея Войти Регистрация  
НОВИЧКАМ!
Если вы новичок - не стесняйтесь писать на форуме.
Вы нужны нам, а мы нужны вам :)

Если у вас возникли вопросы или вы хотите просто пообщаться - посетите раздел для новичков.
Если же вы хотите узнать, где постепать - посмотрите список автоматов в Киеве.
Cooled contest! -_-
SKLOntest-2010
Соревнование на разнообразных заданиях, придуманных участниками
Правила | Задания

Страниц: [1]   Вниз
  Печать  
Автор Тема: Старое и новое. Языки программирования etc.  (Прочитано 6821 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
JAM
Без рейтинга

Offline Offline

Сообщений: 639

User №113


Просмотр профиля
« Начало темы: 08 Январь 2009, 02:15:01 »

Предлагаю продолжить спор здесь.

Очень показательный пример, кстати. Вместо того, чтобы учить и тут же применять C# и делать что-то полезное... копаться в нюансах ассемблера, на котором ты сделаешь код заведомо хуже, чем компилятор Вверх направо
Во-первых, благодаря ассемблеру можно написать программу, хоть и медленнее, но качественнее. Пример. Есть несколько разных эмуляторов одной приставки, написанные разными авторами. Процессор требуется от 166 до 300 МГц. Эмулятор, написанный полностью на ассемблере, ничем не уступает остальным, работает быстрее и требует всего 100 МГц.

А во-вторых, ассемблер -- такая штука, зная которую, можно превратить Shareware в Freeware, пусть и написанную быстро и легко на языках высокого уровня  Вверх направо.
Не так давно мне понадобилось запустить Turbo Pascal, а он на новых компьютерах не работает из-за ошибки деления на ноль. Всего лишь поменяв 3 байта на "nop", я добился того, чтобы TP запускался без проблем.

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


Бла-бла, пространные теоретические суждения Улыбающийся Поверь мне, я игропрограммист и знаю, где применяется ассемблер. Даже в геймдеве он применяется очень редко. А тем более ассемблер x86 - его вообще практически бессмысленно сейчас применять. Я также знаю, что знание C# и .NET гораздо полезнее для того же игропрограммиста - быстро делать утилиты. Но это я как практик знаю. А Джем - как ни разу не практик, а теоретик - изучает ассемблер Улыбающийся

А в-четвёртых, кто сказал, что я не знаю языки высокого уровня и не изучаю их? Я же сказал, в качестве хобби изучаю ассемблер =)



О чём и речь, не о языках на самом деле, а об отношении к пампу. Я, как теоретик, играю всё что надо к чемпионату без мысли о том, что "брут неправильно, хайспид неправильно". А Джем доводит нормалы до FPC и с линейкой измеряет скоринг устаревшего микса. Разница в подходах что там, что там - показательная.
А я, знаешь ли, играю песни не только ради "о, вот это будет на чемпонатах, это надо задрочить, а это убрали с нового микса, значит, можно больше не играть даже если песня хорошая". Я с одинаковым удовольствием могу позадрачивать как старые, так и новые песни. Если я вижу песню, которую ещё не играл, то для меня она новая. И на важно, это песня с NXA или с какого-нибудь 2nd Dance Floor, который я первый раз в жизни вижу. Ты играть просто ради удовольствия не пробовал играть хоть иногда? Или играть просто чтобы пройти песню на хороший результат (если просто нравится старая песня или степчарт уж больно хорош), не заморачиваясь, пригодится это на чемпах, или нет.

Ты, как и большинство людей, слишком ограничен. У вас нет 4-х мерного мышления. Почему если старое или устаревшее -- то сразу фигня, недостойная внимания, а если новое, то обязательно хорошее и прогрессивное? К примеру, если игра -- хит своего времени, то я с удовольствием в неё поиграю, хоть она 2007-го года выпуска, хоть 1987-го. С помощью тогдашних технологии создать что-либо великое тоже не каждому дано. Я и сейчас способен восхищаться, как революционными новыми играми, так и старыми, с осознием того, что до этой игры ничего подобного не было. Меня в своё время поразил Doom на SNES. Пусть с тормозами, не со всеми уровнями, но тем не менее, Doom на 16-битной приставке!
Записан

Фундамент : [█ █ █ █ █ █ █ █ █ █] 100%
Ювелир:[█ █ █ █ █ █ █ █ █ █]█ █ █ 130%
Dino
Глобальный модератор
Без рейтинга
*
Offline Offline

Сообщений: 2376




Просмотр профиля
« Ответ #1: 08 Январь 2009, 02:49:09 »

Предлагаю продолжить спор здесь.

Поддерживаю. Ангел

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

Неправда. Во-первых, это практически неправда даже для одного процессора конкретной линейки (Netburst или Core) конкретной архитектуры, потому что надо знать все нюансы работы конвейера комманд и механизма кеширования. Вот даже во времена первых пентиумов - ты знал, что такое U- и V- пайпы, по каким правилам комманды спариваются в них на этапе выполнения? Если нет - считай, что ты уже вдрызг проиграл компиляторам. Современные же процессоры ещё сложнее.

Если же говорить о том, чтобы заточить программу под разные процессоры (и да-да, даже портировать в итоге под какой-нибудь XBox360) или собрать максимально оптимизированный бинарник под процессоры новой линейки, когда она выйдет (скажем, Core i7) - то написание на ассемблере - это однозначный фейл. Надо обьяснять, почему?

Есть несколько разных эмуляторов одной приставки, написанные разными авторами. Процессор требуется от 166 до 300 МГц. Эмулятор, написанный полностью на ассемблере, ничем не уступает остальным, работает быстрее и требует всего 100 МГц.

Уже смешно. Давай ещё под ZX Spectrum оптимизировать будем.
Даже ноутбучные процессоры сейчас... да что там ноутбучные - нетбучные даже - от гигагерца и выше.

А во-вторых, ассемблер -- такая штука, зная которую, можно превратить Shareware в Freeware, пусть и написанную быстро и легко на языках высокого уровня  Вверх направо.

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

Не так давно мне понадобилось запустить Turbo Pascal, а он на новых компьютерах не работает из-за ошибки деления на ноль. Всего лишь поменяв 3 байта на "nop", я добился того, чтобы TP запускался без проблем.

Рекомендую задуматься над тем, почему проблема запуска такого го... продукта, как турбо паскаль, интересует только тебя. Меня, например, почему-то больше интересуют .Net, Python и Windows 7.

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

См. выше, про "заточенность под архитектуру".
Кстати, добавлю ещё, что помимо ставшего уже привычным SSE (ты учишь комманды SSE?) сейчас всё более модно становится переносить вычисления на видеокарту. Погугли на предмет такой штуки, как "CUDA". x86 тут остаётся ещё более не при делах.

А в-четвёртых, кто сказал, что я не знаю языки высокого уровня и не изучаю их? Я же сказал, в качестве хобби изучаю ассемблер =)

Плохо изучаешь, значит. Чтобы изучить всю прорву более полезных, чем ассемблер, вещей, надо положить не один десяток лет. А если бы ты начал изучать какие-то смежные с программированием вещи - типа эргономики пользовательских интерфейсов - вполне возможно, ты бы заработал столько, что тебе бы даже думать не приходилось о том, "как бы превратить shareware во freeware".

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

Ты меня недопонял. Я, конечно, с большим удовольствием сыграю хороший трек, будь то старый или новый. Например, в Минске на пятом миксе я играл Dive, потому что он мой любимый. Но это не значит, что я готов его задрачивать до FPC. А вот актуальные треки приходится задрачивать, ибо чемпионат. А если этот трек - ещё и какой-то полубред типа Slam, то когда его убирают из треклиста, я даже вздыхаю с удовольствием, ибо просто так его играть мне нафиг не упало.
« Последнее редактирование: 08 Январь 2009, 02:58:45 от Dino » Записан

Do the impossible, see the invisible
RAWR! RAWR! Fight the power!
Touch the untouchable, break the unbreakable
RAWR! RAWR! Fight the power!
Dino
Глобальный модератор
Без рейтинга
*
Offline Offline

Сообщений: 2376




Просмотр профиля
« Ответ #2: 09 Январь 2009, 07:18:29 »

Довод Jam два:
А во-вторых, ассемблер -- такая штука, зная которую, можно превратить Shareware в Freeware, пусть и написанную быстро и легко на языках высокого уровня  Вверх направо.
Только с современными методами защиты для взлома надо быть спецом такого уровня, что тебе дешевле выйдет эту программу купить (и получить бесплатные апдейты, а не ломать их каждый раз), а не трахаться с её взломом. А на бытовом уровне - проще порыться в торрентах и прочих файлопомойках, найдёшь кряк.
Весьма не объективный ответ. Скорей Jam имел ввиду потенциальную возможность как таковую, а не личную заинтересованность.

Я говорю с практической точки зрения. У Джема это выглядит как "а давайте за<censored>еним такую боевую машину, чтобы умела плавать, летать, ездить и ещё на борту несла атомные боеголовки, чтоб этим всем круто было воевать". Я же предлагаю подумать, что а) это непрактично даже с точки зрения конструктива, и б) а оно нам надо, воевать? Ну это так, утрированный пример.


Довод три, ух...
Не так давно мне понадобилось запустить Turbo Pascal, а он на новых компьютерах не работает из-за ошибки деления на ноль. Всего лишь поменяв 3 байта на "nop", я добился того, чтобы TP запускался без проблем.
Рекомендую задуматься над тем, почему проблема запуска такого го... продукта, как турбо паскаль, интересует только тебя. Меня, например, почему-то больше интересуют .Net, Python и Windows 7.
О, да, нам так интересны твои интересы.

В общем на доводы проще всего увести разговор в сторону или давить на конкретный пример... Улыбающийся

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

Для формальной точки составлю список. "Полезные вещи на асме":
Драйвера - пишутся к примеру на асм вставках и С++

Да что ты говоришь? По моим сведеньям, они пишутся при помощи чистого C, как правило, и DDK.

Отладка в дизассемблере - как уже сказал Jam о Turbo Pascal, ну и я свой пример добавлю: практически та же ситуация бывала у меня в играх, мелкая назойливая ошибка из-за которой постоянно вылетало, но пару минут в отладчике всё исправляли.

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

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

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

Пиратство - как ни крути, пол интернета на этом живёт (а у Украины к тому же один из самых высоких показателей).

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

Микроконтроллеры - да и вообще аппаратное программирование.

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

Написание вирусов

Без комментариев. Заниматся такой хернёй можно, во-первых, от острых психологических проблем, помноженных на одиночество (в народе - "нидадуд"). Во-вторых, давно уже не требует знания ассемблера. См. макровирусы и ботнеты.

Написание антивирусов

Ещё смешнее. Это как разгружать вагоны кирпичей удовольствия ради.

Написание трансляторов

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

Ядра ОСей

Здесь даже C++, не то что C будет использоваться. Ты плохо представляешь себе сложность современных ядер осей.


Короче говоря, это ты увёл разговор в сторону. А тема изначально была простой - человек X ради "удовольствия" изучает ассемблер. Если бы он написал что-то вроде - "активно готовлюсь поступить на работу в Symantec, изучаю имеющиеся методы заражения и бла-бла" - я бы ещё поверил, что он готов писать антивирусы. Но ничего подобного мы не наблюдаем. Мы наблюдаем совершенные понты в изучении устаревшей технологии программирования, которая никогда не будет применена для чего-то полезного и современного. Не напишет он ни ядра ОС, ни антивируса современного уровня.
Записан

Do the impossible, see the invisible
RAWR! RAWR! Fight the power!
Touch the untouchable, break the unbreakable
RAWR! RAWR! Fight the power!
phylosoph
Администратор
Без рейтинга
*
Offline Offline

Сообщений: 2166



милый задрот


Просмотр профиля WWW
« Ответ #3: 09 Январь 2009, 12:40:18 »

Brazier,
да что ты говоришь, я занимался разработкой коммерческих драйверов. Догадайся на чем их пишут? Улыбающийся
Их пишут на:
1. C + WDK (Windows Driver Kit, новая версия DDK)
2. C + WDK + NDIS (Network Driver Interface Specification, если сетевые драйвера)
3. С++ + WDF (если позволяет тип драйвера). WDF = KMDF (Kernel Mode Driver Framework) + UMDF (User Mode Driver Framework).

Да, и антивирусы на asm'e тоже не пишут. Антивирусы пишут на плюсах, прикинь!

Это всё аргументы из личного опыта. В остальном целиком поддерживаю Дино. Вы ребята сначала покрутитесь в среде (в смысле фирмы, команды) разработки низкоуровневого и эмбеддед софта, а потом говорите.
« Последнее редактирование: 09 Январь 2009, 12:42:35 от phylosoph » Записан

Zmey
Без рейтинга

Offline Offline

Сообщений: 1477




Просмотр профиля
« Ответ #4: 09 Январь 2009, 13:09:43 »

Я поддержу Дино в том, что изучать лучше языки высокого уровня (только, наверное, не C#, а Java или C++). Только когда владеешь ими на уровне практического применения - лезть в дебри ассемблера.

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

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

При создании драйверов и игр для PC асм почти не юзается.
Записан
Dino
Глобальный модератор
Без рейтинга
*
Offline Offline

Сообщений: 2376




Просмотр профиля
« Ответ #5: 09 Январь 2009, 15:55:23 »

Я поддержу Дино в том, что изучать лучше языки высокого уровня (только, наверное, не C#, а Java или C++).

Ну тут вопрос. Для себя что-то написать - из этих троих лучше C#. Для КПК, кстати, тоже. Java... для мобильников, хотя я не в восторге от её портативной редакции. С++ имеет смысл изучать только серьёзно программистом работать, это очень неудобный язык для прототипирования.
Записан

Do the impossible, see the invisible
RAWR! RAWR! Fight the power!
Touch the untouchable, break the unbreakable
RAWR! RAWR! Fight the power!
phylosoph
Администратор
Без рейтинга
*
Offline Offline

Сообщений: 2166



милый задрот


Просмотр профиля WWW
« Ответ #6: 09 Январь 2009, 15:58:23 »

Я тоже считаю, что лучше с С#, да и популярен он сейчас достаточно.
Записан

Saboteur
Администратор
Без рейтинга
*
Offline Offline

Сообщений: 709



Творю миры


Просмотр профиля
« Ответ #7: 10 Январь 2009, 14:02:15 »

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

Сейчас специалисты по асму требуются для обслуживания некоторых суперкомпьютерах и программирования микроконтроллеров, которые либо в силу своей редкости не смогли обзавестись удобными студиями/компиляторами, либо в силу своей убогости этого не требуют. У меня в GlobalLogic таких специалистов некоторое время назад (3-4 года) активно искали, но уже нашли и с тех пор вроде больше и не надо...
Записан

Sergii Kulyk aka Saboteur (В гостях у Саботёра)

Вы слышите маты? А это жители Виллабажо все еще моют посуду...
nys p na anwodo al qa и вы что, думаете в первой части есть какой-то смысл?
Dino
Глобальный модератор
Без рейтинга
*
Offline Offline

Сообщений: 2376




Просмотр профиля
« Ответ #8: 10 Январь 2009, 18:30:25 »

Полезен на уровне понимания архитектуры процессора,


Для изучения архитектуры современного процессора надо изучать архитектуру современного процессора - микрокод, кеширование, векторные операции. Задрачивание всяких REP MOVSB ничего не даст. Кроме того, я вообще не понимаю, зачем зацикливаться на x86 - есть, во-первых, ещё достаточно распространённые PowerPC, есть чипы видеокарт, которые уже приспосабливают под не-графические вычисления - та же CUDA, при помощи которой скоро будут прорендеривать промежуточные кадры в фильмах 25FPS для более плавного воспроизведения.

Вот это - востребованные области, с их знанием можно и на хлеб с маслом заработать. Например, за качественный интерполятор кадров в фильмах лично я готов выложить баксов 100 или больше (за сам софт, не считая стоимости видеокарты), и таких пользователей много. А просто ассемблер x86 - баловство, навроде умения владеть эспадоном в нынешних же условиях.
« Последнее редактирование: 10 Январь 2009, 18:32:25 от Dino » Записан

Do the impossible, see the invisible
RAWR! RAWR! Fight the power!
Touch the untouchable, break the unbreakable
RAWR! RAWR! Fight the power!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Топ-10 флудеров
Dino
Posts: 2376
Gremlin
Posts: 2259
phylosoph
Posts: 2166
Zmey
Posts: 1477
Bittersweet
Posts: 1130
4yVak
Posts: 1034
Ov3rlorD
Posts: 954
Mindless
Posts: 899
Haru-chama
Posts: 807
pyro__maniac
Posts: 799
Powered by EzPortal
Powered by MySQL Powered by PHP Powered by SMF | SMF © 2006-2009, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!