А почему нельзя просто использовать switch/case, который разворачивается в branch table? Почему бы не применить loop unrolling? Это же элементарные вещи, которые не зависят от языка/компилятора.
Да, есть такой закон и он говорит, что можно заявления писать как угодно, лишь бы оно было заверено лично автором или его доверенным лицом. В качестве доказательства может использоваться личная подпись или (!!) факсимиле.
Даже не буду убеждать, что в CLI можно работать быстрее и продуктивнее, чем в GUI, все равно никто не поверит. Просто приведу в пример те же самые IDE, только 2000-2005 годов.
В начале 2000-х так и было. Программы в Delphi / C++ Builder создавались из компонентов. Вставил мышкой компонент HTTP сервера, обработчиков HTTP запросов, подключения к базе данных, таблиц и запросов базы данных. Нарисовал мышкой визуальную форму с полями ввода, гридами, графиками, кнопками и панельками. В свойствах компонентов указал, с кем и как они связаны, где брать данные для отображения. И потом все это скомпилировал в файл и запустил. Получился stand-alone web server, который в браузере работает как настольное приложение, только хуже. Потому что тогда интернеты были вялые, браузеры туповатые, а дизайн делали не дизайнеры, а программеры.
Сейчас тоже так можно, причем в браузере будут не древние ActiveX скрипты с нативными формами, а модный Sencha Ext JS. Но ведь Delphi умер, вышел из моды, нет предложений на рынке.
Просто очень обидно, что в играх за секунду отрисовываются десятки полноэкранных картинок целого мира с сотнями тысяч элементов, а в текстовом редакторе за это время только предпросмотр печати одной черно-белой страницы отрисовался.
Даже если выкинуть отладочную информацию из экзешника, современный бинарник стал «толще» за счет эволюции базовых библиотек, рассчитанных на кросс-платформенность и unicode. Но, при этом сохраняется совместимость со старыми версиями ОС и железа, что требует дополнительных проверок и «оберток». В любом случае, по объему это несравнимо с Android Support Library, которая идет в составе современных андроид-приложений.
Просто в 98 мало проверок, прога может лазить в чужую память, пользоваться закрытыми хендлами и дескрипторами, и ей за это ничего не будет. Вот только от этого может рухнуть вся ось целиком (с повреждением файловой системы!), а не отдельное приложение.
На самом деле нет, вместо оптимизации будет более тщательный выбор инструментов, технологий и компонентов, поиск узких мест в профайлере, стресс-тесты. Впрочем, онлайн-разработчикам это нафиг не нужно. Это проблема старого геймдева (картриджи, диски) и хардкорной инженерии (сильно ограничены ресурсы, связь, физический доступ).
Если дать разработчику не топовое железо и ежедневные апдейты, а Athlon без SSE и WinXP без сервис-паков (без поддержки EncodePointer/DecodePointer) и гигабайт памяти, то требования к готовому продукту резко снизятся. По себе знаю. =)
Разработка занимает всего 5-10% времени. Все остальное — отладка и доработки. Поиск и затыкание дыр занимает на порядки больше времени и нервов, чем создание отверстий.
Гораздо проще, чем делать гуй в играх. А на Lazarus даже проще и быстрее, чем в Android Studio. Знакомы с Delphi? Вот то же самое, только под любую платформу, включая голое железо, без ОС. (Ultibo).
Поясню иначе.
Линукс — это сплошная стена, в которую по необходимости нужно вставить двери.
Андроид — это сплошные двери, и если они не используются, то их нужно вручную запирать или замуровывать. И добавлять недостающие двери.
Если разрабатывается гаджет общего назначения, то андроид дает максимум возможностей пользователю «из коробки» и экономит кучу времени разработчику. А вот если разрабатывается специализированный прибор, где функционал четко ограничен и ничего лишнего быть не должно, то тут андроид и прочие гуевые насадки очень сильно могут подосрать. Вы, наверное, видели снимки банкоматов, киосков, терминалов и прочих интерактивных устройств, где посторонние люди одним пальцем вызывали меню настроек, лазили по файловой системе, запускали всякие игры и творили прочее непотребство? Так вот, на системе, где нет гуя, а единственная программа, способная взаимодействовать с пользователем, написана лично тобой — такой фигни в принципе быть не может. Максимум что плохого случится — это текстовая консоль, в которой ввести ничего нельзя без подключения внешней клавиатуры.
Линукс ближе к железу, в нем проще реализовать узкоспециализированный функционал в виде отдельного приложения или небольшого набора приложений, где нет ничего лишнего.
Да, там все просто. Каждый отдел в каждом городе использует автономный узел, не имеющий связи с внешним миром, только с приборами в изолированых сетях, и не напрямую, а через специальные модули связи. Но есть возможность слать все новые данные на другой узел — это может быть как резервный сервер для горячей замены, так и «вышестоящий», региональный узел. Каждый элемент данных имеет глобально-уникальный идентификатор, поэтому возможен обмен между любыми узлами без конфликтов, при этом видно, где созданы данные и где они побывали.
Проект заглох за ненадобностью, но отдельные части кода, идеи и наработки применяются в системе приема извещений от охранных и пожарных приборов на пультах центрального наблюдения МЧС и МВД Республики Беларусь. Будет спрос — реанимирую проект на новом уровне качества и защиты.
Старый добрый read-only. =)
Сейчас тоже так можно, причем в браузере будут не древние ActiveX скрипты с нативными формами, а модный Sencha Ext JS. Но ведь Delphi умер, вышел из моды, нет предложений на рынке.
Линукс — это сплошная стена, в которую по необходимости нужно вставить двери.
Андроид — это сплошные двери, и если они не используются, то их нужно вручную запирать или замуровывать. И добавлять недостающие двери.
Если разрабатывается гаджет общего назначения, то андроид дает максимум возможностей пользователю «из коробки» и экономит кучу времени разработчику. А вот если разрабатывается специализированный прибор, где функционал четко ограничен и ничего лишнего быть не должно, то тут андроид и прочие гуевые насадки очень сильно могут подосрать. Вы, наверное, видели снимки банкоматов, киосков, терминалов и прочих интерактивных устройств, где посторонние люди одним пальцем вызывали меню настроек, лазили по файловой системе, запускали всякие игры и творили прочее непотребство? Так вот, на системе, где нет гуя, а единственная программа, способная взаимодействовать с пользователем, написана лично тобой — такой фигни в принципе быть не может. Максимум что плохого случится — это текстовая консоль, в которой ввести ничего нельзя без подключения внешней клавиатуры.