1. Программирование под большое количество платформ
Сколько не смотрел обзоры и сравнения мультиплатформенных сред - у всех какие-то проблемы с созданием прог под разные платформы.
Вот, например, обзор 2023 года на хабре: https://habr.com/ru/articles/757156/
Из личного опыта, например, современный Delphi имеет некоторые функции, которые работают по одному принципу под Windows, и по другому под Android. В итоге отлаженная под Windows программа, перекомпилированная под Android, показывает очередной черный экран, потому что отрисовка имеет совершенно разные алгоритмы. И "кроссплатформенная среда" никак это не компенсирует, сам мучайся и исправляй это.
Плюс многие среды делаются под самые современные версии платформ. Андроидовские, например, ориентируются под требования гугла к программам в магазине Google Play. Установил гугл что должны там быть проги для шестого андроида и новее - и вот и среды уже не делают программ для андроида 2.3.3, зачем, ведь их не примет гугл плэй.
Ну а Windows-версии в виде Win32-приложений уж точно не пойдут под Win9x, да и поддержка XP там будет для какого-нибудь SP3, не меньше. А то и вообще вырезана XP, и поддерживается только win 7 или даже win10/11 только. Хотя Win32-приложения должны бы и под Windows 95 идти. Но, как минимум, из-за функций в системных библиотеках Windows, добавленных в поздних версиях Windows, и используемых в готовых программах, созданных в этой "кроссплатформенной" среде - сделанное вами приложение вдруг не идет на несчастном XP SP1. А хотелось бы чтобы оно шло на каждом утюге)
Почему бы не сделать одну среду, чтоб натягивала проги на широкое разнообразие старых и новых систем, делала проги хоть на Windows 11, хоть на Windows 95, хоть на Android 1.6, хоть на DOS (пусть и предупреждала бы, что там нет 3D или цветность ограничена выбранным графическим режимом, или памяти мало в реальном режиме, например). Хотя бы стандартные вывод текста/вывод двухмерной графики/контроль ввода можно было сделать на всех поддерживаемых платформах, и новых, и древних. А дополнительные фичи (сеть, музыка, видео и т.п.) уже в зависимости от платформы мочь или не мочь делать.
Но рынок диктует свои правила. Делают ровно то, что востребовано большинством, и не больше того. А востребовано только то, что разрешил гугл и майкрософт (они и решают что будет востребовано). Поэтому старые платформы отмирают как этого хочет гугл (чтобы все купили новые телефоны), старые операционки и браузеры отмирают как этого хотят гугл и майкрософт (чтобы все купили новые операционки и новые компьютеры).
Даже в интернете (хоть этот абзац и больше про сайты и веб-приложения, а не про приложения для устройств) вводят повальный ввод HTTPS даже для сайтов где нечего защищать: если на сайте просто картинки и текст, и нет ввода паролей/кредитных карт и т.д., то все равно браузеры выдают предупреждения "Небезопасный сайт!", я сразу от такого текста думаю что там, на этом сайте, вирусы, всякие проги с троянами и майнерами и т.д. Всё чтобы люди настроили на хостинге HTTPS заветные сертификаты и передавали шифрованный трафик между сайтом и посетителями. И если б был HTTP - то на эти сайты можно было бы заходить и в Windows 98, и в Windows XP. А HTTPS, шифрованный современными алгоритмами, старые браузеры в старых операционках не понимают, не могут расшифровать и поэтому в таких Windows лазить в интернете невозможно. Получается типа "ваш Windows устарел, купите новый windows и новый комп" =)
2. Борьба языков
И с самими языками проблема: будешь ты писать на Си, Питоне или на забытом бейсике - все равно (хоть многие программисты и воюют за свой любимый язык и ненавидят какие-то другие языки). Забить бы основные правила (условия, ветвления, циклы, математику, логику, битовые операции и т.д.) для нескольких языков и какой-нибудь директивой компилятору менять один язык на другой прямо в тексте программы. Чтоб можно было иметь модули на разных языках в программе или даже модуль, на треть написанный на одном языке, на треть на другом и на треть на третьем. Ведь тот или иной язык - это просто тот или иной способ объяснить компу что ты от него хочешь своим кодом, а не какая-то священная особенность именно вашего языка, которую вы оберегаете продвигая ваш язык, и яростно нападая на другие языки как крестоносец.
3. Микс текстового и графического программирования
Сам процесс программирования тоже бы поправить (ну или расширить). Есть языки текстовые. А есть графические. Например, labview, соединяем квадратики палочками и смотрим как данные идут от квадратика к квадратику и обрабатываются внутри этих квадратиков. И в Unity (называемое "визуальный скриптинг"):

Есть целый список таких визуальных языков: https://en.wikipedia.org/wiki/Visual_pr ... g_language
Хорошо бы и в текстовых языках - начинать программу писать в тексте, а потом уже "управлять вселенной" рассматривая большой код сверху, ваяя и пристыковывая модули в графическом виде. Чтобы было везде и в текстовых языках - код парсится, представляется в виде модулей-матрешек, внутри процедуры/функции, а внутри них код, который править или блоком, или тоже в виде мини-квадратиков, всё видно, всё понятно, особенно если вспоминаешь как ты писал этот модуль год-два назад и как он был устроен.
4. Прозрачность выходных файлов
С пиксельными картинками все ясно - паинткад или другой редактор сохраняет заголовок в соответствии с форматом (bmp, gif и т.д.), там цветность картинки, размеры, а потом идет массив данных (простых или запакованных).
А вот когда делаешь программу, то среда пускает твои исходники в один или несколько компиляторов/сборщиков/прочих утилит, и они собирают EXE или APK или другой исполняемый файл. Но ни один компилятор не пишет что он и как он сделал, и для чего он сделал именно так. А мог быть рассказать статистику по проге: размеры модулей в компилированном и собранном виде, куда ресурсы положил, где таблицы импорта и зачем вашему EXE нужны все эти системные DLL-библиотеки и функции из них, какие секции в EXE файле созданы и для чего и т.п. Чтобы было прозрачно и понятно что я получил на выходе, чтобы было видно как на размеры и структуру собранного файла повлияла очередная сборка с увеличившимся/измененным кодом исходных модулей. Было бы интересно это видеть от сборки к сборке и понимать.