- 1
Конструктор по умолчанию?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Конструктор по умолчанию?
Не, не слышали.
Рефлексией итерируемся по свойствам и вызываем функцию инициализации полей ))))))))))))))
guest # 0
guest # 0
а что за яп?
guest # 0 ⇈
guest # 0 ⇈
в говне нет конструкторов, там можно присвоить значения полям по умолчанию, либо сделать функцию, которая заполняет нужную тебе херню
guest # 0 ⇈
Я хочу проинициализировать все Detali по умолчанию = []int{1,2,3}, как мне это сделать?
guest # 0 ⇈
и кстати я напиздел, значения по умолчанию присвоить нельзя
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
ты бугуртишь от отсутствия коснтрукторов по умолчанию в Го, и рефлексия это единственное решение
j123123 # 0 ⇈
[email protected] # 0 ⇈
j123123 # 0 ⇈
А вообще, для подобного рода хуйни нужен говномеханизм для инспекции структур, т.е. чтобы тип структуры можно было обходить как дерево, который бы можно было в компилтайме использовать и через него делать синтез неких функций. Чтоб такую хуйню не только для каких-то "конструкторов" использовать, а вообще хуй пойми для чего. Короче, надо чтоб гомоиконность.
guest # 0 ⇈
гомоиконность нужна
Steve_Brown # 0 ⇈
close enough.
kcalbCube # 0 ⇈
guest # 0 ⇈
j123123 # 0 ⇈
А в крестах можно написать нечто для автоматического печатанья хуйни, если для вложенной хуйни определены методы печатанья хуйни?
Ну допустим есть класс для точки в декартовых координатах:
Я например хочу чтобы если я напишу класс с кучей точек
И чтобы если у переменных внутри класса нет метода print_shit(), то тогда пусть компиляция ломается
j123123 # 0 ⇈
guest # 0 ⇈
Почему ты не пишешь на lisp?
bootcamp_dropout # 0 ⇈
j123123 # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
Если пистон компилируется 0 секунд и падает в рантайме а кресты компилсяются 30 секунд и падают во время компиляции, то кажется что питон с точки зрения продуктивности оптимальнее
guest # 0 ⇈
Кроме того, проверка в рантайме тоже занимает время
bootcamp_dropout # 0 ⇈
Во втором случае неочевидно, будет ли программа написана в принципе
guest # 0 ⇈
Если это софт для авионики, то я предпочел бы второй вариант:)
bootcamp_dropout # 0 ⇈
На коке или идрисе никто особо не пишет
guest # 0 ⇈
Но у j123, насколько я понимаю, горит от половинчатости решения: в С++ завезли какую-то метушню, которой можно решить несколько задач. Потом начали добавлять костыли, по костылю на каждый кейс (std::is_хуе_мое).
j123 предлагает решить проблему на корню, а не ставить костыли.
Но конечно это всё не бесплатно: статическеий анализ такого кода всегда будет тюринг полным и IDE будут сосать
j123123 # 0 ⇈
Статический анализ крестоговна и так тьюринг-полный т.к. шаблонопарашное метапрограммирование уже есть, и оно тьюринг-полное. И constexpr-ы кстати тоже тьюринг-полные
guest # 0 ⇈
Тут более-ли-менее четкая граница между метаговном, и говном. А в случае полной гомоиконности её же не будет
j123123 # 0 ⇈
guest # 0 ⇈
Грубо гря так (птичий язык)
CkpunmoBbIu_nemyx # 0 ⇈
j123123 # 0 ⇈
guest # 0 ⇈
Пробежаться по всем полям, и проверить их по случайному условию вроде бы никак нельзя?
guest # 0 ⇈
Еще десять лет назад по говнокоду бегал петух, и говорил, что дескать в С++ два разных языка (для комплайт тайма и для рантайма) и что он вынужден два раза писать одно и тоже, как сраных ПХПшник, который пишет бизнес-логику один раз на ПХП, второй раз на джаваскрипте, и потом еще в mysql тоже самое пишет, и что не плохо бы в С++ как-то унякфицировать всё
Слово "Гомоиконность" еще тогда не было тут зафорщено
guest # 0 ⇈
guest # 0 ⇈
j123123 # 0 ⇈
Покажи-ка мне, как C++ решает задачу из https://govnokod.ru/27403#comment626280
guest # 0 ⇈
Я уж молчу о том, что компилятор может твои локлаьные переменные и вовсе уконтропупить
j123123 # 0 ⇈
guest # 0 ⇈
А какой язык (кроме гомоиконных типа лиспа) это решает?
j123123 # 0 ⇈
В языке D это можно было б легко решить, если там через рефлекшен можно каким-то образом получить список локальных переменных
https://dlang.org/phobos/std_traits.html - но подобной хуйни я что-то не вижу. Там есть какие-то блядь isAbstractClass, isAbstractFunction, isCallable, isDelegate и прочие "isPituz", но способа получить локальные переменные, доступные в таком-то там месте какой-то функции там похоже что нет.
Т.е. в D это простым способом не решается, но кое-как черезжопно это все ж можно решить, через миксины и написание парсера
j123123 # 0 ⇈
Но сам ты такого говна написать не можешь, не влазя в кишки компилятора. А если б была гомоиконность, ты б что угодно мог нахуевертить. Поэтому я за гомоиконность
guest # 0 ⇈
guest # 0 ⇈
https://jmusacchio.github.io/blog/2016/groovy-ast-transformations/
j123123 # 0 ⇈
guest # 0
guest # 0
nyTuH_nugop-Govno # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0
https://twitter.com/microrjomba/status/1559878324582862851
ISO # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
nyTuH_nugop # 0 ⇈