...и вечером плащ демиурга и мага, а утром по новой колпак дурака...
А я ни одним ин. языком не владею. Немецкий не выучился. А остальные так, по наитию (без знания грамматики).
>>- С, С++: средний уровень
А какого стандарта? А то, к примеру, концепты с 20 появились (и я с ними до сих пор не подружился). И чего там только не появилось... хрен поймёшь даже зачем это нужно. Читаешь иную статью - сплошные шаблоны с метапрограммированием щедро пересыпанные STL. Например, смотришь статью про делегаты ( habr.com/ru/post/78299/? ) на Си++ (и зачем они мне?...) - даже в голове трудно сходу уложить какой класс чего хранит и как этот шаблон частично специализируется. А потом думаешь, ну нафиг, обойдусь без них. Рефлексируешь. Вспоминаешь, что паттерны давно тоже забыты, да и не применялись за исключением пары-тройки штук. И в очередной раз откладываешь идею о смене работы, полагая, что с такими знаниями С++ (за 22 года!) нафиг никому не сдался.
А какого стандарта? Ну, так... Толком и не знаю. Прошивку для домофона ковырять хватало, круды для программок на Qt ваять - тоже, а на большее я и не претендую. Не за C/C++ мне сейчас платят, да больше никогда и не будут, наверное. К счастью.
...и вечером плащ демиурга и мага, а утром по новой колпак дурака...
Там только наследием и можно нормально пользоваться - оно понятно и логично. А современный Си++ - это метапрограммирование на шаблонах с STL в нагрузку, и все вот эти извращения с закосом в функциональщину. Я не очень понимаю, кто реально это использует? Кому надо возвращать из функции функцию или лабать рефлексию на Си++? Вот зачем оно? Почему весь этот мазохизм практически невозможно понять даже после десятого прочтения? Вот.
Кому надо возвращать из функции функцию А вы попробуйте в приложении под Андроид из Java-части в С++-ный native code указатель на указатель на функцию прокинуть, и для полного счастья обратную процедуру проделать - сразу оцените.
...и вечером плащ демиурга и мага, а утром по новой колпак дурака...
А зачем из Java лезть в код на С++? Я с таким же успехом мог бы возжелать из языка PL/1 или Ада сделать то же самое. Раз уж есть часть на Си++, так и надо на нём всё и писать. Откуда Java-то вылезла? Зачем она нужна, если она без С++ жить не хочет? Тут пару лет назад один деятель хвастался, что умножение Карацубы реализовал и тем ускорил работу ПО. Оказалось, у него тоже Java. Я постеснялся спросить тогда, чем у него занимается математический сопроцессор, раз дошло до оптимизации математики и зачем в таком случае он вообще эту Jav'у взял.
А попутно, а как возврат функции из функции на С++ (а это существует только внутри компилятора как синтаксис языка и после компиляции станет обычными функциями на асме) вообще связывается с Java?
Откуда Java-то вылезла? Зачем она нужна, если она без С++ жить не хочет? Потому что приложения под Android пишутся на Java. И на Kotlin ещё.
А зачем из Java лезть в код на С++? А попробуйте, например, написанный на C/C++ (да, именно так, вперемешку) картографический движок на Java переписать, чтобы под Андроидом запустить. Даже если кто-то согласится оплатить такие трудозатраты, работать оно будет... не очень быстро.
Значительно проще собрать его с помощью андроидного g++ в библиотеку, а на Java написать только обёртку, которая будет эту библиотеку запускать и нужные функции из неё дёргать. В мире Android это очень распространённый подход. И быстродействие будет на высоте, и уже имеющийся код переписывать не надо будет.
test-user-dmt, на самом деле, описанное выше - ещё не самое страшное. Мне на практике встречался случай, когда С/С++ функции приходилось тягать... из Javasсript. Да. В браузере. Это был особенный браузер. У него были две особенные функции в движке Javasсript. Первая служила для того, чтобы послать сообщение в скрипт со стороны С-шной программы. А вторая - чтобы наоборот, дёрнуть указатель на функцию в С-программе, чтобы послать ей сообщение из Javasсript. Рисовало это чудовищное поделие... интерфейс домофона на хитром микроконтроллере. Что мешало реализовать это дело на том же Qt и не страдать - не понимаю до сих пор, ресурсы контроллера позволяли.
...и вечером плащ демиурга и мага, а утром по новой колпак дурака...
>>Потому что приложения под Android пишутся на Java. И на Kotlin ещё.
Ну так и пусть пишутся. А Си++ как тогда появился вдруг на том же Android?
>>А попробуйте, например, написанный на C/C++ (да, именно так, вперемешку) картографический движок на Java переписать, чтобы под Андроидом запустить. Даже если кто-то согласится оплатить такие трудозатраты, работать оно будет... не очень быстро.
Логика - блеск. Сначала выбираем java, а потом страдаем. Что мешает на Си++ сразу написать, раз уж g++ обнаружился?
>>Значительно проще собрать его с помощью андроидного g++ в библиотеку, а на Java написать только обёртку
Так. И при чём тут возврат функции из функции в Си++? Чем возврат лямбды из функции тут поможет?
Что мешает на Си++ сразу написать Во-первых, зоопарк устройств с различными процессорами. Написанное на Java запустится на любом устройстве, бо собирается в байт-код, исполняемый виртуальной машиной. По этой же причине делается как минимум две, а то и три версии библиотеки с С-функциями, чтобы покрыть хотя бы большинство архитектур.
Во-вторых (и это связано с первой причиной) - отсутствие нормальных средств разработки программ с графическим интерфейсом на С++ под Андроид. Если не считать того же Qt, но оно под Андроидом кривое и вроде бы уже даже умерло.
...и вечером плащ демиурга и мага, а утром по новой колпак дурака...
>>По этой же причине делается как минимум две, а то и три версии библиотеки с С-функциями, чтобы покрыть хотя бы большинство архитектур.
Ну так и сделали бы две, а то и три версии программы на С++. Смысл тащить платформозависимую библиотеку с независимой обвязкой? На смартфонах гигабайты флэша, несколько версий ПО погоды вообще не сделают. А попадётся нестандарт, так он в любом случае не заработает (библиотека-то платформозависимая).
>>отсутствие нормальных средств разработки программ с графическим интерфейсом на С++ под Андроид. Если не считать того же Qt, но оно под Андроидом кривое и вроде бы уже даже умерло.
А это вообще детский сад. Тут два варианта: 1) Производители не желают, чтобы писали на С++ и борются с этим, вынуждая фактически писать на java и прочих пайтонах. Но так как иногда всё-таки нужна скорость, то кое-какую поддержку всё же сделали. 2) Программисты не желают писать на С++ под Android, так как это резко повышает порог входа. Отсюда нет и поддержки С++ от производителей.
Результат: костыли, тормозящее ПО. Где-то я такое уже видел. Ах да, пайтон незабвенный.
Как видите, С++ не виноват, что его не могут использовать. Проблемы не у него, а у остальных языков недостаточного быстродействия. Тогда зачем вносить в стандарт решения, облегчающие использование С++ с этими языками? (на самом деле, я думаю, вы просто не так поняли исходное рассуждение, поскольку я так и не нашёл ответа на вопрос, чем возврат лямбды из функции помогает java и другим языкам. «Кому надо возвращать из функции функцию А вы попробуйте в приложении под Андроид из Java-части в С++-ный native code указатель на указатель на функцию прокинуть, и для полного счастья обратную процедуру проделать - сразу оцените.» )
Хоть в чём-то могу почувствовать своё превосходство!>>- С, С++: средний уровень
А какого стандарта?
А то, к примеру, концепты с 20 появились (и я с ними до сих пор не подружился). И чего там только не появилось... хрен поймёшь даже зачем это нужно. Читаешь иную статью - сплошные шаблоны с метапрограммированием щедро пересыпанные STL. Например, смотришь статью про делегаты ( habr.com/ru/post/78299/? ) на Си++ (и зачем они мне?...) - даже в голове трудно сходу уложить какой класс чего хранит и как этот шаблон частично специализируется. А потом думаешь, ну нафиг, обойдусь без них. Рефлексируешь. Вспоминаешь, что паттерны давно тоже забыты, да и не применялись за исключением пары-тройки штук. И в очередной раз откладываешь идею о смене работы, полагая, что с такими знаниями С++ (за 22 года!) нафиг никому не сдался.
Ну, так... Толком и не знаю. Прошивку для домофона ковырять хватало, круды для программок на Qt ваять - тоже, а на большее я и не претендую. Не за C/C++ мне сейчас платят, да больше никогда и не будут, наверное. К счастью.
А вы попробуйте в приложении под Андроид из Java-части в С++-ный native code указатель на указатель на функцию прокинуть, и для полного счастья обратную процедуру проделать - сразу оцените.
Тут пару лет назад один деятель хвастался, что умножение Карацубы реализовал и тем ускорил работу ПО. Оказалось, у него тоже Java. Я постеснялся спросить тогда, чем у него занимается математический сопроцессор, раз дошло до оптимизации математики и зачем в таком случае он вообще эту Jav'у взял.
А попутно, а как возврат функции из функции на С++ (а это существует только внутри компилятора как синтаксис языка и после компиляции станет обычными функциями на асме) вообще связывается с Java?
Потому что приложения под Android пишутся на Java. И на Kotlin ещё.
А зачем из Java лезть в код на С++?
А попробуйте, например, написанный на C/C++ (да, именно так, вперемешку) картографический движок на Java переписать, чтобы под Андроидом запустить. Даже если кто-то согласится оплатить такие трудозатраты, работать оно будет... не очень быстро.
Значительно проще собрать его с помощью андроидного g++ в библиотеку, а на Java написать только обёртку, которая будет эту библиотеку запускать и нужные функции из неё дёргать. В мире Android это очень распространённый подход. И быстродействие будет на высоте, и уже имеющийся код переписывать не надо будет.
Мне на практике встречался случай, когда С/С++ функции приходилось тягать... из Javasсript. Да. В браузере.
Это был особенный браузер. У него были две особенные функции в движке Javasсript. Первая служила для того, чтобы послать сообщение в скрипт со стороны С-шной программы. А вторая - чтобы наоборот, дёрнуть указатель на функцию в С-программе, чтобы послать ей сообщение из Javasсript.
Рисовало это чудовищное поделие... интерфейс домофона на хитром микроконтроллере. Что мешало реализовать это дело на том же Qt и не страдать - не понимаю до сих пор, ресурсы контроллера позволяли.
Ну так и пусть пишутся. А Си++ как тогда появился вдруг на том же Android?
>>А попробуйте, например, написанный на C/C++ (да, именно так, вперемешку) картографический движок на Java переписать, чтобы под Андроидом запустить. Даже если кто-то согласится оплатить такие трудозатраты, работать оно будет... не очень быстро.
Логика - блеск. Сначала выбираем java, а потом страдаем. Что мешает на Си++ сразу написать, раз уж g++ обнаружился?
>>Значительно проще собрать его с помощью андроидного g++ в библиотеку, а на Java написать только обёртку
Так. И при чём тут возврат функции из функции в Си++? Чем возврат лямбды из функции тут поможет?
Во-первых, зоопарк устройств с различными процессорами. Написанное на Java запустится на любом устройстве, бо собирается в байт-код, исполняемый виртуальной машиной. По этой же причине делается как минимум две, а то и три версии библиотеки с С-функциями, чтобы покрыть хотя бы большинство архитектур.
Во-вторых (и это связано с первой причиной) - отсутствие нормальных средств разработки программ с графическим интерфейсом на С++ под Андроид. Если не считать того же Qt, но оно под Андроидом кривое и вроде бы уже даже умерло.
Ну так и сделали бы две, а то и три версии программы на С++. Смысл тащить платформозависимую библиотеку с независимой обвязкой? На смартфонах гигабайты флэша, несколько версий ПО погоды вообще не сделают. А попадётся нестандарт, так он в любом случае не заработает (библиотека-то платформозависимая).
>>отсутствие нормальных средств разработки программ с графическим интерфейсом на С++ под Андроид. Если не считать того же Qt, но оно под Андроидом кривое и вроде бы уже даже умерло.
А это вообще детский сад. Тут два варианта:
1) Производители не желают, чтобы писали на С++ и борются с этим, вынуждая фактически писать на java и прочих пайтонах. Но так как иногда всё-таки нужна скорость, то кое-какую поддержку всё же сделали.
2) Программисты не желают писать на С++ под Android, так как это резко повышает порог входа. Отсюда нет и поддержки С++ от производителей.
Результат: костыли, тормозящее ПО. Где-то я такое уже видел. Ах да, пайтон незабвенный.
Как видите, С++ не виноват, что его не могут использовать. Проблемы не у него, а у остальных языков недостаточного быстродействия. Тогда зачем вносить в стандарт решения, облегчающие использование С++ с этими языками?
(на самом деле, я думаю, вы просто не так поняли исходное рассуждение, поскольку я так и не нашёл ответа на вопрос, чем возврат лямбды из функции помогает java и другим языкам.
«Кому надо возвращать из функции функцию
А вы попробуйте в приложении под Андроид из Java-части в С++-ный native code указатель на указатель на функцию прокинуть, и для полного счастья обратную процедуру проделать - сразу оцените.»
)