Настоящий Программист может писать программы на Фортране на любом языке.
от настоящих программистов не пользуйтесь Pascal
Ваша задача - написать программу на выбранном вами языке программирования, но вы можете использовать только другой язык. То есть, отбросьте все соглашения о кодировании из одного языка и замените их соглашениями о кодировании из другого языка. Чем больше, тем лучше. Сделайте так, чтобы ваша программа выглядела так, как будто она написана на другом языке.
Например, поклонник Python, который ненавидит Java, может написать следующую программу Python на Java:
void my_function() {
int i = 9 ;
while(i>0) {
System.out.println("Hello!") ;
i = i - 1 ;}}
Энтузиаст Паскаля, вынужденный использовать C, мог написать это:
#define begin {
#define end }
#define then
#define writeln(str) puts(str)
if (i == 10) then
begin
writeln("I hate C");
end
Вы должны написать полную программу. Программа не должна делать ничего полезного.
Удачи. Это конкурс популярности, поэтому выигрывает код с наибольшим количеством голосов!
источник
.litcoffee
. Это может помочь.Ответы:
C в C ++
источник
char*
вместоstd::string
).char *argv[]
!сборка x86 в GNU C
Нет, я не просто использовал это
asm
ключевое слово, так как вопрос был задан для настоящих программистов ... это должно хорошо работать на ARM.(Просто чтобы доказать это, я вообще не «писал» сборку - это вывод, созданный
GCCClang (503.0.38) для прокомментированного кода сверху, слепо переведенного в макросы.)Это работает только в 32-битном режиме. Это нормально, так как настоящие программисты все равно кодируют до размера слова.
Просто посмотрите на все эти броски. Слепки среднее Я реальнее программист , чем компилятор, не так ли?
источник
call
, в частности.for pass=1:3...next
вокруг него. Выполнение этого в бейсике интерпретатор собрал его.Английский в C
Есть идеи по устранению
;
?источник
the
дважды?#define . ;
Brainfuck в JavaScript
Javascript - это сложный язык! Давайте использовать Brainfuck, более понятный язык: о)
Я думаю, что я написал интерпретатор Brainfuck в JavaScript.
Приведенный выше пример просто выводит
Hello World!
и игнорирует ввод (без,
символа).Но это работает и с входами! Например, попробуйте
,+>,+>,+>,+<<<.>.>.>.
ввестиgolf
текст в диалоговом окне. Он выведет следующие символы в таблицу ASCII:hpmg
РЕДАКТИРОВАТЬ : Краткое объяснение для людей, которые не знают о бреде.
Представьте себе бесконечный массив целых чисел,
a
инициализированных нулями везде, указатель на один элемент этого массиваi
и пользовательский вводu
.Brainfuck действительно легко выучить, но трудно написать:
+
приращения к текущему значению:a[i]++
-
уменьшает это:a[i]--
>
делает для точек указателя следующий элемент:i++
<
предыдущий :i--
[
и]
определить цикл, который прерывается, когда текущее значение равно нулю:while (a[i]) { ... }
.
напечатать текущий элемент:String.fromCharCode(a[i])
,
устанавливает текущий элемент с пользовательским вводом:u.charCodeAt(...)
источник
replace
операторов не влияют на программу?--i
быстрее чемi--
? Кажется ложным с годами: jsperf.com/decrementgolf .Я думаю, блестящий Леннарт Огюсссон уже дважды выиграл это.
Во-первых, вот пример его реализации BASIC «хак выходного дня» в качестве Haskell Monadic DSL, начиная с 2009 года:
Работает, перегружая тип номера. Номера строк на самом деле являются функциями, которые принимают аргументы. Остальная часть строки - аргументы функции. Функция возвращает представление абстрактного синтаксического дерева для интерпретатора BASIC, чтобы продолжить работу.
Я также рекомендую вам проверить участие Огюсссона в 2006 году в Международном конкурсе обфусцированных Си, в котором ему удалось втиснуться в 4k:
Они могут использовать один и тот же файл, потому что байт-код находится внутри комментариев C.
Прошло несколько лет с тех пор, как я следил за работой Огюсссона, поэтому с тех пор, возможно, у него появятся и другие блестящие вещи ...
источник
PHP и Javascript
Это полиглот:
Вы можете запустить этот код на обоих языках:
Хитрость в том, что Javascript использует escape-последовательности в строках, начинающихся с
'
и"
.С другой стороны, PHP использует escape-последовательности только в строках, начинающихся с
"
и<<<
.Затем мы объявляем функцию
printf
, которая похожа на,print
но выводит форматированную строку в PHP.PHP требует, чтобы vars начинался с
$
, а Javascript просто позволяет.источник
Array(…)
в JS, и это явноarray(…)
в PHP.[…]
было бы намного лучше;)!Array()
в JS или нет: мне важно, чтобы у меня был ИСТИННЫЙ полиглот. Делаю один из худших преступлений JS с этим кодом , но все , что я хочу, что он работает и делает точно то же самое в обоих, но , глядя , как JS и PHP в то же время.[...]
недопустимо в PHP <5.4.0, что плохо ....... Если я добавлю это в PHP 4, 5 или Javascript, я ожидаю, что это будет работать, вместо того, чтобы давать синтаксические ошибки везде.[…]
, что кажется довольно стандартным в PHP, и, следовательно, подходит для вашей цели. И, кстати, PHP <5.4? Время обновлять, парень ...Array
это ПРАВИЛЬНОЕ имя конструктора объекта Array. В основном, использование так[]
же, какArray()
. Я не вижу в этом ничего плохого. Но у меня есть один простой вопрос: работает? (Кстати, я должен использовать php 5.3.28 на работе.)Brainfuck в JS
источник
><,.-
Это один из победителей IOCCC 2005 года , программа на C, которая, за исключением этого набора определений, выглядит как Java-программа:
источник
C ++ в C
Итак, вы программист на C ++, но вынуждены использовать C? Нет проблем, вам просто нужно написать несколько дополнительных заголовков, отсутствующих в C. Например, вот действующая программа Hello World на C:
В дополнительном заголовочном файле
iostream
напишите:В файле
string
напишитеВ файле
helloworld.c
(ваш фактический код C), напишитеИ при компиляции
helloworld.c
с компилятором, проинструктировать компилятор также искать<...>
файлы заголовков , где вы сохранили файлы ,iostream
иstring
, например, если вы компиляции с GCC и поместить файлыiostream
иstring
в текущем каталоге, компилировать сПримечание.
volatile
Заголовок iniostream
предназначен для включения компиляции без предупреждений даже на максимальном уровне предупреждения (считается, что чтение из энергозависимой переменной имеет эффект).источник
volatile
здесь, и что за предупреждение?CQL - язык запросов с кофеином
(или «SQL на кофеин»)
Это могло быть несколько чрезмерно амбициозным. Вот попытка написать декларативный код SQL (ish) в CoffeeScript . Для этого требуется функция прокси ECMAScript 6 . Вы можете проверить это в узле с
--harmony-proxies
.Давайте настроим шаблон для определения прокси. (Взято из комментария Бенви по этому вопросу )
Теперь определите прокси-объект и некоторые подозрительные глобальные переменные и функции:
Ну, это было довольно много настроек! Но теперь мы можем сделать следующее (ввод / вывод в стиле консоли):
Это не настоящий полиглот, но не в этом дело. Я знаю, что
@
это используется для переменных в SQL, но мне нужны все@
s для имен столбцов и таблиц, потому что я не нашел способа проксировать глобальный объект (и я не удивлюсь, если это действительно невозможно - и для веская причина).Я также изменил некоторые скобки в скобках (в частности, после
VALUES
иIN
). К сожалению, я вообще не смог понять, как можно разрешить нормальные условные выраженияyear > 2000
, потому что они сразу вычислились бы как логические.Тем не менее, это очень похоже на SQL и определенно более декларативно, чем императивно / функционально / объектно-ориентировано, поэтому оно должно хорошо подходить для вопроса. Я на самом деле думаю, что если я немного отполирую код и поддержу еще несколько функций, это может быть полезным модулем CoffeeScript.
Во всяком случае, это было весело! :)
Для тех, кто не слишком знаком с CoffeeScript, запросы SQL компилируются в следующий JavaScript:
источник
@
SQL используется для переменных сеанса.@
s для имен столбцов и таблиц.Visual Basic 6 (в JavaScript)
Это также работает в VBScript.
источник
F # в C ++
Скорее не воображаемое и противное злоупотребление препроцессором. Я подумал, что было бы интересно изменить C ++, чтобы он выглядел как совершенно другой язык, вместо того, чтобы использовать несколько псевдонимов, чтобы он выглядел как Java или PHP. Я не ожидаю, что это соберет кучу голосов, это просто ради забавы.
Попробуй это здесь .
К сожалению, что-то написать в STDOUT - это почти все, что он может сделать, хотя я уверен, что если кто-то бросит в него достаточно колдовства, он сможет заставить его делать больше.
источник
exit 0
или просто0
.Python и ... никто не догадается (править: dc)
Вот некоторый допустимый код Python, но на самом деле программа написана на совершенно другом языке:
Код работает на обоих языках без ошибок.
Комбинация очень сумасшедшая; Я был бы рад подождать один или два дня, прежде чем сказать, какой другой язык; пожалуйста, оставьте комментарии для угадывания.
редактировать: язык был основанный на стеке язык от dc. Вы можете увидеть здесь хорошо известные ключевые слова , как
for
,if
,or
,in
, но только буквы значения! Значение,,
которое не имеет значения в dc, превращается в регистр, потому что в первый раз оно появляется после буквыs
(то же самое для:
).источник
C ++ позволяет писать код, похожий на lisp, с помощью библиотеки InteLib:
ср http://www.informatimago.com/articles/life-saver.html
источник
C # в пробелах
Хорошо, сначала попробуйте один из них, так что давайте посмотрим, как это происходит.
И в случае, если форматирование пошло не так из-за необходимости помещать четыре пробела в начале каждой строки, здесь снова. для пробела и # для табуляции:
источник
HTML и CSS
Не языки программирования, но ... этот документ является действительным HTML и CSS:
Это работает, потому что HTML-комментарии разрешены в таблицах стилей по историческим причинам. Да, и каждый действительный HTML-документ также является допустимой программой PHP, так что это тоже PHP . :)
источник
C в Скала
Промежуточный слой эмулирует более романтичную эпоху, когда строки все еще были массивами байтов с нулевым символом в конце.
источник
"This program does not take parameters!"
одурачить тебясед и апл
Мой босс хочет, чтобы я писал сценарии sed, но я предпочитаю писать APL весь день. Тем не менее, он очень доволен моей работой, потому что такие сценарии отлично работают с его версией sed:
Вы можете попробовать это на моем новом сайте с этой постоянной ссылкой . Это скомпилированная для JavaScript версия GNU APL. Окончательный выпуск будет позже с официальным выпуском GNU APL, v. 1.3, но вы можете отлично использовать его для своих постоянных ссылок, если вам нравится GNU APL.
источник
С в Хаскеле
Конечно, поскольку
cmain
ничего не делает сargc
илиargv
, код маршалинга аргументов не имеет никакого эффекта, и, поскольку онcmain
всегда возвращает 0, ветвь else в операторе if мертва. Но утверждение «если» все равно ничего не делает.Все фигурные скобки и точки с запятой не нужны, как и большинство скобок и некоторые
do
ключевые слова. Заявление «если» могло быть записано какif exitCode == 0 then exitWith ExitSuccess else exitWith (ExitFailure (fromIntegral exitCode))
.источник
C ++ в Forth
Не самое гибкое решение, но оно работает, если написано точно так, как показано.
источник
Haskell на Java
(«ванильная» Java 7, а не Java 8) (Да, я знаю, что бокс снижает производительность; даже попытка использовать функции более высокого порядка сводит с ума многословно: D)
У Java очень жесткий синтаксис, поэтому вместо изменения синтаксиса я попытался сделать код семантически более похожим на стиль в Haskell.
Редактировать - добавлена частичная функция приложения.
(Да, все, что делает это безумие, это вычисления
6!
)источник
КОБОЛ в АУК
В духе цитаты. Чистый, незапятнанный AWK, как его может написать программист на языке COBOL.
Задача - подсчитать записи в файле. Эта ранняя версия разработки рассчитывает на тестирование. Правильный файл будет жестко запрограммирован позже, когда выйдет из модульного тестирования ...
Если бы я мог заставить подсветку синтаксиса делать фосфоресцентно-зеленый на черном, было бы здорово ...
Даже в этом случае правильные номера столбцов, это семь пробелов в начале каждой строки (никогда не делали этого в awk раньше) и разрывы длинных операторов печати в столбце 72.
источник
Brainfuck (или что-нибудь еще) в Racket
Гибкий модуль Racket и система макросов позволяют ему реализовать поддержку модулей для совершенно новых языков, как доменных, так и общего назначения. Для Datalog и Algol 60 имеется встроенная поддержка , поэтому следующие действительные программы Racket:
Вы также можете добавить поддержку для других языков: например, см . Описание Danny Yoo о том, как реализовать поддержку Brainfuck, которая разрешает такие программы для Racket, как:
А так как поддержка добавлена на уровне скомпилированного модуля, можно связать модули, написанные на разных языках, или встроить фрагмент одного языка в модуль, написанный на другом.
источник
SML на Java
У меня все еще есть какой-то древний код, когда я начал изучать Java и пытался использовать его в функциональном стиле. Слегка вымыто:
источник
Java в Perl
Может считаться нарушением правил, но мне все равно. Очевидно, что он должен выглядеть как Java-программа. Он печатает 20 чисел Фибоначчи, если это не очевидно.
источник
J и ... никто не догадается (править: dc)
Это моя вторая запись; Вот фрагмент правильного кода J, который возвращает 1:
Я жду один или два дня, прежде чем сказать, какой другой язык выполняет тот же кусок кода без ошибок. Просто оставьте комментарии за попытку угадать.
редактировать: другой язык является языком стека из очень древнего калькулятора Unix DC.
источник
.,+-<>[]
поэтому ваша программа эквивалентна...[.]+
in brainfuck, которая является допустимой, но бессмысленной программой. AFAIK программа «бредфук» может быть недействительной только из-за несоответствия[]
.DC работает с файлом PostScript
dc может выполнить следующий фрагмент кода без ошибок:
источник
ML / (Строгий) Haskell в Java
Это из реального реального проекта. Он использует постоянные неизменяемые структуры данных и использует рекурсию, даже когда в этом нет необходимости. На самом деле это больше похоже на Kore (язык, реализуемый проектом) в Java, но стиль в основном такой же, как и в ML. Но философия Kore заключается в том, что автор не должен форматировать свой код, поэтому ни один из кодов Java также не форматируется (он автоматически форматируется с помощью eclipse).
удалить n элементов из списка :
В ML / Haskell, где вы будете использовать шаблон для извлечения головы и хвоста, здесь вы говорите
list.cons().x
иlist.cons().tail
.вставить элемент в список :
Список определяется буквально так, как будет определяться алгебраический тип данных. Вот версия с удаленным шаблоном, сгенерированным затмением:
Вот структура данных карты, реализованная в виде дерева :
Типы начинают занимать столько же места, сколько и код. Например, в путах , метод имеет 302 символов типов и 343 символов коды (не считая пространства / перевода строки).
источник
Бейсик в рубине
Реализовано это давно. Источник находится на GitHub . Вдохновленный подобной вещью в Scala
Настроить
Бейсик код
источник
Haskell в шаблонах C ++
Я сделал это FizzBuzz в C ++ шаблонах несколько месяцев назад на жаворонке. Это в значительной степени реализация следующего кода на Haskell, все в шаблонах C ++. Фактически, даже целочисленная арифметика переопределяется на уровне типов - обратите внимание, что ни один из шаблонов не использует параметры int!
Код на Haskell:
и версия метапрограммирования шаблона C ++:
источник