Alexey
Пролог прикольная вещь, ты чо.
А есть какие-то разумные программы, написанные на нём?
🐙 Antony
Пролог прикольная вещь, ты чо.
это не отменяет его бессмысленности :)
Крылатый
А есть какие-то разумные программы, написанные на нём?
Есть, но малораспространены. Узкая специализация.
Anatoly
А мне довелось увидеть на прологе систему управления подъемниками и турникетами на лыжном курорте в ленобласти. На вопрос "нах..я" был выбран именно пролог так толком никто не ответил.
Крылатый
это не отменяет его бессмысленности :)
Если применяется, пустьи крайне узко, значит уже не бессмысленный.
Крылатый
О смысленности пролога, думаю, можно побеседовать вот тут: https://t.me/joinchat/AkxcTEMQENX1pfPjR0UhPA
Крылатый
Специальный чатег по общим вопросам погроммирования.
Крылатый
Anonymous
его начнут использовать только лет через 5 минимум
Все компиляторы, не считая студийный, очень хорошо поддерживают С++17. Подожди полгода - год и студийный тоже подтянется :) Другое дело - если в фирме есть какие-то ограничения
Anonymous
Сейчас пруф скину, сек
Anonymous
http://en.cppreference.com/w/cpp/compiler_support clang и gcc все основные фишки поддерживают, а вот у msvc куча недочетов
Anonymous
а, сори тогда что ворвался в тред, виноват
Anonymous
а кто-нибудь реализовывал нормальную рефлексию, не сильно зависимую от компилятора? Видел попытки на CPPCON, но там была рефлексия с огромным кол-вом допущений и ограничений
Крылатый
Ваше очень важно для нас (нет).
Aidar
Через 18 лет
Andrey
http://en.cppreference.com/w/cpp/compiler_support clang и gcc все основные фишки поддерживают, а вот у msvc куча недочетов
да, компиляторы успевают, а вот люди не любят следить за новшествами и работают по странному техпроцессу. знаю тех, кто до сих пор юзает 98 стандарт
ep
Прикинь, да
ep
Разработчик, который там работал, говорил, что они всё переписали.
Anonymous
Да по факту многие фишечки того же С++11 спокойно реализуются средствами С++98. Да, конечно, далеко не все, но все же Если кодобаза большая - то её придется долго под другой стандарт переписывать (да и нужно ли?) :) Другое дело - когда кода не очень много, ну или работаешь один
Arseny
А зачем нужна рефлексия и почему все с ней так носятся?
Anonymous
+++ Ну, правда, всякие там for(Type a : blah) не напишешь. Да и смысл auto был немного в другом можно заменить разве что на какой-то макрос, ну или заюзать компиляторозависимую штуку
Anonymous
а, и лямбд нету. Они бывают довольно удобны, но и без них жить можно
Anonymous
ага
Anonymous
А зачем нужна рефлексия и почему все с ней так носятся?
Можно получить информацию о методах и полях (название, количество аргументов, возвращаемый тип и т.п.), а так же информацию о базовых классах Как минимум можно реализовать сериализацию ЛЮБОГО класса ровно одной строкой. Да и прикреплять всякие СЯП куда проще
Anonymous
отголоски этого есть, аля typeid - но все же это все не то
Anonymous
Потому что это уберполезно.
Угу. Все надеялись что в С++17 добавят, но в комитете все разругались (было несколько вариантов реализации статической рефлексии, не смогли выбрать самый удачный)
Aidar
Только для этого кажись
Anonymous
Только для этого кажись
Только это не ограничивается "записать экземпляры в файлик"
Anonymous
Вот другой пример:
Arseny
Именно статическую рефлексию хотят сделать?
Aidar
Не вижу профита
Anonymous
редактор карт. Ты можешь увидеть свойства у объектов и их менять так, как душе удобно. И для этого тебе не надо руками регистрировать переменные
Anonymous
Именно статическую рефлексию хотят сделать?
Хотели добавить в С++17, а как сейчас - не знаю. Ждем С++20
Aidar
Добавил поле но забыл что оно учитывается в компораторе
Александр
для этого нужно делать кастомные атрибуты, которые определяли бы, нужно ли сериализовать поле
Anonymous
Добавил поле но забыл что оно учитывается в компораторе
Александр намекает на то, что с рефлексией такой проблемы банально не будет. Ты сможешь одной командой получить список полей и обработать их корректно. Добавилось новое поле - не страшно, код менять не надо
Александр
Да го сразу новые модификаторы чо уж там
фактически, атрибуты + рефлексия - замена модификаторам
Aidar
Зачем тогда си++
Anonymous
Зачем тогда си++
Работа с памятью
Aidar
Я имею
Arseny
Если статически, то действительно круто выходит. Динамически - уже какая-то джава. В rust есть derive, у него в чём-то схожая функциональность. Можно автоматически генерировать классу функции.
Anonymous
#holywar ?
Aidar
Кстати есть где-то перечисление всех вариантов рефлексии которые рассматривали?
Aidar
Потомучто имена там на самом деле данные
Anonymous
@arseny ну сначала в любом случае статика будет. Если динамику добавят - то они её как-то хитро обыграют (например, компилятор будет автоматически пытаться использовать статическую рефлексию, если это возможно)
Anonymous
но так-то да, статики более чем достаточно
Aidar
И так от констекспр плевался
Anonymous
Я хочу явно видеть компильтайм всегда
А что делать, если ты работаешь с dll, причем либа часто перекомпилируется, меняются методы и поля (и тебе надо за изменениями следить)?
Anonymous
т.е. интерфейс остается тем же
Anonymous
а вот реализация...
Aidar
т.е. интерфейс остается тем же
Ну ты через него же работаешь
Aidar
Тебе больше ничего не нужно
Aidar
Или ты думаешь тебе позволят доставать то что не объявлено?
Aidar
Выглядит как дрисьня
Anonymous
а как ты через интерфейс получишь список полей, м? В нем-то всего лишь чисто виртуальные методы
Aidar
Или ты думаешь тебе позволят доставать то что не объявлено?
Aidar
Выглядит как дрисьня
Anonymous
не хочу лезть в субъективщину
Aidar
позволят, ещё как
Нельзя так делать
Aidar
Это нарушение инкапсуляции кажется
Anonymous
Ну вот смотри, друг
Aidar
Не буду
Aidar
Это дичь
Aidar
Все
Anonymous
Тогда к чему все это? Монолог?
Anonymous
Допустим мы разрабатываем игрушку. Есть интерфейс сущности IEntity. Все новые виды сущностей (монстры, окружение и т.п.) наследуются от IEntity и переопределяют виртуальные методы Вот мы дошли до редактора карт, в котором мы расставляем эти сущности (объекты). Как изменять свойства объекта, как их читать? Интерфейс - просто перечисление чисто виртуальных методов. Перекомпилировать редактор карт каждый раз? =))
Anonymous
Редактор карт знает лишь о каком-то IEntity, не более
Aidar
Редактор карт знает лишь о каком-то IEntity, не более
Ну выбери чем будет IEntity. Кажется ты хочешь контейнер свойств. Только непонятно зачем тебе релексия если это явно контейнер
Aidar
Динамическая рефлексия всегда сводится к контейнеру