URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 135692
[ Назад ]

Исходное сообщение
"Возобновлено соревнование по написанию запутанного кода на языке Си"

Отправлено opennews , 02-Янв-25 11:11 
После четырёхлетнего перерыва объявлено о возобновлении   конкурса IOCCC (International Obfuscated C Code Contest), нацеленного на написание наиболее запутанного и трудноразбираемого кода на языке Си. Мероприятие IOCCC28 станет сороковым в истории конкурса, проводимого с 1984 года. Работы будут приниматься c 31 января до 2 апреля 2025 года. В отличие от прошлых конкурсов, отныне в исходном коде разрешено использовать кодировку UTF-8...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62503


Содержание

Сообщения в этом обсуждении
"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Илья , 02-Янв-25 11:11 
взять любой проект с автомаппером и меддиатром - и приз твой

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 11:14 
Как сделать подобное дома:
- берем среднюю актуальную программу.
- пытаемся читать.  


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Омномнимус , 02-Янв-25 11:24 
Я вот неделю уже ковыпяю программулину на C + QT и это просто какой-то ад! Ни один недочатбот не может понять, что там происходит, про себя я вообще молчу...

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Facemaker , 02-Янв-25 11:52 
>Я вот неделю уже ковыпяю программулину на C + QT и это просто какой-то ад!

На Си разве были биндинги к QuickTime? Я всегда полагал, что это чисто Objective-C приблуда...


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 13:17 
при чём тут quicktime?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 13:59 
> при чём тут quicktime?

Просто некоторые нудилы не могут пройти мимо и указать что у Qt вторая буква lowercased, а QT - это QuickTime. Потому что это ОЧЕНЬ ВАЖНО!!!!1111.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 02-Янв-25 17:11 
ичсх quicktime поддерживается в qt

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 19:56 
В прежних мажорных версиях - может быть, сейчас - вряд ли.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Admino , 02-Янв-25 17:28 
Ты тоже считаешь, что автор первого коммента путает QT и Qt, C и C++?

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Facemaker , 02-Янв-25 18:50 
>Мне кажется, у автора первого коммента будет ещё много очень, очень сложных программ в его жизни, в которых он никак не сможет разобраться.

Ну да. Для программиста никак нельзя считать такие ошибки безобидными. Как же он пишет программы на языке, в котором в идентификаторах различаются строчные и заглавные символы?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Facemaker , 02-Янв-25 18:53 
>Просто некоторые нудилы не могут пройти мимо и указать что у Qt вторая буква lowercased, а QT - это QuickTime.

Просто это набатный звоночек, если для программиста что Qt, что QT, что C, что C++ — одно и то же. Звоночек о том, что учиться нужно систематически, прежде чем пытаться "работать".


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:24 
> Просто это набатный звоночек, если для программиста что Qt, что QT,

"если аргументов не осталось прикопайся к правописанию" (с)

> что C, что C++ — одно и то же.

Чисто технически - да, прям как в теореме г-на Эскобара - две ʼальтернативыʼ степень качества которых очень похожа.
Ну.. может плюсы слегка получше будут, но не существенно.

> Звоночек о том, что учиться нужно систематически, прежде чем пытаться "работать".

А где учатся чваниться и писать банальщину с таким менторским тоном?
Это специальные курсы какие-то?



"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Facemaker , 02-Янв-25 19:55 
>А где учатся чваниться и писать банальщину с таким менторским тоном?

Это специальные курсы какие-то?

А ведь вы правы, мне аж стыдно стало :). Зря я докопался до неряшливого написателя, да ещё в новогодние каникулы. Приношу свои извинения.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 21:06 
> А ведь вы правы, мне аж стыдно стало :). Зря я докопался  до неряшливого написателя, да ещё в новогодние каникулы. Приношу свои извинения.

Спасибо!
Сейчас праздники, кто-то с похмелья, кто-то со смены ночной вернулся..
Будем добрее друг-к-другу и мир станет лучше)



"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 02:24 
> "если аргументов не осталось прикопайся к правописанию" (с)

Не обращай внимания на регистр, матери компилятор, будь мужиком!


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено eugener , 02-Янв-25 15:19 
википедия утверждает, что квиктайм написан на си.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:15 
Он про биндинги к QuickTime? А не про сам QuickTime.

P.S.
Qt - правильно читается как Кьют, а не Ку-Тэ, и не Кью-Тэ.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 03-Янв-25 04:40 
> Qt - правильно читается как Кьют, а не Ку-Тэ, и не Кью-Тэ.

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено hjk , 03-Янв-25 04:53 
Когда написала? Я например об этом узнал в 2010-м...

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 08:29 
Я когда впервые увидел аббревитуру Qt, прочитал его правильно "Кьют", всё происходило на подсознательном уровне. Но потом наслышавшись тёмных соотечественников стал читать по разному и неправильно: "Ку-Тэ", "Кью-Тэ", "Кью-Ти".

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 06-Янв-25 01:32 
Причём сдесь русские вообще непонятно...

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:13 
Я точно знаю что в данном конкурсе победят иксы так как их с тех пор понимать перестали.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Q , 02-Янв-25 17:33 
X-ы не пройдут из за размера исходных кодов

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 20:48 
Да, жаль, но это хотя бы пример того, что явно используется. Я же не про оракловскую базу данных упомянул - там то вообще ад какой-то и непонятно как вообще работает.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 00:45 
Что тебе мешает перейти на язык 1с?

СледующийДень = ТекущаяДата() + 60 * 60 * 24;

ДобавитьМесяц(Дата(2005, 1, 31), 1)
ДобавитьМесяц(Дата(2005, 2, 28), -1)
КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1))

ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней)

Запрос = НовыйЗапрос("
|ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата";

Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата);
Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней);

ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата;



"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 08:34 
Ужас! Зачем ты всё это выучил? Это болезнь.

В качестве таблетки для излечения я тебе прописываю: Си, GNU bash, GNU sed, GNU awk, сойдут и клоны из состава BSD-утилит. Из ядерного терминала не вылезай.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 01:50 
Когда-нибудь ты поймёшь, что си и гнутая муть - это семантически тот же 1с, но на английском))

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Швондик , 02-Янв-25 11:50 
страшно, очень страшно такое читать - если бы мы понимали что это такое, мы не понимаем что это такое

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 12:02 
Чего не придумают чтоб m4, yacc и lex не использоват

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Вася Пупкин , 02-Янв-25 13:14 
https://sun9-27.userapi.com/impf/0dAeSn2XlAelcqxy_wXLpcx_J_a...

зачем. лучше этого кода уже не будет


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 14:17 
Что доказать хотели? Что заcpaть любой код можно? Доказали. Можно.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 15:23 
Если любой Си код можно заcpaть, то, следуя закону Мерфи, он рано или поздно будет засран.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 18:12 
А ну ка такой же пример на Pyhton или Java?
Это мне напоминает людей дающих лезвие и говорящих, что ничего случиться не может.
Мы видим что эволюция сделала станки джилет и количество порезов существенно сократилось.
Заничт берем какой-нибудь (не самый лучший пример) скажем Golang и все проблемы решили.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:57 
Только ты упускаешь одну немаловажную деталь. Лезвием можно не только бриться. А твой станок как и голанг подходит только для бритья и ничего более.  

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 21:04 
> Только ты упускаешь одну немаловажную деталь. Лезвием можно не только бриться.

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:39 
Ты не поверишь, но в этом мире есть гораздо больше задач кроме резанье колбасы.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 19:19 
И все эти задачи требуют… ммм… резать бритвой? Брится ножом? Чаще резаться при бритье? Развей мысль, если она была конечно.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 20:57 
> А ну ка такой же пример на Pyhton или Java?


def letshavesomefun(_, __ = type({( )} ^ {( )})):  __ = type("""
                      .-=-.          .--.
          __        .'     '.       /  " )
  _     .'  '.     /   .-.   \     /  .-'\
( \   / .-.  \   /   /   \   \   /  /    ^
  \ `-` /   \  `-'   /     \   `-`  /
jgs`-.-`     '.____.'       `.____.'""", (__,),
{'_'
:__.__dict__[
[*(_ for _ in sorted(__
.__dict__) if '_' not in _)][:
:-1].pop()]})( {( )} ); yield [_
for _ in _ if _ not in __ and
not __._(_)]

print(*letshavesomefun("hello")


def    _                  (
       _         ,
       __  
       =       type      ((  
               {( )}      
                 ^
               {( )}      ))
)                          :
       __ =    type        (
""".o00(0)(0)0( *)-<    """
, (    __        ,         )
                 ,         {
      '_'                  :    
       __        .  
__dict__   [[   *         (
       _       for        
       _       in sorted   (
       __        .
__dict__ )    if        
      '_'      not    in  
       _  ) ][             {
(      __ )  }   >         {
                 *         (
       _  )  }             :        
                           :
                 ~         (
               not         (  
       _  )  )
            ][ not         (  
       _  ) ]]
}         ) (              {
(         )  }             )
       _  ;    yield       [
       _       for
       _       in
       _       if
       _       not    in
       __      and    not
       __      .
       _
(      _  )  ]

print(*_([3,1,2,5,1,0]))
print(*_("hello world"))


"Что сынку, помогли тебе твои принудительные отступы?"

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Василий Пупов , 03-Янв-25 15:24 
Примени форматтер, не страдай ерундой, потом поговорим

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 21:57 
> Примени форматтер, не страдай ерундой, потом поговорим


% autopep8 -aaa letshavesomfefun2.py

def _(
    _,
    __=type((
        {()}
        ^
        {()}))
):
    __ = type(
        """.o00(0)(0)0( *)-<    """
        , (__,), {
            '_':
            __        .
            __dict__[[* (
                _ for
                _ in sorted(
                    __        .
                    __dict__) if
                '_' not in
                _)][{
                    (__)} > {
                    * (
                        _)}::
                    ~         (
                    not (
                        _))
                    ][not (
                        _)]]
        })({
            ()})
    _
    yield [
        _ for
        _ in
        _ if
        _ not in
        __ and not
        __      .
        _
        (_)]

print(*_([3, 1, 2, 5, 1, 0]))
print(*_("hello world"))


И как, лучше стало?

А нам точно есть о чем разговаривать?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Александр , 11-Янв-25 05:52 
Видел код на php, где создавался объект класса, а класс брался из БД. На python такое тоже можно. Ещё на python при помощи ctypes делал фабрику COM интерфейсов (тут уже скорее ради прикола). ЯП со статической типизации без рефлексии такие приколы и не снились.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено chdlb , 02-Янв-25 23:36 
Пупкин давай пояснительную бригаду

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 11:03 
А оно так будет работать? Case 1 не окажется внутри {, что приведет к тому, что компилятор пошлет нас куда подальше?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 12:59 
Можно почитать разбор тут pigeonsnest.co.uk/stuff/pigeons-device.html
Собственно откуда анон и взял скриншот.
Что без ссылки слегка свинство.

Это хак, в какой-то мере восхищенный методом Даффа.
Костыльный хак из 80х, которые в свое время вызвал нехилый батхерт у небезызвестного Тцо - когда эту "оптимизацию" выпилили из ХОрга - то стало только лучше)
"In fact, by eliminating all instances of Duff's Device from
the XFree86 4.0 server, the server shrunk in size by _half_ _a_
_megabyte_ (!!!), and was faster to boot" [1]

[1] https://lkml.indiana.edu/hypermail/linux/kernel/0008.2/0171....


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Пюре , 03-Янв-25 14:30 
Эм, switch, оказывается, не очень честная конструкция в плане синтаксиса C, не подчиняется парности {}
Фактически, пример показывает, что switch() это набор if/goto перед основным кодом, а case X: собственно, выглядит почти как метка, и используется как метка для неявного goto. break кстати тоже goto.
Что не всегда ожидаемо после других языков, но отлично ожидаемо теми, кто знает ассемблер, и знает, зачем был сделан C.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноньимъ , 03-Янв-25 15:14 
>и знает, зачем был сделан C.

Саботаж индустрии?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Пюре , 03-Янв-25 16:26 
О нет, это же <s>сарказмъ</s> <s>обоснованное мнение<s> <s>тупость ньюфага</s> хотя да, тупость, я сейчас сразу же переменю своё мнение (нет).

Вы же явно можете достигнуть лучшего, начав с той же позиции, как и они, зная то же, что и они. Почему же вы тут, комментируете пюре, а не в первых рядах, развивающих индустрию?

Наверное потому, что стоя на плечах гигантов, луче видно, да?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 17:24 
> Вы же явно можете достигнуть лучшего, начав с той же позиции, как и они, зная то же, что и они.

Ну давай, посмотрим какая у них была позиция.
Итак у нас на дворе 1972 год.
У нас уже есть и используются годами такие языки как Фортран, APL, Лисп, Simula.
За пару лет до появляется FORTH, Паскаль и Smalltalk (в тот же год).
Т.е у нас есть разнообразие подходов, от императивных до функциональных.

Итак появляется СИ и распространяется, благо он прост как тапок.
Стандарта нет. Научить ему можно даже камаку без мозгов.

В 83 году начинаются попытки стандартизации.
В это время у нас уже есть Пролог, Scheme, Ада (отличный пример как нужно разрабатывать ЯП). Даже С++ уже появился.

И наконец в 89 году, после многолетней болтовни и проедания бюджетов, коммитет в̶ы̶с̶р̶а̶..  родил "стандарт".
Наверное самый овняный из тех, которые можно было сделать.
Где сложение 2 чисел это уже UB. И этих UB хоть πоπой кушай.
Где один и тот же код дает разный результат в зависиммости от компилятора и даже его версии. Где ни один компилятор не реализует стандарт полностью...

> Наверное потому, что стоя на плечах гигантов, луче видно, да?

И видно что они просто делали на отшибись?
И может они не такие уж гиганты.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Пюре , 03-Янв-25 23:37 
А, вот, мне это нравится.
Стандарт на Pascal  - 1983 год (13 лет от появления)
Стандарт ALGOL как родоначальника большинства системных языков - 1984 год (~24 года от появления).
С - посчитайте сами. Лучше возьмите за базу K&R C то есть 1978 год.
Не стоит козырять стандартом. До стандарта доживают те, кому что то удалось.

>Где сложение 2 чисел это уже UB.

Так, а список компилируемых языков со статической типизацией, на то время, "которые уже используются годами", и таки нативно обрабатывают целочисленное переполнение, видимо пуст?
Или в _тех_ языках есть какой то механизм (для программиста) проверки переполнения?
Особенно подходящих для системного программирования?

В современных то - Rust "Integer operators will panic when they overflow when compiled in debug mode." Ой, а в release mode что, overflow не бывает? О, нужно, чтобы программист сам проверял, да? Ну то есть как и везде. Особенно в ядре, да :)

И как то, если уж  кое кто считает, что "C это такой макроассемеблер" (нет), то в ассемблере вообще нет никакой типизации. И проверку переполнения можно делать.

Я согласен, плохо, что факт переполнения спрятали. Но другого почему в системных языках то почти нет.

Что касается Ada, то да, язык хорош. И родился сразу стандартом, DOD поспособстовал. Но что мне кажется, что ломать системный язык (С, на который к тому времени уже было переписано несколько вариантов Unix) с целью добиться чего то большего (концепции, утверждённые в стандарте Ada), ну так себе идея.
Ну и, опять же ОС на Ada не мировые лидеры. ХЗ, может сложность языка всё же имеет значение.

>И видно что они просто делали на отшибись?
>И может они не такие уж гиганты.

Да? Вы уже повторили их дела? На их оборудовании? И с их ограничениями? На всех этих UNIVAC и PDP и VAX?
Или перестали пользоваться всем, что появилось благодаря их работе?
Только тогда, я щитаю, можно лить gov.no на все предыдущее.
Вы не прошли и шага в их обуви.

ЗЫ. Я не пытаюсь убедить этого анонима. Я пытаюсь предостеречь других от поспешных суждений.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 05-Янв-25 07:25 
> Я согласен, плохо, что факт переполнения спрятали. Но другого почему в системных языках то почти нет.

Тот аноним пишет про UB и вроде как понимает, что это такое. А ты нет.

Он не говорит об отсутствии доступа к факту переполнения. Совсем. Он говорит про допущение у компилятора о том, что знаковые целые никогда нигде не переполняются (а появиться они могут "из ниоткуда", потому что unsigned short + unsigned short = signed int). Чтобы в ходе оптимизации выкинуть куски кода, в которых он видит переполнение и иметь шанс набрать ещё копейку в каких-то бенчмарках.

> Да? Вы уже повторили их дела? На их оборудовании? И с их ограничениями?

1. "Сперва добейся"
2. Но да, он повторил дело Денниса Ритчи - указал на недостатки стандарта. "The fundamental problem is that it is not possible to write real programs using the X3J11 definition of C. The committee has created an unreal language that no one can or will actually use."
3. Гнаться за оптимизациями в ущерб стабильности никто не заставлял

> ЗЫ. Я не пытаюсь убедить этого анонима. Я пытаюсь предостеречь других от поспешных суждений.

Сначала матчасть!


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноньимъ , 03-Янв-25 21:43 
Потому что могу.
Не ищите слишком глубокого смысла. Вам повезло увидеть мой комментарий.
И ещё анонима выше, который что-то в вопросе понимает.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 16:05 
В компиляторах тех времен switch был просто набором условных goto на заданные case метки.

Нынешние, вероятно, будут ругаться как минимум warning-ами.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 05-Янв-25 07:34 
Поверх этой фичи сделан более-менее легитимный Protothreads (библиотеку кооперативной многозадачности на макросах).

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 23:02 
Красивый код не конпиляют, его ставят на полочку и исполняют нативно)

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Данные в так называемом поле Name , 02-Янв-25 16:17 
Думаю с пришествием негросетей подобные соревнования канут в лету. Как и кодгольф, например.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:34 
Очень сомневаюсь что нейросетям когда либо станет доступно то искусство, которое творят люди, увлекающиеся кодгольфом
Банально даже врятли сетки способны написать оптимизированный с код, чтобы генерировались симд инструкции, отсортированные по времени выполнения, чтобы все это правильно работало с кэшэм и памятью

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:09 
«А вы можете?» ©

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 04:24 
А зачем Си код нейросетям? Пусть сразу на ассемлере пишут. Си сделан для людей чтобы меньше писать, но код оптимизирует уже транслятор с компилятором. Для ассемблера это ненужно и он выдает тот код что был написан без его интерпретации.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 13:50 
Ну, формально, все языки для людей придумывают
Но реальность такова, что люди не могут/не хотят писать код, вот многие и хотят сбагрить сеткам и эту работу, по той же самой причине - писать меньше/вообще не писать
Уже есть же вполне себе codeless, или как там оно называется, даже видел "айти курсы" по этому делу, типа за день научат как мышкой написать сервис

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 21:23 
Кодгольф нынче не канул в лету, он порвался вклочья под натиском специализированных языков.

Зайдите на codegolf.stackexchange.com, поглядите, как это нынче выглядит.

Ну или https://esolangs.org/wiki/Category:Golfing_language — чтоб уж окончательно ужаснуться.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 22:47 
На специализированных языках гольфят очень странные люди. Обычно программист на языке foo, на языке foo же и соревнуются. Такие вот соревнования позволяют глубже изучить инструмент который используешь на работе и бонусом повеселиться.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 02-Янв-25 17:19 
просто кусок из официального учебника самого безопасного языка

impl List {
    fn tail(&self) -> Option<&RefCell<Rc<List>>> {
        match self {
            Cons(_, item) => Some(item),
            Nil => None,
        }
    }
}


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:24 
Это просто жениально!

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:51 
И что тут неясно? :-/

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:54 
И? Что не так?
Длинные слова тебя расстраивают?
Или непонятные значки не позволяют понять, что написано?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:21 
Не зря Раст называют худшим языком в мире.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:28 
> Не зря Раст называют худшим языком в мире.

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:54 
Это толстые тролли и боты. Хорошему языку не нужны рейтинги чтобы быть хорошим.  Он просто хороший.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:48 
тема про написание запутанного кода на Си

на Си

запутанного кода

не на раст

на Си

тебе удалили первый коммент про раст, ты написал еще один коммент

зачем? в чем причина? зад жжет? или цирк на выходные закрыт, и есть потребность клоунировать клоунскую сишкоклоунаду?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 21:17 
И что тут плохого? Что тут недоступно познанию сишников

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 07:15 
Что именно тебя пугает?

Параметризация по типам (дженерики)? Это стандартная фича всех современных языков, как минимум что бы какой-нибудь List или Map знали, какого типа элементы внутри них содержаться. Ну там, List<String> - список строчек, Map<String, List<Integer>> - сопоставление ключ-значения, где ключ строка, значение список чисел.

Или тебя пугает match? Pattern matching - менее распостранённая фича, но довольно простая а понимании. Можно про неё думать, как про чуть более умный switch/case.

Я кажется начинаю догадываться, почему от раста и именно от раста вылезло на поверхность так много людей, у которых бомбит. Потому, что раст и только раст создал настоящую конкуренцию Си, все остальные современные языки - java, kotlin, scala, c# - это сборщики мусора и медленный, прожорливый код, они и не собирались заменять там, где требуется эффективность по ресурсам. Поэтому, вылезшие из спячки сишники в их сторону никогда и не смотрели. Поэтому, все эти «новые» фичи, которым уже по 20 лет - для них что-то запредельное.

Добро пожаловать в 2025 год, вы уже не в 1995-ом.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 08:23 
Исходники на Раст целый день компилируются. Нам это надо? Нет!

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 13:29 
> Или тебя пугает match? Pattern matching - менее распостранённая фича, но довольно простая а понимании. Можно про неё думать, как про чуть более умный switch/case.

"Качество" свича в СИ отлично показал анон в этом сообщении
opennet.ru/openforum/vsluhforumID3/135692.html#98
Классическое "как отстрелить себе нору по саму опу")))

> Поэтому, все эти «новые» фичи, которым уже по 20 лет - для них что-то запредельное.
> Добро пожаловать в 2025 год, вы уже не в 1995-ом.

Будем объективны, еще 2-3 года назад для разработки ядра нужен был С89. И сменили его на новейший С11 ))
Т.е можно реально десятилетиями писять какой-то код и вообще не париться о каких-то новшествах.

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноньимъ , 03-Янв-25 15:15 
Напишите тоже самое на сишке)

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 15:42 
Это невозможно. В дыряшке нет сопоставления с образцом, это не проверяется компилятором. И нет нормальной типизации, только вечные void*

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 04-Янв-25 07:58 
> нет сопоставления с образцом

от создателей системного лотка, ***ть. господи, выучи терминологию, а потом суйся на технические сайты

>  Напишите тоже самое на сишке)

в сишке придётся думать, как написать настолько же нечитаемо, в расте по-другому писать не сможешь

а спрашивать, как написать tail списка на сишке, - это даже не смешно


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноньимъ , 04-Янв-25 18:21 
> от создателей системного лотка, ***ть. господи, выучи терминологию, а потом суйся на
> технические сайты

Вы двум разным людям отвечаете одним комментарием. Всё в порядке?

> в сишке придётся думать

Сложно. Понимаю.

> а спрашивать, как написать tail списка на сишке, - это даже не
> смешно

А вас же не это просят написать, а функционально повторить вот тот код на хрусте.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 05-Янв-25 11:07 
> господи, выучи терминологию, а потом суйся на технические сайты

https://ru.wikipedia.org/wiki/%D0%A1%D0%...

Какая может быть техническая дискуссия с человеком, не понимающим и трех строк на Си-подобном языке?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 05-Янв-25 14:06 
с тобой всё ясно, иди изучай "лучшие практики" и "пользовательский опыт"

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено нононим , 06-Янв-25 16:17 
#include <iostream>
#include <memory>
#include <optional>

class List {
public:
    struct Cons;
    struct Nil;

    using Node = std::variant<std::shared_ptr<Cons>, std::shared_ptr<Nil>>;

    struct Cons {
        int value;
        std::shared_ptr<Node> next;

        Cons(int val, std::shared_ptr<Node> nxt)
            : value(val), next(std::move(nxt)) {}
    };

    struct Nil {};

    std::optional<std::shared_ptr<Node>> tail() const {
        if (std::holds_alternative<std::shared_ptr<Cons>>(node)) {
            return std::get<std::shared_ptr<Cons>>(node)->next;
        } else {
            return std::nullopt;
        }
    }

    List(int val, std::shared_ptr<Node> nxt)
        : node(std::make_shared<Cons>(val, std::move(nxt))) {}

    List() : node(std::make_shared<Nil>()) {}

private:
    std::shared_ptr<Node> node;
};

int main() {
    auto nil = std::make_shared<List::Node>(std::make_shared<List::Nil>());
    auto list = List(1, nil);

    auto tail = list.tail();

    if (tail) {
        std::cout << "Tail exists!\n";
    } else {
        std::cout << "No tail.\n";
    }

    return 0;
}


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 17:26 
>В отличие от прошлых конкурсов, отныне в исходном коде разрешено использовать кодировку UTF-8.

Не знал, что они были такими отсталыми.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 18:05 
UTF-8 в исходниках (даже в комментариях)  - бpeд. По тyпocти это как официальный совет офтопика - для каждой локальной версии создавать отдельное приложение.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 19:12 
И в чём бред? На старой EGA-карте в текстовом режиме не отобразится?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноньимъ , 03-Янв-25 04:20 
Ну да.
А писать лямбда и набла в переменных это не бред

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 20:07 
А если printf должна что-либо на консоль вывести на национальном языке, транслит - ваше фсё?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 02-Янв-25 20:47 
Даёшь идентификаторы на кириллице! А лучше вперемешку с латиницей, и приправить арабской вязью.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 00:42 
Ты что, на 1с никогда не программировал?

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:02 
Нет. У меня нет проблем с кириллицей, но мешанина из кириллицы и латиницы — это ужасно, учитывая, что есть одинаковые на вид символы.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 08:19 
Ты путаешь причину и следствие. В чистом Си, Юникод  разрешили разрешили потому, что он является приемлемым мировым Стандартом. Никто в здравом уме не будет в исходники серить кириллицей или арабской вязью. Есть в конце концов правила написания исходного кода, от сообществ GNU, BSD, ядра; K&R и т.д.

Организаторы соревнования думают так же. Ядре Линукса тоже на UTF-8, и чо?! Кто-то по этому поводу ноет?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 10:09 
> Ядре Линукса тоже на UTF-8, и чо?!

Разве всё ядро Linux не на финском языке написано?


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 11:55 
>Разве всё ядро Linux не на финском языке написано?

То что ты перешёл на троллинг, свидетельсвует о том, что у тебя исчерпаны аргументы.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 13:55 
Жаль когда Линус ядро писал, никто не подсказал ему сначала сделать свой форк Си и назвать его Фи(где писать надо на Финском)

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:40 
Лучше бы ему подсказали ничего не писать.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:40 
> Жаль когда Линус ядро писал, никто не подсказал ему сначала сделать свой форк Си и назвать его Фи(где писать надо на Финском)

А разве GNUтые расширения гвоздями прибитые к ядру - это не "форк"?
Типичное ЕЕЕ и вендорлок в стиле корпоратов.



"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 20:01 
А как же ядро Шлангом собирают некоторые дистры?
А на корпоратов что, вруг, бочку катишь? Ты же их любишь.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:04 
Согласен, тупанул. Откуда-то появилась мысль про не-ASCII идентификаторы.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 03:43 
Любой код на Си (и Расте) - запутанный.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 20:03 
Да на Расте даже и специальных соревнований устраивать нет необходимости.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 12:12 
Ну не знаю. Всегда считал, что чем больше знаков препинания, тем хуже язык читается. Не зря же Бейсик самый читаемый. Потому мне всегда нравился Паскаль, где все пишется "словами". Но недавно перешел на C/C++. И в принципе если нормально писать, то получается достаточно читаемый код. Есть конечно там свои плюсы и минусы. Язык конечно помощнее. Но недостатки тоже есть. Кривая типизация например. Очень бесит, когда две переменных одинакового типа вдруг оказываются неприсваиваемыми без объявления оператора. Бесит, массивы присваивать нельзя, а если обернуть их в структуру - то можно. Ллогика, ога. Или когда перечисления вдруг оказываются не перечисляемыми типами (простите за каламбур) и для них опять же не работают операции типа ++/-- без объявления операторов.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено wd , 03-Янв-25 12:41 
в перлигате еще меньше пунктуации, она самая читаемая, ну если не смотреть на всякие "Moo"

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 12:46 
используй std::vector, Люк.

а ++/-- для enum хорошо, что не добавляют. я не хочу каждый раз думать, это инкремент underlying типа или следующие существующее значение enum-a


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 13:46 
>Не зря же Бейсик самый читаемый. Потому мне всегда нравился Паскаль, где все пишется "словами". Но недавно перешел на C/C++.

Дорогой ты мой человек, человечище! Где ты был всё это время, в НИИ, а может ты преподавал в универе? На Дельфи (Паскале) перестали писать ещё в конце нулевых. На Бейсике в последний раз писали в начале 1990-х гг, а VBA используют только в M$ Excel, и это уже не совесм тот Бейсик.

>C/C++

Бедняжка, ты ещё не можешь отличить чситый Си от плюсов? Для тебя это один язык, да? переходи на модные язык Python или Rust. Java уже не модная, хайп поднятый в 90-х и нулевых давно спал.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено 12yoexpert , 03-Янв-25 14:12 
раст для тех, кто не понимает, что с++ это надстройка над си

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 03-Янв-25 14:23 
> раст для тех, кто не понимает, что с++ это надстройка над си

Нет, как раз для тех - кто понимает.
Что с++ построен на том же гнилом фундаменте из UB, что и СИ.
И что в плюсах, несмотря на все улучшения, остаются те же типичные ошибки, что и в СИ.
А добавление всяких smartPtr, MiraclePtr помогают только частично.

Именно поэтому гугл старается новый код на с++ в андроиде писать на расте, везде где возможно.


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Java , 03-Янв-25 16:10 
ты хотел сказать : "код на java писать на kotlin"

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено dcc0 , 03-Янв-25 23:26 
Любой  код болше 100 строк, где  используются имена переменных и функций в виде букв ("математический стиль"), будет запутанным.
Я писал так.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено Аноним , 04-Янв-25 07:21 
Я тоже немного страдал этим, задрачивался на математический стиль. У Кормена в псевдокоде такое видел, думал так будет систематичнее и академичнее. Ошибался. Систематичо не означает однобуквенные идентификаторы. Такое трудно читать. Читабельность должна быть на самом первом месте.

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено dcc0 , 04-Янв-25 16:00 
> Я тоже немного страдал этим, задрачивался на математический стиль. У Кормена в
> псевдокоде такое видел, думал так будет систематичнее и академичнее. Ошибался. Систематичо
> не означает однобуквенные идентификаторы. Такое трудно читать. Читабельность должна быть
> на самом первом месте.

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

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

И ещё психологический момент: если сильно увлечься стилем, можно потерять фокус внимания на содержании.

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


"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено dcc0 , 05-Янв-25 21:28 
Мне кажется, я выиграю, не пытаясь запутать:
https://www.linux.org.ru/forum/development/17837644

"Возобновлено соревнование по написанию запутанного кода на я..."
Отправлено dcc0 , 05-Янв-25 21:54 
https://youtu.be/jVtt_ol9S4g?si=Ztz2ki6YpBl2sR-M