Pull to refresh
64
1.6

Programmer

Send message

Ну так и оформить ее как пост в несколько предложений. В общем-то вся полезная нагрузка статьи в них и умещается - создали язык, вроде как есть поддержка ФП и ООП, статическая типизация и что-то мутное насчет сочетания с естественным языком.

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

да, конечно, опечатка вышла))

Вообще (в идеале) работа с синтаксическими деревьями и создание синтаксических макросов до должны быть сложнее чем работа с HTML DOM и простейший JavaScript. Но увы, эта вообще не сильно развита, очень немногие языки поддерживают, а те которые поддерживают - делают это слишком сложно, и пока нет общепринятых сразу для многих языков подходов и договоренностей, хотя-бы об именах и синтаксисе. Не вдаваясь глубоко, первое впечатление - в Swift тоже всё как-то переусложнено.

А зачем в синтаксическом дереве хранить скобки и двоеточия, если это чисто лексические элементы и они по идее должны уходить в саму структуру дерева? Т.е. к примеру скобки - это то что формирует дочернюю ноду определенного типа.

Браузер в современном мире это что-то вроде ОС верхнего уровня. Фактически, основная программа, наиболее часто используемая, и вполне сопоставимая с операционной системой.

Я прекрасно знаю как xor работает, постоянно его использую:)

X Y X^Y
0 0  0
0 1  1
1 0  1
1 1  0

Таким образом, если вы случайно вызовете метод remove() для некоторого бита два раза (в общем случае четное число раз), то результат будет такой же, как если бы вы его вообще не вызывали. Что принципиально отличается от add(), который можно вызывать какое угодно число раз - бит всегда будет устанавливаться в единицу. Также работа remove() будет зависеть от текущего состояния бита, а работа add() - нет.

С подключением! Простите за резкость, но вы явно не программист на C++. Вы из какого языка пришли в статью о C++? Из C? (Это риторический вопрос)Такой ситаксис появился ещё в 2011 году.

Что, простите? Вы не знаете как XOR работает?

Как удачно совпало:) В вашем коде полно шаблонов (да еще и вариадических), constexpr'ов, static_cast'ов и прочего, все написано в лучших традициях "современного С++". Но все эти навороты вам не помогли - вы допустили ошибку, применив XOR, который инвертирует значение на противоположное вместо того, чтобы его обнулять, что ожидается по смыслу от функции с именем remove().

Подозреваю, что если кто нибудь в MSVC или GCC внезапно поменяет порядок битов в битовых полях, это будет проблема покруче чем проблема 2038 года".

Впрочем, то что комитет до сих пор этот порядок не стандартизировал, а вместо этого заставляет людей писать тонны бессмысленного бойлерплейтного кода, не делает им чести. Возможно существуют какие-то экзотические компиляторы, где порядок битов другой, и поэтому не хотят стандартизировать? Для этого в том же стандарте прописать некое требование к разработчикам компиляторов, чтобы они выпускали документы, в которых четко прописывали, как в их компиляторах разрешаются все эти "UB". Но это уже по сути бюрократия, мне не особо интересная:)

Компилятор - штука детерминориванная. Или вы хотите сказать что встречая UB компилятор каждый раз обращается к генератору случайных чисел чтобы решить какой код генерировать? От младших битов к старшим или наоборот размещать битовые поля?

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

Писал чисто на интуиции (хотя до этого некоторое время тренировался на вот этом: https://habr.com/ru/articles/774908/, но там получается хуже чем то что я показал здесь). Мой промпт примерно соответствует рекомендациям, хотя эти рекомендации в целом и так понятны. Думаю, что имеет смысл писать по английски или простыми русскими предложениями (там же наверняка еще и программа-переводчик работает). Еще кажется нужно повторять важные моменты несколько раз разными словами, как раз это я и не сделал:)

Ваш сервис к сожалению не предоставляет бесплатный доступ к Midjourney :( Но я нагуглил какой-то другой, который предоставляет. Рекламировать не буду, просто покажу результат.

Вот такой промпт. По сути - красиво, но формально это не то что я хочу.

Класс в Хогвартсе, общий вид с последней парты. Профессор Минерва МакГонаголл с волшебной палочкой стоит на кафедре у классной доски, на которой мелом написано множество сложных формул высшей математики и графиков функций.
Ученики в мантиях сидят за старинными партами. На партах лежат толстые старинные книги, у некоторых учеников современные ноутбуки. Профессор МакГонаголл держит в поднятой руке волшебную палочку, из которой выходит шлейф светящегося тумана. В пространстве класса над головами учеников свободно парят полупрозрачные светящиеся разными цветами трехмерные фигуры, созданные магией: тетраэдры, кубы, додекаэдры, икосаэдры и другие. Некоторые фигуры соединены полупрозрачными светящимися линиями, в некоторых местах полупрозрачные светящиеся буквы и символы. Ученики смотрят на эти фигуры и что-то конспектируют.

Оно мне сгенерировало 4 картинки в одной.

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

Splicers - [:R:]

Баян! )))

В какую же хрень превратился современный С++ :( На такую простую конструкцию столько писанины, не делающей ничего полезного и нужной лишь для формального выполнения многочисленных требований и ограничений "правильного" с точки зрения последних стандартов кода.

Кстати вот здесь

constexpr void remove(EnumType condition) noexcept
{
    value ^= static_cast<EnumUnderlyingType>(condition);
}

не remove, а инверсия. Удаление это value &= ~static_cast❮EnumUnderlyingType❯(condition);

Ну а вообще есть битовые поля.

struct Conditions
{
    unsigned Initialized : 1;
    unsigned HasFocus    : 1,
    unsigned HasWindow   : 1,
    unsigned Visible     : 1,
};

И далее все просто

Conditions c;
c.Initialized = 1;
if(c.HasFocus) foo();
if(c.Visible && !c.HasWindow) bar();

При желании можно еще завернуть в union и получить доступ ко всем полям сразу.

ИМХО в инфографике бы лучше исправить круговую диаграмму, чтобы сектора были пропорциональны процентам, а не все одинаковые.

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

Лично для меня во всей этой истории остается неясным (или неозвученным) одно: спецслужбы какого государства оказывали финансовую, организационную и информационную поддержку проекту Wikileaks?

Даже не знаю что написать в комментарии:) Это реально очень круто, но я потерялся где-то не дойдя до середины, хотя понятно что это очередное нестандартное использование языка. А для рефлексии времени компиляции в большинстве случаев прекрасно подходят старые сишные макросы. А там обычно однотипная задача: описать некоторый список кортежей, который можно использовать для разных целей: объявить из него поля структуры, сделать массив значений, обработать в цикле, загрузить в GUI, сделать сериализацию.

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

Сегодня утром включаю комп на работе, а он мне "Обновляются политики безопасности", "Обновляются политики домена" и чего-то там еще. И я подумал - а ведь надпись "Обновляются политики Партии и Правительства" смотрелась бы там весьма органично... А оказывается уже все придумано:)

Information

Rating
1,472-nd
Registered
Activity