Pull to refresh

Comments 39

Всем участникам конкурса были предложены престижные рабочие места в ведущих компаниях страны.
На должности «террорист-смертник»?
Нет, на должности ведущий разработчик SDK.
UFO just landed and posted this here
Название компилируемого файла должно совпадать с тем, что include-ится. То есть в обоих случаях файл дважды включает сам себя.
И еще вы в первом листинге пропустили символ `, я подозреваю, что он имеет большое значение.
UFO just landed and posted this here
Мда… Посмотрел на эту жесть и понял насколько я её нуб в крестах.
Да, помнится, когда только начал изучать cpp, в своем первом hello world случайно перепутал << и >> ( написал cout >> «Hello, world!») и получил 26 ошибок в консоль. Забавно, оказывается есть такой конкурс:)
Пожалуйста, распишите хотя бы в комментариях, как [не]работает каждый из примеров и «в чем прикол?».
При попытке скомпилировать выдают гигабайты ошибок и/или кушают гигабайты памяти.
в чем прикол?

Отличная демонстрация того, что современные компиляторы(интерпретатор, ЯП — нужное подчеркнуть или вставить что-то другое) настолько сложны, что даже безобидный на первый взгляд код вызывает неимоверное количество ошибок, а то и вовсе вводит в ступор сам компилятор.
Про вот это могу сказать, ничего сложного тут нет:
/usr/include; perl -e "@c=\"x\"x(2**16); while(1) {print @c}" 1>&2

«/usr/include» — это первая команда, автор пытается запустить стандартный директорий юникс-подобных система, что вызовет нефатальную ошибку, управление перейдёт дальше
«;» — разделитель двух команд
«perl -e» — запустить интерпретатором Перла код
поскольку код у нас в кавычках, внутри кавычки приходится экранировать, отсюда слеши, в самой программе слешей нет:
@c="x"x(2**16); while(1) {print @c}
совершенно неясно что тут непонятного. @c — переменная-массив (на это указывается «собачка»),
«''x'' x (2**16)» — это всего лишь «повторить букву „x“ два в степени 16 раз». В итоге, в первом элементе массива лежит длинная строка букв «x».
«while(1) {print @c}» — бесконечное количество раз выводить массив @c. При выводе массива выводятся подряд все его значения без разделителей. В данном случае будет бесконечно выводить одна и та же строка, состоящая из «x»
«1>&2» — к программе на Перле не относится, стандартная шелловская конструкция «вывести stdout туда же, куда stderr»

Всё. Не понимаю что так впечатлило жюри.
Наверное они ждали, что она снесёт им систему с корнем, а оно вон как! Строку выводит.
> /usr/include» — это первая команда, автор пытается запустить стандартный директорий юникс-подобных система, что вызовет нефатальную ошибку, управление перейдёт дальше

Вы не поняли. Данная строка — это не команда сама по себе. Это то, что подставляется после -I в вызов вида «gcc -I $INCLUDE_PATH». Соответственно, /usr/include — это, собственно, параметр для -I, точка с запятой — завершение вызова gcc, а все остальное — уже как вы написали.
Стало яснее, спасибо!
Perl-программисты делятся на две категории:
1. Те, кого Perl ещё впечатляет. Обычно это те же, кто на ещё Perl не программировали.
2. Те, кого Perl уже впечатляет. Обычно это те же, кто уже на Perl не программирует.

P.S.: если честно, то есть ещё третья категория, в которую входят морские свинки по большей части. К сожалению, они не особо многословны, что бы поделиться своими впечатлениями. Есть мнение, что им просто пофиг.
Я на Перле уже несколько лет не пишу, не впечатляет. Я в какой категории?
Во второй. Я там «не» пропустил случайно.
>глючный код C++
>Grand C++ Error Explosion Competition
Ализар такой Ализар.
Поясню: конкурс не на глючный код, а на код, который порождает наибольшое количество ошибок при компиляции.
Вот и я не мог распарсить заголовок. Вроде текст о том же, о чём новость на английском, в заголовке — «глючный».
В музее говнокода видел просто шедевр. Файл начинался так:
#!/usr/blin/perl
Всё же не самый глючный код, а порождающий наибольшее количество ошибок компиляции. Глючный код как правило компилируется :-)
а так?
include.h
#include "include.h"

выдает
c:\Program Files (x86)\CodeBlocks\MinGW\bin>gcc c:\include.h
In file included from c:\include.h:1:0,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1,
                 from c:\include.h:1:
c:\include.h:1:21: error: #include nested too deeply

#include __FILE__

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

sudo cat «test… test… test...» | perl -e '$??s:;s:s;;$?::s;;=]=>%-{
UFO just landed and posted this here
UFO just landed and posted this here
кстати
cat: test... test.. test...: No such file or directory
(echo должно быть) Автор поста, видимо, хотел допустить максимальное количество ошибок в этом баяне :-)
Емаё :-) я всегда думал, что в этой штуке инпут важен, а она работает и без всяких пайов, cat, echo… Можно просто запускать perl -e ... (то есть, конечно, запускать нельзя :-))

А насчёт оригинала — сильно сомневаюсь. Мне кажется, эта штука гораздо старше. Лет на 10 как минимум.
UFO just landed and posted this here
Ну если верить летописям, оригинал (ну в смысле именно однострочник на perl, не патч Бармина) именно по моей ссылке.

Я в Perl не разбираюсь, но по ссылке есть анализ, откуда следует что инпут не важен. Более того, предположу что «cat test… test… test...» было добавлено специально. Потому что с ним даже не знающий perl человек будет считать что видит где именно ошибка, и попытается исправить на echo и запустить.
UFO just landed and posted this here
Ну тут даже не в руте дело ведь. Если бы команда очищала домашнюю директорию — результат был бы ничем не лучше. Невменяемость скорее заключается в запуске чего попало.
Sign up to leave a comment.

Articles