Программированием я увлекся, когда мне было 8 лет. Моя мать (и ее сестра) работала оператором ЭВМ (писала в машинных кодах и на ассемблере). Батя - "чернокнижник". Сколько себя помню - он постоянно что-то читает. Да и не только читает, книги - это его род деятельности. Он ЧП-шник и занимается продажей книг (дома библиотека на over 1500 книг). Ну, понятно, что сынишку тоже надо посадить за чтение - пусть сам развивается и родителем голову не морочит. Научили читать меня в 3 года и, с тех пор я целыми днями сидел и читал всяких Винни-Пухов. Когда мне было 8 лет, приехали как-то в село к Деду в гости. Я сразу полез в книжный шкаф, и нагуглил там немного книг... литературка в шкафу была довольно специфическая, но что читать, для меня особой разницы не было - лишь бы читать. Ю.А. Первин - "Основы Фортрана", издательство "Наука", 1972 К. Джермейн - "Программирование на IBM/360", издательство "МИР", 1971 Д. Кнут - "Искусство программирования для ЭВМ", издательство "Мир", 1976 (да, этот тот самый Дональд Кнут! На картинке пруф) Ну и кучу разной литературы на тему "функции, анализ, и прочая алгебра" Вот серьезно. Сидел я как-то в офисе быдлокодил на PHP и параллельно искал литературку в Интернете для саморазвития. Ну и везде пишут "Дональд Кнут". Очень тогда хотел купить себе этого Кнута... но, вместо этого, купил себе двухтомник Хорстмана по Яве (сам понимаешь, что PHP - это дно: выполнение один и тех-же примитивных задач, че-то извлечь из базы данных, че-то обратно туда засунуть, сформировать страничку с ненависным html, ну DOMDocument там максимум... сокеты? А где они используются, если весь быдлокодинг в офисе - это ковыряние в плагинах вордпресса?). В общем, Кнута тогда так и не купил, а потом из офиса съебался и закончились деньги. Полез я как-то в шкаф - очень меня числа Фибоначчи заинтересовали (деаноньте: http://xcont.habrahabr.ru ) и помню, что где-то я о них в далеком детстве читал уже. А там ВНЕЗАПНО Дональд Кнут. Да еще и какой раритетный! Начал читать - начал ловить дежавю и вспомнил, что читал его в детстве. В 8 лет Литература мне эта в детстве очень понравилась. Такой контраст после инфантильных сказочек. А тут логика. Систематическая и аргументированная подача информации. Решил я тогда, что тоже буду программировать на ЭВМ-ах. Чуть позже дома завелся БП ЭВМ "ПОИСК" и родители очень быстро подсуетили мне книгу "Программирование микроЭВМ на языке БЕЙСИК, издательство "радио и связь", 1991. Это был первый язык, который я освоил. Больше всего мне в нем нравилось, что любую циклическую конструкцию можно реализовать с помощью оператора GOTO. Ну и просто нереально понравились массивы. Заполняешь его в начале по шаблону (единичками, например), пишешь элементарный алгоритм, который элементы массива обрабатывает и в зависимости от результатов изменяет свое поведение... и на выходе получаешь совершенно новую (и зачастую непредсказуемую) структуру из данных. Именно тогда впервые заинтересовался синергетикой и теорией хаоса. После Васика изучил Pascal. Сразу скажу, что этот язык ну очень не любил (не кидайте в меня тапки). Вот эти "Program q" с которых начинается каждая программа, складирование всех переменных в начало программы, begin/end вместо божественных фигурных скобок. Но знал я его досконально. Свои лабы сдавал сразу, потом на протяжении семестра делал лабы всей группе. Параллельно с Pascal программировал так же на Visual Basic (не кидайте в меня тапки). Программировал на нем чисто "для души" (клеточные автоматы и прочую шизотронику). Чуть позднее был еще Delphi, в который особо вникать не стал. Вообще, в дальнейшем все языки начинал изучать с реализации клеточного автомата. Очень, кстати, годный способ освоить язык. Тут: 1) Ввод данных пользователем. 2) Обработка данных (циклы, массивы и прочий синтаксис) + данные надо где-то хранить. 3) Вывод данных + Графика. Считай, реализовал клеточный автомат = знаешь язык. Ну а дальше уже вникаешь в тонкости, чего тот язык еще умеет. Дальше у меня был ActionScript. Еще в школе (2000 год), когда был dial-up, и Интернет был у двух человек в классе, один старшеклассник рассказал, что есть "волшебная" технология Macromedia Flash, с помощью которой можно рисовать мультфильмы и весят они какие-то смехотворные байты. Не поверил тогда ему, но диск с Flash-ем достал. Начал рисовать мультфильмы и крутые менюшки для своего сайтика на narod.ru. Этим мое знакомство с Flash ограничилось. Вспомнил я о нем в 2006 году и начал тогда выяснять, что там за ЯП встроен (к тому же, как раз вышел AS 3.0). Очень нравился мне этот язык (если не считать того, что всё действие происходит в своей "виртуальной машине", вылезти за рамки которой невозможно). Но потом в интернетах начали писать, что у языка нет будущего (на смену ему придет HTML5). Flash забросил. Чего б такого изучить, что через пару лет не станет мертвой технологией? Начал учить C++. Против самого языка ничего не скажу - довольно простой синтаксис и быстродействие радует. Но вот эти вот зловония от мелкомякого... HBRUSH hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); ЕбТвоюМать(НУ_ИВОНАХУЙ); В 2011 основательно изучил PHP (со всеми придатками - XHTML, CSS, XML, XSLT, XPath, XQuery). Опять же PHP изучал чисто для души. На этой бяке до сих пор программирую. Почему бяка? Определенный класс задач он решает (даже в персептроны на нем можно http://xcont.com/perc/newperceptron/ ), но есть другой класс задач в которые он не умеет, но в которые очень хочется поиграться. Ну, например, мышку к нему прикрутить. Ок, мышку еще как-то можно приделать (с помощью JS и аяксины). Звук. PHP не умеет работать со звуком. Тот костыль, который я тут лепил http://midi.facegenetic.com/ , работает не на всех браузерах. Можно, конечно и wav с его помощью делать, с помощью такой фиговины: http://xcont.com/figovina.txt , но во-первых - тормоз, во-вторых - Fatal error: Allowed memory size и т.д. Про то, чтобы с помощью PHP обработать сигнал с микрофона или с любого другого периферийного устройства - я вообще молчу. Ну и плюс он "статический". Программа выполнилась, память очистилась, результат уехал в браузер пользователя. Посмотреть какой-то процесс в динамике (тот же клеточный автомат) не представляется возможным (когда изучал PHP, реализовал автомат с помощью сессий, в которые сохраняется текущее состояние автомата, кнопка refresh в браузере перезапускает скрипт) Что дальше изучал. JavaScript изучал. Учить там нечего - тот же ActionScript, только напрямую в браузере. Изучение Java забросил. Вот очень я эти виртуальные машины не люблю. Считай, самая бяка, которая была во Flash, перекочевала в Java. Оно-то конечно понятно, что кроссплатформерность, но мне та кроссплатформеность нахер не нужна - я для души программирую. Мне надо, чтобы оно у меня на комплуктере запускалось, и запускалось с полным доступом, куда только можно. Можно конечно еще попробовать в ЕбТвоюМать C#=(ЕбТвоюМать)МатьТвоюЕб(НУ_ИВОНАХУЙ);, или поиграться в экзотику, типа ((((Lisp)))) или в ::Haskell:: - их вообще где используют? Или, какой-нить Perl (а кому он нужен, если есть божественная пыха?)
Короче, хочу изучить Assembler. С чего его изучать? Куда чего писать и чем его запускать, чтобы самый первый "Hello World" сделать?
На второй пикче - моя маленькая библиотека. На третьей пикче - немножко шизотроники :)
>>546120 Почему сдох? Драйверы сейчас на C# пишут? Например, вот задача, которую недавно захотелось реализовать. На CD/DVD информация записывается в виде питов (штришки), между ними есть промежутки - ленды. Вот как мне туда в DVD-привод залезть, чтобы можно было произвольно лазером управлять и рисовать на поверхности диска произвольные паттерны?
>>546152 Да, а под Windows - на C++. На асме драйвера только под дос писали, сейчас на нем только entry point ядер, и то уже не нужно из-за UEFI (загрузчики для которого на C).
>>546120 Асм сдохнет не раньше, чем ты придумаешь замену процессорам с их хитрожопыми регистрами и двоичной системой. Правда в том, что асм необходим лишь очень узкому кругу людей, включая тех, кто для тебя всевозможные ЯВУ изобретает, чтобы ты не ломал мозг каждый раз при выходе новой архитектуры от тех ваших Интелов, АМД и прочих. В целом, годный системщик регулярно юзает асм-вставки в узких местах спецсофта, только вот во времена, когда хакером считается каждый быдло-кодер, трудно вообще поверить, что такие люди до сих пор существуют.
>>546266 Я это хуйню уже лет 10 слышу, а потом студенты на хакатоне оптимизуют эти ваши "h264 где вставки на илитном асме" тупо переписывая места на сишечке и получая прирост в 10%+. Никто на асме и для жабы не пишет, на сишечке всё делают в 95% случаев.
>>546266 Ява на си. Асм нужен только если у тебя какая-то совсем хуйня происходит, для которой в компиляторе сишки не предусмотрены оптимизации/встроенные функции. Ну или если ты собрался реверс-инженерить софтваре (хотя читать асм проще чем писать) или хакать хуй86. >годный системщик регулярно юзает асм-вставки в узких местах спецсофта Годный системщик прекрасно понимает, что соптимизировать лучше чем -O3 очень сложно и абсолютно не стоит его времени.
>>546116 (OP) >Хочу изучить Ассемблер. Какие подводные камни? Будучи высококвалифицированным исследователем, я потратил немало времени на продвижение науки вперёд. Но я родился на Юге и искренне убеждён, что прогресс — это выдумка, и что нужно готовиться к Судному дню, к жатве того, что мы посеяли и к появлению быстрых зомби, медленных зомби, и даже вежливых зомби, которые обращаются к вам «сэр» или «мадам», но в итоге пытаются съесть ваш мозг дабы заполучить ваши навыки. Когда нагрянет революция, нужно быть готовым; поэтому в моменты тишины и покоя, когда я не произвожу очередной прорыв в науке, я размышляю над тем, что же я буду делать, когда прогноз погоды изменится на «РЕКИ КРОВИ ЦЕЛЫЙ ДЕНЬ ДО СКОНЧАНИЯ ВРЕМЁН».
В основном я думаю о тех, кто будет прикрывать мою спину, поскольку шансы на выживание в постапокалиптическом мире напрямую зависят от размера и качества того сброда, который вы будете называть своей командой. Очевидно, мне понадобятся: слесарь (чтобы двери вскрывать), эксперт‐подрывник (если уж у слесаря закончатся идеи) и конечно же тот парень, что отловит, выдрессирует и затем будет швырять змей в моих врагов (потому что в мире умершей надежды бросок змеёй — это разумный способ урегулирования разногласий). В сией антиутопии они помогут мне прослыть воинствующим философом.
Но! Но… Самым важным членом моей банды будет системный программист, ибо в гоббсовском кошмаре невероятных масштабов умеющему отладить драйвер устройства или распредёленную систему человеку можно доверять; системный программист видел ужасы Вселенной и понимает безысходность бытия. Системный программист писал драйверы для устройств, прошивку которых создавал то ли пьяный ребёнок, то ли трезвый карась. Системный программист отлавливал проблему с сетью через восемь машин, три часовых пояса и с дружеским визитом в Омск, откуда ее перенаправили в левое переднее копыто той лошади, что избавила Трою от перенаселения.1 Системный программист читал исходники ядра для лучшего понимания процессов мироздания и видел комментарий «И ЭТО РАБОТАЕТ ЛОЛ» в коде планировщика, и не смеялся он, но плакал; и отправил он патч ядра для восстановления баланса Силы и устранения инверсии приоритетов, что приводила к зависанию MySQL. Системный программист знает, что делать, когда общество падёт, потому что он уже живет в мире, где царит беззаконие.
Впрочем, я не говорю, что остальные айтишники бесполезны. Я свято верю (хоть и не могу доказать), что у PHP‐разработчиков есть душа. Я считаю, что оптимизирующие SELECT‐FROM‐WHERE люди делают полезную работу, хоть и единственное, что этим не выразишь — это матерные частушки.2 Не пойму почему, но я рад, что теоретики исследуют эквивалентность пятимерной машины Тьюринга и Эдварда Руки‐Ножницы. И в большинстве случаев дизайнеры GUI не должны бросаться друг на друга с вилами, когда я кричу: «МОДАЛЬНЫХ ОКОН НЕТ! ЭТО СПАРТА!» Я — Статуя Свободы: признаю всех, будь они жалкими, уродливыми или любителями Haskell. Но когда ситуация накалится до предела, я хочу иметь под рукой людей «целевого назначения»,3 которые в очках ночного виденья спустятся с вертолета и проведут секретную операцию для защиты моей свободы под музыку в стиле кантри. Системный программист способен на такие вещи и я вполне серьёзно могу прозвать такого человека «Гремучей Змеёй» или «Молотом Зевса». Но ни от кого еще я не слышал: «Эти полупрозрачные иконки действительно полупрозрачны! НЕ МОЛОТА ЗЕВСА ЛИ ЭТО РАБОТА?»
Вообще, последний пример я привёл от балды. Поверьте, я уважаю специалистов по человеко‐компьютерному взаимодействию. Но когда ЧКВшники отлаживают свой код, это похоже на выставку картин или саммит ООН с перерывами на чай и шуточками на французском, а не‐функциональные шарфы хоть и не обязательны, но поощряются. Когда код ЧКВшника не работает, проблема решается построением грандиозных теорий, связывающих Форму и Восприятие с вашими глубокими чувствами к овалам. И будут бурные дебаты о социально‐экономических последствиях Helvetica Light, и в какой‐то момент вам прийдется решить, являются шрифты с засечками дерзкой заявкой на современность или же тайно поддерживающим феодализм и невежество инструментом гегемонического гнета. Элегантней ли «обвести‐и‐нежно‐тапнуть», нежели «сжать‐и‐перетащить»? Эти насущные проблемы не решатся сами по себе. Но после долгой отладки ЧКВ‐кода в сердце всё еще теплится надежда и нет места злости; даже если вы волнуетесь, не лучше ли вместо выпадающего списка сделать radio button, список доживет до конца дня. А назавтра будет новый восход, восхитительно яркий, и он вдохновит вас на соединение полос прокрутки и щелчка левой кнопки мыши в печальном танце, что вы увековечите в сонете, вернувшися с покупками с базара.
В мире системных программистов всё иначе. Когда вы отлаживаете распределённую систему или ядро ОС, вы делаете это по‐ковбойски. Вы сколачиваете команду черствых, непробиваемых, видевших смерть мужиков, выдаёте им несколько примитивных вещей вроде компаса, рюкзака и заточеной с одного конца палки и идёте в глушь с твёрдым намерением нарваться на неприятности, попутно пожёвывая табак. Вы — системный хакер, и должны быть готовы голыми руками убить убежавший поток, писать напрямую в сетевые порты с помощью telnet и замшелой копии RFC, подобранной вами в Ватикане, и совершать другие дикарские поступки, о которых не говорят вслух. Когда вы отлаживаете системный код, нет никаких споров о вкусных шрифтах и лучшей форме для квадрата, потому что это — Старый Завет, бесцветный и жестокий мир, и совсем не важно, узкий ваш Arial или жирный, когда в стране ад, чума и все гнут спину на царя. ЧКВшники находят баги после получения письма от психотерапевта. Системщики находят баги, просыпаясь в холодном поту и обнаруживая, что их первенец пропал, а на стене кровью написано «ETIMEDOUT».
Что есть отчаяние? Внемлите мне, ибо я познал его. Отчаяние — это когда вы отлаживаете драйвер ядра и смотрите в дамп памяти, а оттуда на вас смотрит указатель со значением 7. ДА НИ ОДНА АРХИТЕКТУРА НЕ ВЫРОВНЕНА НА 7. К тому же, 7 — ЭТО СЛИШКОМ МАЛО, И ТОЛЬКО ЗЛОВРЕДЫ ПЫТАЮТСЯ ДОСТУЧАТЬСЯ ПО ТАКИМ АДРЕСАМ. Неправильно адресованная память с малыми значениями указателя погубила десятилетия моей жизни. Хуже этого только правильно адресованная память с невозможно огромной длиной буфера. О да, когда в вечер пятницы вы производите «один мааахонький послееедненький» проход по логам и обнаруживаете правильно адресованную память с длиной буфера равной КОЛИЧЕСТВУ ЭЛЕКТРОНОВ ВО ВСЕЛЕННОЙ. Такое оставляет шрамы на сердце, ведь пагубность чтения 2^893 байт — это единственное, в чём сходятся коммунисты и единороссы.4 Что‐то вроде «медицинское страхование — это, возможно, хорошо, а возможно и плохо, но попытки считать всю информацию Вселенной хреналлион раз и засунуть это в хреналлион‐мерный массив — тут уж извините…»
Не‐системщикам не понять эту войну за кусочки счастья в мире систем. Ведь когда алгоритм машинного обучения принимает кота за слона, это и правда смешно. Можно распечатать картинку кота в костюме слона, добавить смешную подпись — и это развеселит пару не слишком обременённых интеллектом индивидов. А копии потом можно раздать на работе, радуясь тому, что всё, в общем‐то, в порядке. Ничего веселого при неправильно адресованной памяти распечатать не получится, потому что ваш компьютер умер, а принтеров в царстве мёртвых как бы и нет. Буфер невозможного размера — это еще хуже: он сидит за кулисами, не отсвечивая, и тихонько нашпиговывает состояние злом. Если чтение плохого адреса сжигает ваш дом единожды и полностью, то непомерные буферы забираются к вам через окно, подсыпают песок в кровать и зубную пасту и наблюдают, как вы постепенно осознаёте, что безумие овладело вашей жизнью. Ведь правда: обычный случай отлова безграничного буфера — это когда ваша программа работает, а потом вдруг пытается отобразить строку «Hello, World», но на выходе получается «#a[5]:3!» или любой другой синтаксически правильный Perl‐скрипт, и вы такие «КАКОГО МАМУ ЛЕШЕГО», а потом до вас доходит, что ваши обращения к памяти подобны Халку, услышавшему просьбу написать эссе на тему «Почему крушить плохо».
>>546285 И тут вы спросите: «Почему кто‐то станет писать на гротескном языке, поддерживающем прямую работу с памятью? Почему не использовать современный язык со сборщиком мусора, функциональными примочками и бесплатным массажем после обеда?» Я вам отвечу: указатели реальны. Железо только их и понимает, и кому‐то прийдется иметь с ними дело. Нельзя водрузить талмуд по LISP на x86‐процессор и надеяться, что машина усвоит лямбда‐исчисление через осмос. Отрицая указатели, вы уподобляетесь древним грекам, что отрицали существование Кракена и потом удивлялись, что их корабли не доходят в Марокко, Широкко или как там эта несчастная страна тогда называлась. Указатели — как Кракены: они реальны, они существуют, и кому‐то нужно с ними работать, чтобы остальные могли спать спокойно. Но не поймите превратно: я вовсе не желаю писать системное ПО на языке вроде C++, потому что «плюсовые» исходники подобны Некрономикону — опасны, непонятны, полны запретных знаний и магических формул. И когда в три часа утра, после полусуток отладки вы встречаете статический защищенный волатайл указатель на виртуальную дружественную шаблонную функцию, вам хочется впасть в спячку, а потом проснуться в теле оборотня, найти создателей стандарта C++ и разорвать в клочья всё, что им дорого. А C++ STL со своим вызывающим дислексию синтаксическим ураганом угловых скобок и точек с запятыми гарантирует превращение первых семи попыток создания любой мало‐мальски осмысленной структуры данных в лавину ошибок компилятора поистине вагнеровского размаха:
Syntax error: unmatched thing in thing from std::nonstd::__map<_Cyrillic, _$$$dollars>const basic_string< epic_mystery,mongoose_traits < char>, __default_alloc_<casual_fridays =="" maybe="">>
Однажды я пытался создать list<map<int>> и мои синтаксические ошибки подняли мёртвых из могил. Такое поведение не назовешь правильным. Потому я обеими руками за высокоуровневые языки, где указатели скрыты, типизация строгая, а объявление структуры данных не превращается в разгадывание синтаксических головоломок, выдуманных злобным инопланетянином. Так что если вы вдруг обнаружите себя попивающим мартини в процессе написания кода на объектно‐ориентированном эсперанто со сборщиком мусора, то не забывайте, что ваш эсперанто работает лишь потому, что системные программисты променяли надежду потерять девственность на возможность размышлять о шестнадцатеричных числах и их отношениях с операционной системой, железом и древними кровавыми ритуалами, которые Бьёрн Страуструп проводил на территории Стоунхенджа.
Но худшее в жизни системного программиста — это когда не‐системщики думают, что осознают всю глубину трагедий, из которых она состоит. Несколько недель назад я отлаживал созданную моей исследовательской группой сетевую файловую систему. Баг спрятался в компоненте ядра, и моя машина умирала самыми невозможными способами. После нескольких дней постоянных перезагрузок серверов от меня осталось еле волочащее ноги бородатое красноглазое нечто, вроде айтишной версии Саддама, которого только что вытащили из бункера, несущего витиеватый бред о полувымышленных врагах. И вот, расхаживая по коридорам, браня5 свой код, я наткнулся на коллегу из отдела ЧКВ, который незамедлительно поинтересовался моими делами. Объяснив ему баг, который затрагивал конкурирующие потоки, повреждённое состояние и асинхронную отправку сообщений через несколько машин, в ответ я услышал: «Да, звучит не очень. А логи на ошибки ты проверил?» «Ну, я бы так и поступил,» — сказал я, «если бы не сломал каждую компоненту системы, необходимую для ведения логов. У меня есть сетевая файловая система и я сломал сеть, файловую систему, и мои компьютеры подыхают от одного моего взгляда. У МЕНЯ НЕТ НИКАКИХ ИНСТРУМЕНТОВ, ПОТОМУ ЧТО Я СЛОМАЛ СВОИ ИНСТРУМЕНТЫ СВОИМИ ЖЕ ИНСТРУМЕНТАМИ. Единственный способ залоггировать хоть что‐то — нанять монахов и стенографировать их субъективный опыт созерцания гибнущих машин, попутно размазывая кровавые слёзы по щекам». В искреннем порыве симпатии мой коллега изложил одну из его историй об отладке — об операции сложения, которую случайно заменили операцией умножения. Выслушав его, я сказал: «Умножение — не сложение, это и ежу понятно. Но они хотя бы похожи! Умножение — это как сложение, только сложения чуть побольше. Проще говоря, умножение — это взрослый птеродактиль, а сложение — это детёныш птеродактиля. В твоём случае код немного капризничал, но сама идея была правильной. В моём случае нельзя придумать аналогию для дошкольников о том, что мой код должен делать и что он делает на самом деле. Я всего лишь хотел превратить чтение файла в сетевую операцию, но вместо этого мои машины подхватили чахотку и дрестун. Улавливаешь разницу? Ты пригласил девушку на танец, а потом узнал, что её отец — мент. А я пригласил девушку на танец, А ПОТОМ УЗНАЛ, ЧТО ЕЁ ОТЕЦ — ГИТЛЕР».6
На самом деле, я не говорю, что все должны быть системными хакерами. GUI нужны, проверка правописания тоже. Я рад, что люди разрабатывают новые виды прыгающих иконок, так как верят, что человечество распрощалось с раком, нищетой и теперь живёт в безмятежном мире, окруженноё трёхмерными спрайтами. Это восхитительно. Я надеюсь присоединиться к этим людям лет эдак через шестьсот. Но я живу в мире настоящего, и в моём районе люди гибнут на улицах. Французский — это тоже хорошо, но никто не станет его придумывать, попутно отбиваясь от медведей. Смекаете? СИСТЕМНЫЕ ХАКЕРЫ РЕШАЮТ ПРОБЛЕМУ С МЕДВЕДЯМИ. Лишь благодаря бдительности моих людей вы вольны размышлять о круассанах и отпускать шуточки о настоящем отце Луи XIV.
Так что если вы вдруг встретите меня, слоняющегося по коридорам и пытающегося объяснить оторопевшим монахам баги синхронизации, будьте уверены: каждый день, день за днем, становится чуточку лучше. Для вас. Не для меня. Я всегда буду зол на число 7. Но таков путь джедая…
>>549487 Какая-то система мониторинга и управления электричеством с регистрацией и смс. Хуй знает. Ничего интересного, кроме возможности вырубить свет в морге, чтобы санитары обосрались.
Лол, одни долбоебы пособиралися. Я как увидел высер школо-хабро-питуха сразу понял чем тут запахнет. 87-года рождения, ковырялся там в бейсике с батей на заднем дворе, а представление о погромирровании как у лоботомированного имбецила. Реально жаль этого уебка, ковырять плагины вордпрессика достойная участь.
>>546286 Плюсоебство - это как православие. Когда протестантизм завещает работать над собой и создавать блага, славя величие Господа, православие требует от последователя искупления греха, посредством непрерывного страдания, как страдал Иисус неся свой крест. Стрелять себе в ногу и нажираясь потом водкой, позерски ноя о тяжестях нищебродской жизни -- что может быть лучше для православного плюсоеба?
>>546116 (OP) Юров Ассемблер 2-ое издание. Изучал ее лет 10 назад в универе. Ассемблер уже лет наверное 20 никому не нужен. Старые издания Кнута тоже не нужны: в них ошибки, неточности, с тех пор были изобретены новые алгоритмы. Русские переводы Кнута особенно не нужны. Кнут используется, как доказательство правоты, при написании серьезного софта. Например, написал кодер в МС реализацию ассоциативного массива, и чтобы доказать, что он ее не из пальца высосал в комментах добавляет что-то вроде "Knuth's Art of Computer Programming, Vol. 3, p. 528-9". Естественно русское издание для такого не подходит.
>>549749 Похоже на перевод одного нигера из майкрософта. Раз в месяц вбрасывают на реддите, но лично меня тянет блевать с первых же строк. Болезненный графоманский высер. Почему на это надрачивают? Этот мир болен.
>Читаю с трех лет про математику и вычисления, знаю кучу языков программирования >Куда писать и чем запускать ассемблер?
Это шутка такая или что? Ты читал про устройство микропроцессоров, понял? Ты читал про архитектуру фон неймана, понял? Ты читал про архитектуру операционных систем, понял? Ты читал про дизайн языков программирования, понял? Если на всё ответ "да", то я не понимаю в чем проблема открыть гугл\википедию и посмотреть какие реализации асма есть на данный момент Если нет то толку от твоего раннего чтения нихуя, ты так и не понимаешь что ты делаешь на своей шарманке за 20000
ОП, я тут перечитал твой пост... мне кажется, у тебя шизофрения развилась... Настоящая такая, клиническая, сопровождающаяся параноидальным бредом и сверхценными идеями. Не пробовал какие-то другие хобби найти? Заняться коллективными видами спорта, сходить в клубасик, в конце концов, собаку завести и выгуливать ее в парке?
>>550030 Он читал все это как гуманитарий, не обдумывая, не используя. Хотя даже гуманитариев учат ведь делать логические выводы, литературу там всякую анализировать. Получается, что ОП хуже гуманитария? Ну типичный двачер 2015 же.
-- Практически все что ты мне покажешь на асме я могу запилить на сях,потратив на это меньше времени и самого кода. -- К тому же в сях есть АСМ вставки.
Ну раз решил- учи.За год ты точно его не осилишь.А когда осилишь,поймешь что особо он тебе не нужен и ты тупо прожег драгоценное время.
Не читай старые книги (минимум 2007).Качай FASM,офсаит в помощь + wasm.ru (если он еще жив). Читай за архитектуру проца(регистры и.т.д),инструкции etc Ставь цель,например "закодить блокнот" и потихоньку решай.Тупо читая АСМ книги без практики - будешь долго вникать.
>>546116 (OP) >Программа выполнилась, память очистилась, результат уехал в браузер пользователя Вебсокеты и phpDaemon? Нет, не слышал. Но да, писать клеточные автоматы на ныхе- изврат.
>>550315 Да нет, это ты не палишься.для матлогики смысл высказываний не имеет значения, важна только непротиворечиаость в выбранной системе аксиом. Так-то. Иди читай бурбаков про теории и правила вывода.
>>546116 (OP) >Программа выполнилась, память очистилась, результат уехал в браузер пользователя. Посмотреть какой-то процесс в динамике (тот же клеточный автомат) не представляется возможным (когда изучал PHP, реализовал автомат с помощью сессий, в которые сохраняется текущее состояние автомата, кнопка refresh в браузере перезапускает скрипт) Ты даже пых путем не осилил. С асма надо было начинать, а не скакать по говноязыкам. >я для души программирую А, ну тогда понятно
>>550014 >Отличная у тебя статья Вот всё думаю продолжение написать...
>>550030 >Это шутка такая или что? Деградация может.
>в чем проблема Вероятно в том, что никогда особо не задумывался над этим вопросом. Намного проще перед тем, как что-то сделать, зайти на тематический форум и спросить, как сделать. Вот только что загуглил. Оказалось, что программы на ассемблере тоже компилируют. Че-т я раньше думал (стыдно признаться), что на ассемблере по хардкору пишут - байт-код в HEX-редакторе. Выкачал TASM 5.0 от Borland-а, сейчас играюсь.
>>550014 >Отличная у тебя статья про фракталы Что за статья? Вангую какое-то говно для тупых нематематиков, которые не могут осилить книги Мандельброта, потому что там КОМПЛАН.
>>552339 >ты тупо прожег драгоценное время. Все когда-нибудь сдохнем. Все, что делаешь в промежутке между рождением и смертью - прожиг драгоценного времени
>>552424 >Вебсокеты и phpDaemon? Чатики делать? Есть еще PHP-QT - можно на пыхе десктопные приложения писать.
>писать клеточные автоматы на ныхе- изврат. Сча подожжи, я тебе исходники покажу. 2011 год.
ОП, или еще кто, подскажи, как изучить ассемблер на базовом уровне за 6 часов? В универ надо сдать несколько говнолаб на ассемблере, но проблема в том, что я высокоуровневая макака и все эти ассемблеры выглядят как лютый пиздец сатаны. Откуда гуглить вообще? Гуглишь - выскакивают какие-то списки кодов 1996-го года для каких-то йоба-процессоров. В чем компилить вообще? Есть гайд, как хотя бы хеллоуворд написать? Недавно видел на хабре какой-то современный ассемблер, но проебал.
>>553106 >Все когда-нибудь сдохнем Но перед этим все-таки поживем, а такие как ты идиоты тратят это время на хуйню, когда другие получают удовольствие и достигаю больших результатов в чем-нибудь. А ты так и остался на уровне говнокодера, который в 20+ лет пишет дерьмо уровня одиннадцатиклассника.
>>553112 Сча сек, поясню. Качаешь вот эту ебалу: http://rghost.ru/6dtwsPF4h , разархивируешь на диск С, чтобы получилось c:\tasm Далее мутишь папочку c:\script, куда кидаешь батник start.bat: path=c:\tasm\bin start "TASM"
С этого батника и запускаешь компилятор. Все исходники в ту-же папочку, расширение у исходников ".asm" (hello.asm, например). Далее в hello.asm пишешь свой код на ассемблере, запускаешь start.bat и туда пишешь две команды: tasm hello - создается "HELLO.OBJ" и tlink hello - создается HELLO.EXE
>>553120 Есть еще MASM, который: >MASM 9.0 в составе Visual C++ 2008, поддерживающие платформу x64 Только там, вместо tasm hello и tlink hello пишешь ml hello
Обоссали петуха с ебучей автобиографией в 2 страницы в оппосте? Если да, то по делу - скачай OllyDbg и постигай ассемблер, отлаживая свои c++ хеловорды. Наглядно, доступно, с отладкой и пониманием как работают регистры, память, стек. Потом скачай масм, используя файлы ресурсов пилил вполне себе гуи приложения в далеком 2004.
>>553100 > Что за статья? Вангую какое-то говно для тупых нематематиков, которые не могут осилить книги Мандельброта, потому что там КОМПЛАН. Статья уровня /sci/. У него там теория, что элементарные частицы это фракталы. Самое интересное, что ее не слили почему-то, видимо, картинки всем понравились зато с вики слили в момент, причем он назвал ее как "фракталы Герасимова" или что-то в этом духе. Помню перед публикацией он связывал интересность картинки с взаимной простотой входных параметров, пытался пояснить ему, почему это происходит, но ничего не вышло, ест-но. Комментаторы, впрочем, тоже норм: > Существует гипотеза, что вся вселенная фрактальна. И элементарные частицы, соответственно, тоже. Выводы очень интересны. > Плотность материи, энергии и всего остального тождественно равно нулю. Следовательно, вселенная не может расширяться. Следовательно, не было большого взрыва.
Теперь мы видим, что он кодер на Visual Basic, ActiveScript, Delphi, PHP, JavaScript. У меня складывается впечатление, что, изучив одно говно, так и тянет изучить еще какое-нибудь говно. Почему-то у меня после С не было желания изучать JavaScript. А все потому что делать laba2 и шлепать кнопки на форме можно на чем угодно, только изучив тонкости синтаксиса. Но умение программировать - это не знание языка программирования.
Дам ОПу только один совет. > Вообще, в дальнейшем все языки начинал изучать с реализации клеточного автомата. Начинай изучать ассемблер с того, что написано в учебнике. Иначе ты сразу увидишь, что и 1) ввод данных пользователем, и 3) вывод данных + графика - это твои любимые HBRUSH hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH) только в виде push 1234h; invoke [ebx]; и пойдешь дальше шлепать DrawMe(fractal), которые будут делать тоже самое, но завуалированно.
>>557854 >назвал ее Где-то уже пилил прохладную, как сидел ебался гифку делал весь день, чтобы нормально статью оформить. А как отправил статью на хабру - на следующий день загуглил гифку и нашел ее на пикабу. Начали статью на части пидорасить, без указания ссылки на источник. Пришлось срочным образом регистрироваться на разных фишках и прочих ливжорналах и распространять статью со всеми ссылками.
>>557854 >PHP, JavaScript. Как ты резво PHP и JS в категорию "говно" записал. К сожалению не существует универсального языка программирования - иначе бы не было столько языков. Одни языки годятся для решения одних задач, другие - для других. Я, например, на своем "говне" (JavaScript) могу сделать вот так: http://xcont.com/fractal.html и дать тебе ссылочку, чтобы ты прям в браузере посмотрел. На своем "говне" (C) ты уже так не сделаешь, чтобы прям из браузера. В том, чтобы уметь в WEB-программирование, не вижу ничего дурного.
>>557854 >Начинай изучать ассемблер с того, что написано в учебнике В каком учебнике?
>>558064 >Let's take a look at the surface of the river. If you throw a stone at her - will wave. Инглиш то у тебя пиздец, не позорился бы уже, на русском делал.
>>558070 >Это не ты в бэ тред создавал Там их две штуки было. Один в полном неадеквате под действием THC создал, в другом годные мысли по поводу энтропии высказывал.
>>558064 > Как ты резво PHP и JS в категорию "говно" записал. К сожалению не существует универсального языка программирования - иначе бы не было столько языков. Одни языки годятся для решения одних задач, другие - для других. Я, например, на своем "говне" (JavaScript) могу сделать вот так: http://xcont.com/fractal.html и дать тебе ссылочку, чтобы ты прям в браузере посмотрел. На своем "говне" (C) ты уже так не сделаешь, чтобы прям из браузера. > В том, чтобы уметь в WEB-программирование, не вижу ничего дурного. Есть два типа программистов: одни пишут ОС, веб-серверы, браузеры и интерпретаторы JS и PHP; вторые на них пишут форумы, гостевухи и фракталы. Первые знают больше и их ощутимо меньше по кол-ву. Языки вторых проще и грубее, чтобы произоводить программы быстрее и легче - будь у нас только C, мы бы сидели в web2.0 до сих пор. Только из-за низкого порога вхождения и низкой ценности же (рынок фрилансеров завален php-макаками) получается иногда редкостное говнище - встретить подобное среди ОС, скажем, намного сложнее. Майнкрафт вон взять на JS - шел 2015 год, игра с 16*16 текстурами лагала и не влезала в 16гб оперативы. А когда-то гонки писали на голом ассемблере, уже не помню названия. Я не говорю, что уметь в веб-программирование плохо, но все, что ты там описывал из навыков - это нарисовать что-то по формулам и вывести при полном абстрагировании как от работы компьютера в целом (цп, стек, работа с памятью), так и от архитектуры ОС, под которую это пишется. В случае с ассемблером ты просто не сможешь абстрагироваться от этих вещей. Так что либо переучиваться, либо оставаться в области языков для масс.
>>558584 > Что то я подзапутался. Чтобы начать, мне нужно 32 систему накатить на виртуалочку? Что у тебя сейчас стоит и подо что хочешь писать?
>>558064 >http://xcont.com/fractal.html Типичный кодовый хуесос. Ничего не понимает в теории хаоса, дробных размерностях и комплексном анализе, но умеет менять параметры в коде и дрочить на результат.
>>558597 Могу предложить поставить RadAsm, добавить в него поддержку ассемблеров (с оф сайта же), поставить masm32 и ollydbg и подключить их соответственно к RadAsm. Это будет среда, где по ctrl+f5 будет запускаться написанное, а по ctrl+d будет загружаться в отладчик. Учебник, например - Крупник. Ассемблер. Самоучитель. 2005 (http://www.ph4s.ru/bookpc/assembler/Assembler.rar), он для синтаксиса masm, для отладчика ollydbg и с нуля. Только из строки линковать не надо, ест-но, если у тебя среда будет настроена.
>>546140 Если вкратце, то никак. Вместе с инфой на диск записывается дохуище бит для коррекции ошибок, причем равномерно по поверхности диска. Это делает само железо привода и отключить это нельзя. Даже при записи аудио-CD, если мне память не отшибло, есть коррекция. И еще записывается информация для поиска. Это первое. А второе, дорожка одна и идет по спирали, и допуски по скорости вращения при записи весьма большие. Синхронизации головки по секторам и цилиндрам, как у жестких дисков, нет. То есть, прицельно записать бит по таким-то координатам на поверхности диска не выйдет в принципе. Почитай про lightscribe, например. Там на каждой болванке есть возле центра дорожка с метками для определения текущего угла, на который повернут диск, а в приводе - датчик и логика для синхронизации.
Ю.А. Первин - "Основы Фортрана", издательство "Наука", 1972
К. Джермейн - "Программирование на IBM/360", издательство "МИР", 1971
Д. Кнут - "Искусство программирования для ЭВМ", издательство "Мир", 1976 (да, этот тот самый Дональд Кнут! На картинке пруф)
Ну и кучу разной литературы на тему "функции, анализ, и прочая алгебра"
Вот серьезно. Сидел я как-то в офисе быдлокодил на PHP и параллельно искал литературку в Интернете для саморазвития. Ну и везде пишут "Дональд Кнут". Очень тогда хотел купить себе этого Кнута... но, вместо этого, купил себе двухтомник Хорстмана по Яве (сам понимаешь, что PHP - это дно: выполнение один и тех-же примитивных задач, че-то извлечь из базы данных, че-то обратно туда засунуть, сформировать страничку с ненависным html, ну DOMDocument там максимум... сокеты? А где они используются, если весь быдлокодинг в офисе - это ковыряние в плагинах вордпресса?). В общем, Кнута тогда так и не купил, а потом из офиса съебался и закончились деньги. Полез я как-то в шкаф - очень меня числа Фибоначчи заинтересовали (деаноньте: http://xcont.habrahabr.ru ) и помню, что где-то я о них в далеком детстве читал уже. А там ВНЕЗАПНО Дональд Кнут. Да еще и какой раритетный! Начал читать - начал ловить дежавю и вспомнил, что читал его в детстве. В 8 лет
Литература мне эта в детстве очень понравилась. Такой контраст после инфантильных сказочек. А тут логика. Систематическая и аргументированная подача информации. Решил я тогда, что тоже буду программировать на ЭВМ-ах.
Чуть позже дома завелся БП ЭВМ "ПОИСК" и родители очень быстро подсуетили мне книгу "Программирование микроЭВМ на языке БЕЙСИК, издательство "радио и связь", 1991. Это был первый язык, который я освоил. Больше всего мне в нем нравилось, что любую циклическую конструкцию можно реализовать с помощью оператора GOTO. Ну и просто нереально понравились массивы. Заполняешь его в начале по шаблону (единичками, например), пишешь элементарный алгоритм, который элементы массива обрабатывает и в зависимости от результатов изменяет свое поведение... и на выходе получаешь совершенно новую (и зачастую непредсказуемую) структуру из данных. Именно тогда впервые заинтересовался синергетикой и теорией хаоса.
После Васика изучил Pascal. Сразу скажу, что этот язык ну очень не любил (не кидайте в меня тапки). Вот эти "Program q" с которых начинается каждая программа, складирование всех переменных в начало программы, begin/end вместо божественных фигурных скобок. Но знал я его досконально. Свои лабы сдавал сразу, потом на протяжении семестра делал лабы всей группе.
Параллельно с Pascal программировал так же на Visual Basic (не кидайте в меня тапки). Программировал на нем чисто "для души" (клеточные автоматы и прочую шизотронику). Чуть позднее был еще Delphi, в который особо вникать не стал.
Вообще, в дальнейшем все языки начинал изучать с реализации клеточного автомата. Очень, кстати, годный способ освоить язык. Тут:
1) Ввод данных пользователем.
2) Обработка данных (циклы, массивы и прочий синтаксис) + данные надо где-то хранить.
3) Вывод данных + Графика.
Считай, реализовал клеточный автомат = знаешь язык. Ну а дальше уже вникаешь в тонкости, чего тот язык еще умеет.
Дальше у меня был ActionScript. Еще в школе (2000 год), когда был dial-up, и Интернет был у двух человек в классе, один старшеклассник рассказал, что есть "волшебная" технология Macromedia Flash, с помощью которой можно рисовать мультфильмы и весят они какие-то смехотворные байты. Не поверил тогда ему, но диск с Flash-ем достал. Начал рисовать мультфильмы и крутые менюшки для своего сайтика на narod.ru. Этим мое знакомство с Flash ограничилось. Вспомнил я о нем в 2006 году и начал тогда выяснять, что там за ЯП встроен (к тому же, как раз вышел AS 3.0). Очень нравился мне этот язык (если не считать того, что всё действие происходит в своей "виртуальной машине", вылезти за рамки которой невозможно). Но потом в интернетах начали писать, что у языка нет будущего (на смену ему придет HTML5). Flash забросил.
Чего б такого изучить, что через пару лет не станет мертвой технологией? Начал учить C++. Против самого языка ничего не скажу - довольно простой синтаксис и быстродействие радует. Но вот эти вот зловония от мелкомякого... HBRUSH hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH); ЕбТвоюМать(НУ_ИВОНАХУЙ);
В 2011 основательно изучил PHP (со всеми придатками - XHTML, CSS, XML, XSLT, XPath, XQuery). Опять же PHP изучал чисто для души. На этой бяке до сих пор программирую. Почему бяка? Определенный класс задач он решает (даже в персептроны на нем можно http://xcont.com/perc/newperceptron/ ), но есть другой класс задач в которые он не умеет, но в которые очень хочется поиграться. Ну, например, мышку к нему прикрутить. Ок, мышку еще как-то можно приделать (с помощью JS и аяксины). Звук. PHP не умеет работать со звуком. Тот костыль, который я тут лепил http://midi.facegenetic.com/ , работает не на всех браузерах. Можно, конечно и wav с его помощью делать, с помощью такой фиговины: http://xcont.com/figovina.txt , но во-первых - тормоз, во-вторых - Fatal error: Allowed memory size и т.д. Про то, чтобы с помощью PHP обработать сигнал с микрофона или с любого другого периферийного устройства - я вообще молчу. Ну и плюс он "статический". Программа выполнилась, память очистилась, результат уехал в браузер пользователя. Посмотреть какой-то процесс в динамике (тот же клеточный автомат) не представляется возможным (когда изучал PHP, реализовал автомат с помощью сессий, в которые сохраняется текущее состояние автомата, кнопка refresh в браузере перезапускает скрипт)
Что дальше изучал. JavaScript изучал. Учить там нечего - тот же ActionScript, только напрямую в браузере.
Изучение Java забросил. Вот очень я эти виртуальные машины не люблю. Считай, самая бяка, которая была во Flash, перекочевала в Java. Оно-то конечно понятно, что кроссплатформерность, но мне та кроссплатформеность нахер не нужна - я для души программирую. Мне надо, чтобы оно у меня на комплуктере запускалось, и запускалось с полным доступом, куда только можно.
Можно конечно еще попробовать в ЕбТвоюМать C#=(ЕбТвоюМать)МатьТвоюЕб(НУ_ИВОНАХУЙ);, или поиграться в экзотику, типа ((((Lisp)))) или в ::Haskell:: - их вообще где используют? Или, какой-нить Perl (а кому он нужен, если есть божественная пыха?)
Короче, хочу изучить Assembler. С чего его изучать? Куда чего писать и чем его запускать, чтобы самый первый "Hello World" сделать?
На второй пикче - моя маленькая библиотека. На третьей пикче - немножко шизотроники :)