Про следующий прикол мне как-то рассказывал сам Кэн Томпсон, когда я работал в гугле в середине нулевых. Очень часто на собесах дают задание - написать прогу, которая переворачивает слово. Типа 'анон' -> 'нона'. Я тоже часто даю это. Если человек берет библиотечную функцию, то сразу шлю нахуй. Если пыжится, реализует через цикл - то еще даю шанс. Если реализует рекурсивно - то получает плюсик. Но есть один очень элегантный способ, который юзают только гуру. Короче, все программы сначала переводятся в язык ассемблера. Это наверно все знают. Но гораздо меньше людей знают, что у ассемблера 2 разных синтаксиса - от компании "Эндрю Таненбаум энд технолоджис" - сокращенно AT&T и от Интела. Суть в том, что эти 2 языка зеркальны друг по отношению к другу (один начинает работать с начала стека, а второй - с конца). Шарящий челик, зная, какая версия ассемблера в системе, может обмануть процессор, скомпилировав код под другой ассемблер - и, не сложно догадаться, - вся программа работает в обратном порядке, то бишь, в системе с Intel обычный код println("анон"), скомпилированный в AT&T выведет на экран "нона", т.к. байты поместятся в стек в обратном порядке
>реализует через цикл - то еще даю шанс >реализует рекурсивно - то получает плюсик
Рекурсия дорого, из за вызова функции и передачи параметров даже через регистр.
>сокращенно AT&T и от Интела. Суть в том, что эти 2 языка зеркальны друг по отношению к другу (один начинает работать с начала стека, а второй - с конца).
Полный бред. У них разница только в мнемонике команд и прочем синтаксическом сахаре. Стек растет всегда сверху вниз.
>>239907888 Если че at&t это The American Telephone and Telegraph Mobility. А Эндрю Таненбаум - специалист по информационным технологиям, читал его книжку по сетям.
>>239908077 Стек это реализация очереди LIFO. Так што да.
>>239906691 (OP) О, наконец то умный тред Я не ОП, но дополню еще полезную инфу по собесам
Все знают про джаву, но почему она так называется? Ответ в том, что изначально язык планировался для работы с железом - всякие контроллеры, программирование эмбеддед систем. И одним из первых устройств, запрограммированных на нем - была кофемашина. Кофе в офисе как раз было марки Java (тоесть с острова Ява) - потому решили так и назвать.
Это же объясняет иконку - "чашечку" джавы. Более того, в джаве удобно моделировать "виртуальные машины". Самая известная - JVM - Java Virtual Machine, "виртуальная машина джава" - это модель той самой первой кофемашины
Так же, зачем в джаве классы и ООП? Да опять таки, чтобы моделировать реальный мир! И реальные устройства - "объекты".
>>239908515 Отож. Недавно в спортЧГК один чел тоже всех затролел. Игру их команды писали на видео (и он об этом знал), но при этом несколько вопросов гуглил. Когда на это обратили внимание он пару дней поотмазывался, а потом сказал что это такое привлечение внимания к проблеме. Причем непонятно, тонкий это троллинг, толстый или неумелый, так как мужик этот игрок хороший, и в честных условиях уже много чего выигрывал.
>>239908928 >Все знают про джаву, но почему она так называется? Ответ в том, что изначально язык планировался для работы с железом - всякие контроллеры, программирование эмбеддед систем. И одним из первых устройств, запрограммированных на нем - была кофемашина. Кофе в офисе как раз было марки Java (тоесть с острова Ява) - потому решили так и назвать. > >Это же объясняет иконку - "чашечку" джавы. >Более того, в джаве удобно моделировать "виртуальные машины". Самая известная - JVM - Java Virtual Machine, "виртуальная машина джава" - это модель той самой первой кофемашины ЧЯ кстати спрашиваю это на собесах JAVA-программистов. Если не знают - вышвыриваю из офиса.
>>239909714 В чем же толтота? А тот факт, что в джаве поддерживаются побитовые операции для работы с железом - тоже толстота? А то, что команды из C, C++ можно дергать с той же жавы??
>>239910010 Советую подучить матчасть. Я не пидор-прогромист. Толстота в том что ты выгоняешь работников за то что они не нают охуительных историй про название какоё=то залупы. Представь если бы наботу на завод гречневых выгоняли бы за незнание истории возникновения гаечного ключа.
>>239906691 (OP) >"Эндрю Таненбаум энд технолоджис" - сокращенно AT&T >>239906691 (OP) В рот мне ноги, это же Миникс! Алсо, ты пиздиш. Строки заканчиваются нулём поэтому даже если и выведет то белиберду, а скорее всего краш.
>>239906691 (OP) >может обмануть процессор, скомпилировав код под другой ассемблер Хуясе под ассемблер компилить можно, наибав процессор? Вау! Это ирония если чо. Компилят под то что потом исполняется, и здесь процессор не наебешь так как он просто бортанёт неизвестный или непраильныц набор инструкций. Вообще операционка не должна пропустить на исполнение.
>>239906691 (OP) >Шарящий челик, зная, какая версия ассемблера в системе, может обмануть процессор, скомпилировав код под другой ассемблер - и, не сложно догадаться, - вся программа работает в обратном порядке, то бишь, в системе с Intel обычный код println("анон"), скомпилированный в AT&T выведет на экран "нона", т.к. байты поместятся в стек в обратном порядке
И резко отсасывает если строка в мультибайтовой кодировке.
>>239910737 Скорость. Высоконагруженные приложения требуют максимальной оптимизации. Допустим алгоритм выполняется за 0.003 сек, а оптимизированный за 0.001 сек. Вроде хуйня скажешь ты, но представь что у тебя миллионы запросов в секунду. И так при повышении нагрузки растет время обработки одного алгоритма. Т.е. потом оно превратится в 3 и 1 сек, потом в 30 и 10 и т.д. И это только один алгоритм из всей очереди. А если каждый алгоритм в очереди будет неоптимизирован? А если он например не на 3 порядка медленнее а на 30? И того запрос который может выполнится за пол секунды выполняется за 10, сжирая х10 памяти. А пользователь сидит и ждет пока у него на сайте крутилка прокрутится и вабсарвар выдаст результат. А потом такой "да пошло оно нахуй у конкрутнтов вон за секнду обрабатывается а тут сидишь пердишь, пойду к ним лучше". Такие дела.
Алгоритм имеет смысл оптимизировать только если его работа приводит к задержкам, которые способен заметить человек. Или если подразумевается изначально длительный процесс - обработка изображений, видео, разбор хьюдж-файлов. Для всего остального придумали кеширование.
>>239911632 Это называется профессиональный программист. Если ты не пишешь сразу оптимальный код, то ты хуевый программист. Тебя ни в одну контору работать не возьмут.
>>239906691 (OP) >Если человек берет библиотечную функцию, то сразу шлю нахуй. Вообще то это я шлю нахуй таких уебков как ты которые дают говно задания.
>>239906691 (OP) >Про следующий прикол мне как-то рассказывал сам Кэн Томпсон, когда я работал в гугле в середине нулевых >Типа 'анон' -> 'нона'. Борда успешных людей, блять.
используешь библиотечную функцию - получаешь плюсик используешь циклы или рекурсии - получаешь ярлык "тупой байтоеб" пиздеж про ассемблер из оп-поста, жалобы что такое не проходили на курсах, выебоны что сеньер таким не занимается - сразу нахуй
>>239913728 Дело разумеется не буквально в этом. А в том что ты как мудак на задачу которая требует константной памяти (буквально несколько переменных) выделил O(n) под стек.
>>239906691 (OP) >Если пыжится, реализует через цикл - то еще даю шанс. Если реализует рекурсивно - то получает плюсик Сразу бы уволил этого долбоеба, который оценивает рекурсию выше циклов
>>239906691 (OP) Я всегда спрашиваю, как красно черное дерево переворачивать будешь. Ты бы вот как перевернул? Уверен ко мне бы ты не прошел, у меня выше твоих стандарты.
>>239913139 Что значит "оптимальный" в твоем понимании, дебилушка? Про высокоуровневые языки слышал может, не? Там по определению половина проприетарных функций неоптимальна и гораздо быстрее было бы их вовсе не использовать, а решать каждую конкретную задачу на C. Только вот так никто не делает, как думаешь, почему?
>>239918909 как часто приходится балансировать деревья и вообще использовать деревья поиска в js? я слыша что некоторые реализовывали на деревьях (вроде) что-то связанное с картами или длинными списками которые не тормозили систему.
>>239911309 >представь что у тебя миллионы запросов в секунд А представь, что у тебя 2 запроса в час. А ты нахуярил своей черной магии в код. И потом бедным джунам с ним ковыряться, когда понадобится изменения вносить. Premature optimization слышал термин? Иногда нужно байтоебить, но только после профайлинга, когда есть реальная проблема, либо когда изначально нужен максимально производительный код в ущерб всему остальному.
>>239906691 (OP) Но ведь цикл лучше рекурсии всегда кроме случаев когда надо самопорождающийся алгоритм ебашить. Каждый новый вызов функции это переключение контекста, это создание локальных переменных. Это же хуета без задач.
Я предпочитаю слово байтодрочерство. Вабще кровавый ынтерпрайз практически не признает оптимизацию, так как нахуй нада. Проще серверов докупить, горизонтальное масштабирование быстрее и надежнее. Оракл вон свои базы данных уже стойками продает(exadata). А вот если ты стартап и от счетов за аренду серверов на стену лезешь то тут все под другому. Мимокрок схлопнувший 6 серверов с решением на PHP в один на C++.