LINUX.ORG.RU

Объявлены победители 29 конкурса по написанию запутанного кода на языке Си

 , ,


0

4

Опубликованы исходные тексты работ, победивших в двадцать девятом конкурсе IOCCC (International Obfuscated C Code Contest), участникам которого предлагалось подготовить наиболее запутанный и трудноразбираемый код на языке Си. Участвующие в конкурсе работы, с одной стороны, должны препятствовать анализу кода и пониманию сути решаемой задачи, но, с другой стороны, код должен быть интересен и чем-то примечателен (работы могут быть необычно оформлены или выделять неожиданные стороны языка Си). Размер файла с кодом программы не должен превышать 4993 байтa, а чистый код не должен превышать 2503 байта после обработки утилитой iocccsize.

Среди победителей:

  • Эмулятор компьютера с архитектурой URISC, набор команд в котором ограничивается одной инструкцией SUBLEQ (SUbtract and Branch if Less than or EQual to zero). Размер эмулятора всего 366 байт, при том, что помимо CPU он эмулирует фреймбуфер с разрешением 800x512, используя для вывода графики библиотеку SDL3, и может загрузить образ с Linux и запустить в нём игру doom.
  • Генератор изображения чёрной дыры. Приложение включает простой интерпретатор для подмножества языка Fortran 66, программа для которого задана в форме перфокарт, закодированных через пробелы и табуляции в исходном коде. Закодированная Fortran-программа повторяет первый код для симуляции чёрной дыры, опубликованный Жан-Пьером Люмине в 1978 году. Изображение формируется в виде облака точек и сохраняется в формате PGM. Кроме симуляции чёрной дыры предложены варианты с закодированными «перфокартами» для расчёта множества Мандельброта, вычисления простых чисел и трассировки лучей.
  • Вариант утилиты patch, генерирующий утилиту diff через серию трансформаций собственного кода. На первом этапе скомпилированной утилите patch передаётся собственный исходных код, на основе которого формируется diff-файл. После применения этого diff-а к собственному коду на выходе получается программа, которая в цикле на основе своего кода генерирует набор коммитов с патчами в формате git am. При объединении данных коммитов командой git log --pretty=format:%s > final.c получается код с реализацией утилиты diff.
  • Игра (на скриншоте) в жанре Roguelike, работающая в текстовом терминале и позволяющая проходить автоматически генерируемый лабиринт, собирать артефакты и избегать монстров. Код оформлен в виде изображения подземного жителя и обфусцирован (строки зашифрованы, циклы реализованы через goto, при работе с массивами используется синтаксис «индекс[массив]»).
  • Генератор ASCII-анимации, воссоздающий заставку сериала «Доктор Кто» с симуляцией видеоэффекта «HowlRound» (туннель из уменьшающихся копий изображения), применявшегося в заставке 1963 года.
  • Эмулятор игровой приставки GameBoy, оптимизированный для запуска тетриса, но способный выполнять и другие игры (протестирован запуск ROM-файлов для десятка игр). Вывод формируется в форме псевдографики из Unicode-символов.
  • Симулятор звука морского прибоя на фоне автоматически генерируемой медитативной музыки. На выходе генерируется wav-файл, продолжительностью 5 минут.
  • Реализация самомодифицирующегося игрового автомата Quine Pong, предоставляющего две игры - пинг-понг и перепрыгивающий препятствия динозавр (как в пасхальном яйце из Google Chrome). Программа примечательна тем, что отображение кадров реализовано через цикличную перегенерацию кода программы (запуск приводит к выводу исходного кода для первого кадра, после компиляции этого кода формируется код для следующего кадра и так далее). Игровой процесс реализован через shell-скрипт, выполняющий цикличную перекомпиляцию кода.
  • Компилятор и генератор кода для языка Zoltraak. Язык включает только одно слово «zoltraak», которое комбинируется в разной форме с пробелами и пустыми строками. На вход подаётся любой текстовый файл, который преобразуется в программу на языке Си, состоящую из заголовка и последовательности на языке Zoltraak. Компиляция и выполнение сгенерированной Си-программы приводит к выводу содержимого исходного текстового файла.

Видео на youtube, длительность: 2:57:20.

>>> Источник: OpenNET

★★★★★

Проверено: maxcom ()
Последнее исправление: dataman (всего исправлений: 3)
Ответ на: комментарий от Stanson

Это ж луа, да ещё и линейно абсолютно - чего там писать-то?

Это просто пример для тебя наглядный. Ту работу, что я сделаю за 30 секунд, ты за это время не сделаешь. Тебе нужно вчитаться в код. Перестроить сознание, понять что вообще происходит итд итп.

Хотя я, плотно работающий с этим, то же самое делаю и в чужом коде на луа. Потому что привык к особенностям языка и проекта.

Можешь интереса ради просто засечь насколько больше времени уйдет у тебя.

А если взять более сложные задачи с ООП и манипуляциями не самыми очевидными, ты просто их не сделаешь даже за 10 раз большее время скорее всего. Потому что не знаешь особенностей именно этой модификации языка. Не знаешь нюансов проекта. Не поймешь почему именно такое решение, а не другое. А когда сделаешь, полезут проблемы, которые я решаю автоматически.

И так при переходе от языка к языку всегда. И от области к области.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Населения больше раза в два, не в 48 раз. И машин больше всего раза в 4, а не в 48.

И раз в 6 больше катаются американцы. Вот тебе и 48 раз.

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

Какая нафиг работа? Просто автомобиль перестал быть роскошью и девайсом для демонстрации понтов, только и всего. Теперь личный автомобиль это просто жоповозка, ещё один бытовой прибор, потому и водить стали спокойнее.

Постройка платников с невменяемой стоимостью проезда - это не планомерная работа. При действительно планомерной работе в области личного транспорта всё выглядело бы совсем иначе. И вообще - где обещанные летающие машины?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

Ты просто в этой области не варишься и для тебя все это плавно произошло, ты это воспринимаешь как должное.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Это просто пример для тебя наглядный. Ту работу, что я сделаю за 30 секунд, ты за это время не сделаешь. Тебе нужно вчитаться в код. Перестроить сознание, понять что вообще происходит итд итп.

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

И да, насчёт «перестройки сознания» - это не ко мне. Меня эти ваши вещества, эзотерики с медитациями и пр. воообще что-то не прикалывают. Скучно.

Хотя я, плотно работающий с этим, то же самое делаю и в чужом коде на луа.

Бгг. Напиши плагинчик к prosody. В XMPP нереализованных XEP хоть жопом жуй. Ненуачо, тоже луа ведь. :)

Можешь интереса ради просто засечь насколько больше времени уйдет у тебя.

А мне-то нафига это нужно? Ковыряться в коде какой-то совершенно безынтересной игрульки - зачем? Чтобы что?

А если взять более сложные задачи с ООП и манипуляциями не самыми очевидными, ты просто их не сделаешь даже за 10 раз большее время

Да-да, конечно-конечно.

Потому что не знаешь особенностей именно этой модификации языка.

Мне плевать на язык. Вообще плевать.

Не знаешь нюансов проекта. Не поймешь почему именно такое решение, а не другое.

Да, иногда такой бред встречается, что понять нахрена это вообще написано просто невозможно.

Но ты так и не объяснил - какая нахер разница для программиста на каком языке это нечто написано?

Stanson ★★★★★
()
Ответ на: комментарий от LightDiver

то теперь я подхожу к переходу и машины резко останавливаются и ждут пока я пройду.

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

Ты просто в этой области не варишься и для тебя все это плавно произошло, ты это воспринимаешь как должное.

А что изменилось-то? Дороги как были говном, так и остались, и будут говном пока дорожников не начнут за каждый метр колеи, за каждую трещину и выбоину появившуюся на дороге в течении 50 лет после окончания работ штрафовать и сажать. Развязки и организация движения в городах вообще в ад превратились. Ну и т.д. Так что если изменения и есть, то отнюдь не в лучшую сторону.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ну так и при чём же тут язык на котором это написано?

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

Потому что это надстройки над общими концепциями программирования.

Бгг. Напиши плагинчик к prosody. В XMPP нереализованных XEP хоть жопом жуй. Ненуачо, тоже луа ведь. :)

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

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

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от Stanson

Дороги как были говном, так и остались

А эти дороги, которые говно - они с нами сейчас в одной комнате? Я вот могу оценивать по Владивостоку - отличные дороги при не самом простом ландшафте.

Какую нахрен каждую трещину. Да что ж ты иногда несешь то? Ты понимаешь что такое перепад температур 40 градусов за сутки и 98 градусов в год? Физику в школе то учил?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Я дал самый простой пример переходя с языка на язык. Даже без дополнительных различий это по началу вызовет сложности. Просто с непривычки. А еще есть нюансы языков. Например таблицы и метатаблицы луа. Врядли ты с ними работал и знаешь их нюансы.

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

Если увижу пример и чужой код - я смогу его с ходу дополнить, да луа.

Примеров и чужого кода нет. Надо с нуля писать. С кучей сетевой фигни и т.п.

И вообще странный подход какой-то. Чтобы что-то написать нужен пример и чужой код? Нафига тогда вообще писать если пример/чужой код уже написан?

Это что, какой-то подход специальный у «программистов на <название_язычка>»? Типа взять некую уже написанную кем-то программу решающую какую-то задачу и изменять её пока она не будет решать какую-то другую задачу? :) Жёваный крот, как будто нам вайб-«программистов» мало. Это типа как современная генетика, что-ли? Методом тыка изменять ДНК существующего организма пока не получится то, что требуется? :) Да уж. Воистину айтишечка катится в говно.

А вот если мне нужно будет писать на хаскеле, например, тут то произойдет и затык. Во-первых. Я не программист.

С этого и надо было начинать.

Во-вторых, я никогда не работал на языках такого типа в принципе. Это совсем другой подход к программированию.

Какого «такого типа»? Функциональщину вообще можно на любом языке писать. И если ты хоть что-нибудь на чём-нибудь когда-либо писал (ну или не ты, а нейросеточка за тебя), то 100% ты использовал в том числе и этот «совсем другой» подход. На хаскеле или лиспе просто намного удобнее и приятнее писать функциональщину, чем на сишечке, питоне или том же луа.

Stanson ★★★★★
()
Ответ на: комментарий от LightDiver

Какую нахрен каждую трещину. Да что ж ты иногда несешь то? Ты понимаешь что такое перепад температур 40 градусов за сутки и 98 градусов в год? Физику в школе то учил?

У меня тут недалеко в глуши есть кусок дороги сделанный ещё в советское время. На склоне холма, между прочим. До сих пор ни одной трещины или выбоины и по весне с неё не слезает этот странный асфальт красноватого цвета. Никакой колеи нет вообще. Её никто никогда не чинил. При всех тех же самых перепадах.

Расскажи мне про физику скорее. Может просто подушку и покрытие надо делать не из максимально дешёвого говна, а из нормальных материалов, да и всё? Про физику тонюсенького слоя отходов нефтепереаботки и самого говённого песка я в курсе. Ты мне про физику нормального полимера и гранитной крошки расскажи. Мне такая физика намного больше нравится.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Тем не менее, ты вот работал на луа, но простейшего примера добавления бассейна от тебя так и не было. А прошло уже полтора часа. Это буквально 5-10 строк кода. Пиштся за 30 секунд.

А метатаблицы в луа это не просто возможность добавлять свои методы к таблицам, но еще и реализация ООП, например.

Луа язык простой, но это отличный пример того, что нужно знать область где он применяется. Потому что кроме стандартных 20 концепций языка надо еще знать сам проект, его апи, версии, нюансы. Ты их не знаешь. Нужно знать именно модификацию языки - и ее ты не знаешь.

Не существует никаких «программистов на таком то языке». Есть программисты с опытом работы на таком то языке. Это очень большая разница. А есть программисты без опыта на таком то языке. И это бывает проблемой, потому что этот опыт надо сначала получить.

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

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Скажи, а вот можно два независимых интерпретатора Lua запустить в двух разных потоках одного процесса? Если они взаимодействовать никак не будут.

shdown ★★
()
Ответ на: комментарий от Stanson

Если ты где то в подмосковье, там климат умеренный и нет таких перепадов температур. Максимум 30-40 годовая (меньше, чем у нас суточная) и 5-15 суточная.

Но даже у нас дороги живут годами как новые. С дорогами у нас все отлично везде, где я был. Со своими нюансами конечно. А бы я много где. Я даже хз откуда берется этот бред про плохие дороги год от года. Такое ощущение, что просто мем передается по привычке.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

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

И нахрена мне это может быть нужно? Мне неинтересно добавлять бассейны в какую-то игрульку на луа. Вообще никак неинтересно.

А метатаблицы в луа это не просто возможность добавлять свои методы к таблицам, но еще и реализация ООП, например.

Добавление функций к неким данным для работы с этими данными это и есть ООП вообще-то.

Потому что сейчас иногда достаточно месяца, чтобы твои знания уже устарели, как и твой опыт.

Мои знания не устаревают. Потому что это действительно знания. Мне совершенно наплевать на все эти модные «инновации» ради «инноваций» которые устареют через месяц, потому что это никакие не инновации, а всё та же самая херня только в профиль.

И надо изучать новое

Вот только реально нового-то уже давно ничего не появляется.

менять подходы.

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

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

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от shdown

Я не пробовал, но чисто теоретически при полной изоляции состояний - да.

Стандартный менеджер памяти Lua использует realloc, и он потокобезопасен на большинстве платформ..вроде как.

Только собрать надо с флагом реентерабельности. Я год назад как раз смотрел все это, но так руки и не дошли.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Если ты где то в подмосковье, там климат умеренный и нет таких перепадов температур.

Ты вообще в курсе, что суточный и годовой градиенты континентального климата больше чем у климата на побережье океана?

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

Я вот что-то не помню ни одного дня чтобы МКАД не ремонтировался где-то.

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Добавление функций к неким данным это и есть ООП

Это лишь один из аспектов ООП. Кроме инкапсуляции есть еще н аследование, есть полиморфизм.

Мне совершенно наплевать на все эти модные «инновации» ради «инноваций» которые устареют через месяц

…потому что ты ничего не пишешь на практике сейчас. Твои знания - это сферические знания в вакууме без реального выхода. Они абстрактны. Они как бы есть, а как бы их нет. Потому что нет их результата. А на практике, чтобы применить твои знания, тебе нужно уже доучиваться. Как пользоваться новыми инструментами, как работать в новых проектах.

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

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

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ha-ha, no.

https://github.com/shdown/luastatus/blob/master/libhackyfix/README.txt

И это указано только то, что Lua использует, если компилируется на POSIX-совместимой платформе.

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от Stanson

Ты вообще в курсе, что суточный и годовой градиенты континентального климата больше чем у климата на побережье океана?

Да, я в курсе. Сейчас я как раз в центре континента максимально далеко от океанов. У нас резкоконтинентальный климат. После Владивостока дорогие так себе - там дороги были просто идеальны. Но для местного климата я смотрю срок жизни дорог и удивляюсь технологиями. Идет год за годом и масимум что появляется - может пара тех самых трещин и все. Как новые.

LightDiver ★★★★★
()
Ответ на: комментарий от shdown

Ну ты же сам видишь решение проблем из своей же ссылки - все решаемо. Это вообще очень гибкий и изменяемый язык. Просто у тебя задача весьма нестандартная.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ну ты же сам видишь решение проблем из своей же ссылки - все решаемо

Ага, подменять функции стандартной библиотеки (не Lua, а libc — прим.). Завязываясь при этом на GNU C. Отличный кросс-платформенный язык. А под виндой, интересно, что делать?

Просто у тебя задача весьма нестандартная.

Ой, эту «нестандартную» задачу «решают» огромное количество проектов (напр. mpv), просто большинство даже не замечает проблем до поры-до времени. Всё держится на честном слове.

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Это лишь один из аспектов ООП. Кроме инкапсуляции есть еще н аследование, есть полиморфизм.

CPU не в курсе ни про какие инкапсуляции, наследования и полиморфизмы. У него есть структурка с данными в которой есть ещё и vtable с адресами функций. Всё. Вся суть ООП от начала и до конца. Вне зависимости от того, сколько ты придумаешь красивых слов для описания тех или иных способов обращения с этим конструктом, ничего не изменится - всё будет своидиться лишь к элементарным манипуляциям с этой структуркой и её vtable.

…потому что ты ничего не пишешь на практике сейчас.

Вот буквально только что добавил в нашу софтину многоугловое dE по методике AUDI2000 для красок с эффектными пигментами. Для окучивания индустрии производства автомобильных красок. Раздумываю на предмет добавления дополнительных параметров присущих эффектным пигментам в расчёт рецептур для лакокраски. Пока оно у меня там в голове неспешно переваривается - треплюсь с тобой на ЛОРе.

Твои знания - это сферические знания в вакууме без реального выхода.

Ты на цены на colorimetry.ru обратил внимание? Сложно придумать ещё более реальный выход. Оно людям настолько нужно, что люди готовы платить немаленькие деньги за мои «сферические знания».

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

Бгг. Набросать мусора повсюду намного проще чем сделать что-то полезное.

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

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от shdown

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

А так, я в чем то с ним даже согласен - база единая есть. Остальное наносное. Но именно из этого наносного и строится практика. И иногда это все приходится изучать дольше, чем базу.

LightDiver ★★★★★
()
Ответ на: комментарий от Stanson

Инстаграм, ютуб, дропбокс, фаерфокс, блендер, сервисы амазон, Cloudflare, VS Code(да простит меня мироздание за этот пример, но он действительно захватил буквально все и стал стандартом).

Кажется больше одного?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Я вот могу оценивать по Владивостоку - отличные дороги при не самом простом ландшафте.

После Владивостока дорогие так себе - там дороги были просто идеальны.

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

kott ★★★★★
()
Последнее исправление: kott (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Языки и проекты все время развиваются, появляются новые нюансы и их тоже нужно своевременно узнавать.

Вот никогда не понимал этого маниакального желания непременно поиспользовать новый нюанс только что появившийся в язычке. Зачем? Есть базовый набор древних отлаженных фич языка. Если ты не разработчик этого языка - зачем тебе надо срочно использовать только что появившиеся в языке фичи? Базовых фич языка более чем достаточно для решения задачи, иначе этот язык не был бы выбран изначально. Ну и используй их, игнорируй новые новшества. Как поломают совместимость, ну типа как в питоне 2->3, тогда и понадобится эти новые фичи внедрять. А может язычок не как питон и никто ничего не поломает, например - тогда можно будет спокойно проектом заниматься, а не постоянно новые фичи изучать.

Stanson ★★★★★
()
Ответ на: комментарий от LightDiver

Из полезного в списке только блендер, но он же на цепепе и питоне.

Всё остальное - аццкая блоатварь и зонды, место которым в аду.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от kott

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

Да практически везде наверное. Владивосток - по сути присосался к федеральным магистралям, цивилизации. Конечная точка правда, но это не важно. Очень мягкий климат, если не считать влияние на людей. Перепады температур никакие. Южные широты на уровне сочи.

В любом месте с резко-континентальным климатом или просто севернее дороги будут гораздо хуже в силу физики.

Тут, где я сейчас, бывали температуры до -54, когда материалы просто сами по себе начинают лопаться, а особенно от приложения к ним физической силы. Летом до +44, когда все начинает плавиться. После Владивостока дороги мелкие по ширине очень и кажутся сначала ужасными, пока не изучишь нюансы географии и историю региона в целом.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

На какой из спутников Марса тебя занесло? Я понимаю, что всё относительно, но про дороги заливай кому-нибудь другому. В крае регулярно гибнут люди из-за состояния дорог и мостов. В жирные годы построили пару нормальных кусков (40 км) под Артёмом и на уссурийской трассе, на остальные сотни км денежек нема. В самом Владе я бы посмотрел, как ты штурмуешь сопки зимой, а во время ливней вытягиваешь тачку из канавы/промоины.

kott ★★★★★
()
Ответ на: комментарий от Stanson

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

Пока ты будешь из базовых кирпичиков строить одну стену, неверотяно прочную и которая простоит 100 лет, рядом построят целый район панелек. Потому что разделение труда и стандартизация. Там где ты вручную что то пилишь, запилили уже готовый шаблонный проект, которым все пользуются. Его развивают. Но он требует знаний нюансов.

А ООП, это не просто программирование, это еще и подход. В первую очередь к оформлению кода. Никого не интересует уровень процессора, все работают с абстракциями. И эта работа должна быть удобной.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

А твои старые проектыы устаревают и просто не успевают за временем.

Я не занимаюсь «модными» проектами которые сегодня всем нужны, а завтра это ненужное говно мамонта.

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

Расскажи мне, как это применимо, например, к софту для моделирования физических законов. Чтобы не тащить тебя в малоизвестную область колориметрии, возьмём, к примеру, такую софтину как ngspice для моделирования работы электронных схем. Откуда там возьмётся «район панелек»? И как оно может устареть?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ты закуклился в одной узкоспециализированной области. Стал считать, что ничего кроме этого мелкого пузыря не существует. Стал обесценивать все, что в него не вписывается.

Действительно, зачем знать что то, кроме базы, если все что надо для этого пузыря, ты уже знаешь? Какую ценность имеет что то вне пузыря, если оно не существует?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Ты закуклился в одной узкоспециализированной области.

В одной? :)

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

Во-первых, это не мелкий пузырь. Это крупная область. Во-вторых к ней приклеены сотни и тысячи других крупных областей. Вся эта гроздь непосредственно связана с производством того, что необходимо в том числе и тебе для существования. Буквально.

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

Нет спору, всяческая развлекуха несомненно нужна человечеству, но вот вообще ни разу не в таких масштабах и с такими затратами ресурсов.

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

Я сам работал на ТВ и занимался игрушкописательством. В итоге - не смотрю ТВ и не играю в игрушки.

Stanson ★★★★★
()
Ответ на: комментарий от dimgel

Да, идите к нам, на физтех! (c)

К Вам, это куда, простите? В МГУ? :)

FromAstana
()
Ответ на: комментарий от dimgel

Большое спасибо за предложение! Я-гражданин Казахстана, мне 54 года и у меня пока нет загранпаспорта. :)

FromAstana
()
Ответ на: комментарий от Stanson

Водителя - да. «водителя Рено Логан» - нет. К сожалению государство не разделяет никак первых и вторых.

Разделяет. Категориями. Но если на предприятии есть Рено Логан, но директор хочет непременно водителя с категориями B, C, D, E, то он просто будет переплачивать за лишние умения.

Кстати, на Западе есть термин overqualified. Это когда на Рено Логан водителя с правами на управление любым транспортным средством от мотоцикла до вертолёта просто не возьмут. Потому что если человек согласен на пониженную зарплату, то тут что-то не так.

monk ★★★★★
()
Ответ на: комментарий от Stanson

С какого это перепугу?

С того, что привык мыслить указателями и циклами for. А в целевом языке вместо

for (p = first(d), p!=last(d), p++)
{
  process_data(*p, &a, &b);
}

надо писать что-то вроде

map(d, func(i) { a, b = process_data(i, a, b); });

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

А зачем? В лиспе, например, даже если вытащить адрес каких-то данных, смысла он не имеет, так как актуален только до очередного цикла сборщика мусора.

Кстати, ещё интересный момент с алгоритмами для сишников и лисперов: под понятием «целое число» лиспер понимает целое число в математическом смысле, а сишник int (2 или 4 байта). Или сишник не делает разницы между рациональными числами и их приближением по IEEE754.

Вообще алгоритм мыслится в тех категориях, которые доступны в языке. Если это ассемблер, то будут значения регистров и памяти, если Си, то указатели и байты, если Haskell, то типы, отображения и ленивые списки. Даже 1С даёт не те базовые структуры, что Visual Basic: на VB почти всё в массивах, в 1С почти всё в ТаблицахЗначений (есть там такой базовый тип примерно соответствующий таблице SQL с индексами и базовыми операциями поиска, сортировки и свёртки).

Если ты понимаешь что в итоге всё это сводится к банальным командам CPU и работе с памятью, то разница не такая уж и большая.

Большая. Алгоритмы мы пишем не в терминах регистров ЦПУ, а в терминах абстрактных типов данных. В результате тот же foldMap из Haskell позволяет делать свёртку на любом множестве, а не только на диапазоне ячеек в памяти компьютера.

Ну и в чём проблема?

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

Не надо писать «интерактивные карты» для браузера. Вообще никакие. Ни на JS, ни на CSS, ни на чём вообще.

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

monk ★★★★★
()
Ответ на: комментарий от Stanson

кодировать рефал (марковскую машину) несколько иное чем фонНеймана бибику

ежели ты хвастаешься что у тя такое высокое оку что тебе индиферентно то что ты тут делаешь?!

qulinxao3 ★☆
()
Ответ на: комментарий от LightDiver

всё ж дело не только в языке если проблемные области разные то и меньтальные dsl могут отличать и как следствие продуцируемые программы даже в одном синтаксисе могут(не обязяны) быть разными

скромно хвастаясь палиндромами Столярова-Школьника

qulinxao3 ★☆
()
Ответ на: комментарий от LightDiver

технологии всяко не стоят на месте - если обобщить подход Саватеева(который один из матанов поспособствовавших снижению «глупости» в налогах) то да «где индивидуальные жополётки?»

qulinxao3 ★☆
()
Ответ на: комментарий от LightDiver

по последнему обцацу - Олимпиада/Профессия Азимова

и да устаревают чаще факты(ака нюансы) матема увечна!

qulinxao3 ★☆
()
Ответ на: комментарий от Stanson

Я понял так. Есть люди, которые умеют водить автомобиль и могут самостоятельно научиться водить новую марку, если потребуется: «водители». И есть люди, которые выучили одну конкретную марку автомобиля и другие не знают: «водители Рено Логан». Что-то не так?

Если у работодателя Рено Логан и другие не планируются, для него дешевле взять водителя Рено Логан. Потому что если человек умеет учиться, то за это он хочет выше зарплату. И там, где способность учиться важна, ему эту зарплату заплатят.

monk ★★★★★
()
Ответ на: комментарий от monk

А зачем?

Затем, что пользоваться вещью не представляя как она на самом деле работает - это в самом прямом смысле «магическое мышление».

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

О как. Тогда у меня плохие новости. Имено по такому алгоритму и происходит тотальная жопа вида «если у меня в руке молоток, то всё вокруг кажется гвоздём». Которую мы нынче в IT и наблюдаем.

Алгоритмы мы пишем не в терминах регистров ЦПУ, а в терминах абстрактных типов данных.

И то и другое - идиотизм.

В результате тот же foldMap из Haskell позволяет делать свёртку на любом множестве, а не только на диапазоне ячеек в памяти компьютера.

Вот только ничего кроме ячеек памяти компьютера не существует, поэтому foldMap ничего кроме «свёртки» на ячейках памяти компьютера делать физически не способен, хоть обфантазируйся.

У т.н. функциональных языков есть только одно значимое отличие от языков процедурных - генерация нового кода в процессе выполнения программы. Правда, почему-то, кроме лиспа, да и то не всякого, во всех существующих функциональных языквх эта единственная заслуживающая внимания фича реализована аццкими костылями в compile time. В том числе и в хаскеле.

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

Язык можно выбрать всегда. То, что наиболее очевидный выбор может совпадать с выбором который был сделан ранее вовсе не доказывает отсутствие возможности выбора.

Если к 1С Склад надо будет сделать виртуальную 3D модель склада фотореалистично показывающую местонахождение и вид выбранного товара на складе, то писать это на языке 1С будет полнейшим идиотизмом.

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

Для интерактивной карты вообще не нужен никакой недоверенный код. Нужны только и исключительно данные карты. Нативные софтинки для OSM, например, никакого кода ниоткуда не скачивают и недоверенный код не выполняют. Просто интерактивно показывают карту.

Stanson ★★★★★
()
Ответ на: комментарий от qulinxao3

Никаких машин кроме фон-неймановских и гарвардских не производится.

Вот когда можно будет на алике или в днсе каком купить марковскую машину - тогда и приходи.

Stanson ★★★★★
()
Ответ на: комментарий от monk

Есть люди, которые умеют водить автомобиль и могут самостоятельно научиться водить новую марку, если потребуется:

Вообще нет. Есть люди которые научились водить. Им не надо «учиться водить новую марку» вообще. Пообвыкнуться слегка - возможно, но не учиться.

Жёваный крот, ну если ты уже научился есть вилкой, то тебе вообще не надо «самостоятельно учиться есть вилкой котлету из свинины».

Stanson ★★★★★
()
Ответ на: комментарий от monk

В смысле, не согласен? Просто мысли очень созвучные…

Я не имею отношения к всякому такому евангелизму чего бы то ни было, вне зависимости от того согласен я с чем-то там или нет. И «созвучного» там если и есть, то от силы несколько пунктов.

Stanson ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.