LINUX.ORG.RU

Кодогенерация в Go

 , , ,


1

6

Сабж, чем делать? От text/template пригорает уже, даже от модифицированной версии с multiline блоками и прочими плюшками. Формировать ast дерево каждый раз - походу не лучше, много лишнего даже для простейших вещей. Есть готовые решения? Или опять придётся свою абстракцию пилить?

Генерировать приходится много и часто, и хотелось бы как-то от этого процесса удовольствие получать.

Есть готовые решения?

Сменить ЯП

foror ★★★★★
()

Что-то я немного в ступоре от прочтённого, если считать что эти все слова должны были выразить одну тему.

Если нужны генерики - их есть для go, но лучше не нужно, потому что всё лютый хлам; и вообще это пока языком не предусмотрено, потому вдвойне не нужно. Лучше найти инструмент под задачу, а не фанатеть.

iu0v1
()
Ответ на: комментарий от beastie

Пфф. Значит я уже перегрелся за сегодня.

PS: тогда по теме сказать нечего, подпишусь :)

iu0v1
()

чутка не по теме... раз уж про кодогенерацию заговорили. а есть какой-то пример, который бы демонстрировал преимущество «кодогенерации»? из личного опыта, все что видел в реальной жизни проистекало из скудоумия девелопера (прям сейчас вынужден жить с наследием). вот и задаюсь вопросом о реальной потребности сего паттерна в прикладных задачах (не о написании компиляторов, разумеется).

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

umren ★★★★★
()
Ответ на: комментарий от umren

когда тебе нужно нагенерировать

вот об этом и спрашиваю... _когда_? какие реальные прикладные кейсы? что именно может вызвать у меня такую нужду?

Deleted
()
Ответ на: комментарий от Deleted

Например стремление получить эффективный парсер и не программировать при этом не вполне очевидную стейт-машину (смотри yacc и всех его продолжателей). Также приходилось генерировать структуры описывающие химические элементы их xml'ки и таблицу соответствия имени символа и его кейкода из линуксового заголовка.

KblCb ★★★★★
()
Ответ на: комментарий от Deleted

кодогенерация не нужна. if и goto достаточно для всего.

anonymous
()
Ответ на: комментарий от Deleted

какие реальные прикладные кейсы? что именно может вызвать у меня такую нужду?

Посмотрите в сторону lex/yacc (flex/bison), coco/r, ragel, antlr, re2c. Или в сторону CORBA IDL (to Java, C++, C#, Ruby) или Ice от ZeroC.

eao197 ★★★★★
()
Ответ на: комментарий от iu0v1

Если нужны генерики - их есть для go

Да?

anonymous
()

Генерировать приходится много и часто

Ловил я много, ловил я часто, Пираний тоже я ловил. А как-то раз, с огромной пастью Попался прямо крокодил.

Ну, порт handlebars, например. Или другие template engines.

anonymous
()
Ответ на: комментарий от Deleted

В нормальных языках кодогенерация не нужна, но в Go нет ни дженериков ни нормальных макросов, так что гофагам приходится извращаться.

nonimous
()
Ответ на: комментарий от nonimous

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

umren ★★★★★
()
Ответ на: комментарий от Deleted

Для статической безопасности кода можно использовать, например. man Reverse Routing в Play! или Revel.

RussCox
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.