программы, которые пишут другие программы
родилась тут у меня мысль, что есть задачи с более-менее определенным ТЗ,
с которыми можно как-то так извернуться….
в общем, объявляется конкурс по написанию программ,
которые пишут другие программы.
Задание 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
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Главная идея в том, что многие вещи уже были когда-то и где-то кем-то написаны, поэтому их можно искать и лепить программы из таких кубиков.
Например, Hello, World уж точно есть в вики, а хэш-алгоритмы и примеры их использования - на koders.com :)
Задания, в общем, не просто так написаны :)
Если программа сможет написать не одну, а семейство программ, или хотя бы просто выступать в качестве многофункционального генератора рутинного кода - это уже очень хорошо.
Да, немного распознавать текст надо. Исходник можно и не зашивать, в инете куча хелловорлдов. Как и кучи более сложных вещей, между прочим :)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(Anonymous) - 2009-02-09 15:53 (UTC) - Expand(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(3) -- глупость
Сама же идея такой программы стара, как мир. Те, кто начинают заниматься подобной задачей, довольно быстро понимают, что писать такую программу для машин глупо, если сам не можешь писать другие программы, и начинают модифицировать себя. Иначе говоря, программирование машин -- занятие для начальной школы, ну и простейший способ поддерживать жизнь, не напрягаясь.
Добавлю немного мистики. Как-то я сам всему обучался, но был-таки один человек, который повлиял на меня, от него я впервые услышал про Си (тогда только-только персоналки появились, до этого я писал на пиэле). Он вообще был странный. Не терпел непонимания, сразу взводился. Разводился и женился не один раз, но на одной женщине. И сказал мне как-то, что он пишет такую программу. Да. Сразу после этого умер. Лет сорок ему было. Борзов его фамилия.
Re: (3) -- глупость
Re: (3) -- глупость
Re: (3) -- глупость
Re: (3) -- глупость
Re: (3) -- глупость
Re: (3) -- глупость
Re: (3) -- глупость
только на UML
вышеизложенные причины
сейчас