wizzard: (Default)
[personal profile] wizzard

родилась тут у меня мысль, что есть задачи с более-менее определенным ТЗ,
с которыми можно как-то так извернуться….
в общем, объявляется конкурс по написанию программ,
которые пишут другие программы.




Задание 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
В идеале, генератор должен принимать на вход указание, считалку каких
именно хэш-алгоритмов реализовывать.

Условия:
  1. Программа-генератор и программа-результат могут использовать Google, Wikipedia,
    Koders.com и прочие онлайн-сервисы
  2. Задание программе-генератору подается в текстовом виде, так, как оно приведено
    выше. Программа-генератор может реализовывать одно или сразу несколько заданий.
    Если в задании есть несколько вариантов (например, задание 2 и 3), то можно генерировать
    ”какой получится” или дописывать в понятном человеку варианте, какой именно вариант.
  3. Программа не должна ни в каком виде включать в себя код специфических частей программ,
    которые создаются с ее помощью, но может включать в себя библиотеку подпрограмм
    общего назначения
  4. Программа может использовать базы данных любого вида и библиотеки исходного кода,
    созданные автором программы, при соблюдении 2 условий:
    • Эти файлы можно найти с использованием поисковых систем, или скачать со страниц,
      которые можно найти с использованием поисковых систем.
      Быстро индексируются Google Base, Google Pages, Blogger, ЖЖ и еще ряд сервисов,
      эти – первые, которые вспомнил.
    • Данные хранятся в открытом, незашифрованном виде, понятном не только автору,
      но и человеку
  5. Программа должна генерировать исходный код и бинарный файл (в случае, если
    код генерируется на компилируемом языке). Если требуется специфический компилятор,
    нужно укомплектовать программу инструкциями по скачиванию и установке.
  6. Для первой версии конкурса программа-результат должна работать из командной строки,
    работать с stdin/stdout и файлами.
  7. Программа-генератор может работать как из командной строки, так и иметь GUI.
    Построение веб-сервисов не рекомендуется из соображений сложностей копирования,
    развертывания, установки и изучения таких вещей
  8. Цель конкурса – создать мега-генератор ;)
    Поэтому программы на конкурс выдвигаются с исходным кодом. Можно объединяться,
    можно создавать работы на основе работ других участников.
    Это условие необязательное. Если хочется сохранить ноу-хау, то можно не публиковать
    исходный код (но предоставлять его нужно, иначе будет невозможно проверить,
    удовлетворяет ли программа пункту 2)
  9. Генераторы можно постить в комментах или присылать на e-mail wizzard0@gmail.com
    с пометкой в теме письма “Конкурс генераторов”
  10. Язык программирования – произвольный. Рекомендуется прикладывать также инструкции
    по тестированию и компиляции для других участников.

Если вам понравился конкурс – напишите о нём в своем журнале и поделитесь с друзьями :)
Принимаются поправки к условиям, ну и другие задания, естественно :)


Date: 2009-02-08 07:29 am (UTC)

Date: 2009-02-08 09:27 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
по нулевому: то есть код, который я напишу предположим на с++ создает pas файл, в котором содержится строка writeln('hello, world')?

Date: 2009-02-08 09:37 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
так это скорее копирователь а не генератор.
да. выложи

Date: 2009-02-08 09:53 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
ну... теперь окончательно понятно.
тут идея в первом пункте:
http://darth-caedius.livejournal.com/18556.html
зайди дальше по ссылке на отрывок из книги.
и вот что пока из этого получилось:
http://darth-caedius.livejournal.com/28641.html

вот тут идея именно генератора, только пока еще не оформившаяся

Date: 2009-02-09 06:44 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
от идеи создать автономный разум вроде бы отказались.

Date: 2009-02-08 09:54 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
а код реюз это плохо) когда реюз подразумевает копипаст

Date: 2009-02-09 06:38 am (UTC)
From: [identity profile] darth-caedius.livejournal.com
переписывание на другие платформы - это не подходит для обсуждаемой задачи

Date: 2009-02-08 10:05 am (UTC)
From: [identity profile] migmit.vox.com (from livejournal.com)
Думаю, стоит подключить libastral.so

Date: 2009-02-09 05:15 am (UTC)
From: [identity profile] sashman.livejournal.com
в Windows 7 некий аналог реализовали, кстати. правда поддержка как всегда по-мелкомягки и в 50% оно фейлицо.

Date: 2009-02-09 03:53 pm (UTC)
From: (Anonymous)
вот негодяи! даже это сперли

Date: 2009-02-09 09:31 am (UTC)
From: [identity profile] dmitry-vk.livejournal.com
Красивое решение — семантический анализ текста задания (по идее, это уже реализовано, только качество работы не всегда адекватное на свободных текстах) (только тут нужен довольно качественный анализатор, а это редкая штука) + онтология в области программирования + агент, который это все совмещает. Может быть, попробую.

Date: 2009-02-09 09:34 am (UTC)
From: [identity profile] dmitry-vk.livejournal.com
Да и то, наверное, будет работать только в простых случаях, наподобие приведенных.

Date: 2009-02-09 06:10 pm (UTC)
From: [identity profile] dmitry-vk.livejournal.com
Я не спец в этой области, так что особо подсказать не смогу. Например, у проекта aot.ru есть поверхностный семантический анализ для русского языка (http://aot.ru/demo/graph.html), и имеется описание (http://aot.ru/docs/seman.html). Для фиксации терминологии используются онтологии в предметной области.

(3) -- глупость

Date: 2009-02-11 09:22 am (UTC)
From: [identity profile] d0tcom.livejournal.com
В том, что Вы запрещаете, весь смысл программы, "которая пишет сама себя".
Сама же идея такой программы стара, как мир. Те, кто начинают заниматься подобной задачей, довольно быстро понимают, что писать такую программу для машин глупо, если сам не можешь писать другие программы, и начинают модифицировать себя. Иначе говоря, программирование машин -- занятие для начальной школы, ну и простейший способ поддерживать жизнь, не напрягаясь.
Добавлю немного мистики. Как-то я сам всему обучался, но был-таки один человек, который повлиял на меня, от него я впервые услышал про Си (тогда только-только персоналки появились, до этого я писал на пиэле). Он вообще был странный. Не терпел непонимания, сразу взводился. Разводился и женился не один раз, но на одной женщине. И сказал мне как-то, что он пишет такую программу. Да. Сразу после этого умер. Лет сорок ему было. Борзов его фамилия.

Re: (3) -- глупость

Date: 2009-02-11 09:47 am (UTC)
From: [identity profile] d0tcom.livejournal.com
Поисковики разрабатывают в гуглях-яндексах, им и карты в руки, надо ж как-то на жизнь зарабатывать. В любом случае (3) глупость. Если есть под рукой, зачем искать за горой?

Re: (3) -- глупость

Date: 2009-02-11 10:48 am (UTC)
From: [identity profile] d0tcom.livejournal.com
Так зачем что-то писать, если они сами скоро напишут и ничего писать не надо будет? Разве что интерфейс своей программы понятней.
Про (2) не понял, просветите. Рефакторинг -- это когда из кода получают структуру, более совершенный реассемблятор, вроде? Чтоб не переписывать самому старое. А так же красть. То-то радость MS будет.
А так развитие идёт потихоньку, сейчас начинают приступать к реализации идей столетней давности. Вот в VS лямбда-оператор появился, полезная вещь. Правда, есть люди, которые всё то же самое делают на ассемблере, прилагая гораздо меньше усилий (у них уже все макросы давно написаны) и получая гораздо более совершенный код, но что тогда делать молодым? Для молодых нужен "компилятор": программа, которой наговоришь белиберду в микрофон, нажмёшь кнопочку -- код на выходе. Компилятор умный, он сам догадается, что тебе нужно, и использует давно известное решение. Да, а чтоб мозги молодых не кисли, интерфейс этого компилятора делаем динамически меняющимся. Кнопка то слева, то справа, то цвет изменит, самому т0же побаловаться можно, поиздеваться над товарищами.
Вот почему у видео много звуковых дорожек, а самому комбинировать их при прослушивании нельзя (типа, русскую в центральные колонки, оригинал в передние, музыку в задние)? Из-за этого дорожка с переводом содержит язык оригинала (это предположение). Ведь элементарная идея.
Да ладно, это всё так, брюзжание. Чем бы дитя не тешилось. Программирование -- такой же инструмент самопознания, как и игры. Так что написать программу просто так, для себя, очень полезно. Правда, потом трудно устроиться на работу, придётся уходить в бизнес, учась втюхивать написанное для себя всем. Программированием машин при этом уже не позанимаешься. Бизнес, как и политика -- программирование людей.

Re: (3) -- глупость

Date: 2009-02-11 03:13 pm (UTC)
From: [identity profile] d0tcom.livejournal.com
Может я путаю, но существуют два противоположных метода работы с программой. Один позволяет описать структуру и получить из неё код, другой из кода воссоздаёт структуру. И то, и другое было в линейке Rational Rose, в Гаранте использовалась вся линейка. Так вот текущая версия Гаранта разработана на UML, код сгенерён. А вот из попыток получить UML из кода (рефакторинг?) для более-менее сложных продуктов ничего путного не получалось, и использовано для работы не было. Аналогично с командой VS, которая не сравнится с Rational Rose. Возможно, что-нибудь изменилось.
Классик, как и все остальные (чего только не стоит у меня), не умеет. Он позволяет только выбрать ОДНУ дорожку из списка. Если Вы нашли, где можно выбрать для воспроизведения ОДНОВРЕМЕННО несколько дорожек, и как управлять таким воспроизведением, подскажите. Запускать несколько программ одновременно я догадался, но это говорит только о том, что программы плохо написаны.
Как раз студенты не испытывают проблем с трудоустройством в виду вышеизложенных причин. Жизнь устроена так, что или выталкивает тебя "наверх", в начальники, или, если тебе это не по душе, оставляет за бортом. В армии наблюдал картину. Один парень опоздал на поезд домой, а следующий не скоро. И вот он никому не нужен, нет ни строевой, ни политзанятий, никакой работы, спи себе, гуляй. И ходил он грустный-грустный, а его никто не замечал.

только на UML

Date: 2009-02-11 05:06 pm (UTC)
From: [identity profile] d0tcom.livejournal.com
Так в RR только и было хорошего, что, как я теперь понимаю (см. заглавие), Вы называете рефакторингом. Я же под рефакторингом понимаю обратную операцию. Не, конечно, я её использовал. Чтоб в документацию вставить. Лень же самому писать, ведь туда нужно лишь красивые картинки, чтоб тебя за умного сочли, за работу побольше дали. А так в этой области ничего полезного не сделали, всё равно UML приходится писать практически с нуля.
То же, что Вы пытаетесь высказать дальше, по-моему, похоже на взгляд художника супротив писателя. В этом нет ничего плохого (и рисовать простенькие программы я тоже люблю, вместо того, чтобы текст набирать), если бы не одно но. Если бы было возможно излагать теорию иначе, чем на разговорном языке, то математики бы уже давно перешли на этот способ. Однако, они до сих пор пишут обычные тексты, хотя и пестрящие специальными символами. Так что ни синтаксическое дерево, ни UML не являются панацеями, а имеют лишь узкий круг применения для написания ширпотреба. Если уж замахиваться, то надо говорить не о деревьях или там графах, это уже давно устарело, а о матрицах, об алгебре, к использованию которой сейчас просматривается тенденция в самых передовых кругах (ага, Теория Всего Гарриета Ливси).
Блю рей это хорошо, да только идея многопоточности изначально заложена во все эти форматы, начиная с avi, и кончая всякими мп4 и матроссками. Вот я и удивляюсь, что данные поставляют, а использовать не дают. У меня wmp11 даже языки как следует переключать не может (может вообще ничего не видеть), потому и держу несколько программ. А перед записью дисков для бытового плеера приходится вручную редактировать файлы. Удалять там или перемещать (менять порядок -- вот ведь глупость) дорожки и титры. Ну, с бытовыми понятно, они даже аш264 не читают, хотя микросхемы давно выпущены.
Студенты не испытывают проблем с трудоустройством, потому что никому не нужны те, кто пишет хорошо, но долго, главное -- дёшево и внушительно, чтоб очки дальше по инстанциям можно было втирать, передавая документацию с картинками, типа сделанных в RR. В самом деле, ты работаешь всю жизнь, выбился в начальники, а тут перед тобой сидит тот, которому все твои задачи смешны. Думаете, мне дали поработать на RR UML в Гаранте (генерились паскаль и с++ для винды и юниксов)? Для этого есть молодёжь. А для старых программистов догадайтесь что. Поддержка старого кода. Ведь молодые ни бум-бум в устаревших языках, типа Си, да в здоровенных программах, написанных ещё под win16, когда приходилось организовывать всё, что сейчас на себя берёт операционка, в худшем случае библиотеки, которые к этому старому коду не прицепишь.
Мне вот дали недавно задачу. Вроде как программисту, однако на меня выходят совсем в других случаях. Программа управления предприятием. Типа, прогноз и подсказки для руководителя, автопилот. Сказали, что есть литература, американская. Но там ни одной формулы! Непонятно, за что экономисты нобелевские получают. Или американцы держат формулы в секрете? Судя по кризису, не похоже. Единственное знакомое, что мне пришло в голову -- АСУ ТП, а значит ТАУ (теория автоматического управления). Ну, автоматически всякие программки, типа экологических, когда показывают предполагаемую динамику заражения местности. Но как-то странно, что никто не догадался, видимо, диффуры туда не пришьёшь. А в этих новомодных матрицах у меня идей пока нет. Опять же, за это не заплатят. За решение этой задачки, имею в виду.

вышеизложенные причины

Date: 2009-02-11 05:09 pm (UTC)
From: [identity profile] d0tcom.livejournal.com
"Правда, потом трудно устроиться на работу"

сейчас

Date: 2009-02-11 03:14 pm (UTC)
From: [identity profile] d0tcom.livejournal.com
ищу работу программиста

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 7th, 2025 11:36 pm
Powered by Dreamwidth Studios