The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Возобновлено соревнование по написанию запутанного кода на языке Си"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Возобновлено соревнование по написанию запутанного кода на языке Си"  +/
Сообщение от 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Илья (??), 02-Янв-25, 11:11   +7 +/
взять любой проект с автомаппером и меддиатром - и приз твой
Ответить | Правка | Наверх | Cообщить модератору

2. Сообщение от Аноним (2), 02-Янв-25, 11:14   +12 +/
Как сделать подобное дома:
- берем среднюю актуальную программу.
- пытаемся читать.  

Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Омномнимус (?), 02-Янв-25, 11:24   –12 +/
Я вот неделю уже ковыпяю программулину на C + QT и это просто какой-то ад! Ни один недочатбот не может понять, что там происходит, про себя я вообще молчу...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #29, #72

4. Сообщение от Швондик (?), 02-Янв-25, 11:50   +14 +/
страшно, очень страшно такое читать - если бы мы понимали что это такое, мы не понимаем что это такое
Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от Facemaker (?), 02-Янв-25, 11:52   –12 +/
>Я вот неделю уже ковыпяю программулину на C + QT и это просто какой-то ад!

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #11, #21

7. Сообщение от Аноним (7), 02-Янв-25, 12:02   +/
Чего не придумают чтоб m4, yacc и lex не использоват
Ответить | Правка | Наверх | Cообщить модератору

10. Сообщение от Вася Пупкин (?), 02-Янв-25, 13:14   +2 +/
https://sun9-27.userapi.com/impf/0dAeSn2XlAelcqxy_wXLpcx_J_a...

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #70, #93

11. Сообщение от Аноним (11), 02-Янв-25, 13:17   +/
при чём тут quicktime?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #16

16. Сообщение от Аноним (-), 02-Янв-25, 13:59   +32 +/
> при чём тут quicktime?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #27, #37, #48

18. Сообщение от Аноним (18), 02-Янв-25, 14:17   +/
Что доказать хотели? Что заcpaть любой код можно? Доказали. Можно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #22, #45

21. Сообщение от eugener (ok), 02-Янв-25, 15:19   +2 +/
википедия утверждает, что квиктайм написан на си.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #30

22. Сообщение от Аноним (-), 02-Янв-25, 15:23    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

23. Сообщение от Данные в так называемом поле Name (?), 02-Янв-25, 16:17   –2 +/
Думаю с пришествием негросетей подобные соревнования канут в лету. Как и кодгольф, например.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39, #68

27. Сообщение от 12yoexpert (ok), 02-Янв-25, 17:11   –1 +/
ичсх quicktime поддерживается в qt
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #143

29. Сообщение от Аноним (29), 02-Янв-25, 17:13   +2 +/
Я точно знаю что в данном конкурсе победят иксы так как их с тех пор понимать перестали.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #38

30. Сообщение от Аноним (-), 02-Янв-25, 17:15   +/
Он про биндинги к QuickTime? А не про сам QuickTime.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #80

33. Сообщение от 12yoexpert (ok), 02-Янв-25, 17:19   +2 +/
просто кусок из официального учебника самого безопасного языка

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35, #41, #42, #53, #57, #67, #84, #116

35. Сообщение от Аноним (35), 02-Янв-25, 17:24   +/
Это просто жениально!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

36. Сообщение от Аноним (-), 02-Янв-25, 17:26   +/
>В отличие от прошлых конкурсов, отныне в исходном коде разрешено использовать кодировку UTF-8.

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #44, #62

37. Сообщение от Admino (ok), 02-Янв-25, 17:28   +2 +/
Ты тоже считаешь, что автор первого коммента путает QT и Qt, C и C++?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #47

38. Сообщение от Q (??), 02-Янв-25, 17:33   +2 +/
X-ы не пройдут из за размера исходных кодов
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #63

39. Сообщение от Аноним (39), 02-Янв-25, 17:34   +1 +/
Очень сомневаюсь что нейросетям когда либо станет доступно то искусство, которое творят люди, увлекающиеся кодгольфом
Банально даже врятли сетки способны написать оптимизированный с код, чтобы генерировались симд инструкции, отсортированные по времени выполнения, чтобы все это правильно работало с кэшэм и памятью
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #51, #78

41. Сообщение от Аноним (142), 02-Янв-25, 17:51   –2 +/
И что тут неясно? :-/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

42. Сообщение от Аноним (-), 02-Янв-25, 17:54   –2 +/
И? Что не так?
Длинные слова тебя расстраивают?
Или непонятные значки не позволяют понять, что написано?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

44. Сообщение от Аноним (18), 02-Янв-25, 18:05   +/
UTF-8 в исходниках (даже в комментариях)  - бpeд. По тyпocти это как официальный совет офтопика - для каждой локальной версии создавать отдельное приложение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #52, #77, #146

45. Сообщение от Аноним (45), 02-Янв-25, 18:12   +/
А ну ка такой же пример на Pyhton или Java?
Это мне напоминает людей дающих лезвие и говорящих, что ничего случиться не может.
Мы видим что эволюция сделала станки джилет и количество порезов существенно сократилось.
Заничт берем какой-нибудь (не самый лучший пример) скажем Golang и все проблемы решили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #60, #64, #156

47. Сообщение от Facemaker (?), 02-Янв-25, 18:50   +2 +/
>Мне кажется, у автора первого коммента будет ещё много очень, очень сложных программ в его жизни, в которых он никак не сможет разобраться.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

48. Сообщение от Facemaker (?), 02-Янв-25, 18:53   +3 +/
>Просто некоторые нудилы не могут пройти мимо и указать что у Qt вторая буква lowercased, а QT - это QuickTime.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #54

51. Сообщение от Аноним (51), 02-Янв-25, 19:09   +/
«А вы можете?» ©
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

52. Сообщение от Аноним (51), 02-Янв-25, 19:12   +/
И в чём бред? На старой EGA-карте в текстовом режиме не отобразится?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

53. Сообщение от Аноним (60), 02-Янв-25, 19:21   +1 +/
Не зря Раст называют худшим языком в мире.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #55

54. Сообщение от Аноним (54), 02-Янв-25, 19:24   –2 +/
> Просто это набатный звоночек, если для программиста что Qt, что QT,

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

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

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

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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #59, #73

55. Сообщение от Аноним (-), 02-Янв-25, 19:28   –1 +/
> Не зря Раст называют худшим языком в мире.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #58

57. Сообщение от Аноним (57), 02-Янв-25, 19:48    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

58. Сообщение от Аноним (60), 02-Янв-25, 19:54   +3 +/
Это толстые тролли и боты. Хорошему языку не нужны рейтинги чтобы быть хорошим.  Он просто хороший.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

59. Сообщение от Facemaker (?), 02-Янв-25, 19:55   +/
>А где учатся чваниться и писать банальщину с таким менторским тоном?

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54 Ответы: #66

60. Сообщение от Аноним (60), 02-Янв-25, 19:57   +/
Только ты упускаешь одну немаловажную деталь. Лезвием можно не только бриться. А твой станок как и голанг подходит только для бритья и ничего более.  
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #65

62. Сообщение от Аноним (62), 02-Янв-25, 20:47   +/
Даёшь идентификаторы на кириллице! А лучше вперемешку с латиницей, и приправить арабской вязью.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #71, #87

63. Сообщение от Аноним (63), 02-Янв-25, 20:48   +/
Да, жаль, но это хотя бы пример того, что явно используется. Я же не про оракловскую базу данных упомянул - там то вообще ад какой-то и непонятно как вообще работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

64. Сообщение от Аноним (65), 02-Янв-25, 20:57   +1 +/
> А ну ка такой же пример на 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"))


"Что сынку, помогли тебе твои принудительные отступы?"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #117

65. Сообщение от Аноним (65), 02-Янв-25, 21:04   +/
> Только ты упускаешь одну немаловажную деталь. Лезвием можно не только бриться.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #112

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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59

67. Сообщение от Аноним (67), 02-Янв-25, 21:17   –2 +/
И что тут плохого? Что тут недоступно познанию сишников
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

68. Сообщение от Аноним (68), 02-Янв-25, 21:23   –1 +/
Кодгольф нынче не канул в лету, он порвался вклочья под натиском специализированных языков.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #128

70. Сообщение от chdlb (?), 02-Янв-25, 23:36   +/
Пупкин давай пояснительную бригаду
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

71. Сообщение от Аноним (72), 03-Янв-25, 00:42   +/
Ты что, на 1с никогда не программировал?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #106

72. Сообщение от Аноним (72), 03-Янв-25, 00:45   +/
Что тебе мешает перейти на язык 1с?

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

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

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

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

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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #90

73. Сообщение от Аноним (73), 03-Янв-25, 02:24   +2 +/
> "если аргументов не осталось прикопайся к правописанию" (с)

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

74. Сообщение от Аноним (74), 03-Янв-25, 03:43   –2 +/
Любой код на Си (и Расте) - запутанный.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #145

77. Сообщение от Аноньимъ (ok), 03-Янв-25, 04:20   +/
Ну да.
А писать лямбда и набла в переменных это не бред
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

78. Сообщение от Аноним (63), 03-Янв-25, 04:24   +/
А зачем Си код нейросетям? Пусть сразу на ассемлере пишут. Си сделан для людей чтобы меньше писать, но код оптимизирует уже транслятор с компилятором. Для ассемблера это ненужно и он выдает тот код что был написан без его интерпретации.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #104

80. Сообщение от 12yoexpert (ok), 03-Янв-25, 04:40   +/
> Qt - правильно читается как Кьют, а не Ку-Тэ, и не Кью-Тэ.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #82, #89

82. Сообщение от hjk (?), 03-Янв-25, 04:53   +1 +/
Когда написала? Я например об этом узнал в 2010-м...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

84. Сообщение от Аноним (84), 03-Янв-25, 07:15   +/
Что именно тебя пугает?

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #88, #101

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #91, #107

88. Сообщение от Аноним (-), 03-Янв-25, 08:23    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

89. Сообщение от Аноним (-), 03-Янв-25, 08:29   –1 +/
Я когда впервые увидел аббревитуру Qt, прочитал его правильно "Кьют", всё происходило на подсознательном уровне. Но потом наслышавшись тёмных соотечественников стал читать по разному и неправильно: "Ку-Тэ", "Кью-Тэ", "Кью-Ти".

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80 Ответы: #153

90. Сообщение от Аноним (-), 03-Янв-25, 08:34   +/
Ужас! Зачем ты всё это выучил? Это болезнь.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #135

91. Сообщение от Аноним (18), 03-Янв-25, 10:09   +/
> Ядре Линукса тоже на UTF-8, и чо?!

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87 Ответы: #94, #105

93. Сообщение от Аноним (93), 03-Янв-25, 11:03   +/
А оно так будет работать? Case 1 не окажется внутри {, что приведет к тому, что компилятор пошлет нас куда подальше?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #98, #111, #119, #130

94. Сообщение от Аноним (-), 03-Янв-25, 11:55   –1 +/
>Разве всё ядро Linux не на финском языке написано?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91

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

96. Сообщение от wd (?), 03-Янв-25, 12:41   +/
в перлигате еще меньше пунктуации, она самая читаемая, ну если не смотреть на всякие "Moo"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95

97. Сообщение от Аноним (97), 03-Янв-25, 12:46   +/
используй std::vector, Люк.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95

98. Сообщение от Аноним (-), 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....

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

101. Сообщение от Аноним (-), 03-Янв-25, 13:29    Скрыто ботом-модератором–1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

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

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

>C/C++

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95 Ответы: #109

104. Сообщение от Аноним (104), 03-Янв-25, 13:50   +/
Ну, формально, все языки для людей придумывают
Но реальность такова, что люди не могут/не хотят писать код, вот многие и хотят сбагрить сеткам и эту работу, по той же самой причине - писать меньше/вообще не писать
Уже есть же вполне себе codeless, или как там оно называется, даже видел "айти курсы" по этому делу, типа за день научат как мышкой написать сервис
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78

105. Сообщение от Аноним (104), 03-Янв-25, 13:55   –1 +/
Жаль когда Линус ядро писал, никто не подсказал ему сначала сделать свой форк Си и назвать его Фи(где писать надо на Финском)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #113, #114

106. Сообщение от Аноним (62), 03-Янв-25, 14:02   +/
Нет. У меня нет проблем с кириллицей, но мешанина из кириллицы и латиницы — это ужасно, учитывая, что есть одинаковые на вид символы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71

107. Сообщение от Аноним (62), 03-Янв-25, 14:04   +/
Согласен, тупанул. Откуда-то появилась мысль про не-ASCII идентификаторы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87

109. Сообщение от 12yoexpert (ok), 03-Янв-25, 14:12   +/
раст для тех, кто не понимает, что с++ это надстройка над си
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102 Ответы: #110

110. Сообщение от Аноним (-), 03-Янв-25, 14:23   –1 +/
> раст для тех, кто не понимает, что с++ это надстройка над си

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #120

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #115

112. Сообщение от Аноним (60), 03-Янв-25, 14:39   +/
Ты не поверишь, но в этом мире есть гораздо больше задач кроме резанье колбасы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #142

113. Сообщение от Аноним (60), 03-Янв-25, 14:40   +/
Лучше бы ему подсказали ничего не писать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105

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

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105 Ответы: #144

115. Сообщение от Аноньимъ (ok), 03-Янв-25, 15:14   –2 +/
>и знает, зачем был сделан C.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111 Ответы: #121

116. Сообщение от Аноньимъ (ok), 03-Янв-25, 15:15   +/
Напишите тоже самое на сишке)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #118, #137, #154

117. Сообщение от Василий Пупов (?), 03-Янв-25, 15:24   +/
Примени форматтер, не страдай ерундой, потом поговорим
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #127

118. Сообщение от Аноним (67), 03-Янв-25, 15:42    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116

119. Сообщение от Аноним (119), 03-Янв-25, 16:05   +/
В компиляторах тех времен switch был просто набором условных goto на заданные case метки.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #148

120. Сообщение от Java (?), 03-Янв-25, 16:10   +/
ты хотел сказать : "код на java писать на kotlin"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #110

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #115 Ответы: #123, #126

123. Сообщение от Аноним (-), 03-Янв-25, 17:24   +2 +/
> Вы же явно можете достигнуть лучшего, начав с той же позиции, как и они, зная то же, что и они.

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

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121 Ответы: #132

126. Сообщение от Аноньимъ (ok), 03-Янв-25, 21:43   +/
Потому что могу.
Не ищите слишком глубокого смысла. Вам повезло увидеть мой комментарий.
И ещё анонима выше, который что-то в вопросе понимает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121

127. Сообщение от Аноним (65), 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"))


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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117

128. Сообщение от Аноним (128), 03-Янв-25, 22:47   +1 +/
На специализированных языках гольфят очень странные люди. Обычно программист на языке foo, на языке foo же и соревнуются. Такие вот соревнования позволяют глубже изучить инструмент который используешь на работе и бонусом повеселиться.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

130. Сообщение от Аноним (130), 03-Янв-25, 23:02   +1 +/
Красивый код не конпиляют, его ставят на полочку и исполняют нативно)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

131. Сообщение от dcc0 (ok), 03-Янв-25, 23:26   +/
Любой  код болше 100 строк, где  используются имена переменных и функций в виде букв ("математический стиль"), будет запутанным.
Я писал так.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #136

132. Сообщение от Пюре (?), 03-Янв-25, 23:37   +2 +/
А, вот, мне это нравится.
Стандарт на 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 на все предыдущее.
Вы не прошли и шага в их обуви.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123 Ответы: #147

135. Сообщение от Аноним (135), 04-Янв-25, 01:50   +4 +/
Когда-нибудь ты поймёшь, что си и гнутая муть - это семантически тот же 1с, но на английском))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90

136. Сообщение от Аноним (-), 04-Янв-25, 07:21   +/
Я тоже немного страдал этим, задрачивался на математический стиль. У Кормена в псевдокоде такое видел, думал так будет систематичнее и академичнее. Ошибался. Систематичо не означает однобуквенные идентификаторы. Такое трудно читать. Читабельность должна быть на самом первом месте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #131 Ответы: #140

137. Сообщение от 12yoexpert (ok), 04-Янв-25, 07:58   +/
> нет сопоставления с образцом

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116 Ответы: #141, #149

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #136

141. Сообщение от Аноньимъ (ok), 04-Янв-25, 18:21   +/
> от создателей системного лотка, ***ть. господи, выучи терминологию, а потом суйся на
> технические сайты

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #137

142. Сообщение от Аноним (142), 04-Янв-25, 19:19   +/
И все эти задачи требуют… ммм… резать бритвой? Брится ножом? Чаще резаться при бритье? Развей мысль, если она была конечно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #112

143. Сообщение от Аноним (143), 04-Янв-25, 19:56   +/
В прежних мажорных версиях - может быть, сейчас - вряд ли.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

144. Сообщение от Аноним (143), 04-Янв-25, 20:01   +/
А как же ядро Шлангом собирают некоторые дистры?
А на корпоратов что, вруг, бочку катишь? Ты же их любишь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #114

145. Сообщение от Аноним (143), 04-Янв-25, 20:03   +/
Да на Расте даже и специальных соревнований устраивать нет необходимости.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

146. Сообщение от Аноним (143), 04-Янв-25, 20:07   +/
А если printf должна что-либо на консоль вывести на национальном языке, транслит - ваше фсё?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

147. Сообщение от Аноним (147), 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. Гнаться за оптимизациями в ущерб стабильности никто не заставлял

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #132

148. Сообщение от Аноним (147), 05-Янв-25, 07:34   +/
Поверх этой фичи сделан более-менее легитимный Protothreads (библиотеку кооперативной многозадачности на макросах).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119

149. Сообщение от Аноним (149), 05-Янв-25, 11:07   +/
> господи, выучи терминологию, а потом суйся на технические сайты

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #137 Ответы: #150

150. Сообщение от 12yoexpert (ok), 05-Янв-25, 14:06   –1 +/
с тобой всё ясно, иди изучай "лучшие практики" и "пользовательский опыт"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #149

151. Сообщение от dcc0 (ok), 05-Янв-25, 21:28   +/
Мне кажется, я выиграю, не пытаясь запутать:
https://www.linux.org.ru/forum/development/17837644
Ответить | Правка | Наверх | Cообщить модератору

152. Сообщение от dcc0 (ok), 05-Янв-25, 21:54   +/
https://youtu.be/jVtt_ol9S4g?si=Ztz2ki6YpBl2sR-M
Ответить | Правка | Наверх | Cообщить модератору

153. Сообщение от Аноним (153), 06-Янв-25, 01:32    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

154. Сообщение от нононим (?), 06-Янв-25, 16:17   +1 +/
#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;
}

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116

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


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру