Ребята , я решил освоить кодинг , точнее ассемблер . Интересует меня , реально ли освоить этот язык на продвинутом уровне за год ? Если да то как построить обучение , сколько времени уделять в день теории/практике ? Просьба не пинать и не стебаться . Заранее спасибо .
В освоении ассемблера как такового нет никаких сложностей. Сложности возникают когда ассемблер рассматривается применительно к некой архитектуре (x86, ARM, PowerPC, ...) и операционной системе (Windows, Linux).
Сам по себе язык ассемблера не дает понимания как программировать под ту же винду например. Но дает теоретическое представление о том, как на самом деле работает компьютер, из чего на самом деле состоят операционные системы и приложения к ним. На практике теоретического представления мало, потому что нужны точные технические знания как можно обратиться к операционной системе чтобы она хоть что то сделала. Один путь - читать официальную документацию с описанием доступных программных функций, реализованных в системе, но она обычно написана на синтаксисе С, который, соответсна, нужно знать. Другой путь - проглотив мануал для чайников, заглянуть отладчиком в нутро первому попавшемуся программному модулю, который, зараза такая, тоже временами состоит из функций. Понять что делает, например, функция NtQuerySystemInformation не читая ни разу документации по функциям хотя бы стандартной библиотеки функций С-языка, представляется нереальной задачей для новичка. Потому что как такового представления о функциях в языке ассемблера нет, точнее их реализация предоставляется программисту, а как они реализованы в винде не рассказывается. Знание языков программирования, даже блестящее, только открывает путь к изучению операционных систем и никого сразу не делает профессиональным исследователем программ. Ассемблер я начинал изучать с уроков на http://cracklab.ru/kid.php , о чем не жалею. Читал книги Юрова и Зубкова. В общем то основы усвоил. Да, где то год и ушел, в свободное время от работы и домашних дел.
смотря как стараться чем больше, тем лучше начните, например с уроков Исзелиона http://wasm.ru/publist.php?list=1
Зачем оно вам надо? Потому что в пособии а-ля "Как стать юным хацкером" написано, что хацкер в совершенстве владеет ассемблером? Чтобы освоить кодинг прежде всего надо научиться писать программы. Начинать с ассемблера -- всё равно что начинать учить французский с изучения латыни, аргументируя тем, что романские языки пошли от разговорного римского наречия. Оптимальный вариант -- учите кресты (С++). На это уйдёт года три Научитесь кодить на плюсах -- остальные распространённые ЯП покажутся детским лепетом.
Enterado тут позвольте не согласиться! Начинал с асм, первое куда порвался ДОС, т.к. "чудом" оказалась у меня книга Питера Абеля...Много чего пробовал, немного написал. И след этап был уже неплохой по написанию PIO дрова для реального режима(вроде) - ось писали со знакомым))) Правда потом я полностью ушел от кодинга. К чему вёл - все зависит от того с чего начинать! Если кодить винду - мой совет си, самый блиский к асм, потом будет проще перейти. Разобравшись, хоть немного в основах WinApi, как пользоваться google&msdn вот тогда и приступать к изучению асм. ИМХО!)
ну мне лично знание ассемблера(ну хорошо, основ ассемблера) помогло не "заучивать" другие языки, а понимать их. Равно как и знание английского избавило от необходимости заучивать многое в ассемблере. Но у каждого свои понятия...
Что мде...? Выучив русско-английский словарь на 3000 слов вы несомненно овладеете в совершенстве английским и будете писать прозу и поэзию, да? "изучить язык" и писать на этом ЯП реальные проекты (утилы-криворучки в расчет не берем) совершенно разные вещи.
Enterado ну да, правильно, профессиональное овладение языком в совершенстве требует долгих лет практики. Лет пять если заниматься серьезно. Вы это хотели сказать ТСу? Я с этим согласен.
dZentle_man он это мне говорил) Enterado вы путаете знание языка и умение проектировать ПО. Знание языка это практически знание его синтаксиса и возможностей. Для этого достаточно прочитать одну книжку, от создателя) Делать хорошие проекты можно на любом языке, и да, тут нужен опыт и мозги. А написание кода это чисто механическая работа.
dZentle_man Именно это. Если стоит задача профессионально заниматься программированием. Добавлю еще умение работать с заказчиком и умение работать в команде разработчиков. Если же это просто в виде хобби и/или для приятного времяпровождения, тогда можно начинать по произвольной программе: берется книжка с теорией, примерами кода и упражнениями, читаем, переписываем чужой код, пишем на основе его свой. Насколько упорно будешь стараться -- настолько быстро и освоишь. По асму из русских авторов мне нравился Пирогов.
Ну да, я его какбэ поддержал. Профессионализм как раз в знании синтаксиса до мелочей, узких мест, лазеек, странностей и багов. Прочитав книжку от создателя можно узнать основы, и даже с их помощью выкрутиться практически из любой ситуации, но это еще не профессионализм. Механическая работа может быть долго и уныло, а может быть быстро и качественно.
Ну да, все зависит от того, какая стоит задача. Для программиста профессионализм очень важен, для исследователя второстепенен, более важна широта и глубина кругозора. UPD: ну а если хобби, то тут уж вообще все равно что и с чего начинать.
onSide Ага, прочитайте 1000 страниц Страуструпа и на вас снизойдёт небесная благодать, и вы сможете в своем резюме написать: знание языка программирования си-плюс-плюс! )) Ничего я не путаю.
dZentle_man не сюда попал, хотел сюда https://wasm.ru/forum/viewtopic.php?id=38181 я здесь сотру и туда перепощю
Enterado конечно, смогу так писать) Только при этом надо будет добавить кол-во лет опыта, что и будет решать. Чтобы сделать хороший проект надо сначала придумать алгоритм его работы, а потом реализовать средствами нужного языка. Алгоритмы всегда решали. 3 года можно учится правильно применять знания языка, а не сам язык. Судя по всему, каждый останется при своем мнении=)