|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.02.2014, 12:08 | #1 |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
Программа для написания программ
Здравствуйте! Бьюсь над темой уже много времени, но пока ничего путного не выходит. Нужны умные мысли
Не знаю как точно сформулировать то, что мне нужно, поэтому проведу аналогию. Есть допустим какое-то электронное устройство. На вход я подаю какие-то сигналы, на выходе получаю тоже сигналы. Есть таблица, которая проверяет работоспособность этого устройства: столбцы ее - это входные сигналы, строки - тесты. К примеру таблица 10х20 - подаю 10 сигналов на входы устройства, смотрю результат и так 20 раз (20 тестов). Задача состоит в том, чтобы запрограммировать эту таблицу. Это можно сделать разными способами, самым простым из которых является цикл от 1 до 20 и в нем цикл от 1 до 10. Но в разных частных случаях можно применить разные способы, например, если в одном из столбцов сигнал одинаковый и не меняется, то нет смысла постоянно задавать его в цикле, а можно задать в начале один раз. Случаев таких много и когда я вижу таблицу, я вижу, как лучше написать программу. Проблема в том, что нужно написать программу, которая бы писала программу (на delphi) для программирования таких таблиц. Т.е. чтобы она как-то анализировала таблицу и находила оптимальный метод ее реализации. Я просто никак не придумаю, в каком направлении мыслить. Т.е. я не спрашиваю конкретной реализации, а просто как в общем можно это сделать. Были мысли о нейронных сетях, но изучать там много и не уверен что в этом есть смысл. |
13.02.2014, 12:18 | #2 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Если в одной строке все символы одинаковые, то цикл ты ни как не обойдёшь, потому что чтоб убедиться, что все символы одинаковы, необходимо их проверить опять же в цикле.
P.S. Что за устройства программируются? Микроконтроллеры? Или это учебная задача? |
13.02.2014, 12:42 | #3 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
не проще ли просто передать исходную? 2. или же надо построить генератор таблицы в котором можно указывать правила генерации строк:
Но вот беда ... правила оказываются "зашиты" в программу, и ее каждый раз надо переделывать. проблема в том чтобы придумать непротиворечивые и однозначные правила описания (свой "язык"). 3. или же вообще программа смотрит на таблицу и ... составляет правила самостоятельно. в этом случае боюсь без ИИ не обойтись. Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
13.02.2014, 13:00 | #4 | |
Участник клуба
Регистрация: 24.07.2009
Сообщений: 638
|
Цитата:
Писать на Delphi в одиночку - неподъемная задача, утонете в мелочах. Нужен язык более высокого уровня абстракций. Что-то типа, как 1с для бухгалтерии. А чтобы понять, что вам нужно начните хотя бы с готового Excel с макросами и всякими формулами. А там уже видно будет.
** Удача терпелива. **
Vad3333@inbox.ru |
|
13.02.2014, 13:29 | #5 | |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
Имеется много таблиц, на основе каждой из которых нужно написать программу. Можно написать один универсальный алгоритм, который будет обрабатывать эти таблицы, но это очень плохой вариант, потому что в нем будет избыточность и большие затраты времени. Поэтому требуется для каждой таблицы написать свою уникальную программу. Однако таблицы бывают очень похожи, как в целом, так и отдельными частями.
Приведу пример. Есть таблица, например: ... 1 2 3 4 5 6 1. 1 0 0 0 0 0 2. 0 1 0 0 0 0 3. 0 0 1 0 0 0 4. 0 0 0 1 0 0 5. 0 0 0 0 1 0 Первая строка таблицы - шапка. Допустим, 0 означает вызов функции F0, 1 - функции F1. Я вижу таблицу и пишу такую программу (на delphi): //первый тест F0(6); F1(1); for i:=2 to 5 do F0(i); //остальные тесты for j:=1 to 4 do begin F0(i); F1(i+1); end; В этой таблице есть определенный порядок. Если цифры в таблице не имеют порядка расположены хаотично (те же нули и единицы), то программа будет выглядеть так: for j:=1 to 5 do for i:=1 to 6 do begin if tabl[i,j]=0 then F0(j); if tabl[i,j]=1 then F1(j); end где tabl - это двумерный массив с таблицей Вот такие программы должна генерировать моя программа, на основе переданной ей таблицы (двумерного массива). Но, повторюсь, сделать один универсальный алгоритм нельзя, потому что, например, может быть, что функция F0 будет выполняться 5 минут и если вызывать ее в цикле много раз, это будет очень долго. Цитата:
В общем-то время от времени мне приходится на каждую таблицу писать программку и было бы не плохо, если бы введя таблицу это можно было сделать автоматически. Опять же задача представляет для меня еще и обучающий интерес. |
|
13.02.2014, 13:52 | #6 | |
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
Цитата:
Если так, тогда может кто-то подскажет... материалы, которые можно быстренько изучить и что-то написать, потому что как я понимаю книг по нейронным сетям написано уйма и прочитать и изучить книгу (или несколько книг) займет довольно много времени. Я не прошу искать для меня книги, но может кто-то сталкивался с подобным и есть какие-то материалы. А может можно решить проблему как-то проще, без ИИ. Я пробовал делать так, чтобы программа искала какие-то часто встречающиеся частные случаи в таблицах и реализовывала их, но это опять же частные случаи и эти случаи могут на чуть-чуть отличаться и данный алгоритм к ним уже не применим. |
|
13.02.2014, 14:33 | #7 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
дали ей таблицу, она составила правила построения ДАННОЙ таблицы, построила по ним ЭТУ же таблицу и....? смотри пункт 1. если есть исходная зачем еще одна точная копия первой? Где та часть в которую вмешивается человек (или программа) в результате чего получается НОВАЯ таблица? где ПРАВИЛА для внесения изменений в таблицу? может не надо решать универсальную задачу? Итак сейчас есть определенное число таблиц, для которых надо составить правила(написать генератор). Сколько их (различных гипотетических генераторов для ИМЕЮЩИХСЯ таблиц)? (5, 10, 50, 100, 500, 1000) какое число таблиц из числа имеющихся могло бы быть получено на ОДНОМ и том же генераторе (наборе правил) ? (1, 2, 10, 10000) Как часто МОГУТ появляться таблицы для которых еще нет генератора? (5 сек, 5 мин, 5 час, 5 дней ) Откуда вообще берутся исходные таблицы(может там уже и есть искомый генератор).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 13.02.2014 в 14:51. |
||
13.02.2014, 15:34 | #8 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
>>>Т.е. чтобы она как-то анализировала таблицу и находила оптимальный метод ее
>>>реализации. >>>Я просто никак не придумаю, в каком направлении мыслить. Т.е. я не спрашиваю >>>конкретной реализации, а просто как в общем можно это сделать. Этим занимается дискретная математика - там есть методы сверток логических функций, а также их привидения к различным формам, например: http://ru.wikipedia.org/wiki/%CA%EE%...F4%EE%F0%EC%E0 В частности там же есть методы позволяющие автоматически упрощать Ваши таблицы (например исключать входные сигналы, которые не влияют на решение). Все это жутко интересно и не всегда понятно с первого раза. Поэтому придется много читать и учить. Еще пример: http://ru.wikipedia.org/wiki/%D0%A1%...80%D0%BC%D0%B0
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
13.02.2014, 15:44 | #9 | |||
Пользователь
Регистрация: 13.05.2007
Сообщений: 60
|
Может вы меня не совсем верно поняли. Нужно сделать не таблицу на основе таблицы, а программу на основе таблицы, как я написал в примерах в предыдущем сообщении. Но эту программу (которая на основе таблицы) должен написать не я, а другая программа (которую я и пытаюсь разработать). Таким образом я разрабатываю программу (назовем ее проектом, чтобы не путаться), в который на вход я передаю таблицу, а на выходе получаю программный код на delphi.
В общем-то ваши рассуждения верны, только не в том направлении. Проект должен проанализировать таблицу и решить как ее оптимальней запрограммировать. Правила вносит человек (потому что я не знаю, как их можно сгенерировать автоматически). Правила, например, такие: если есть столбец с одинаковыми цифрами, то его программируем в начале и больше не трогаем. На самом деле мне даже трудно придумать правила Я могу объяснить только на примерах. Наверное здесь правило - это определенный алгоритм, по которому будет строиться программа. Цитата:
Цитата:
Генератор я так понимаю один... Или что вы имеете в виду? Цитата:
|
|||
13.02.2014, 15:52 | #10 | |
Участник клуба
Регистрация: 24.07.2009
Сообщений: 638
|
Цитата:
Или как?
** Удача терпелива. **
Vad3333@inbox.ru |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ищется програмист для написания 2х простых программ | DasGluckk | Фриланс | 3 | 17.11.2010 13:02 |
ПО для написания программ на JS | jetyb | JavaScript, Ajax | 8 | 17.11.2010 06:01 |
литература для написания программ для at89c5132 | wanes101 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 23.08.2010 11:21 |
Выбор технологии для написания программ | JamS007 | Общие вопросы C/C++ | 5 | 24.05.2009 16:44 |
текстовые редакторы для написания и редактирования программ | still_alive | Свободное общение | 2 | 22.12.2007 11:25 |