Приятно слышать! С каждым годом все чаще вижу людей, которые даже для пет-проектов переходят с С++ на другие языки именно из-за того, что им нужен простой способ организовать кроссплатформенный вывод графики без проблем с лицезниями на библиотеки и т.п.
Я переходил на C# и тоже был счастлив несколько лет, но потом пришлось вернуться ради производительности и кроссплатформенности. Смотрел на Rust - заявленные цели красивые, но реализация вызывает вопросы. История с самым быстрым и безопасным веб-сервером на Rust для меня показательная - внутри оказался небезопасный код с гонками, наличием которого объяснялась хорошая производительность и ставился жирный крест на безопасности. И то, что язык такое позволяет, для меня говорит о крахе основной идеи безопасного языка в этом случае. Вообще ситуация напоминает ситуацию с исключениями в С++, где нет способа написать код, использующий чужой класс так, чтобы при появлении в коде этого нового класса новых исключений которые он вдруг решит выбрасывать, использующий его код перестал компилироваться до тех пор, пока разработчик не изучит все эти исключения и не обработает их надлежащим образом.
Как что им делать? Я не говорю, что надо что-то запретить или у кого-то отнять их любимые системы сборки. Я говорю, что у С++, как у современного языка, должна быть стандартная система сборки, являющаяся частью языка, что должна быть нормальная библиотека ввода-вывода, соответствующая возможностям ввода-вывода современных платформ, тоже являющаяся частью языка.
С точки зрения объектной модели и прочего к Qt у меня претензий вообще нет, меня все устраивает, кроме того, что у Qt специфическая лицензия, ну и вот такие приколы с тем, что Qt, как и Boost - это не набор самостоятельных библиотечек, это огромная мегабиблиотека, которую или не используешь или таскаешь целиком. У Boost иногда еще получается таскать не вообще весь Boost, а только 1/10, а у Qt так, насколько я знаю, вообще нельзя.
Ну то есть ты говоришь - бросайте С++, учите JavaScript. Это понятная позиция, но меня она расстраивает тем, что такой подход приводит ровно к тому, с чего я начал, к горячему телефону, разогревшемуся и разрящившемуся при отрисовке мессенджера, при том, что даже когда я играю на нем в 3д игры он так не греется, а для вывода мессенджера написанного на С++ КПК хватало и ARM процессора на 200 мегагерц еще 20 лет назад, и КПК от этого не грелся и не тормозил.
C++ хорош тем, что ты не платишь за то, что ты не используешь. Если ты не используешь библиотеку TCP/IP, то ты никак не ощущаешь ее наличие. Она не компилируется при компилятции твоего кода и не поставляется вместе с собранным тобой бинарником. И это так и сейчас т.к. библиотеки нет, и будет так же, когда библиотека будет. Не подключил - не ощущаешь что она есть никак.
А вот если тебе нужно писать сетевое приложение, то на С++ ты будешь в очередной раз героически превозмогать работу с сокетами на конкретном наборе платформ, потому что в стандартной библиотеке ничего для этого нет, все используют что попало, кто-то таскает с собой гигантский буст, кто-то пишет на нативном API одной платформы, кто-то возится с 2-3 платформами, в результате широко известных качественных и используемых большинством разработчиков библиотек для более высокого уровня нет, и взяться им неоткуда, потому что нет общего фундамента для их построения. Стандартная библиотека должна быть в первую очередь слоем абстракции между базовыми возможностями платформы и высокоуровневым прикладным кодом, а в С++ она осталась на уровне "Смотрите! Моя ЭВМ может вывести ASCII-символ в консоль! Круто -то как!"
Приятно слышать! С каждым годом все чаще вижу людей, которые даже для пет-проектов переходят с С++ на другие языки именно из-за того, что им нужен простой способ организовать кроссплатформенный вывод графики без проблем с лицезниями на библиотеки и т.п.
Да пиши как есть: модульность в С++ не сделана. Даже в более древних языках она уже была.
Порядочно. Например, и Unity и Unreal написаны на С++, и на том и на другом много мобильных игр. Да и браузер на моем телефоне тоже написан на С++.
Я переходил на C# и тоже был счастлив несколько лет, но потом пришлось вернуться ради производительности и кроссплатформенности. Смотрел на Rust - заявленные цели красивые, но реализация вызывает вопросы. История с самым быстрым и безопасным веб-сервером на Rust для меня показательная - внутри оказался небезопасный код с гонками, наличием которого объяснялась хорошая производительность и ставился жирный крест на безопасности. И то, что язык такое позволяет, для меня говорит о крахе основной идеи безопасного языка в этом случае. Вообще ситуация напоминает ситуацию с исключениями в С++, где нет способа написать код, использующий чужой класс так, чтобы при появлении в коде этого нового класса новых исключений которые он вдруг решит выбрасывать, использующий его код перестал компилироваться до тех пор, пока разработчик не изучит все эти исключения и не обработает их надлежащим образом.
Как что им делать? Я не говорю, что надо что-то запретить или у кого-то отнять их любимые системы сборки. Я говорю, что у С++, как у современного языка, должна быть стандартная система сборки, являющаяся частью языка, что должна быть нормальная библиотека ввода-вывода, соответствующая возможностям ввода-вывода современных платформ, тоже являющаяся частью языка.
Можно и так сказать =)
С точки зрения объектной модели и прочего к Qt у меня претензий вообще нет, меня все устраивает, кроме того, что у Qt специфическая лицензия, ну и вот такие приколы с тем, что Qt, как и Boost - это не набор самостоятельных библиотечек, это огромная мегабиблиотека, которую или не используешь или таскаешь целиком. У Boost иногда еще получается таскать не вообще весь Boost, а только 1/10, а у Qt так, насколько я знаю, вообще нельзя.
Ну то есть ты говоришь - бросайте С++, учите JavaScript. Это понятная позиция, но меня она расстраивает тем, что такой подход приводит ровно к тому, с чего я начал, к горячему телефону, разогревшемуся и разрящившемуся при отрисовке мессенджера, при том, что даже когда я играю на нем в 3д игры он так не греется, а для вывода мессенджера написанного на С++ КПК хватало и ARM процессора на 200 мегагерц еще 20 лет назад, и КПК от этого не грелся и не тормозил.
C++ хорош тем, что ты не платишь за то, что ты не используешь. Если ты не используешь библиотеку TCP/IP, то ты никак не ощущаешь ее наличие. Она не компилируется при компилятции твоего кода и не поставляется вместе с собранным тобой бинарником. И это так и сейчас т.к. библиотеки нет, и будет так же, когда библиотека будет. Не подключил - не ощущаешь что она есть никак.
А вот если тебе нужно писать сетевое приложение, то на С++ ты будешь в очередной раз героически превозмогать работу с сокетами на конкретном наборе платформ, потому что в стандартной библиотеке ничего для этого нет, все используют что попало, кто-то таскает с собой гигантский буст, кто-то пишет на нативном API одной платформы, кто-то возится с 2-3 платформами, в результате широко известных качественных и используемых большинством разработчиков библиотек для более высокого уровня нет, и взяться им неоткуда, потому что нет общего фундамента для их построения. Стандартная библиотека должна быть в первую очередь слоем абстракции между базовыми возможностями платформы и высокоуровневым прикладным кодом, а в С++ она осталась на уровне "Смотрите! Моя ЭВМ может вывести ASCII-символ в консоль! Круто -то как!"