Обновить
14

Химик и программист.

32
Подписчики
Отправить сообщение
Небось пятерошником по физике были?
Физ-хим исследованиями в одном из ведущих НИИ АН СССР/РАН занимался. Сейчас из эксперимента в теорию ушел.
Вы меня не поняли. Человека может интересовать информация в чистом виде. Нпр., комп повадился выдавать синий экран. Смотрю в гугле, если нашел ответ, который помог, то больше никуда не пишу и забыл, если не нашел готовый ответ — пишу на какой-то форум, если и там никто не помог, а удивились — то напишу изготовителям железа и софта, и если они не помогут, то м.б. напишу здесь заметку о странном поведении компа и удивленных коментах о таком поведении, в том числе и изготовителей. Сужу по себе: занимаюсь научными исследованиями — т.о. по работе должен публиковать статьи о результатах работ в научной периодике (описание новых алгоритмов — это основной продукт), и в разное время работал в издательствах научно-технических изданий. Т.о. мне хватает публикаций и вопрос самореализации и причастности не стоит — нпр., быть причастным к ACM или к РАН для многих значимей.
Четвертый путь — «скинуть с повозки немного мешков».
Если чисто по физике, то это ничего не даст. На картинке векторы сил останутся прежними — результат ноль, независимо от веса повозки.
Во-первых, это поднимает их рейтинг в глазах специалистов.

Во-вторых, человек может совершенствовать свои писательские способности.

Да, и поэтому. Но проще предположить, что человеку интересно поделиться своими мыслями и наблюдениями, обсудить, получить подтверждения и возражения. Такого простого мотива в статье не увидел или проглядел?
Спасибо за очень актуальную статью!
Позвольте вопрос/предложение: с носителем языка содержание обсуждалось и если обсуждалось, то с кем? Поясню на примере русского языка. Если я здесь напишу «у моего компа беспроводная клава» — меня поймут и, надеюсь, «фи» не скажут. Но если в документации буду использовать подобные резвости — многим не понравится. Если англичанин с неродным русским будет обсуждать эту фразу со школьником из Кукуева, школьник может сказать «сойдет». Поэтому ИМХО об английском лучше спрашивать у серьезных преподов английского, носителей английского. У меня было несколько случаев, когда в англовики получал подобные консультации от профессоров известных универов — там много таких участников, и они с удовольствием дадут совет. Языки постоянно изменяются — поэтому про сложные случаи бывает не лишним переспросить.
См.:
предназначенный для посвящённых, сведущих в мистических, тайных учениях
ИМХО слово очень подходит в расширенном понимании.
Ok. Спасибо за ответ. Хорошая задача и уверен, что справитесь. Успехов!
Извините: перепутал похожие темы.
Написал про PL/0 там, но м.б. это стоило написать здесь.
К эзотерическим языкам примыкают некоторые образовательные языки (educational programming language). Так Н. Вирт в книге Алгоритмы + структуры данных = программы. М.: Мир, 1985 предложил минимизированный язык PL/0 для иллюстрации принципов построения трансляторов. Не смотря на то, что его описание на EBNF очень компактное, этот язык выглядит «объемнее», чем большинство эзотерических языков. Однако ассемблер процессора PL/0 (гипотетическая машина) содержит всего семь инструкций, и ИМХО может рассматриваться как эзотерический язык программирования.
В сетке высказывают идеи обфускации через esolang, поэтому спросил — вдруг где-то решили воплотить такие идеи :)
Круто! +1
А можно полюбопытствовать: это хобби, работа, учебное задание? И какие цели?
Спасибо. Очень интересно.
Но вот здесь разрешите поспорить с великим автором:
Знаете, вы не найдете книг, которые описывают, как восстановиться после неудачных предположений.

См. Лакатос И. Доказательства и опровержения. Как доказываются теоремы. Пер. И. Н. Веселовского.— М.: Наука, 1967.
См. вики:
An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, as software art, as a hacking interface to another language (particularly functional programming or procedural programming languages), or as a joke. The use of esoteric distinguishes these languages from programming languages that working developers use to write software. Usually, an esolang's creators do not intend the language to be used for mainstream programming, although some esoteric features, such as visuospatial syntax,[1] have inspired practical applications in the arts. Such languages are often popular among hackers and hobbyists.

The cultural context of esolangs has been studied by people like Geoff Cox, who writes that esolangs «shift attention from command and control toward cultural expression and refusal»,[16] seeing esolangs as similar to code art and code poetry, such as Mez Breeze's mezangelle. Daniel Temkin describes brainfuck as «refusing to ease the boundary between human expression and assembly code and thereby taking us on a ludicrous journey of logic,»[17] exposing the inherent conflict between human thinking and computer logic. He connects programming within an esolang to performing an event score such as those of the Fluxus movement, where playing out the rules of the logic in code makes the point of view of the language clear.[18]

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

Thue — Эзотерический язык программирования, разработаный Джоном Колагойя в начале 2000 года. Это мета-язык, который демонстрирует нулевой тип в Иерархии Хомского, то есть неограниченную грамматику.

Будучи эзотерическим языком программирования, Unlambda предназначена для демонстрации очень чистого функционального языка, а не для практического использования.

Языки для других целей, но часто приводимые в списках эзотерических
P′′
QuakeC
P′′ is a primitive computer programming language created by Corrado Böhm[1][2] in 1964 to describe a family of Turing machines.
QuakeC — интерпретируемый язык программирования, разработанный в 1996 году Джоном Кармаком для написания части компьютерной игры Quake.
Верно. Улучшение готово: Эллочка+
Можно добавить язык «Эллочка», описанный в статье М. Трофимов. Язык программирования «Эллочка» // Монитор # 7-8,1994, с. 56. В этом языке, названном в честь известной героини Ильфа и Петрова, автор предложил минимизацию избыточности языков, сведя все операторы к виду:

<метка><условие><переменная><выражение><метка перехода>

Так,

110 x<y a 10*c 112

будет эквивалентно паскалевскому:
110: if x<y then begin a:=10*c; goto 112 end;

Для Булевых выражений предложено использовать только and и not. Для I/O есть специальная переменная con. Так:

218 true con 'hello' 219

эквивалентно:
write ('hello')

И

219 true x con 220

эквивалентно:
read (x)

Далее автор отмечает:
В итоге получим сверхэкономный язык, основанный на сверхлаконичном словаре — этакий словарь людоедки Эллочки для программистов. Вся беда только в том, что, как известно, скупой платит дважды [...] — многие программы на таком неумеренно лаконичном языке окажутся многословнее своих неэкономных собратьев. И действительно, Turbo Pascal фрагмент:
while (a<>0) or (b<>0) do
 begin
   dec (a); dec (b);
 end;

будет содержать гораздо меньше слов (символов языка), чем аналогичный на языке «Эллочка»

1 not (not (a=0) and not (b=0)) a a 4
2 true a a-1 3
3 true b b-1 1
4


Ok. Спасибо. Убедился, что ничего сверх того, что описано в вики и приводимых там источниках. Там же много методов борьбы. Конечно, бороться с не самыми бестолковыми специалистами не просто, но ИМХО имея исходный код это делать гораздо проще, чем не имея его. Но прежде, чем бороться, часто есть выбор языка исходного кода — ведь как говорят «ничто не ново под луной», и, как правило, программный продукт не уникален, почти всегда можно найти продукты с похожим функционалом, написанные на разных языках. При прочих равных я предпочитаю менее гибкие, но более защищенные языки типа ОО Паскаля. Это ИМХО, которое ни в коей мере не навязываю, чтобы избежать традиционного холивара «какой язык лучше» :)
Не суть важно, преднамеренные или нет
Исходя из общих соображений думаю, что придумать труднообнаружимый баг очень не просто. Слепой случай может выдать такой баг, который и сотня лучших мудрецов хакеров за сотню лет не выдумает.
Если вы имеете в виду большой самостоятельный кусок кода, который делает что-то нехорошее, то конечно, это дело рискованное. Тем более я не говорю про встроенный кейлоггер, который собирает информацию да ещё куда-то потом отправляет.
Ok — речь про небольшой кусок кода.
Но вставить где-нибудь в коде «сознательную ошибку», которая позволяет сделать эксплойт, например, повышаюший привилегии, вполне реально, согласитесь?
Согласен, что в общей теории звучит убедительно. Но при этом затрудняюсь представить конкретный пример такой ошибки, может потому, что никогда не пытался сделать сознательную ошибку для эксплойта. Можете привести такой пример? Ведь это, как сказали выше, всего «небольшой кусок кода».
Вполне возможно, что в программе дыры и баги, но кейлоггер, нпр., кажется слишком большой наглостью в исходном коде. М.б. я ошибаюсь и такие случаи известны?
Вы часто так делаете?
Да: comp в DOS-окне.
Это ещё при условии, что опции компиляции были одинаковые.
Файл проекта известных мне компиляторов задает опции. Но очень вероятно, что не «одинаковая версия компилятора с точностью до билда». Кто-то выложит исх. код с трояном в надежде, что у всех не та версия? — Очень сомневаюсь.
Набившая уже оскомину 0-day уязвимость в OpenSSL существовала много-много лет.
Тут, похоже, особый случай. Это баг или умысел?
Но основная их масса — как раз те самые «серые» куски, куда внимательно не заглядывает никто.
И там (в этих кусках) кто-то рискнет разместить троян, и никто не обнаружит?

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность