Программисты тоже никуда не делись, но все, что они знают об языках, библиотеках, фреймворках и т.д. они вдруг полностью забыли. Остались только общие принципы и алгоритмы, не зависящие от языков и т.д.
А Вы — демиург. В Ваших силах мгновенно создать новое ПО с той же функциональностью (для пользователей), создать языки, библиотеки и фреймворки и вложить это все в головы программистов, так что они сразу будут в состоянии с этими новыми средствами работать на прежнем профессиональном уровне. Ну а Вы после этого отойдете в сторону и вмешиваться больше не будете.
В общем, после того, как Вы это сделали, мир ПО опять существует, но на основе иных, предложенных Вами средств. И программисты продолжают свою работу, тоже с использованием этих новых средств.
Представили ?
Вопрос же следующий.
Что бы Вы из существующего сделали в практически том же виде, в каком оно существует сейчас и что сделали бы по-другому ?
Только просьба — не разменивайтесь по мелочам. Не пишите, что Вы бы поменяли бордюр у какого-то окна или вообще сделали его круглым.
Вот, скажем, предложение заменить TCP/IP на что-то иное — это другое дело. Или вместо файлов ввести... ну уж не знаю что.
Конечно, аргументируйте.
P.S. Для тех, кому моя преамбула не нужна, сформулирую вопрос более реалистично.
Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
P.P.S. У меня сложилось впечатление, что некоторые участники дискуссии не против бы и мир переделать (десятичную систему заменить, время по иному измерять, даже число pi ревизовать). Просьба все же оставаться в рамках темы. Ни железо, ни тем более внешний мир этому демиургу возможности изменять я не давал
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
Я бы JavaScript убрал бы. Заменил бы чем ни будь похожим на C# или Java.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
Если всё, что не нравится, избежим, и пойдём другим путём, непременно найдём новые грабли, не хуже старых
Здравствуйте, Qulac, Вы писали:
Q>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
Q>Я бы JavaScript убрал бы. Заменил бы чем ни будь похожим на C# или Java.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что бы Вы из существующего сделали в практически том же виде, в каком оно существует сейчас и что сделали бы по-другому ?
Я бы заменил С++, Java и C# на один язык без VM со сборкой мусора(отключемой). Но насчет этого разных мнений много.
PD>Вот, скажем, предложение заменить TCP/IP на что-то иное — это другое дело. Или вместо файлов ввести... ну уж не знаю что.
Вместо IPv4 и ада с NAT использовать сразу IPv6.
PD>Только просьба — не разменивайтесь по мелочам. Не пишите, что Вы бы поменяли бордюр у какого-то окна или вообще сделали его круглым.
Вообще, в ИТ изменения легче внедряются, чем в других инженерных областях. Поэтому больше ни на какое legacy особенно не жалуюсь.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Вот, скажем, предложение заменить TCP/IP на что-то иное — это другое дело. Или вместо файлов ввести... ну уж не знаю что.
У меня бы все сразу были на IPv6 не размениваясь на IPv4.
PD>Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
Не нужно было делать Java, .NET и кучу других разработок вносивших разброд и шатание, деля программистов по специализации относительно инструментов разработки, а не умению использовать алгоритмы. Cмартфоны для приложений использовали бы C/C++ и были дровишки для GNU/Linux. Весь код кроссплатформенный, работал бы на десктопа/серверах, смартфонах, промышленных контроллерах и других устройствах.
Упор в приложениях на высокую производительность и минимальное потребление оперативной памяти, как следствие энергоэффективность. Опять же нафантазировать можно всё что угодно, какой-нибудь световой компьютер. На практике же видим эволюционное движение от одних технологий к другим. Если одна технология для программистов лучше другой, то выживет лучшая, даже не смотря на все попытки продвинуть худшую.
И ещё, совместимость и прочее не так уж сильно и мешают. Другое дело нужно провести огромный труд, а это множество условных человеко часов, причём специалистов высокого уровня. Те же смартфоны делают с расчётом, что пользователь их через несколько лет, а то и раньше выкинет, то есть изначально работа в мусорку. Хорошо было бы стандартизировать библиотеки алгоритмов внедрив в них лучшие практики программирования.
Здравствуйте, Qbit86, Вы писали:
Q>Перейти к системе счисления с основанием, выбранным рационально, а не эволюционно-биологически.
Вообще-то ее в компьютере не так уж много. Вся арифметика в основном не в ней, в ней только вывод результатов.
Если же речь идет не об ИТ, а о мире в целом — это от нас не зависит.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что из того, что заложено в существующее ПО, сделано так, как и надо было бы "по уму" сделать, и что надо было бы сделать иначе, да только , увы, невозможно — мешают проклятая compatibility и огромные наработки ?
Собственно легаси и совместимость осталась только в ОС. Соответственно переписал бы ОС полностью с нуля, с учетом лучших наработок. Чтоб ядро отдельно. Разделенное на модули, максимально независимые, и в ядре б оставил минимально возможное количество модулей. Чтоб одну ОС можно было поставить в микроволновку и в десктоп. И в микроволновке базовая архитектура была та же самая, но там бы было только то, что нужно микроволновке. А в компе — все, что нужно компу, и все можно было собрать из кирпичиков. Софт бы ставил из централизованного магазина приложений, как сейчас. У меня до черта есть идей относительно идеальной ОС, и чтоб собрать все воедино будет огроменный документ. Сразу бы при проектировании закладывался, что ОС должна работать на любом процессоре, от i8080 и проще до современных и будущих монстров. Скорее всего в топку бы выбросил концепцию файловой системы, вместо этого что то вроде объект и набор тегов. Точно бы выкинул понятие пути к файлу! Программу бы сразу ставил со всеми зависимостями, все программы пусть живут в своей песочнице. Плюс механизм взаимодействия между программами, когда они универсально умеют сообщать другим что они умеют. Программы бы сделал в обязательном порядке разбитыми на модули, как минимум бы разделял в обязательном порядке UI (причем UI модулей может быть несколько, например голосовой UI, текстовый UI, графический UI) и функционал. API (максимально компактное и универсальное) старался бы продумывать очень и очень тщательно, чтоб потом не нужно было менять. Допускал бы, например, возможность прямого общения между программами минуя ОС, в том числе и между программами, ничего не знающими друг о друге. Соответственно сначала б в течение года писал документ, касающийся архитектуры будущей ОС, тщательно продумывая, чтоб не повторить все подводные камни, на которые огребла индустрия. В частности сразу б учитывал, что хрен я все предугадаю, но должен как то продумывать механизм рефакторингов будущих косяков. На байтах для высокоуровневых вещей бы не экономил.
Сделал бы так, чтобы все языки на момент создания поддерживали только русский язык. Проснулись бы американцы, ан кругом Пока() Если () Для (пер ё = 0; ё < массив.длина; ё++).
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Что бы Вы из существующего сделали в практически том же виде, в каком оно существует сейчас и что сделали бы по-другому ?
1. Никаких кодировок кроме utf-8
2. HTML, CSS, гуевые фреймворки на помоечку, вместо всего этого универсальный язык разметки с размерами в миллиметрах (отобразить правильно задача драйвера железки) для всего от принтеров, до экрана телефона. Все иконки строго векторные
3. С на помоечку, вместо него простой, непротиворечивый и логичный язык заточенный (как сделать правильно можно спросить меня)
4. POSIX на помоечку вслед за С, пусть интерфейсы напишут люди умеющие программировать
5. Python, Java script и прочие наколенные поделки на помоечку
Здравствуйте, velkin, Вы писали:
V>Не нужно было делать Java, .NET и кучу других разработок вносивших разброд и шатание, деля программистов по специализации относительно инструментов разработки, а не умению использовать алгоритмы. Cмартфоны для приложений использовали бы C/C++ и были дровишки для GNU/Linux. Весь код кроссплатформенный, работал бы на десктопа/серверах, смартфонах, промышленных контроллерах и других устройствах.
С++ не нужен был бы
Здравствуйте, 0x7be, Вы писали:
0>С++ не нужен был бы
А какая адекватная замена C/C++? Давайте по примеру топика представим, что платформы .NET, Java, а так же многие языки программирования исчезли. В целом компьютерная инфраструктура пострадала, но компьютеры по прежнему работают. Убираем C/C++ и наступает глобальный конец, ядра операционных систем, драйвера, веб-сервера, базы данных, cad, игры и многое другое перестают существовать. Это между прочим так же говорит о том, что подвергать исчезновению нужно именно C/C++, так как после этого всё остальное попросту исчезнет или не будет работать, потому что использует другие программы написанные на C/C++.
Здравствуйте, elmal, Вы писали:
PD>>Чтоб одну ОС можно было поставить в микроволновку и в десктоп. И в микроволновке базовая архитектура была та же самая, но там бы было только то, что нужно микроволновке.
Если в микроволновке примитивный микроконтроллер, тогда используется Си. А если, что покруче, тогда можно поставить линукс или что-то подобное. Обычной микроволновке нужна только машина состояний, здесь можно обойтись и без ОС.
PD>>У меня до черта есть идей относительно идеальной ОС, и чтоб собрать все воедино будет огроменный документ. Сразу бы при проектировании закладывался, что ОС должна работать на любом процессоре, от i8080 и проще до современных и будущих монстров.
Может тогда лучше отталкиваться от идеи единой алгоритмической базы.
PD>>Скорее всего в топку бы выбросил концепцию файловой системы, вместо этого что то вроде объект и набор тегов. Точно бы выкинул понятие пути к файлу!
А вот в современном программировании существуют такие понятия как: URI = URN + URL
URN (англ. Uniform Resource Name) — единообразное название (имя) ресурса.
<URN> ::= "urn:" <NID> ":" <NSS>
<NID> идентификатор пространства имён (англ. Namespace Identifier); представляет собой синтактическую интерпретацию NSS, не чувствителен к регистру.
<NSS> строка из определённого пространства имён (англ. Namespace Specific String);
Эта идея про набор тегов является URN, где NID пространства имён такие как контрольные суммы или что-то менее надёжное, вроде ISBN и так далее, а сами теги представляют собой NSS. Потому мы в принципе ничего нового не получим, те же magnet-ссылки.
URI-схема magnet: — открытый, находящийся в стадии рабочего черновика стандарт, определяющий URI-схему т. н. magnet-ссылок, предназначенных преимущественно для указания на ресурсы, доступные к загрузке через пиринговые сети.
По сути здесь ничего удалять в глобальном смысле не нужно, надо только допилить пиринговые сети до более удобного состояния.
PD>>Программу бы сразу ставил со всеми зависимостями, все программы пусть живут в своей песочнице.
В смартфонах пользователя ставят раком, или давай разрешение программе, или она не установится. В целом да, программы нужно ограничивать, но не так как это сейчас реализовано. Ещё люди жалуются на уязвимости в процессорах.
Здравствуйте, velkin, Вы писали:
V>А какая адекватная замена C/C++?
Какой-то другой язык, в котором из-за эволюционного развития не было бы таких ужасов