Конечно в С++ с инициализацией наворотили лишнего. Зачем было вводить "универсальную инициализацию," если проблема была в другом - в том что нужно было ввести новый синтаксис функций (и его все равно ведь ввели - с auto и стрелочкой). И вообще добавление новых фич в С++ становится все более фрагментарным и бессистемным.
В целом я согласен - круглые скобки это конструктор (выполнение кода), фигурные с присваиванием - поэлементное присваивание публичных полей (т.е. даже и не инициализация как таковая, а просто присваивание нескольких полей одним оператором). Фигурные скобки без оператора присваивания вообще не стоило вводить. А вот что стоило, так это ввести универсальную концепцию кортежей - как раз тех самых составных литералов в фигурных скобках - как структурно типизированных объектов. Тогда бы можно было писать что-то вроде {i, j, k} = {1,2,3}, не потребовался бы отдельный синтаксис "структурных привязок" и т.д.
Отличный пример того, как инструмент применяется не совсем по назначению (ровно то же самое с математикой).
С одной стороны это гениально - GPT обучена на огромном количестве кода, и она может эвристически предположить смысл того или иного фрагмента кода, и соответственно восстановить осмысленные имена идентификаторов, комментарии и т.п.
С другой стороны, самим переименованием должна заниматься не нейросеть, а строгая символьная система (в данном случае парсер). Потому что GPT by design имеет право на ошибку, а парсер - не имеет. А малейшая ошибка способна исказить работу всего кода.
Знаете, что мне это напоминает: в средние века были алхимики, и они тоже думали что есть связи между некоторыми малоизученными на тот момент сущностями. Типа такого: Тихо Браге выражал уверенность в «связях между небесными телами, земными веществами и органами тела». Отголоски тех времен остались до сих пор во всякой астрологии и эзотерике:) С квантовой физикой и сознанием ИМХО творится та же фигня: две сложные для понимания сущности, и человеческая нейросеть сразу выдает - ну наверняка же они связаны! Видимо это какое-то общее когнитивное искажение.
Так смысл именно в том чтобы системное оформление было, без него то всё нормально работает. Мне категорически неудобен этот современный стиль окон без заголовка, когда на перетаскивание окна отведена пара пикселей, в которые еще нужно умудриться попасть, а остальное занято табами. Я еще понимаю если бы место экономили в конце 90-х, когда были маленькие разрешения... но сейчас, с огромными мониторами, зачем???
Сейчас поставил версию 6.9 на совершенно чистую виртуалку с Lubuntu 24.04 LTS, установил галку use Native Window, перезапустил браузер - та же проблема. Причем и само окно настроек также ей подвержено. Похоже, заголовок окна как-то пытается реагировать на первое нажатие, но дальше отваливается окончательно. Также пробовал ставить и снимать Show Title Bar - ни на что не влияет. Возможно это сочетание Vivaldi + LXQT дает такой эффект.
Добрый день! А вы вот с этой проблемой что нибудь сделали? Хотя-бы напишите смогли вы ее воспроизвести или нет, а то ведь совсем непонятно чего ожидать.
Потому что ключевое слово func стоит в начале всей конструкции. Значит, все что дальше - функция. Также как struct - структура, enum - перечисление, и т.д. Первое слово всегда определяет языковую конструкцию.
И кстати, еще одно преимущество синтаксиса Go - в том, что в нем лямбда-функции объявляются в точности также как и "обычные". Т.е. вообще никакой разницы, только имя не указывается. В остальных же языках - зоопарк кто во что горазд. Какие-то вертикальные палки и прочий ужас.
[](int x, int y) { return x+y; }; // C++
^int (int x, int y) { return a + b; }; // ObjC
(x, y) => x + y // C#
(int x, int y) -> x + y // Java
delegate int(int x, int y) {return x+y;} // D
let add = |a, b| a + b; // Rust
{ (a: Int, b: Int) -> Int in return a + b } // Swift
(a: Int, b: Int) => a + b // Scala
_ + _ // и это тоже Scala
{ x: Int, y: Int -> x + y } // Kotlin
lambda x, y: x + y // Python
lambda { |x, y| x + y } // Ruby
(x, y: int) => x + y // Nim
|x: i32, y: i32| i32 { return x + y; }; // Zig
И вообще в ASCII операторных символов мало (а в языках программирования используется именно ASCII потому что эти символы гарантированно есть на всех клавиатурах мира). Т.е. операторы лучше по возможности оставить для инфиксных выражений, унаследованных от математики.
Ключевое слово fn это рак мозга и паскальная живопись.
Нет, ключевое слово fn (а также fun, func, function) это необходимость для упрощения компилятора, чтобы не было всяких Most Vexing Parse (а короткие ключевые слова действиительно удобнее для написания). А вот что действительно рак мозга и паскальная живопись - так это мусорные стрелочки и двоеточия при объявлении функций и переменных, которые выполняют чисто декоративную роль и визуально засоряют код.
Обратная совместимость. Код C++ можно включать в файлы Carbon.
Вот это очень важно. Чтобы прямо в рамках одного проекта работало - старое можно до поры до времени (или навсегда) оставить на С++, новое писать на новом языке. И чтобы все среды разработки из коробки поддерживали такие гибридные проекты.
Собственно, и в рамках самого С++ можно было бы так сделать - развитие текущего С++ заморозить навсегда, выпустить некую очередную версию языка без всех костылей и легаси, несовместимую со старым кодом, назвать это С++2, старый код от нового отличать за счет другого расширения файла или #pragma version 2 в начале файла. Но чтобы можно было легко собирать гибридные проекты. Тогда у разработчиков будет стимул постепенно переходить на новый язык, новые проекты сразу на новом, в старых - добавлять новые файлы на новом языке и переписывать старый код лишь по мере необходимости (или вообще не переписывать, если таковой необходимости нет).
У меня сломался (протек) чайник, и перед тем как его выбросить я вытащил из него плату с BLE адаптером NRF51822, также на ней двухразрядный семисегментный индикатор, 4 кнопки, зуммер, датчик температуры на проводе и выход для управления реле. Питается от 5 вольт, в общем могла бы быть неплохая игрушка для того чтобы вывести бегущую надпись "HELLO HAbr", но вот как ее программировать?
Сначала должна образоваться потребность, затем потребность осознаётся и под неё подбирается инструмент (например, "я хочу раскукожить скукоженный YouTube средствами роутера, для этого гораздо удобнее прошивка OpenWrt, чем стоковая")
Потребность - знать и уметь на всякий случай, мы живем в такое время что всякое может случиться и всякое может понадобиться... Конкретно для обхода блокировок мне пока хватает других средств, без перепрошивки роутера. И в принципе знаю я их в том числе благодаря тому, что в свое время интересовался здесь этими вопросами.
Прежде всего, был бы интересен обзор того, что это вообще такое и в чем преимущества перед штатными пришивками. Не на уровне "что-то для обхода блокировок" а подробнее. И ответ "раз вы еще не знаете, значит вам это и не нужно" не принимается:)
Что такое "версия" в данном контексте. Вот я ввел модель своего роутера к ним в поиск, он мне выдает две строчки: версии A1 и B1. Что это вообще? При выборе прошивки для скачивания также предлагается несколько версий прошивки.
Можно ли вернуть старую прошивку, если новая не заработала или по какой-то причине не устроила?
Что такое "фопда". По контексту понятно что наверное какой-то форум, но все-же.
Мы допускаем что человек при счете в уме иногда может ошибаться, но от калькулятора мы ожидаем точных результатов. Также и здесь.
И потом, нам же в конечном итоге не олимпиадные задачи решать. Мы ожидаем, что ИИ поможет нам познать Тайны Вселенной, на основании которых можно будет к примеру разработать технику на новых физических принципах, и тому подобное. Цена ошибки может быть слишком высока.
Генеративный ИИ не способен на точные решения. Это лишь вероятностный предсказатель, и поэтому, если его научить на огромном количестве теорем и задач, он будет выдавать некие решения, которые иногда, возможно даже почти всегда, будут правильными - но абсолютной гарантии не будет никогда.
Символьными вычислениями скорее всего можно решить всё - но только брутфорсом. А поскольку в математике наверняка полно NP-полных задач, никаких вычислительных ресурсов и времени сущестования Вселенной не хватит, чтобы решить и доказать то, что нам интересно.
А вот симбиоз этих технологий вполне может обеспечить прорыв. В силу элегантности и простоты фундаментальных законов самой математики, в ней наверняка имеется множество скрытых аналогий и закономерностей, еще не оформленных как теории и теоремы. Человеческому мозгу сложно выявить их, но это под силу мощной машинной нейросети, обученной на огромном объеме математических знаний. Точные символьные вычисления позволят проверять гипотезы, сгерерированные нейросетью, и выдавать абсолютно точные результаты. Нейросеть в свою очередь может управлять вычислителем, предлагая шаги преобразовнаний, с наибольшей вероятностью ведущие к результату, тем самым мы избегаем брутфорса. Символьный вычислитель можно также использовать для обучения нейросети (по аналогии с АльфаГо, которая играла сама с собой несколько часов и превзошла гроссмейстеров - здесь символьный вычислитель будет аналогом "правил игры"). Еще можно вспомнить проект по оцифровке математики - думаю это как раз здесь пригодится.
Конечно в С++ с инициализацией наворотили лишнего. Зачем было вводить "универсальную инициализацию," если проблема была в другом - в том что нужно было ввести новый синтаксис функций (и его все равно ведь ввели - с auto и стрелочкой). И вообще добавление новых фич в С++ становится все более фрагментарным и бессистемным.
В целом я согласен - круглые скобки это конструктор (выполнение кода), фигурные с присваиванием - поэлементное присваивание публичных полей (т.е. даже и не инициализация как таковая, а просто присваивание нескольких полей одним оператором). Фигурные скобки без оператора присваивания вообще не стоило вводить. А вот что стоило, так это ввести универсальную концепцию кортежей - как раз тех самых составных литералов в фигурных скобках - как структурно типизированных объектов. Тогда бы можно было писать что-то вроде {i, j, k} = {1,2,3}, не потребовался бы отдельный синтаксис "структурных привязок" и т.д.
А что за язык программирования для которого нет парсера?
Отличный пример того, как инструмент применяется не совсем по назначению (ровно то же самое с математикой).
С одной стороны это гениально - GPT обучена на огромном количестве кода, и она может эвристически предположить смысл того или иного фрагмента кода, и соответственно восстановить осмысленные имена идентификаторов, комментарии и т.п.
С другой стороны, самим переименованием должна заниматься не нейросеть, а строгая символьная система (в данном случае парсер). Потому что GPT by design имеет право на ошибку, а парсер - не имеет. А малейшая ошибка способна исказить работу всего кода.
Знаете, что мне это напоминает: в средние века были алхимики, и они тоже думали что есть связи между некоторыми малоизученными на тот момент сущностями. Типа такого: Тихо Браге выражал уверенность в «связях между небесными телами, земными веществами и органами тела». Отголоски тех времен остались до сих пор во всякой астрологии и эзотерике:) С квантовой физикой и сознанием ИМХО творится та же фигня: две сложные для понимания сущности, и человеческая нейросеть сразу выдает - ну наверняка же они связаны! Видимо это какое-то общее когнитивное искажение.
Электроннотетрадь
Так смысл именно в том чтобы системное оформление было, без него то всё нормально работает. Мне категорически неудобен этот современный стиль окон без заголовка, когда на перетаскивание окна отведена пара пикселей, в которые еще нужно умудриться попасть, а остальное занято табами. Я еще понимаю если бы место экономили в конце 90-х, когда были маленькие разрешения... но сейчас, с огромными мониторами, зачем???
Сейчас поставил версию 6.9 на совершенно чистую виртуалку с Lubuntu 24.04 LTS, установил галку use Native Window, перезапустил браузер - та же проблема. Причем и само окно настроек также ей подвержено. Похоже, заголовок окна как-то пытается реагировать на первое нажатие, но дальше отваливается окончательно. Также пробовал ставить и снимать Show Title Bar - ни на что не влияет. Возможно это сочетание Vivaldi + LXQT дает такой эффект.
Добрый день! А вы вот с этой проблемой что нибудь сделали? Хотя-бы напишите смогли вы ее воспроизвести или нет, а то ведь совсем непонятно чего ожидать.
Потому что ключевое слово func стоит в начале всей конструкции. Значит, все что дальше - функция. Также как struct - структура, enum - перечисление, и т.д. Первое слово всегда определяет языковую конструкцию.
И кстати, еще одно преимущество синтаксиса Go - в том, что в нем лямбда-функции объявляются в точности также как и "обычные". Т.е. вообще никакой разницы, только имя не указывается. В остальных же языках - зоопарк кто во что горазд. Какие-то вертикальные палки и прочий ужас.
И вообще в ASCII операторных символов мало (а в языках программирования используется именно ASCII потому что эти символы гарантированно есть на всех клавиатурах мира). Т.е. операторы лучше по возможности оставить для инфиксных выражений, унаследованных от математики.
Нет, ключевое слово fn (а также fun, func, function) это необходимость для упрощения компилятора, чтобы не было всяких Most Vexing Parse (а короткие ключевые слова действиительно удобнее для написания). А вот что действительно рак мозга и паскальная живопись - так это мусорные стрелочки и двоеточия при объявлении функций и переменных, которые выполняют чисто декоративную роль и визуально засоряют код.
В языке Go нет никаких стрелочек и двоеточий, и никаких проблем их отсутствие не создает.
Сбоку на плате есть 4 контактных отверстия. Вполне может быть или UART или SWD, но без осциллографа не посмотреть:)
Скрытый текст
Вот это очень важно. Чтобы прямо в рамках одного проекта работало - старое можно до поры до времени (или навсегда) оставить на С++, новое писать на новом языке. И чтобы все среды разработки из коробки поддерживали такие гибридные проекты.
Собственно, и в рамках самого С++ можно было бы так сделать - развитие текущего С++ заморозить навсегда, выпустить некую очередную версию языка без всех костылей и легаси, несовместимую со старым кодом, назвать это С++2, старый код от нового отличать за счет другого расширения файла или
#pragma version 2в начале файла. Но чтобы можно было легко собирать гибридные проекты. Тогда у разработчиков будет стимул постепенно переходить на новый язык, новые проекты сразу на новом, в старых - добавлять новые файлы на новом языке и переписывать старый код лишь по мере необходимости (или вообще не переписывать, если таковой необходимости нет).У меня сломался (протек) чайник, и перед тем как его выбросить я вытащил из него плату с BLE адаптером NRF51822, также на ней двухразрядный семисегментный индикатор, 4 кнопки, зуммер, датчик температуры на проводе и выход для управления реле. Питается от 5 вольт, в общем могла бы быть неплохая игрушка для того чтобы вывести бегущую надпись "HELLO HAbr", но вот как ее программировать?
А исходники этой оболочки доступны?
Потребность - знать и уметь на всякий случай, мы живем в такое время что всякое может случиться и всякое может понадобиться... Конкретно для обхода блокировок мне пока хватает других средств, без перепрошивки роутера. И в принципе знаю я их в том числе благодаря тому, что в свое время интересовался здесь этими вопросами.
И сколько вы реально знали, а сколько просто подобрали? :) У меня кстати 36 guesses
Прежде всего, был бы интересен обзор того, что это вообще такое и в чем преимущества перед штатными пришивками. Не на уровне "что-то для обхода блокировок" а подробнее. И ответ "раз вы еще не знаете, значит вам это и не нужно" не принимается:)
Что такое "версия" в данном контексте. Вот я ввел модель своего роутера к ним в поиск, он мне выдает две строчки: версии A1 и B1. Что это вообще? При выборе прошивки для скачивания также предлагается несколько версий прошивки.
Можно ли вернуть старую прошивку, если новая не заработала или по какой-то причине не устроила?
Что такое "фопда". По контексту понятно что наверное какой-то форум, но все-же.
Было бы интересно почитать здесь на Хабре статью про OpenWRT для новичков. Как выбирать прошивку, как прошивать, на что обращать внимание...
Мы допускаем что человек при счете в уме иногда может ошибаться, но от калькулятора мы ожидаем точных результатов. Также и здесь.
И потом, нам же в конечном итоге не олимпиадные задачи решать. Мы ожидаем, что ИИ поможет нам познать Тайны Вселенной, на основании которых можно будет к примеру разработать технику на новых физических принципах, и тому подобное. Цена ошибки может быть слишком высока.
Генеративный ИИ не способен на точные решения. Это лишь вероятностный предсказатель, и поэтому, если его научить на огромном количестве теорем и задач, он будет выдавать некие решения, которые иногда, возможно даже почти всегда, будут правильными - но абсолютной гарантии не будет никогда.
Символьными вычислениями скорее всего можно решить всё - но только брутфорсом. А поскольку в математике наверняка полно NP-полных задач, никаких вычислительных ресурсов и времени сущестования Вселенной не хватит, чтобы решить и доказать то, что нам интересно.
А вот симбиоз этих технологий вполне может обеспечить прорыв. В силу элегантности и простоты фундаментальных законов самой математики, в ней наверняка имеется множество скрытых аналогий и закономерностей, еще не оформленных как теории и теоремы. Человеческому мозгу сложно выявить их, но это под силу мощной машинной нейросети, обученной на огромном объеме математических знаний. Точные символьные вычисления позволят проверять гипотезы, сгерерированные нейросетью, и выдавать абсолютно точные результаты. Нейросеть в свою очередь может управлять вычислителем, предлагая шаги преобразовнаний, с наибольшей вероятностью ведущие к результату, тем самым мы избегаем брутфорса. Символьный вычислитель можно также использовать для обучения нейросети (по аналогии с АльфаГо, которая играла сама с собой несколько часов и превзошла гроссмейстеров - здесь символьный вычислитель будет аналогом "правил игры"). Еще можно вспомнить проект по оцифровке математики - думаю это как раз здесь пригодится.