Не Чайковский, но (при достаточно мощной и качественно обученной нейросети) гораздо ближе к тому, что мог бы написать Чайковский, по сравнению с любыми аналогичными завершениями, сделанными людьми (даже если это не Киркоров с Басковым а какой нибудь гениальный современный композитор).
Вообще не понимаю зачем их заменять. Современные карты - они же не используют магнитную полосу, там нечему портиться от времени кроме самого пластика, а он достаточно долговечен.
Спасибо, программу обязательно попробую. Но моё сообщение скорее не о личной необходимости в каких-то конкретных символах, а о том что эти символы уже не станут такими распространенными, как ASCII. А чтобы они стали массовыми, нужно именно физическое появление символов на клавиатурах.
Я вот думаю что существующих символов мало. Особенно для языков программирования, где символы "больше" и "меньше" используются также как угловые скобки, что создает серьезные трудности при парсинге. Т.е. нужны как минимум еще несколько пар скобок - например 〈 〉 ⟦ ⟧ , может быть неплохо было бы иметь стрелки → ← ↑ ↓ ↗↘ ↖↙ и треугольники ▷ ◁ ∆ ∇, некоторые математические символы ∀∃ ⊕ ⊗ ∅ ∈ ∋ ∞∩ ∪ ∧ ∨, еще что-то типа ✅ ◇ ⃞
По идее это еще одно значение (или даже два) для каждой алфавитно-цифровой клавиши. Хотя наверное время уже ушло, и сейчас никто не будет выпускать клавиатуры с какими-то новыми символами.
Не знаю что и сказать. Рад за С++, что он развивается, рефлексия это реально важная вещь для языков программирования; но примеров кода не понял вообще (последнее время пишу в основном или на чистом Си или на Qt5)
А рефлексию (для енумов и не только) я делаю вот так:
#define LIST \
ITEM(ONE, "hello", x) \
ITEM(TWO, "world", y) \
ITEM(THREE, "!", z)
// перечисление
#define ITEM(a, b, c) a,
enum Foo {
LIST
};
// имена элементов перечисления
#define ITEM(a, b, c) #a,
const char *names[] = {
LIST
};
// ассоциированные строки
#define ITEM(a, b, c) b,
const char *strings[] = {
LIST
};
// и т.д. - декларация структуры, имена полей структуры, аргументы функции, что угодно
Самое прикольное что эта фича работала еще до появления самого С++, более того она, вероятно, была еще когда меня на свете не было:) Но в книгах этого приема обычно нет, и люди мучаются, выдумывая всякие костыли или просто тупо вручную пишут код и рискуют однажды забыть дописать очередной элемент.
Это понятно. Всякие SHA-2 действительно требуют полного пересчета при изменении хотя-бы одного байта файла. Но разным файлам нужны разные контрольки (а некоторым и вовсе никакие не нужны, кроме разве что обязательной системной). У множества файлов, которые по смыслу "только для чтения" (книги, фотки, музыка, фильмы, исполняемые бинарники) контролька считается один раз при появлении файла в системе. А именно такие файлы являются основным контентом для файлообмена.
Можно ввести в атрибуты файла теги вида "контролька+таймштамп", и обновлять контрольную сумму только тогда, когда она необходима и таймштамп отличается от текущего для файла. А есть еще инкрементальные алгоритмы, для них проще: при переписывании блока вычитаем его старую сумму (тем же XOR) из общей суммы и добавляем сумму нового блока.
8.3 это да, давно уже не надо. А контрольные суммы - полезная вещь, рад что до этого додумались. Считаю что основные хеш-суммы должны быть на уровне ФС и по возможности сами обновляться при сохранении файлов (инкрементальные алгоритмы), это тоже одна из моих хотелок вместе с тегами, а также очень удобно для всяких p2p сетей (хотя подозреваю что в ReFS используется что-то свое узкоспециализированное).
Это как вообще? Даже жесткие ссылки, которым сто лет уже, и то не поддерживаются? От ADS отказались? То есть это не развитие а какой-то откат назад.
А вообще напрашивается мысль о какой-то единой open-source файловой системе, которая могла бы использоваться и в винде, и в линуксе, и в других ОС. По аналогии с тем как движок Хрома используется в куче браузеров, в том числе и в майкрософтовском.
А какая у них "длина контекста"? Важно не просто работать в режиме "один вопрос - одна выдача", но и так чтобы ИИ помнил и учитывал предыдущие вопросы и выдачи в данном диалоге.
Вы смешиваете объявление переменных и объявление функций. Никто не мешает объявлять переменные как "int x, y" и при этом функции как "fn foo(int x, int y) int".
У Си куча известных проблем, но их никто не решает именно потому что это язык "с которым знакомо на порядок больше людей и который уже довольно старый и отлаженный". Куча кода который никто не будет переписывать; новый код пишут на Си потому что старый уже написан на Си, и т.д. Это вообще проблема IT - устаревшие технологии тянут назад. Даже если эти технологии и отлаженные.
На опеннете такой пример (добавлена поддержка семантических аннотаций кода, позволяющий прикрепить к коду дополнительные метаданные, которые игнорируются компилятором, но могут учитываться лексическим анализатором в стандартной библиотеке):
Вот интересно, тип указывается после имени переменной (как сейчас новомодно, и это объясняется тем, что имя важнее для восприятия, а тип может быть выведен и часто его вообще можно не указывать). Но атрибут все равно пишется перед именем переменной. Это с точки зрения дизайна языка правильно или нет? С одной стороны атрибуты традиционно указывают перед аннотируемой сущностью (которой может быть не только переменная но и функция, и структура... т.е. нечто больше и длинное, и удобнее видеть атрибуты в начале а не в конце). С другой вижу некоторое противоречие с типами после имени - ведь тип это тоже своего рода аннотация.
Уж лучше LSW (Linux Subsystem for Windows) :) Несвободная, телеметрическая и живущая своей жизнью винда в изолированном контенейре на линуксовом хосте.
В чем разница между кодом и алгоритмом? Только в уровне абстракции. А уровень абстракции можно повышать бесконечно, чем собственно и занимается математика.
Вот скажем код который выводит числа от -87134 до +983724. Нейросеть его легко напишет, и такого кода практически гарантированно никто раньше не писал. Формально, нейросеть генерирует именно нечто новое.
Далее, код который выводит числа от M до N. Это еще код или уже алгоритм? Мы просто поднялись на уровень выше, заменили конкретные числа на обобщенные. Как переход от арифметики к алгебре. Хотя что конкретное число, что переменная "икс" - всего лишь математические абстракции, и то что делают первоклассники, складывая в столбик - всего лишь формальные манипуляции над абстрактными символами по определенному алгоритму. Это ничем не отличается от того что делают студенты, вычисляя производные и интегралы - просто другой алфавит языка и другие правила.
Мы можем например попросить нейросеть сгенерировать код, который выводит не числа, а программные коды для какого-то класса конкретных алгоритмов с параметрами. Такое вот метапрограммирование. Да, это уже сложнее, но вопрос чисто количественный - мощность нейросети.
Вот откуда вы это берёте??? Вам так кажется? Вам хочется в это верить? Какая-то новая религия как будто зарождается...
Никакой религии, обычная техническая экстраполяция. ИИ вполне способен генерировать новый (при том рабочий) код - то есть такой, которого нет нигде в интернете. Новый код принципиально ничем качественно не отличается от нового алгоритма или нового закона математики. Отличия только количественные. И разумеется ИИ может ошибаться. Кстати, также и человек, изучая новый язык программирования, иногда выдает вроде бы логичные, но неверные языковые конструкции - наблюдал лично.
Едрить, для них ещё матчасть и переводить на автоматический надо? Вот это сверх-интеллект! А сам он эту проблему решить не может? Ну, судя по тому как он в геометрии разбирается - не может((
Можно не переводить, просто скормить ему весь либген и сайхаб. Но это потребует на порядки больше вычислительных ресурсов для самой модели - потому что человеческий способ представления математических знаний крайне неоптимален именно для языковой модели. То же самое и с геометрией - она по своей природе не языковая, и тут вариантов два - или на порядки увеличивать вычислительную мощность и обучать одновременно на форумах и картинках (вот прямо как школьников в школе учат), или переводить геометрию на формальный язык и обучать на нем.
А вот здесь что имеется в виду?
Не Чайковский, но (при достаточно мощной и качественно обученной нейросети) гораздо ближе к тому, что мог бы написать Чайковский, по сравнению с любыми аналогичными завершениями, сделанными людьми (даже если это не Киркоров с Басковым а какой нибудь гениальный современный композитор).
Вообще не понимаю зачем их заменять. Современные карты - они же не используют магнитную полосу, там нечему портиться от времени кроме самого пластика, а он достаточно долговечен.
Спасибо, программу обязательно попробую. Но моё сообщение скорее не о личной необходимости в каких-то конкретных символах, а о том что эти символы уже не станут такими распространенными, как ASCII. А чтобы они стали массовыми, нужно именно физическое появление символов на клавиатурах.
Я вот думаю что существующих символов мало. Особенно для языков программирования, где символы "больше" и "меньше" используются также как угловые скобки, что создает серьезные трудности при парсинге. Т.е. нужны как минимум еще несколько пар скобок - например 〈 〉 ⟦ ⟧ , может быть неплохо было бы иметь стрелки → ← ↑ ↓ ↗↘ ↖↙ и треугольники ▷ ◁ ∆ ∇, некоторые математические символы ∀∃ ⊕ ⊗ ∅ ∈ ∋ ∞∩ ∪ ∧ ∨, еще что-то типа ✅ ◇ ⃞
По идее это еще одно значение (или даже два) для каждой алфавитно-цифровой клавиши. Хотя наверное время уже ушло, и сейчас никто не будет выпускать клавиатуры с какими-то новыми символами.
Не знаю что и сказать. Рад за С++, что он развивается, рефлексия это реально важная вещь для языков программирования; но примеров кода не понял вообще (последнее время пишу в основном или на чистом Си или на Qt5)
А рефлексию (для енумов и не только) я делаю вот так:
Самое прикольное что эта фича работала еще до появления самого С++, более того она, вероятно, была еще когда меня на свете не было:) Но в книгах этого приема обычно нет, и люди мучаются, выдумывая всякие костыли или просто тупо вручную пишут код и рискуют однажды забыть дописать очередной элемент.
Это понятно. Всякие SHA-2 действительно требуют полного пересчета при изменении хотя-бы одного байта файла. Но разным файлам нужны разные контрольки (а некоторым и вовсе никакие не нужны, кроме разве что обязательной системной). У множества файлов, которые по смыслу "только для чтения" (книги, фотки, музыка, фильмы, исполняемые бинарники) контролька считается один раз при появлении файла в системе. А именно такие файлы являются основным контентом для файлообмена.
Можно ввести в атрибуты файла теги вида "контролька+таймштамп", и обновлять контрольную сумму только тогда, когда она необходима и таймштамп отличается от текущего для файла. А есть еще инкрементальные алгоритмы, для них проще: при переписывании блока вычитаем его старую сумму (тем же XOR) из общей суммы и добавляем сумму нового блока.
8.3 это да, давно уже не надо. А контрольные суммы - полезная вещь, рад что до этого додумались. Считаю что основные хеш-суммы должны быть на уровне ФС и по возможности сами обновляться при сохранении файлов (инкрементальные алгоритмы), это тоже одна из моих хотелок вместе с тегами, а также очень удобно для всяких p2p сетей (хотя подозреваю что в ReFS используется что-то свое узкоспециализированное).
А в чем её преимущества? Я вот очень хочу встроенные в FS теги, доступ к файловой системе как к базе данных и т.п. Однако вот в википедии читаю
Это как вообще? Даже жесткие ссылки, которым сто лет уже, и то не поддерживаются? От ADS отказались? То есть это не развитие а какой-то откат назад.
А вообще напрашивается мысль о какой-то единой open-source файловой системе, которая могла бы использоваться и в винде, и в линуксе, и в других ОС. По аналогии с тем как движок Хрома используется в куче браузеров, в том числе и в майкрософтовском.
А какая у них "длина контекста"? Важно не просто работать в режиме "один вопрос - одна выдача", но и так чтобы ИИ помнил и учитывал предыдущие вопросы и выдачи в данном диалоге.
Вы смешиваете объявление переменных и объявление функций. Никто не мешает объявлять переменные как "int x, y" и при этом функции как "fn foo(int x, int y) int".
А обязательно нужна киллер-фича? Да и есть ли она у Zig, V, Num и Rust? Возможно, достаточно просто работы над ошибками?
У Си куча известных проблем, но их никто не решает именно потому что это язык "с которым знакомо на порядок больше людей и который уже довольно старый и отлаженный". Куча кода который никто не будет переписывать; новый код пишут на Си потому что старый уже написан на Си, и т.д. Это вообще проблема IT - устаревшие технологии тянут назад. Даже если эти технологии и отлаженные.
На опеннете такой пример (добавлена поддержка семантических аннотаций кода, позволяющий прикрепить к коду дополнительные метаданные, которые игнорируются компилятором, но могут учитываться лексическим анализатором в стандартной библиотеке):
Вот интересно, тип указывается после имени переменной (как сейчас новомодно, и это объясняется тем, что имя важнее для восприятия, а тип может быть выведен и часто его вообще можно не указывать). Но атрибут все равно пишется перед именем переменной. Это с точки зрения дизайна языка правильно или нет? С одной стороны атрибуты традиционно указывают перед аннотируемой сущностью (которой может быть не только переменная но и функция, и структура... т.е. нечто больше и длинное, и удобнее видеть атрибуты в начале а не в конце). С другой вижу некоторое противоречие с типами после имени - ведь тип это тоже своего рода аннотация.
Интересно, а есть подобные проекты, но полностью бесплатные и бессерверные, соединяющиеся скажем через DHT?
Wine это скорее аналог WSL1. А виртуалка в бесшовном режиме - аналог WSL2.
Как в анекдоте - или достигнем или не достигнем.
Уж лучше LSW (Linux Subsystem for Windows) :) Несвободная, телеметрическая и живущая своей жизнью винда в изолированном контенейре на линуксовом хосте.
В чем разница между кодом и алгоритмом? Только в уровне абстракции. А уровень абстракции можно повышать бесконечно, чем собственно и занимается математика.
Вот скажем код который выводит числа от -87134 до +983724. Нейросеть его легко напишет, и такого кода практически гарантированно никто раньше не писал. Формально, нейросеть генерирует именно нечто новое.
Далее, код который выводит числа от M до N. Это еще код или уже алгоритм? Мы просто поднялись на уровень выше, заменили конкретные числа на обобщенные. Как переход от арифметики к алгебре. Хотя что конкретное число, что переменная "икс" - всего лишь математические абстракции, и то что делают первоклассники, складывая в столбик - всего лишь формальные манипуляции над абстрактными символами по определенному алгоритму. Это ничем не отличается от того что делают студенты, вычисляя производные и интегралы - просто другой алфавит языка и другие правила.
Мы можем например попросить нейросеть сгенерировать код, который выводит не числа, а программные коды для какого-то класса конкретных алгоритмов с параметрами. Такое вот метапрограммирование. Да, это уже сложнее, но вопрос чисто количественный - мощность нейросети.
Никакой религии, обычная техническая экстраполяция. ИИ вполне способен генерировать новый (при том рабочий) код - то есть такой, которого нет нигде в интернете. Новый код принципиально ничем качественно не отличается от нового алгоритма или нового закона математики. Отличия только количественные. И разумеется ИИ может ошибаться. Кстати, также и человек, изучая новый язык программирования, иногда выдает вроде бы логичные, но неверные языковые конструкции - наблюдал лично.
Можно не переводить, просто скормить ему весь либген и сайхаб. Но это потребует на порядки больше вычислительных ресурсов для самой модели - потому что человеческий способ представления математических знаний крайне неоптимален именно для языковой модели. То же самое и с геометрией - она по своей природе не языковая, и тут вариантов два - или на порядки увеличивать вычислительную мощность и обучать одновременно на форумах и картинках (вот прямо как школьников в школе учат), или переводить геометрию на формальный язык и обучать на нем.