программы, которые пишут другие программы
Feb. 8th, 2009 07:10 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
родилась тут у меня мысль, что есть задачи с более-менее определенным ТЗ,
с которыми можно как-то так извернуться….
в общем, объявляется конкурс по написанию программ,
которые пишут другие программы.
Задание 0:
программа, которая ничего не принимает на вход,
и выводит “Hello, World”.
Задание 1:
программа, которая принимает на вход строку и выводит ее.
если введенная строка пуста – выводит “Hello, World”.
Задание 2:
программа, которая принимает на вход строку – имя математической операции,
а также 1 или 2 числа, в зависимости от того, сколько аргументов у операции.
Выводит результат операции.
Пример:
natural logarithm 5 1,6094379 | addition 5 6 11 | factorial 4 24 | negate 6 -6 |
Можно, но не обязательно, сделать в генераторе выбор
набора поддерживаемых операций.
Задание 3:
программа, которая принимает на вход имя файла и имя хэш-алгоритма,
открывает файл (для простоты предположим, что он находится в текущей директории),
считывает его, считает хэш содержимого файла
и выводит его в шестнадцатеричном виде на экран.
Если хэш не поддерживается, выводит “Unknown hash algorithm”
Нужно реализовать хотя бы один из: CRC32, MD5, SHA1, SHA256
В идеале, генератор должен принимать на вход указание, считалку каких
именно хэш-алгоритмов реализовывать.
Условия:
- Программа-генератор и программа-результат могут использовать Google, Wikipedia,
Koders.com и прочие онлайн-сервисы - Задание программе-генератору подается в текстовом виде, так, как оно приведено
выше. Программа-генератор может реализовывать одно или сразу несколько заданий.
Если в задании есть несколько вариантов (например, задание 2 и 3), то можно генерировать
”какой получится” или дописывать в понятном человеку варианте, какой именно вариант. - Программа не должна ни в каком виде включать в себя код специфических частей программ,
которые создаются с ее помощью, но может включать в себя библиотеку подпрограмм
общего назначения - Программа может использовать базы данных любого вида и библиотеки исходного кода,
созданные автором программы, при соблюдении 2 условий:- Эти файлы можно найти с использованием поисковых систем, или скачать со страниц,
которые можно найти с использованием поисковых систем.
Быстро индексируются Google Base, Google Pages, Blogger, ЖЖ и еще ряд сервисов,
эти – первые, которые вспомнил. - Данные хранятся в открытом, незашифрованном виде, понятном не только автору,
но и человеку
- Эти файлы можно найти с использованием поисковых систем, или скачать со страниц,
- Программа должна генерировать исходный код и бинарный файл (в случае, если
код генерируется на компилируемом языке). Если требуется специфический компилятор,
нужно укомплектовать программу инструкциями по скачиванию и установке. - Для первой версии конкурса программа-результат должна работать из командной строки,
работать с stdin/stdout и файлами. - Программа-генератор может работать как из командной строки, так и иметь GUI.
Построение веб-сервисов не рекомендуется из соображений сложностей копирования,
развертывания, установки и изучения таких вещей - Цель конкурса – создать мега-генератор ;)
Поэтому программы на конкурс выдвигаются с исходным кодом. Можно объединяться,
можно создавать работы на основе работ других участников.
Это условие необязательное. Если хочется сохранить ноу-хау, то можно не публиковать
исходный код (но предоставлять его нужно, иначе будет невозможно проверить,
удовлетворяет ли программа пункту 2) - Генераторы можно постить в комментах или присылать на e-mail wizzard0@gmail.com
с пометкой в теме письма “Конкурс генераторов” - Язык программирования – произвольный. Рекомендуется прикладывать также инструкции
по тестированию и компиляции для других участников.
Если вам понравился конкурс – напишите о нём в своем журнале и поделитесь с друзьями :)
Принимаются поправки к условиям, ну и другие задания, естественно :)
no subject
Date: 2009-02-08 09:27 am (UTC)no subject
Date: 2009-02-08 09:33 am (UTC)А вот как это реализовать, соблюдая правила 2 и 3 - это вопрос :)
Наверное, мне стоит выложить реализацию 1-2 заданий, т.к. я думаю, что не все читатели "в теме".
no subject
Date: 2009-02-08 09:37 am (UTC)да. выложи
no subject
Date: 2009-02-08 09:45 am (UTC)Code reuse, однако :)
no subject
Date: 2009-02-08 09:53 am (UTC)тут идея в первом пункте:
http://darth-caedius.livejournal.com/18556.html
зайди дальше по ссылке на отрывок из книги.
и вот что пока из этого получилось:
http://darth-caedius.livejournal.com/28641.html
вот тут идея именно генератора, только пока еще не оформившаяся
no subject
Date: 2009-02-09 06:10 am (UTC)у них 2 проблемы
1. геном человека на эээ 5-6 порядков сложнее (13 мб, если мне память не изменяет, и 80 байт)
2. у них критерием выживаемости нечаянно получилось укорочение и упрощение, а это не очень способствует возникновению разума :)
амебы - прикольно. буду думать еще, сейчас нету времени совсем :(
no subject
Date: 2009-02-09 06:44 am (UTC)no subject
Date: 2009-02-08 09:54 am (UTC)no subject
Date: 2009-02-09 06:11 am (UTC)А вообще - да, плохо. Это не наука.
no subject
Date: 2009-02-09 06:12 am (UTC)А вообще - да, плохо. Это не наука.
no subject
Date: 2009-02-09 06:38 am (UTC)