Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
 Re: WEB сервис генерации программного кода  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1750
Дмитрий Concept,
совсем недавно на хабре читал статью на эту тему https://habrahabr.ru/post/320652/
В комментариях много спорили

Дмитрий Concept
Интуиция мне подсказывает (могу ошибаться, конечно), что именно в плоскости автоматизации программирования и документирования (CASE-технологии) находится решение.

Если говорить конкретно о ИС предприятий, то с моей точки зрения самый перспективный вариант - BPM системы. Они УЖЕ работают. И ближе всего подошли к тому, что людям надо. Хотя именно автоматизации программирования там и нет :)

Если абстрагироваться от деталей, что надо пользователям (заказчикам)?
Объяснил компьютеру, что надо сделать - он сделал.
А будет при этом генерироваться код, или компьютер воспримет описание задачи как руководство к действию без дополнительных генераций кода (как делают BPM системы) - пользователю не важно.
Но есть отличие между CASE и BPM системами. Простую прикладную задачу (не "привет, мир!") в BPM уже сейчас можно запустить на исполнение вообще без привлечения программиста. А с CASE системами так не получается.
9 мар 17, 17:08    [20278632]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept,

Не то чтобы они сокращались, конечно. Где-то они может даже и увеличились. Но теперь кроме того чтобы остатки сходились, хотят получить больше гибкости, больше красивости, в общем, больше качества. К тому же, вырос технический долг проектов, который давит на грудь.

Я помню как лет 10 назад особо продвинутые владельцы, уже тогда крупных компаний, стали обзаводиться своими собственными ИТ отделами. Так как это дешевле и быстрее чем постоянно пинать аутсорс. Особенно если бизнес-процесс сложный. Хочешь что-то быстро оптимизировать или прогнуться под изменившиеся реалии, например выдавать кредиты без лишнего этапа - даешь команду ИТ отделу, и через относительно короткий срок получаешь результат и соответственно конкурентное преимущество. В случае аутсорса же, нужно встать в очередь, родить ТЗ, пройти согласования, поставить подпись под ТЗ, потом опомниться что нужно не один этап убирать, а два, переписывать ТЗ, заплатить за это. Потом понять что все не так и далее с этим жить)).

Так вот, а сейчас этой гибкости от придворных разработчиков стало мало. Теперь эти тонны самописного кода (а, будет более правильно сказать - говнокода), нуждаются в подпирании и обслуживании. О красивостях и речи быть не может, т.к. много других более насущных проблем. А сотрудники-то привыкли к качеству вокруг, на работе уже себя ощущают как в помойке.
Иногда разобраться как работает какой-либо функционал просто нереально. Так как очень много кода, статусов, обработок этих статусов и т.д. Визуализировать эту мешанину тоже не представляется возможным, местами прямо в формах прописана какая-то порнуха логика. Да и не важно где она прописана, код есть код, иногда даже человек, даже автор не может воткнуть, что это и для чего это было написано.

Поэтому всеобщая платформизация неибзежна))
Тут суть очень проста - чтобы создать нечто очень качественное, нужно чтобы это была не наколенная разработка, а полноценный продукт. А чтобы создать продукт, нужно чтобы в его основе уже был продукт (платформа). Чтобы выпустить новое качественное авто, нужно взять уже существующий продукт, например хороший движок. Иначе ничего не получится.
9 мар 17, 17:08    [20278636]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
s_ustinov
Дмитрий Concept,
совсем недавно на хабре читал статью на эту тему https://habrahabr.ru/post/320652/
В комментариях много спорили

Дмитрий Concept
Интуиция мне подсказывает (могу ошибаться, конечно), что именно в плоскости автоматизации программирования и документирования (CASE-технологии) находится решение.

Если говорить конкретно о ИС предприятий, то с моей точки зрения самый перспективный вариант - BPM системы. Они УЖЕ работают. И ближе всего подошли к тому, что людям надо. Хотя именно автоматизации программирования там и нет :)

Если абстрагироваться от деталей, что надо пользователям (заказчикам)?
Объяснил компьютеру, что надо сделать - он сделал.
А будет при этом генерироваться код, или компьютер воспримет описание задачи как руководство к действию без дополнительных генераций кода (как делают BPM системы) - пользователю не важно.
Но есть отличие между CASE и BPM системами. Простую прикладную задачу (не "привет, мир!") в BPM уже сейчас можно запустить на исполнение вообще без привлечения программиста. А с CASE системами так не получается.

Нельзя не согласиться. Это как самолеты и птицы, про которых рассказывал Сербант (маркетолог яндекса). Сначала пытались изучать как у птиц устроены перья, так нифига с этим и не раобравшись, сделали самолет по другому приницпу. Тоже самое с мозгами и машинным обучением. И тоже самое к кодом и логикой. Я всегда говорил - код это зло, а кодогенерация это генерация зла)). Если код порождает проблемы, то кодогенерация плодит эти проблемы на автомате.
9 мар 17, 17:14    [20278663]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1750
dma_caviar,
Это точно. Проходит буквально 2-3 года - и огрехи первоначальной архитектуры начинают существенно раздражать. Как маленький камешек в кроссовке - ходить вроде можно, но аккуратно (не побегаешь) и РАЗДРАЖАЕТ. А лет через 10 - БОЛЬ. И рефакторингом уже не отделаешься... Вернее рефакторинг будет заключаться в написании системы с нуля.
9 мар 17, 17:16    [20278680]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
dma_caviar
Сначала пытались изучать как у птиц устроены перья, так нифига с этим и не раобравшись, сделали самолет по другому приницпу. Тоже самое с мозгами и машинным обучением. И тоже самое к кодом и логикой. Я всегда говорил - код это зло, а кодогенерация это генерация зла)). Если код порождает проблемы, то кодогенерация плодит эти проблемы на автомате.


Не могу согласиться с Вами. То, что Вы имеете возможность писать в этом форуме, следствие отработки написанной кем-то CMS и отработки кода. :) Даже редактор текстов это чей-то код. Какое уж тут зло? Просто двойстенность явления. Все одновременно хорошо и плохо. С чъей точки зрения и в какой момент времени посмотреть? Да ну ее - эту философию!

Все-равно, по факту, в современном мире деньги определяют все.
И если не участвуешь в этой финансовой системе кровообращения, то будешь на задворках.

И 1C Битрикс и Амо СРМ - рулез!!! Алилуя!!! Что будет через 5 лет, кого этот интересует?

Я это проходил. Многие говорили, что победит Виндовз. Я сделал на них ставку. Я проиграл.
Что дальше? Слушать новых Оракулов?
9 мар 17, 21:09    [20279446]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept
dma_caviar
Сначала пытались изучать как у птиц устроены перья, так нифига с этим и не раобравшись, сделали самолет по другому приницпу. Тоже самое с мозгами и машинным обучением. И тоже самое к кодом и логикой. Я всегда говорил - код это зло, а кодогенерация это генерация зла)). Если код порождает проблемы, то кодогенерация плодит эти проблемы на автомате.


Не могу согласиться с Вами. То, что Вы имеете возможность писать в этом форуме, следствие отработки написанной кем-то CMS и отработки кода. :) Даже редактор текстов это чей-то код. Какое уж тут зло? Просто двойстенность явления. Все одновременно хорошо и плохо. С чъей точки зрения и в какой момент времени посмотреть? Да ну ее - эту философию!

Все-равно, по факту, в современном мире деньги определяют все.
И если не участвуешь в этой финансовой системе кровообращения, то будешь на задворках.

И 1C Битрикс и Амо СРМ - рулез!!! Алилуя!!! Что будет через 5 лет, кого этот интересует?

Я это проходил. Многие говорили, что победит Виндовз. Я сделал на них ставку. Я проиграл.
Что дальше? Слушать новых Оракулов?

Ну я думаю мы поняли о каком коде идет речь). Форум тут ни при чем.
По поводу Виндовс - хз. Мы тоже сделали на них ставку, вроде выиграли вместе с ними))
9 мар 17, 22:03    [20279582]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1656
Дмитрий Concept
Все-равно, по факту, в современном мире деньги определяют все.

Правильно. Поэтому бизнесу нужны решения, адекватные по соотношению цена-качество.
Цена - это в том числе и расходы владения, а качество - расшипяемость, изменяемость, масштабируемость, юзабилити на разных уровнях. Решение с нулевой ценой ПОКУПКИ необязательно будет выгоднее решения с ценой, отличной от нуля. Т.к. учесть придется сумму затрат на приобретение и доработку под себя - взять бесплатно, потратить время на доработку а потом в случае сбоя вообще не знать что делать - это не особо привлекательно.
Многие говорили, что победит Виндовз. Я сделал на них ставку. Я проиграл.

Я люблю играть в го, правда делаю это совсем плохо. Игра учит, что невозможно контролировать ВСЕ ПОЛЕ. Но можно - хорошие куски этого поля, по размеру. Или важные. Или перспективные. Винда держит определенные сегменты, немелкие отнюдь, но не все поле целиком..... бизнес - не шахматы где поставил мат и все. И неажно, сколько ресурсов потратил... (часто не шахматы) часто это го. ищется тесудзи - лучший ход в области, ход решающий конкретную задачу, или адзи - ход создающий перспективы....
10 мар 17, 09:46    [20280257]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
Vladimir Baskakov
Дмитрий Concept
Все-равно, по факту, в современном мире деньги определяют все.

Правильно. Поэтому бизнесу нужны решения, адекватные по соотношению цена-качество.
Цена - это в том числе и расходы владения, а качество - расшипяемость, изменяемость, масштабируемость, юзабилити на разных уровнях. Решение с нулевой ценой ПОКУПКИ необязательно будет выгоднее решения с ценой, отличной от нуля. Т.к. учесть придется сумму затрат на приобретение и доработку под себя - взять бесплатно, потратить время на доработку а потом в случае сбоя вообще не знать что делать - это не особо привлекательно.
Многие говорили, что победит Виндовз. Я сделал на них ставку. Я проиграл.

Я люблю играть в го, правда делаю это совсем плохо. Игра учит, что невозможно контролировать ВСЕ ПОЛЕ. Но можно - хорошие куски этого поля, по размеру. Или важные. Или перспективные. Винда держит определенные сегменты, немелкие отнюдь, но не все поле целиком..... бизнес - не шахматы где поставил мат и все. И неажно, сколько ресурсов потратил... (часто не шахматы) часто это го. ищется тесудзи - лучший ход в области, ход решающий конкретную задачу, или адзи - ход создающий перспективы....


Интересные мысли.
Не могу не согласиться.
10 мар 17, 12:15    [20281077]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1750
Дмитрий Concept
Все-равно, по факту, в современном мире деньги определяют все.
И если не участвуешь в этой финансовой системе кровообращения, то будешь на задворках.

И 1C Битрикс и Амо СРМ - рулез!!! Алилуя!!! Что будет через 5 лет, кого этот интересует?

Я это проходил. Многие говорили, что победит Виндовз. Я сделал на них ставку. Я проиграл.
Что дальше? Слушать новых Оракулов?

Вообще то умные люди говорили "Microsoft must die!"
И они таки не ошиблись
В этом легко убедиться, посмотрев статистику популярности браузеров и прочитав фразу в стиле "To install the mssql-server Package on Ubuntu, follow these steps" по адресу docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-ubuntu

Вообще, желательно слушать не Оракулов, а аргументы. И тогда риск ошибиться можно снизить, хотя и не до нуля.
Ранее вы привели очень хороший список:
Дмитрий Concept
Вот если сделать CASE технологию, которая бы была:
1.Простой в изучении и использовании.
2.Дешевой.
3.Гибкой (настраивалась на выходные языки программирования и среды, Фреймворки, интерфейсы и т.д.)
4.Использовала на входе описание модели информационной системы/ПО в популярных нотациях (UML, ER, XML)
5.Поддерживала автоматическое документирование для всех этапов жизненного цикла ПО.

Но если его проанализировать, получается, что в нем есть внутренние противоречия.

Например "Поддерживала автоматическое документирование для всех этапов жизненного цикла ПО."
Это требование действительно очень важное. Любой, кто хоть раз разбирал код, написанный более нескольких месяцев назад (даже если это твой собственный код), с этим согласится.
Причем об этом говорят уже очень долго.
Какие есть работающие решения этой задачи? Я знаю только одно - сам код писать в соответствии с некими стандартами (комментарии, имена функций, оформление и т.д.), чтобы он и был документацией. Никаких других работающих вариантов не придумали. Но если мы будем вручную править текст программы, то зачем нам документировать все на уровне нотаций? И как добиться того, чтобы документация на уровне UML совпадала с тем, что в реальности делает программа?

А теперь убираем из списка пункт "3.Гибкой (настраивалась на выходные языки программирования и среды, Фреймворки, интерфейсы и т.д.)"
И сравниваем с BPM системами. Совпадение очень близкое:
Относительно простые в освоении.
Не очень дорогие (Bonita - open source)
На входе используют описание на популярном языке (BPMN)
Автоматически всё документируют (BPMN с комментариями - это и есть неплохая документация)

Разумеется, всё совсем не идеально, но - достаточно хорошо.

А теперь подумаем - а зачем нам нужен этот очень сложный элемент?
Я говорю о преобразовании
"описание модели информационной системы/ПО в популярных нотациях (UML, ER, XML)" --> "текст программы на ЯП высокого уровня".
Вот какую он несет пользу?
Для обучения - да, иногда полезен. Но в практической работе?

Возьмем простой пример - ACCESS. Большая часть пользователей работает с ним в графическом интерфейсе, рисуя стрелочки и расставляя флажки - и успешно создает относительно простые приложения. Меньшая часть пишет код на SQL. И использует графический интерфейс только в отдельных случаях.
Но например разработать сложный (несколько таблиц со сложными связями) и оптимизированный запрос, используя только графический интерфейс - практически невозможно. То есть как бы мы не изгалялись, сделать такой запрос сможет только квалифицированный специалист, и он это будет делать напрямую в SQL - так проще.

Я это к чему. Сама по себе постановка задачи "на вход загрузить описание алгоритма в популярной нотации" --> "на выходе получить код на ЯП" крайне спорна.

Вот пример относительно простого запроса из процедуры, которую сейчас дописываю:
INSERT INTO [Analysis].[Grouped CoGS Value Entry]
           ([Company ID]
           ,[Item Ledger Entry No_]
           ,[Positive]
           ,[Document Type]
           ,[Document No_]
           ,[Document Line No_]
           ,[ILE Quantity]
           ,[Invoiced Quantity]
           ,[From Value Entry No]
           ,[To Value Entry No]
           ,[To Check (Minimum)]
           ,[Equal (To Process)]
           ,[Cost Amt_(Non-Inv_) Expense])

SELECT
 ve.[Company ID]
,ve.[Item Ledger Entry No_]
,ile.Positive
,ve.[Document Type]
,ve.[Document No_]
,ve.[Document Line No_]
,ile.Quantity as [ILE Quantity]
,invoiced_q_line.[Invoiced Quantity]
,coalesce(ve_prev.[Entry No_],0) as [From Value Entry No]
,ve.[Entry No_] as [To Value Entry No]
,0 as [To Check (Minimum)]
,0 as [Equal (To Process)]
,ve.[Cost Amt_(Non-Inv_) Expense]

FROM           [Analysis].[Track Calculate - VE] as ve

	inner join [Analysis].[Track Calculate - ILE] as ile
		 on ile.[Company ID] = ve.[Company ID]
		and ile.[Entry No_] = ve.[Item Ledger Entry No_]

	inner join [Analysis].[Track Calculate - VE] as invoiced_q_line
		 on invoiced_q_line.[Company ID] = ve.[Company ID]
		and invoiced_q_line.[Item Ledger Entry No_] = ve.[Item Ledger Entry No_]
		and invoiced_q_line.[Document Type] = ve.[Document Type]
		and invoiced_q_line.[Document No_] = ve.[Document No_]
		and invoiced_q_line.[Document Line No_] = ve.[Document Line No_]
		and invoiced_q_line.[Invoiced Quantity] <> 0

	OUTER APPLY
	(select top 1
		ve_prev.[Entry No_]
	from [Analysis].[Track Calculate - VE] as ve_prev
	  where ve.[Company ID] = ve_prev.[Company ID]
		and ve.[Item Ledger Entry No_] = ve_prev.[Item Ledger Entry No_]
		and ve.[Document Type] = ve_prev.[Document Type]
		and ve.[Document No_] = ve_prev.[Document No_]
		and ve.[Document Line No_] = ve_prev.[Document Line No_]
		and ve.[Entry No_] > ve_prev.[Entry No_]
		and ve_prev.[Item Ledger Entry Type] = 1
		and ve_prev.[Cost Amt_(Non-Inv_) Expense] <> 0
	  order by ve_prev.[Entry No_] desc
	) as ve_prev

	where ve.[Item Ledger Entry Type] = 1
      and ve.[Cost Amt_(Non-Inv_) Expense] <> 0

	  and NOT EXISTS
		  (Select * from [Analysis].[Operation Entry (Table)] as exist_op
				where ve.[Company ID] = exist_op.[Item Ledger Company ID]
				  and ve.[Item Ledger Entry No_] = exist_op.[Item Ledger Entry No]
				  and ve.[Entry No_] = exist_op.[Value Entry No]
				  and exist_op.[Initial Value Entry No] <> exist_op.[Value Entry No])
;

Попробуйте его описать в популярной нотации
Засеките время, подумайте, - какие нужны знания для создания такого описания? Будет ли описание в популярной нотации понятнее, чем сам текст запроса на SQL?
И подумайте - кто будет (сможет) на практике пользоваться этим функционалом? И будет ли это легче и быстрее (дешевле), чем писать сразу на SQL?
Например, это могло бы быть дешевле, если использовать специалистов с более низкой квалификацией. Но поможет ли использование графической нотации (интерфейса) написать такой запрос пользователю, который не может его написать на SQL?
10 мар 17, 17:26    [20283091]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
s_ustinov, искреннее спасибо.

Прочитал Ваш пост спустя несколько часов после публикации.
Не смог сразу ответить. Переваривал. Вы несколько тем интересных затронули.
Если честно, то на все ответить до сих пор откровенно даже для себя не могу.

Но.

1.Ваш SQL-запрос - красавец. Но я никогда и не говорил о том, что кодогоенерация заменит программирование. Наоборот, она освободит программистов от рутины, и позволит ТОЛЬКО и писать такие красивые запросы. Я претендую на CRUD, но с учетом зоопарка и моды на технологии, надеюсь найти нишу.

2.Указанная Вами связь с BPM/BPMN весьма уместна, буду думать и работать над этим. Считаю это правильным направлением.

3.Вы меня сподвигли на решительные действия (отдельное спасибо). Подробности в следущем посте.
14 мар 17, 21:50    [20295348]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
Всем! Всем! Всем!

Если Вы читаете это сообщение, скорее всего, Вы понимаете толк в программировании.
И сможете отделить зерна от плевел.

Чтобы продемонстрировать полезность автоматической генерации исходных кодов программ,
я готов абсолютно бесплатно для Вас по Вашему запросу реализовать шаблоны генерации программ в соответствии с Вашими идеями или стандартами.

Должен сообщить, планирую, что с апреля можно будет задавать определение сущности в произвольном виде, а не в рамках предопределенных полей.

Напишите мне о Ваших идеях (лучше пошлите пример кода) и я в течение 3-7 дней разработаю отдельный шаблон, учитывающий Вашу специфику.

Чтобы у Вас не было ощущения в "шапкозакидательстве" сообщу, что в настоящий момент разрабатываю шабон для AngularJS-NodeJS-SequelizeJS-PostgreSQL.

Жду Ваших идей и предложений.
14 мар 17, 22:14    [20295425]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept,

А скрипты только на создание структуры (я пока про БД) или на модификацию тоже?
И что должно быть на входе? Произвольное описание в формате внешней системы (xml\json)?
Если так, то чур я первый)
15 мар 17, 00:21    [20295771]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
dma_caviar
Дмитрий Concept,

А скрипты только на создание структуры (я пока про БД) или на модификацию тоже?
И что должно быть на входе? Произвольное описание в формате внешней системы (xml\json)?
Если так, то чур я первый)


На модификацию тоже.

Высылайте мне на почту (есть в профиле) или публикуйте прямо здесь описание Ваших
сущностей в удобном для себя виде в формате JSON.
15 мар 17, 14:59    [20298232]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept
dma_caviar
Дмитрий Concept,

А скрипты только на создание структуры (я пока про БД) или на модификацию тоже?
И что должно быть на входе? Произвольное описание в формате внешней системы (xml\json)?
Если так, то чур я первый)


На модификацию тоже.

Высылайте мне на почту (есть в профиле) или публикуйте прямо здесь описание Ваших
сущностей в удобном для себя виде в формате JSON.

Например
{
	"TableName": "AM_Accounts",
	"EntityName": "Account",
	"Columns": [
			{
				"Name": "uid",
				"CanBeNull": "false"
			},
			{
				"Name": "Number",
				"CanBeNull": "false"
			},
			{
				"Name": "Name",
				"Descr": "Наименование",
				"CanBeNull": "false",
				"Length": "200",
			},
			{
				"Name": "BankAccountNumber",
				"Descr": "р/с",
				"Length": "20"
			},
			{
				"Name": "BankBIC",
				"Descr": "БИК",
				"Length": "20"
			},
			{
				"Name": "CurrencyID",
				"Descr": "Валюта",
				"CanBeNull": "false",
				"Relation": {
					"Entity": {
						"ID": "024503d1-9164-4ee6-8cb7-7526f77e5a5a"
					},
					"Column": "uid",
					"ParentEntityName": "Currency"
				}
			},
			{
				"Name": "IsOutBalance",
				"Descr": "Внешний",
				"CanBeNull": "false",
				"DefaultValue": {
					"Value": "false"
				}
			},
			{
				"Name": "Deleted",
				"Descr": "Удалено",
				"CanBeNull": "false",
				"DefaultValue": {
					"Value": "false"
				}
			},
			{
				"Name": "FullName",
				"CanBeNull": "false",
				"IsGenerateInScripts": "false",
				"Length": "251"
			},
			{
				"Name": "CategoryID",
				"Relation": {
					"Entity": {
						"ID": "fbe17da2-6000-4a99-ad77-7349e19a38ef"
					},
					"Column": "uid",
					"ParentEntityName": "Category"
				}
			},
			{
				"Name": "ContractorID",
				"Descr": "Контрагент",
				"Relation": {
					"Entity": {
						"ID": "ad82d012-85d2-4948-b8fe-e26fc0f8486b"
					},
					"Column": "uid",
					"ParentEntityName": "Contractor"
				}
			}
		]
}
15 мар 17, 15:55    [20298622]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
dma_caviar,

MSSQL
15 мар 17, 16:11    [20298708]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
dma_caviar,

Хорошо, подходит.
Только, можно еще типы данных добавить?
15 мар 17, 17:16    [20298975]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept,
А ну да, есть там такое, я "подчистил" зачем-то.
MetadataKeyColumn - guid
MetadataStringColumn - nvarchar
MetadataNameColumn - nvarchar
MetadataForeignKeyColumn - guid, внешний ключ, индекс, связь с другой таблицей
MetadataBooleanColumn - bit

{
	"M": {
		"TableName": "AM_Accounts",
		"EntityName": "Account",
		"Columns": {
			"MetadataBaseColumn": [
				{
					"Name": "uid",
					"CanBeNull": "false",
					"_xsi:type": "MetadataKeyColumn"
				},
				{
					"Name": "Number",
					"CanBeNull": "false",
					"_xsi:type": "MetadataStringColumn"
				},
				{
					"Name": "Name",
					"Descr": "Наименование",
					"CanBeNull": "false",
					"Length": "200",
					"_xsi:type": "MetadataNameColumn"
				},
				{
					"Name": "BankAccountNumber",
					"Descr": "р/с",
					"Length": "20",
					"_xsi:type": "MetadataStringColumn"
				},
				{
					"Name": "BankBIC",
					"Descr": "БИК",
					"Length": "20",
					"_xsi:type": "MetadataStringColumn"
				},
				{
					"Name": "CurrencyID",
					"Descr": "Валюта",
					"CanBeNull": "false",
					"Relation": {
						"Entity": {
							"ID": "024503d1-9164-4ee6-8cb7-7526f77e5a5a"
						},
						"Column": "uid",
						"ParentEntityName": "Currency"
					},
					"_xsi:type": "MetadataForeignKeyColumn"
				},
				{
					"Name": "IsOutBalance",
					"Descr": "Внешний",
					"CanBeNull": "false",
					"DefaultValue": {
						"Value": "false"
					},
					"_xsi:type": "MetadataBooleanColumn"
				},
				{
					"Name": "Deleted",
					"Descr": "Удалено",
					"CanBeNull": "false",
					"DefaultValue": {
						"Value": "false"
					},
					"_xsi:type": "MetadataBooleanColumn"
				},
				{
					"Name": "FullName",
					"CanBeNull": "false",
					"IsGenerateInScripts": "false",
					"Length": "251",
					"_xsi:type": "MetadataStringColumn"
				},
				{
					"Name": "CategoryID",
					"Relation": {
						"Entity": {
							"ID": "fbe17da2-6000-4a99-ad77-7349e19a38ef"
						},
						"Column": "uid",
						"ParentEntityName": "Category"
					},
					"_xsi:type": "MetadataForeignKeyColumn"
				},
				{
					"Name": "ContractorID",
					"Descr": "Контрагент",
					"Relation": {
						"Entity": {
							"ID": "ad82d012-85d2-4948-b8fe-e26fc0f8486b"
						},
						"Column": "uid",
						"ParentEntityName": "Contractor"
					},
					"_xsi:type": "MetadataForeignKeyColumn"
				}
			]
		},
		"Designer": {
			"ID": "FE3DA424-1139-418A-B184-5951D0A19FAA"
		},
		"Permissions": {
			"Permission": {
				"ID": "c3038795-84f9-47fd-8851-5b543a79be72",
				"Name": "Admin",
				"Descr": "Привилегия администратора"
			}
		},
		"_xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
		"_xmlns:xsd": "http://www.w3.org/2001/XMLSchema"
	}
}
15 мар 17, 18:04    [20299151]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
dma_caviar,

Ok. В начале следующей недели напишу и покажу, что получилось.
15 мар 17, 18:19    [20299199]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
s_ustinov
Member

Откуда: Lugano, CH
Сообщений: 1750
Дмитрий Concept
Чтобы продемонстрировать полезность автоматической генерации исходных кодов программ,
я готов абсолютно бесплатно для Вас по Вашему запросу реализовать шаблоны генерации программ в соответствии с Вашими идеями или стандартами.

Должен сообщить, планирую, что с апреля можно будет задавать определение сущности в произвольном виде, а не в рамках предопределенных полей.

Напишите мне о Ваших идеях (лучше пошлите пример кода) и я в течение 3-7 дней разработаю отдельный шаблон, учитывающий Вашу специфику.

Чтобы у Вас не было ощущения в "шапкозакидательстве" сообщу, что в настоящий момент разрабатываю шабон для AngularJS-NodeJS-SequelizeJS-PostgreSQL.

Я несколько дней думал, что может быть мне полезно...
И ничего не придумал

Я занимаюсь очень "прикладными" вещами. Есть ERP система (сейчас NAV, но работал и с другими), для которой пишу отчеты и / или куски функционала. Причем написание кода не основная моя задача - я в основном консультант, а не разработчик. :) И основная моя ценность в том, что я знаю, как это должно работать (могу придумать алгоритм, решающий определенную бизнес-задачу, и написать ТЗ), а не в том, что умею реализовать алгоритм на конкретном ЯП.

Насколько я понимаю, примерно такие специалисты и являются вашей целевой аудиторией. Но у меня нет задач, которые можно решать с помощью этого инструмента. Для создания табличек в базе - копипаст + редактирование прекрасно решают мои задачи (для каждой задачи требуется создавать в основном не больше десятка табличек).
Написание SQL кода - мне НАМНОГО проще сразу писать на SQL, чем пытаться описать это в какой-то нотации и потом всё равно править сиквел.
Написание кода на специфическом языке системы (C/AL (язык навижина), язык 1С, ABAP) - создавать генерацию такого кода не в платформе просто глупо, так как ЯП не универсальный. Да даже для универсального ЯП (compiere/adempiere/idempiere использует java) - как именно подобный сервис сможет сгенерировать код, если мне надо, например, НЕМНОГО доработать алгоритм расчета себестоимости основных средств?

А вот BPMN в данном случае может пригодиться. Можно рассматривать куски функционала системы (фин учет, расчет себестоимости, учет товародвижений и т.п.) как "микросервисы", которые будет "дергать" BPM система через те же веб-сервисы (почти во всех системах сейчас есть возможность интеграции с другими системами через веб сервисы). То есть BPM будет находиться на уровень выше "модулей" - мы повышаем уровень абстракции, и во многих случаях это будет полезно и, главное, будет работать.
18 мар 17, 13:23    [20308642]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
dma_caviar, приветствую!

Я написал адаптер для загрузки описания сущности (таблицы) из Вашего формата JSON во внутренний формат WEB сервиса.
Соответственно, для него доступны все имеющиеся шаблоны генерации, в т.ч. SQL.
Посмотреть можно по ссылке: http://gendoc.ru/cgi-bin/gcadapter.htm

Теперь нужно уточнить у Вас, что нужно получить на выходе.
Можно поправить имеющийся шаблон для SQL, можно генерить хранимые процедуры MS SQL.
Хорошо, если Вы напишете, на каком языке программирования должно быть написано приложение-клиент и как оно должно осуществлять передачу (подстановку) параметров в команды SQL.

К сообщению приложен файл. Размер - 46Kb
20 мар 17, 09:50    [20312489]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Дмитрий Concept
Member

Откуда: Москва
Сообщений: 130
s_ustinov, добрый день!

Все верно, так и есть.
Вам не нужно морочиться с генерацией кода, если Вы:
1) Опытный профессионал, имеющий свою устойчивую нишу.
2) Работаете в рамках сложившейся и замкнутой технологии (особенно характерна для ERP).
3) Работаете на проекте с большой/длительной историей.

Потребность в генерации (в том числе - ПЕРЕгенерации, ДОгенерации) эффективна, если возникает потребность:
1) Для новых разработок.
2) Перехода на новые платформы/языки программирования/фреймворки/библиотеки.
3) Переноса (выноса из существующей системы) части функционала в другую (заново разрабатываемую) систему.
4) Разработки внешних интеграционных интерфейсов.

Ваша идея соединения технологии BPM с результатами кодогенерации - мне нравиться.
Таким образом, можно было бы обеспечить стандартизацию вызовов сервисов/методов в определенном BPM движке.
20 мар 17, 13:10    [20313624]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
Дмитрий Concept,

Не, нужно только create table и alter table.
Правда alter пока не понятно как делать. Надо наверное тогда два json-а передавать до изменений и после. Чтобы сгенерился скрипт alter.
Еще не нужно sys_id, uid - это uniqueidentifier и нету NULL, NOT NULL.
И еще API, через который можно дергать сервис))
20 мар 17, 13:20    [20313680]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
dma_caviar
Member

Откуда: http://itproduct.ru
Сообщений: 1941
dma_caviar,

Ну и еще возможность править шаблоны через личный кабинет. Не будут же ваши потребители постоянно вас дергать.
20 мар 17, 13:22    [20313692]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1656
1) Для новых разработок.- сомнительная выгода - структуры данных рождаются синхронно и взаимозависимо с алгоритмами, при уточнении требований - чистый ==водопад== - когда сначала появилась вся до последней запятой постановка, и потом по ней ничего не меняя пишут код - редкость.

2) Перехода на новые платформы/языки программирования/фреймворки/библиотеки.
тут данные уже обычно описаны, в слое метаданных базы, и надо их правильно прочитать

3) Переноса (выноса из существующей системы) части функционала в другую (заново разрабатываемую) систему.
логическая и смысловая и техническая изоляцие фрагмента - это труд, по сравнению с которым генерирование кода CRUD не так сильно портит нервы

4) Разработки внешних интеграционных интерфейсов.
Вот всякий ETL - это да, но тут хорошо бы как раз получать метаописание с живых данных - а так, руками нагенерять иксэмэльное или json - описание чтобы по нему система сгенерировала таблички - не очень интересно.

Не хватает какой-то изюмины, ради которой можно плюнуть на остальные шероховатости.... вот в руби-на-рельсах, на момент когда они родились, изюмина была. этот робот сделает за меня простую работу, с которой я и сам неплохо справляюсь, оставляя разгребать самостоятельно завалы и нестыковки - такое впечатление. Именно концептуальной дорожной карты - это что и для чего.
21 мар 17, 09:43    [20316265]     Ответить | Цитировать Сообщить модератору
 Re: WEB сервис генерации программного кода  [new]
alex55555
Member

Откуда:
Сообщений: 289
Vladimir Baskakov
Не хватает какой-то изюмины

Изюмину коротко называют ИИ. Ну а длинно - это все технологии, которые могут быть использованы при создании ИИ. Всяческие генерации не решают ничего, поскольку решают давно решённую типовую задачу. А вот интеллекта добавить - сразу всем изюм понравится. И здесь давно уже масса авторов тренировалась. Все они начинали с такой же идеи, что и автор темы. И все закончили на этапе красивого генерения табличек при помощи менюшек. А вот логику приложения все они реализуют только типовую, то есть ими же давно описанную и формализованную, а затем переведённую в код, который генерит новый код.

Дмитрий Концепт

Вам специально повторю - забейте на генераторы и займитесь ИИ. Вот начали что-то там про естественные тексты - туда и копайте, раз интересно. И все авторы подобного вашему кода в конце концов именно в ИИ упираются, точнее в неумение его реализовать. Но процесс идёт, умение тренируется и лет через 10-20-30 кто-то обязательно сумеет. Ну и тогда всех нас выставят на продажу в игру "Сафари" в качестве, естественно, мишени. Хотя у всех Дмиртиев Концептов на этом пути есть альтернатива - подумайте о будущем и возможно вашему стремлению к идеалу не понравится всё то безобразие, которое вы увидите в своих мыслях. И тогда ковыряйте своё творение с простым прицелом - что бы избежать "Сафари". Хотя бы так, гении вы этакие, по дороге к аду идущие.
22 мар 17, 13:52    [20321151]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
Все форумы / Разработка информационных систем Ответить