Comments 378
the decline of — это упадок, падение, сокращение
https://context.reverso.net/
Ваш заголовок подразумевает типа конспирологию — кто-то решил отказаться от нативных приложений во вред пользователям. Злая воля.
Как заголовок по-английски — нативные приложения не выдерживают конкуренцию у разработчиков по сравнению с приложениями под VM. О чем, собственно, и статья.
Насколько далеко от Mac-like был Word 6, но даже он был ближе, чем нынешние Google Docs, открытые в браузере Chrome. Google Docs это анти-Mac текстовый редактор запущенный внутри еще более анти-Mac веб-браузера. То, что Mac-пользователи решительно отвергли как анти-Mac в 1996 году, было лучше, чем то, что пользователи Mac счастливо терпят сегодня. Программам больше не требуется выглядеть нативно под Mac, чтобы достичь на нем успеха сегодня. Это является трагедией.
Шовинизм и разжигание межплатформенной розни. Мак-Мукс-Клан какой-то.
Нет, я не говорю, что ситуация, когда в одном редакторе (скажем в Microsoft Word) Backspace удаляет символ, а в другом (скажем Turbo Pascal 1.0) не удаялет — прекрасна и удивительна… но это ведь максимально далеко от «колебания вместе с линией Партии», которая, как раз — фирменная фишка MacOs…
Далее, знаменитое: Think Different — ага «выберите цвет своего ноута из списка в один пункт и проихводителя видеокарты из списка такой же длины» очень, ну просто очень… different.
Хотя если вдуматься то вот эта вот странная идея: «выделиться из толпы путём покупки того же, что и все» — она ведь уже столетия модой движет… так что ничего нового тут нет… но всё равно дико…
Упомянуты по мне разные вещи, но вот с точки зрения пользовательского интерфейса
что как раз там разработчиков заставили ходить строем
на мой взгляд лучше, чем разгадывать очередной результат авангардного творчества в том смысле, как что в нём делается. Сам UIKit по мне пока что оставляет желать лучшего, но всё ж меняется в лучшую сторону.
Это не хорошо и не плохо, просто удивляет — примерно как когда жители Северной Кореи начинают рассуждать о том, что вот у них-то, дескать, настоящая свобода и отсутствие притеснений.
У маководов вообще в большинстве и мышление и оценки через другое место.
Сие не есть плохо или хорошо, просто надо принять это как данность и учитывать в принятии решений.
И, если честно, не совсем понял, при чем тут это. Я лишь выразил мнение, что веб интерфейс дорос до такого уровня, что, при качественной реализации, им вполне безболезненно можно пользоваться вместо нативных решений. А иногда он дает и некоторые преимущества в виде отсутствия необходимости что-то дополнительно устанавливать, например.
Дублирование движка Electron в каждой программе становится значительной проблемой производительности. Вместо этого они хотят иметь один на всех экземпляр Electron вместе со своими дополнениями.
Сейчас меня вместе с shm-vadim распнут, но мне тоже очень нравятся приложения на Electron. Может быть, дело в том, что у меня достаточно мощный компьютер, но они ощущаются как более быстрые в работе, чем нативные. Загружаются дольше, чем нативные (не все), но потом работают быстрее. Подозреваю, что это иллюзия, связанная с асинхронностью/анимациями. Но работать с ними приятнее.
Это первое, а второе — большинство Electron приложений, которые я пробовал в последнее время, имеют отличную функциональность по сравнению с нативными аналогами. VSCode, Slack, GitKraken. Может, совпадение, а может — время, сэкономленное на
Затраты бы отбились, просто прибыль была бы на целых 20 процентов меньше. Или на 10.
На самом деле два:
- https://github.com/telegramdesktop/tdesktop — кросс-платформенная версия на QT
- https://github.com/overtake/TelegramSwift — версия на Swift.
Я пользовался обеими версиями, и вторая работает намного лучше.
2) Профит, ибо у нас нативное приложение на всех платформах.
Для этого понадобится писать отдельный платформо-зависимый код, а для этого нужно больше разработчиков.
Здесь разговор не про нативность с точки зрения бинарного кода, а с точки зрения удобства пользователей. Единообразные горячие клавиши, внешний вид диалогов и меню.
Тут да, но можно настроить QT так, чтобы он выглядел довольно нативно. К тому же, если правильно писать код, то все горячие клавиши настраиваются, а диалоги используются системные.
Если вы не не пишете что-то компилирующееся в байт-код и тащащее все библиотеки с собой, то вы или обреченны на тюнинг бинарников под каждую платформу или вы обрекаете пользователя на превозмогание, если его окружение чуть-чуть отличается от вашего.
И на каждом дистрибутиве линукса у него будет свой ворох уникальных ошибок при сборке, и на каждой версии windows, и на каждой macOS.
nix. Под один-единственный не-Unix-Like Шиндовс можно и превозмочь разобраться с ошибками.
вы обрекаете пользователя на превозмогание, если его окружение чуть-чуть отличается от вашего.
Можно сделать так, чтобы окружение у всех совпадало с точки зрения программы. Тогда гимора меньше.
На macOS ты попробуй только не дай ld пощупать каждый dylib, и каждую зависимость каждого dylib. Всё, не хочу, не буду компоновать.
На Linux в бинарники зашивается rpath. На macOS в каждый dylib зашивается, «где меня искать», и когда ld щупает все dylib, он копирует это в те файлы, которые компонует. Они теперь будут искать по тому адресу, который увидели в dyld.
Таблица импорта в Windows и macOS двухэтажная, то есть, понятно, какой символ из какой библиотеки, на Linux одноэтажная.
Гораздо проще с Windows. Не зря полнятся фрисофты и софтпорталы экзешниками.
На Linux в бинарники зашивается rpath.
Не вводите в заблуждение. «Зашивается» только при наличии параметра линковки -rpath, при -rpath-link путь к библиотекам используется для линковки без «зашивки». По умолчанию оба параметра не используются, линковщик использует пути определенные в LD_RUN_PATH (man ld).
Гораздо проще с Windows. Не зря полнятся фрисофты и софтпорталы экзешниками.
Correlation dose not mean causation. У винды 90% рынка десктопов, поэтому под нее куча софта, а не потому что под нее собирать бинарники проще.
Nix — это хорошая штука, но пока имеет два (три) недостатка:
1) Наркоманский синтаксис пакетов
2) Все можно ставить только в \nix
, установка в другие места (например в хомяк) требует дополнительных телодвижений (если вообще возможна?)
3) Он пока не распространен
1) Наркоманский синтаксис пакетов
Это да, но пока GuixSD не научился грузится на нормальных машинах ит пакетов в нём кот наплакал, альтернатив нет.
2) Все можно ставить только в \nix, установка в другие места (например в хомяк) требует дополнительных телодвижений (если вообще возможна?)Сейчас можно сделать nix store где угодно, хоть в хомяке, хоть на удалённой NFS-шаре.
3) Он пока не распространен
Ну смотря с чем сравнивать.
Вместо одного кросс-платформенного приложения вы будете писать два специализированных (или даже 3, если еще и Linux).
Будет одно кросс-платформенное приложние, просто не на электроне, а например на Qt.
Как это может увеличить затраты всего на 10%, если у вам понадобится содержать в 3 раза больше разработчиков?
Затраты увеличатся больше, чем на 10%, но чем популярнее приложение, тем меньшую долю в общих расходах составляют зарплаты разработчиков.
Ваш ход мысли идет по тому же пути, что и в этом треде, где уже объяснялась разница между нативным интерфейсом и нативным кодом
Очень странная фигня — vscode для меня был просто открытием, сейчас я не представляю свою работу без него. И по производительности не уступает никому. А вот слак показался жутко тормозным, а сейчас думаю — я к нему привык или слак все таки сделали быстрее?
Вообще, как по мне, идея заменить кроссплатформенными решениями нативные очень странная. Electron и прочие — это не замена нативной разработке, это возможность избавиться от Java и Qt в сегменте прикладного софта. А как делать — кроссплатформенно, или нативно — решать должен в первую очередь бизнес. Если есть бюджеты сопоставимые Дуровским то почему бы и не нанять вдвое больше разрабов и не сделать прям очень круто?
а с vim глупо сравнивать, так как это все таки разные вещи.
а с vim глупо сравнивать, так как это все таки разные вещи
vim и vscode разные вещи? А vscode и sublime не разные?
Ну вы считаете, что глупо сравнивать vscode с vim, потому что это разные вещи, а c sublime vscode сравниваете. Видимо, вы считаете, что sublime и vscode — не разные вещи. И тут совершенно непонятно в чём отличие между парой sublime — vsсode и парой vim — vscode. Почему элементы из одной пары сравнивать можно, а из другой — нельзя?
отсутствие необходимости что-то устанавливать на компьютерСуществует концепция portable-версий ПО, которая несомненно должна спасти отца русской демократии.
А с Electron'ом каждый раз по новой устанавливается аж целый браузер.
Компания взглянула на мое резюме и предложила провести собеседование + техническое интервью. На мой вопрос в каком из мессенджеров, ответили, что для таких целей используют google meat и прислали ссылку на созданное по этому поводу собрание. При этом мне было достаточно открыть ее в браузере, разрешить доступ к камере и микрофону и нажать кнопку «Присоединиться к собранию».
Вот зачем мне при этом ваши эффективные, органично вписывающиеся в систему нативные приложения? Хоть даже и портабельные. Все равно их надо скачивать с сайта производителя и разархивировать, а потом удалять, в случае ненадобности. Именно поэтому у того же google meat для windows ничего нет. Потому что это не нужно.
То же самое можно сказать про slack. Лично мне полностью хватает браузерного функционала. Так что нет никакого смысла скачивать клиент под windows. Тем более, что он все равно никаких дополнительных возможностей не предоставляет.
Поэтому я и считаю, что за полнофункциональными PWA будущее. Тем более, что для них отдельный экземпляр хрома не нужно будет тащить. Если приложение осуществляет работу исключительно с сетью — ок, пользуй, как веб страничку. Если нужен доступ к системе, как тому же VSCode — предложит в один клик установить локально, и будет запускаться как отдельное окно браузера. При этом все плюсы: кроссплатформенность, унификация, скорость, отзывчивость, расширяемость, доступность останутся. Мне это кажется, как минимум, перспективным.
А вот по поводу того, что веб-решения плохо подходят для постоянного использования я уже не сильно согласен. Пару лет назад я бы без колебаний подписался под этим высказыванием. Но с тех пор мое мнение постепенно меняется.
А то что и в нативном мире все далеко не гладко, на мой взгляд, хорошо подтверждает то, что под десктопы существует очень мало клиентов популярных веб-проектов. Да и под мобилки они часто толстые, тупые и нефункциональные.
Ну вот есть у вас 5 постоянно нужных веб приложений и надо перезагрузить браузер. Все они вырубаются и потом сами не начинают работу, пока каждую вкладку отдельно не кликнешь. При этом браузер сжирает всю оперативку и уже начинает вылезать из компа, чтобы задушить вас. Короче неудобно все держать в браузере. А ещё электронные приложения любят ни с того, ни с сего выжирать ядро процессора.
Отлично подходит для чатов и т.п.
При этом объяснить зачем им отдельное приложение никто обычно не может. Есть какое-то полу-суеверное мнение что в браузере все «не стабильно», а в приложении как-то «надежнее».
Банкинг и ютуб — тебуют наличия всяких нативных штук (хотя пока из ютуба не выпилили воспроизведение звука в бэкграунде — я пользовался веб версией)
Али нe пользовался, у ибэя действительно убогий сайт (и не только мобильный)
Фишка браузера в том — что это и есть унифицированный интерфейс для всех приложений. Везде можно нажать «назад», зумить, выделить текст, открыть ссылку в новой вкладке, поделиться url'ом, сохранить картинку и т.д.
Да, я из тех, кто любит отдельные приложения. Ну серьёзно, они работают быстрее и функций в них больше.Ну дык за это их и любят… но современная тенденция это «жрите что дают… хотели „нативного приложения“?.. мы вам браузер с нашим веб-сайтом изолентой смотаем и скажем, что это — нативное приложение...»
Ненавижу…
когда есть полная альтернатива в форме веб приложения
Простите, но это как опрос «пользуетесь ли вы интернетов» проводить через сайт.
унифицированный интерфейс для всех приложений
Проблема в ненормальном стремлении браузеров стать эдакими операционными системами — мы получаем слой абстракций на ровном месте.
Простите, но это как опрос «пользуетесь ли вы интернетов» проводить через сайт.
Не очень понял, почему?
Проблема в ненормальном стремлении браузеров стать эдакими операционными системами — мы получаем слой абстракций на ровном месте.
Не на ровном месте. «write once, run anywhere»
у хабра есть мобильное приложение… просят обновлять
Просят его написать. Когда я его последний раз запускал, оно могло «на главной» показывать статьи недельной давности и даже полная версия сайта на каком-нибудь GPRS загружалась быстрее. Как они так смогли — не понимаю.
прислали ссылку на созданное по этому поводу собрание. При этом мне было достаточно открыть ее в браузере, разрешить доступ к камере и микрофону и нажать кнопку «Присоединиться к собранию».Для таких случаев оно и нужно. Может имярек пройдёт собеседование, а может и нет — глупо просить соискателя ставить конкретный клиент и ещё давать ему гостевую учётку корпоративного сервера видеоконференций.
Вот зачем мне при этом ваши эффективные, органично вписывающиеся в систему нативные приложения?И это спрашивает человек с Хабра :( На секунду показалось, что я ixbt.com просматриваю.
Все равно их надо скачивать с сайта производителя и разархивировать, а потом удалять, в случае ненадобности.Ну, да, существуют такие мальчики-летуны, которые обладают приятным голосом и ясным взлядом, умудряются проходить почти любые собеседования в мелких и не очень конторах, но нигде не задерживаются больше месяца-полутора. Очень редкая, но неприятная категория. Для таких, наверное, это проблема — каждый раз на новой работе под требования текущей конторы что-то новое устанавливать.
Поэтому я и считаю, что за полнофункциональными PWA будущее.Лет 10 назад то же самое говорили про Microsoft .NET.
При этом все плюсы: кроссплатформенность, унификация, скорость, отзывчивость, расширяемость, доступность останутся.«Надежды юношей питают, отраду старцам подают...»(с)Ломоносов
Нужны ли нативные приложения или достаточно будет веб-сервиса/веб-морды — всё зависит от того, является ли комп основным рабочим инструментом. Если требуется комфортно работать, чтобы ни мессенджер, ни что другое не мешало основной рабочей среде — да нужны. Если необходимо только формировать отчёты и связываться с коллегами — нет, не нужны.
Увы, мак вырос и под него пришли писать приложения компании которым плевать на культуру мак, им плевать на пользовательский опыт, мак для них — ещё одна проблема которую надо решить минимальными затратами. Аутлук, ворд-ексель, слак, телеграм и куча более невежественных кроссплатформенность Qt-поделок, или, того хуже Java SE кошмаров. К ним добавился Электрон, а теперь и сам Эппл игнорирует свой же UX.
Бабло побеждает всё )
А что вы имеете против Qt? В отличие от электрона эта технология максимально близка к процессору, никаких виртуальных сред исполнения и скриптов в браузерах.
И в Qt'e есть большой пласт кода под общим названием look & feel, который как раз нацелен на то, чтобы пользовательский опыт не был неожиданностью на платформе.
Ну это не совсем так. В qml можно почти весь фронт написать на js, который станет исполняться на V8. При этом нативные модели представления могут быть очень тонкими и их можно не брать в расчет.
rpg18 справедливо заметил, что там сейчас другой движок, QV4. Да, внутри JS движок, но все же это не будет то же самое, что HTML, потому что QML гораздо современнее, изначально создавался для динамичного и гибкого построения GUI, а не для статики. Там многопоточность адекватная работает, есть сигналы и слоты с чисто C++ реализацией, стилей всяких кривых как правило нет, а просто изображения рендерятся.
Когда запускаешь приложение, то, обычно, сразу видно, что это Qt. Начинаешь пользоваться и сразу утыкаешься в то, что разработчик приложения не живёт в экосистеме мака и сделал клон потому что может. Основная беда — не работают привычные шорткаты, часто их даже нельзя задать, поскольку мало кто за пределами мака знает, например, про cmd+E. Пункты меню напиханы как захотелось разработчику — чтобы что-то найти, приходится искать, и хорошо, если есть поиск в хелпе. Контролы на окно набросаны «чтобы было», а не в соответствии с гайдлайнами — выглядит примерно как сайт из 90-х.
немного надумано
Вам, конечно, видней.
Если разработчику
насколько мне известно разработчик не решает задачи этого уровня, а бизнесу важно поставить галочку минимальными усилиями
Разве QT не позволяет написать нативный интерфейс OSX?
Можно, но, как уже было сказано выше, подавляющему числу кроссплатформенных проектов недостаёт понимания культуры платформы, проще говоря сделано по принципу «так сойдёт».
А что пользователи, почему они это терпят? Мне кажется, дело в массовом проникновении web. Во времена Word 6, html был настолько уродлив, что по интерфейсу он и близко не мог конкурировать с десктопом. Сейчас все изменилось, некоторые веб приложения функционально и особенно визуально стали не хуже нативных приложений. Этих приложений стало очень много, пользователи научились работать с разными приложениями и «нативность» и следование гайдам осталась нужна далеко не многим. В результате имеем то, что имеем. Сейчас это стало похоже на вывески и рекламу в провинциальном городе — каждый лепит, что хочет, да поярче. Упорядочить это будет сложно, т.к. приложение пишется под сильно разные целевые ОС.
Во времена Word 6, html был настолько уродлив, что по интерфейсу он и близко не мог конкурировать с десктопом.Времена Word 6 — это, я извиняюсь, 1993й год, тогда про HTML только в CERN'е знали и с интерфейсом у него было чуть более, чем никак. Браузер был только один, второй появился плюc-минус тогда же и в нём только-только появился тег <img>…
В общем говорить об это как об интерфейсе приложений — было нельзя от слова «совсем».
Сейчас это стало похоже на вывески и рекламу в провинциальном городе — каждый лепит, что хочет, да поярче.То же самое было в 80е в мире MS-DOS и CP/M.
Однако появление MacOS и Windows всё изменило… осталось только понять — как и почему.
Так-то винформам давно пора на покой.
Насчет мощности.
Пересел как-то с 6-гигового ноута на 16-гиговый, проц тоже в пару раз помощней. Рабочее окружение такое же. Через пару недель выскакивает окошко: «Недостаточно памяти. Закройте то-то»
Офигевая лезу в диспетчер — да, почти вся память съелась тем же Хромом, немного остальным.
Это Винда. Она щедро распределяет все, что имеет, и ее не насытить. И определенная логика в этом есть.
Вот так, я думаю, виндоуз ресурс скедьюлер работает.
Целых 16 гиг и всего 20 вкладок? Так у вас просто запросы скромные. Опера (старая, на престо) без проблем показыва 200 и при этом ела не больше гига. Почему-то ни один современный браузер на такое не способен. Зато стильно-модно-молодёжно.
Только почему-то на момент существования в опере было меньше уязвимости чем в любом другом (может конечно просто не искали — доля рынка маленькая), а по стабильности она была лучше чем все ныне существующие вместе взятые. Впрочем, это всё равно не имеет значения, уже похоронили. Простите мне моё брюзжание, мне стоило воздержаться от комментариев.
Да, не от хорошей жизни. Только от жадности и лени.
Нет. Можно добится отсутствия уязвимостей высоким качеством кода, а можно переложить эти задачи на программу (читай — на мользовательский пк). Повысить касество кода — солжно и дорого, получить "безопасность" ценой увеличения нагрузки на пользочательский ПК — легко и дёшево. А люди жадные и ленивые. Результат немного предсказуем.
Я знаю один пример — но он очень показателен. Загрузчик Wii. 8K кода. Очень простого кода. Без GUI и многозадачности. Загрузить загрузчик второго уровня, проверить подпись и запустить. Всё.
На устранение всех ошибок ушло три года.
Как вы думаете — сколько времени уйдёт на устранение всех ошибок в программе размером с современный браузер? Если экстраполировать?
А много ли вы знаете проектов где отсутствия уязвимостей и стабильности добились с помощью особенностей языка? Я так например ни одого не знаю. Зато проектов которые не избавившись от недостатков получили ещё и прожорливость — множество.
Вы занимаетесь демагогией. Я вам про отсутствие уязвимостей — вы мне отсутствие проблем работы с памятью. Мне, как пользователю, наплевать, связана уязвимость с работой памяти или нет. А значит все эти языки не рещают проблем пользователя (зато решают проблемы программиста с кривыми руками), но при этом создают проблемы тому же пользователю из-за прожорливости.Никакой пользы окромя вреда.
А много ли вы знаете проектов где отсутствия уязвимостей и стабильности добились с помощью особенностей языка?А причём тут «особенности языка»? Архитектура к языку не сводится.
Если хотите порассуждать о стабильности — попробуйте добиться от классической Windows (хоть 1.0/2.0/3.x, хоть Windows 9x) стабильности, сравнимой с Windows NT (и потомками Windows NT) или даже Linux (там похожие идеи использованы).
Да, вирусы от перехода на XP/Windows 7/Windows 10 не исчезли, да, вместо вирусов, прописывающих себя в MBR мы получили криптолокеры и прочее… но говорить, что между ними нет никакой разницы может только идиот, не понимающий, что «отсустстие уязвимостей» и «стабильность» — не бинарные понятия.
При статье они. Как-то линейку windows nt смогли написать более стабильной без Rust'a и Go. А в статье пишут, что дескать нельзя по определению.
Как-то линейку windows nt смогли написать более стабильной без Rust'a и Go.Всё в этом мире относительно. Несколько лет назад было исследование — сколько времени живёт выставленная в Internet Windows 2000 без сервис-паков. Оказалось что скачать их с сайта Microsoft она не успевает.
А ваш роутер, который отсекает все эти попытки взлома — это как раз классический дополнительный уровень безопасности и есть.
И внезано, ПО этого роутера тоже как-то обходится без Rust, Go, и прочих Java. Кагжетаг?
Что, правда чтоли? https://habr.com/post/249537/
Обходиться можно и ассемблером.Грустный опыт разработчиков OS Menuet/Kolibri как бы показывает нам, что нельзя.
И, к слову, Windows 98 была довольно стабильна. Как минимум сней у меня было меньше проблем чем с NT 3 (или 3.5? я уже и не помню. четвёрка уже была гораздо лучше, хотя вроде та же архитектура).
Ваш коврик выполнил недопустимую операцию и был свернут
жмешь «закрыть»… а оно опять… ещё раз… синий экран… нажмите любую кнопку… оо, работает
===
забыли уже?
Не знаю о чём вы. Win98 стояла лет десять, за это время бсодов наверно штук десять было, и всегда это было связано с тем, что я проводил какие-то бесчеловечные опыты. Вот Win95 это была жесть, да.
поставьте себе Win98 и посидите недельку ;) я пару лет назад тут на старый комп ставил 98… прям как в прошлое вернулся и «выполнило недопустимую операцию» и все все радости 9x
раньше это просто было настолько нормой что внимание не обращали
p.s. сидел на винде с 3.0 версии довольно долго, на каждой кроме me и nt 3
Да где же я драйвера возьму под 9x! Да и софт современный не запустится. А без драйверов и софт не очень понятно что там вообще делать, в косынку играть? так при таком использовании будет годами работать без сбоев)))
Браузер, по своей важности и степени внедрения ни капли не уступает ОСям. Соответсвенно, подходить к вопросу нужно ответсвенно. Процессы в системах существуют не для безопасности, а что-бы программы хостить.
К памяти можно было бы относиться более бережливо, если б были счётчики ссылок и слабые ссылки, и только на крайние случаи сборщики мусора. Но за столько лет в JavaScript так и не сделали слабые ссылки.
Плевать там все хотели и на безопасность, и на потребение памяти.
Память это необходимый компромисс. Безопасность не дается бесплатно. Она так или иначе требует компромисса — или безопасно, или быстро. По-другому в нашем мире не бывает.
Память там отъедается мощно трассирующей сборкой мусора. Про то, как надёжно запечатаны двери в светлое будущее, где счётчиками ссылок и слабыми ссылками сберегается память, я уже написал.
Альтернатива плюсам существует 23 года, ещё когда никакого Rust в проекте не было, и это Ада. Вообще, первый, кто задумался о безопасности в языках программирования, — это Никлаус Вирт. Это он первый придумал проверять границы и переполнения. И это был язык Паскаль. И естественным образом это унаследовано потомками Паскаля.
За слепошарых мозилловцев ничего не могу сказать. Ну, странные люди.
Ну и давайте уже какие-то пруфы про трассирующую эту сборку. Ваши фантазии читать не особо интересно.
Что до Ады, беглый гуглинг говорит, что для данной задачи оно не подходит, т.к. безопасность уровня Rust не дает. Есть даже предложение внести что-то подобное Rust в аду, чтобы эту безопасность получить. Ну и, если бы webkit начали писать на этом языке, то можно было быть уверенным, что до наших дней он бы не дожил, т.к. его бы некому было писать. C++ был явно выбран, потому что на то время это был единственный высокоуровневый быстрый язык с большой популярностью. Судя по рейтингам, тогда он проигрывал в популярности только С.
Ну и давайте уже какие-то пруфы про трассирующую эту сборку. Ваши фантазии читать не особо интересно.Там не «пруфы». Классика — это, вроде бы, вот это статья. Там хорошо видно, что при использовании GC либо вы имеете небольшой overhead по памяти — и дикое замедление, либо небольшое замедление — и потребляете в 4x-5x больше памяти.
Насколько я знаю никто ничего с этим поделать не смог. А вообще web платформа — это тихий ужас. Она чуть менее, чем вся состоит из решений, которые увеличивают потребление памяти и замедляют работу во много раз.
браузеру нужно эти процессы поддерживать как единое целое
И что там поддерживать? HWND для отрисовки поделиться? Кукисы заброадкастить?
И какие данные там дублировать? Основное, что раздувает память, это DOM, JavaScript объекты и 400% мусора от них, а они не дублируются. К сожалению, отсутствие слабых ссылок усложняет задачу избавления от мусора, так что в JavaScript по принципу и так сойдёт остаётся даже больше мусора (формально достижимого), чем в других системах с TGC, но где слабые ссылки есть.
Кеш? Ну, может быть. shmem для кеша нетривиален. Могли недостаточно хорошо сделать.
Но мне кажется, они там не за безопасность думали, а как прикрыть свой зад. Я когда Safari пользовался, когда он ещё второй версии был, он падал, потому что не на Аде был написан. OmniWeb ещё пользовался, и он тоже был не на Аде написан, и поэтому падал, но ещё чаще. Падал сразу весь, с текстами недописанными в каких-то вкладках, и это мегафейл. Не считая переписывания на Аде и последующего прозрения, от чего ж там на самом деле падает, и исправления найденных косяков, запилить это в отдельные процессы, похоже было единственной альтернативой. Не решить проблему, а замести под ковёр.
Mozilla тут проще, у них нейтральный к языку XPCOM, разные компоненты по отдельности можно апгрейдить на Аду. В WebKit нет XPCOM, но есть Objective-C runtime, тоже потенциально многоязыковой движок.
Ну и давайте уже какие-то пруфы про трассирующую эту сборку. Ваши фантазии читать не особо интересно.
Почему веб-приложения на мобильных платформах работают медленно
Что до Ады, беглый гуглинг говорит, что для данной задачи оно не подходит, т.к. безопасность уровня Rust не дает.
Сколько на ней пишу, даёт. И ещё даёт ООП внятное, сопоставимое с подмножеством, используемым в C++ и Delphi. Не такая эзотерика с типажами, как в Rust, под которую нужно всё через колено ломать. И исключения вменяемые. Растовские паники (а переполнения чисел и выходы за границы массивов производят именно их) — это почти как апокалипсис. Перехват паники — нештатная операция, и даже, если перехватить, то ещё штатный обработчик успеет нагадить в консоль своё бесполезное сообщение, и его тоже тогда надо перехватывать, чтоб не гадил. Я такую обработку ошибок последний раз в Turbo Pascal видел. Там галочки проверять диапазоны и переполнения были в настройках, но если их включить, происходили такие же апокалипсисы. В Delphi версии этак с четвёртой человеческие исключения возбуждаются, в языке Ада изначально по-человечески.
если бы webkit начали писать на этом языке, то можно было быть уверенным, что до наших дней он бы не дожил, т.к. его бы некому было писать
Да те же, кто пишут браузеры, и писали бы их на Аде. Чтоб спецы могли запрогать рендеринг не заточенного под это CSS в слои OpenGL, а с одного языка с RAII, шаблонами и ООП не могли перейти на другой язык с RAII, шаблонами и ООП, — да ну, бред какой-то. Кто бы стал там держать принципиально необучаемых. Всё они могут.
Я когда Safari пользовался, когда он ещё второй версии был, он падал, потому что не на Аде был написан. OmniWeb ещё пользовался, и он тоже был не на Аде написан, и поэтому падал, но ещё чаще.
Получается что все что не написано на Аде — говно.
Толстый троллинг.
Например, CCured, CHERI и Эльбрус делают указатели разбухшими до четырёх раз, накачивая метаданными, но зато становится возможно проверить валидность. В автоматическом режиме, не переписывая на Аду, принудить код Си и C++ к корректности можно только так.
Возможность починить состояние: если лажу оперативно выявлять и пресекать, то и нечего чинить, а вот если крутится Си или C++, без CCured, CHERI или Эльбруса, то остаётся такой радикальный способ, как изолироваться от плюсовой лажи границами процесса. Там, в компостной яме изолированного процесса пусть всё протекает и гниёт как хочет, а граница процесса удерживает гниль от распространения. Но эти границы вроде бы тоже чего-то да стоят по памяти.
Но зачастую просадку в производительности можно (хотя бы теоретически) сделать маленькой.
Например, песочница для браузера, может быть выполнена (я не знаю, есть ли такая опция в современных ОС, но сделать ее точно можно) как процесс, которому запрещены все системные вызовы. Память выделается один раз, при старте. Сеть/файлы — через общую память с мастер-процессом. Получается довольно быстро (проблемы только с вводом выводом) и довольно безопасно(надо один раз подумать и качественно обрабатывать shared memory).
Шифрование — можно реализовать аппаратно, и оно начинает работать быстро.
Накладные расходы на процессы довольно невелики. (НЯП, там только стек, и несколько килобайт в ядре).
Судя по хрому, накладные расходные на их процессы довольно велики. И я совсем отказываюсь верить, что там прям из рук вон плохо все сделано и можно было ужать каждый процесс в 10МБ. Даже если убрать их сборщик мусора.
Опера (старая, на престо) без проблем показыва 200 и при этом ела не больше гига.Тут ещё надо учесть, что те двести вкладок совсем другие были, интернет был совсем обезжиренным по нынешним меркам. Хотя хром и правда любит покушать, конечно.
Аналогичное ПО и игры теперь весят в 10-ки раз больше, виртуализируются по 10 раз подряд, до вывода на экран.
Но программисты решили, что уж лучше терпеть Electron, чем монополию, а чего там хотят пользователи — то уже лет 15 как никому не интересно.
При этом я не против elecrton-ов и аналогичных web-движков, просто все чаще их суют просто потому, что по-другому уже не умеют.
Но вообще проблема в том, что хочется всё и сразу, и веб, и не веб. И Электрон позволяет это, но тогда нужно прогнуться под правила веб. А нет такого решения, чтоб, наоборот, прогнуть веб, а на десктопе и сервере было всё хорошо, как обычно.
Что можно было брать QIP'ы и The Bat! ы, с многопоточностью на мониторах, а не на хоаровских сообщениях, и загонять в веб, каких бы костылей это ни стоило. Я пытаюсь сделать это темой своей магистерской работы.
Зато работают на 10 платформах, а не только на однойОй ли? Возьмите «тот самый» DOOM, который летал на этом новеньком Pentium. Но поддерживал, при этом, MS-DOS (x86), Sega 32X (2 процессора SH2), Atari Jaguar (68000 и два проприетарных RISC'а), SNES (Super FX 2), Playstation (MIPS и ещё один проприетарный сопроцессор), 3DO (ARM60), Sega Saturn (те же 2 SH2, что и ранее, но другой API), Acorn Archimedes (тоже ARM, но другая OS), GBA (ещё одна OS на ARM). Ну а неофициально — и на осцилографе.
Именно фрагментация — причина существования таких технологий, как Electron.Извините, но по сравнению с 90ми и, особенно, 80мы сегодняшная «фрагментация» — это смех.
Нет, причина существования Electron — банальнее и проще. Просто разработчиков на JS — на рынке много и они готовы работать «за миску риса» — а Electron позволяет их утилизировать. И всё.
Но программисты решили, что уж лучше терпеть Electron, чем монополию, а чего там хотят пользователи — то уже лет 15 как никому не интересно.А вот с этим, боюсь, придётся согласиться. Поскольку пользователи нонче за ПО не платят обычно, то они — таки товар. А кто будет обращать внимание на жалобы и желания товара?
Ой ли? Возьмите «тот самый» DOOM, который летал на этом новеньком Pentium. Но поддерживал, при этом, MS-DOS (x86), Sega 32X (2 процессора SH2), Atari Jaguar (68000 и два проприетарных RISC'а), SNES (Super FX 2), Playstation (MIPS и ещё один проприетарный сопроцессор), 3DO (ARM60), Sega Saturn (те же 2 SH2, что и ранее, но другой API), Acorn Archimedes (тоже ARM, но другая OS), GBA (ещё одна OS на ARM).
Справедливости ради, для всех этих платформ надо было переписывать код (не весь конечно), часто даже нанимали стороннюю компанию для портирования под определенную платформу.
У меня был Celeron 333, 64Mb RAM, 8Gb HDD. А Celeron вышел значительно позже Pentium 166x
Это и сейчас так есть. Вот пример создания js-приложения под Windows 10 в официальной документации. В этом и есть один из моментов перехода на Chromium. Раньше все эти псевдо-нативные приложения открывались в Edge, а теперь это будет Chromium.
Простота разработки победила производительность.
Эмуляция x86 появилась гораздо раньше нативной Джавы
Когда в Унипро делали нативную Джаву, им долго не удавалось получить производительность выше, чем у Джавы в x86 эмуляторе
Оптимизированный JavaScript в Унипро сделали только после Java
А WebAssembly ещё не сделали
На примере Windows для ARM:
5 лет назад, Windows RT: да зачем эмуляция x86 на ARM? это убивает всю идею энергоэффективности
сейчас, Windows 10 для ARM, Always Connected PC: после того, как что-то не пошли продажи, и эмулятор сразу сделался, и кеширование транслированных цепочек на диске, и нативные срезы библиотечных функций, в общем, почти образцовая эмуляция x86 сделана (чтоб идеально, надо ещё кое-что)
Мне кажется, x86 исчезнет как родная архитектура процессоров, но останется как универсальный байткод. Objective PE, во всяком случае, имеет такую идеологию, хотя поддержка WebAssembly не исключена.
В том состоянии, как сейчас, WebAssembly требует довольно много костылей, и как пойдёт развитие, не понятно. Скажем, в Wasm все остановы (trap) полностью срывают стек. Значит, чтобы это обойти, нельзя пользоваться стеком Wasm, нужно размещать искусственный стек в памяти, чтоб можно было возвращаться, где остановились.
WA как родной набор команд? Вы в курсе для начала, что он стековый, а это как-то и раньше не прижилось.
PNaCl был попыткой сделать переносимый байткод из LLVM-биткода.
Оно даже работает… но мало кого волнует…
Первый транслятор Wasm был конвертером из Asm.js
И люди, которые Wasm подняли, вроде те же, что и за Asm.js.
А PNaCl? Пока он только в одном браузере, это ни о чём было. Вот FlasCC — другое дело.
И я не видел, чтоб там QIP, The Bat!, Total Commander или ещё какое-то типичное десктопное приложение «спокойно» портировалось в веб с помощью одной из этих технологий. Даже под Linux с большим спокойствием портировали с Windows приложения, хотя там запрос меньше.
Большей части из этих приложений не было бы вообще ни в каком виде.
*смотрит на Slack* Не уверен, что это такая уж проблема…
Большей части из этих приложений не было бы вообще ни в каком виде.А почему вы-таки считаете, что это было бы плохо?
Те 5 или 10 приложений, которые не являются заменой давно существующим приложениям для десктопа «с новыми перламутровыми пуговицами» — появились бы всё равно, а очередной ICQ, жрущий в 10 раз больше, чем и без того дико жрущий официальный клиент… он нам точно нужен?
Имхо, не за горами день, когда весь софт на обычном устройстве (спецсофт не в счет) будет написан на JS. Это прекрасно — однообразие, достаточно простой вход. Не без другой стороны медали. А вот UI перестраивать под систему, под которой исполняется было бы не плохо, ибо, имхо, это не сврехзадача.
Похожее на Electron API, только использует установленный в системе Chrome, а не несет свой на борту.
А вот UI перестраивать под систему, под которой исполняется было бы не плохо, ибо, имхо, это не сврехзадача.Намного логичней и удобней было бы прийти к единому унифицированному UI на всех платформах. Понятно что UI для мобильных должен отличаться в силу особенностей устройства, но зачем на десктопе на каждой системе свой сильно отличающийся UI?
Есть же уже унифицированный веб, почему нельзя по этому же пути унифицировать и UI десктопного ПО, тем более, что и сейчас отличия не такие уж прям принципиально не совместимые.
Яблокам что-то навязать/доказать — что-то из разряда просто нереального
Майкрософт — тоже не реально.
Так что, что бы это случилось — не знаю что должно произойти.
Мелкие системы типа chrome os 0 не популярны
Я готов платить такую цену в обмен на апдейты два раза в месяц и постоянные улучшения.
Зачем эти «постоянные улучшения», если есть уже максимально улучшенный emacs, в котором тысячи режимов, дополнений и настроек?
VSCode такой милый не из за электрона, а команды разработки, которая позаботилась о вас.
То что ваш коллега не умеет пользоваться своим редактором — редактор никак нe характеризует.
Вообще это дурацкое заблуждение вимеров, что все остальные мышью по экрану водят и через менюхи все делают. Шорткаты есть во всех редакторах. Я к мыши почти не притрагиваюсь во время работы.
Мультикурсор — это только небольшая часть того, что я делаю за 2 минуты
Можно пример?
То что я делаю за 2 минуты, коллега на студии код делает за 10 минут.
А почему коллега не пересаживается на emacs?
И он не готов отказаться от мыши, ради пятикратного увеличения скорости работы?
Да, конечно его, просто любопытно, как он для себя это формулирует.
Типа — да, я понимаю, что мог бы работать в 5 раз быстрее, но возможность использовать мышь для меня так важна, что я готов отказаться от этого?
Что должно быть в голове у человека, который добровольно отказывается от пятикратного увеличения производительности и, думаю, где-то двухкратного увеличения зарплаты?
Но в чем смысл, если в vs code все работает сразу, хорошо и быстро?
настроить под себя
Можете объяснить что вы под этим понимаете? Желательно примерами.
2) Подсветка синтаксиса и автодополнение сделаны по-человечески, расширямо. Плюс поддерживается гораздо больше языков (включая редкие), чем в VSCode.
3) Весь интерфейс изменяется, можно сделать всё что угодно от просто поля ввода даже без строки статуса до обвешанного разной информацией и украшательствами монстра.
4) Работает в текстовом режиме.
5) Умеет нормально открывать удалённые файлы
6) Конфигурация пишется не на ущербном JS, а на функциональном Lisp.
1) У меня мои логины/пароли к гиту хранятся в SSHASKPASС
Не знаю насчет этого случая, прокомментировать не могу.
2) Подсветка синтаксиса и автодополнение сделаны по-человечески, расширямо.
Плюс поддерживается гораздо больше языков (включая редкие), чем в VSCode.
Ни разу еще не встречал язык, который не поддерживается Кодом, даже всякие очень специализированные есть (вроде .peg)
В Коде автодополнение и подсветка тоже расширяемы. Можно добавлять свои / менять существующие. Или я чего-то не понимаю?
3) Весь интерфейс изменяется, можно сделать всё что угодно от просто поля ввода даже без строки статуса до обвешанного разной информацией и украшательствами монстра
Согласен, в Коде меньше кастомизации структуры ui, но честно сказать — кому надо оставлять только строку ввода. В настройках в Коде можно отключать/добавлять разные панели.
4) Работает в текстовом режиме.
Это не пример улучшения, а факт. Вы разрабатываете в текстовом режиме? (я так понимаю имеется в виду работа прямо в терминале)
5) Умеет нормально открывать удалённые файлы
ВСКод тоже.
6) Конфигурация пишется не на ущербном JS, а на функциональном Lisp.
В Коде конфигурация на json, плагины на js.
И я считаю использование распространенного языка для плагинов — плюсом, а не минусом, куча разработчиков и готовых решений. Лисп красивый язык, но писать на нем плагины — звучит не очень.
И опять же, примером того как редактор можно настроить под себя (ваш главный аргумент) — только пункт 3. Это все?
По поводу ответов: да, вы в чём-то правы. Не соглашусь с
Ни разу еще не встречал язык, который не поддерживается Кодом, даже всякие очень специализированные есть (вроде .peg). Банальный пример: в emacs поддерживается форматирование кода, автодополнение опций и функций, подсветка ошибок в nix, а в VSCode — только подсветка кода.
Я не так давно пользуюсь emacs, но уже работаю быстрее, чем раньше работал в vscode. Гораздо меньше возюкаю мышкой, гораздо больше интеграция в систему (например, вместо встроенного тайлинга можно использовать тайлинг от системного WM, в отличие от VSCode), гораздо больше расширений.
Вообще, тут вопрос наверное сводится к субъективному удобству — мне удобнее нативный, быстрый и интегрированный emacs, кому-то удобнее VSCode.
/usr/share/code весит 169 метров. бинарник code — 79 мегабайт. Я пока еще не разбирался с электрон, и как получается само приложение. Но посмотрев vscode — сходу видно что основное место занимают текстовые файлы (json, js). Т.е. если fs поддерживает сжатие, то места занимает не много.
А если была бы подобная технология (electron и иже с ним) внедрена в ОС, что бы не тянуть то что не является приложением — браузер, поддержку всего, то само приложение в сжатом виде занимало бы не много. Достаточно было бы среднего сжатия, что бы быстро распаковывалось при старте, и все, места занимало бы раза в 2 меньше.
Имхо, за подобными вещами будущее, и, остается лишь надеяться, что это правильно интегрируют, что бы устранить основные недостатки текущих приложений
Зато после запуска он съест несколько сотен мб. И каждое следующее electron приложение столько же.
Нужна система с расшариванинием Chromium между приложениями.
- Мгновенно возникает проблема с версией системного движка
- Разве PWA будут выпускаться за пределы песочницы?
2. Думаю нужно реализовать механизм разрешений, что бы каждое PWA могло спросить разрешения, например, на доступ к файловой системе.
- С движком сейчас проблем нет – благодаря механизму автоматических обновлений, большинство пользователей получают обновление браузера в течение пары недель после его выхода. Один Microsoft со своим Windows Update всегда отстает, может с Chromium ситуация исправится.
- Для обращений за пределы песочницы есть API на все случаи жизни: WebAudio, Fullscreen API, Push API и другие. Для большинства задач этого набора хватит.
Как пример полезного PWA: https://squoosh.app – сжималка изображений. Не хуже многих декстопных программ и устанавливать ничего не надо, достаточно сохранить адрес в закладки.
Террабайтные SSD все ещё стоят довольно дорого. М я не понимаю, зачем хранить на диске 7 копий Хрома? С таким подходом вообще никакого хранилища не хватит.
С таким подходом вообще никакого хранилища не хватит.Ёмкость накопителей и оперативной памяти растёт экспоненциально. Поэтому, если количество используемых Вами программ не будет расти также экспоненциально, то очевидно, что рано или поздно наступит момент, когда Вы сможете установить все эти приложения практически бесплатно. И долго ждать этого момента не придётся.
Ну конечно кто-то скажет, что тогда программы станут ещё тяжелее — не знаю, может быть, но мне кажется, вряд ли (максимум линейно, что без проблем покроется экспонентой). Да, до этого рост тяжести был экспоненциальным, но сейчас, что хотелось, уже практически всё сделано, и далее рост тяжести, имхо, должен быть линейным.
Но конечно Electron'у самое время было бы года через два, потому что сейчас ему ещё рановато. Поставил Spotify — он выжрал 1 ГБ из 32. По идее норм, но это на мощных 32 ГБ памяти, а на слабых — 16 ГБ. +Предполагается, что он будет работать в фоне. Вот года через 3, когда у людей будет 32/64 ГБ…
Ёмкость накопителей и оперативной памятирастёт экспоненциально.
Я немного поправил ваше сообщение, можете плюсик не ставить.
Интел, вон так и не смогла в массовый 10нм.
А вообще софторазработчики странные.
Сначала всегда
— Если у них тормозит мое приложение, то пусть купят более мощный ПК.
Через пару дней- мой любимый момент.
— Да вендоры вообще оструели — видеокарта 2500$, ЦП да еще и с ошибками- 1000$, память — 300$ за 32 гига!!??? Доколе!!!
Видеокарта 2500$Б/у 1080 Ti стоит 500$.
ЦП да еще и с ошибками- 1000$Норм ЦП стоит 200$ (причём со встроенной видюхой).
Память — 300$ за 32 гигаА вот тут да, фейл. Она ведь до этого стоила 150$ за 32 гига. А стала 300$ (хотя сейчас наконец упала). И это при том, что прошло 2 года, а ведь в среднем память всю жизнь дешевела примерно в 2 раза за 3 года, а тут вместо этого подорожала… По факту сейчас 32 ГБ могли бы стоить около 4000 р, если бы не падение рубля и картельный сговор. Ну конечно 4000 р — тоже много, но для слабого компа 16 ГБ стоили бы 2000 р — вполне можно потянуть.
Но ценник будет конский, явно только для премиум-сегмента.
Насчет 900Гб памяти — только доступ к ней будет на «стекляном потолке в 5ГГц», потому что количество каналов в бытовом секторе — традиционно 2, 4 — в премиуме.
Поэтому несколько экземпляров Электрона будут подниматься… сначала с ССД по ПСИ-е… потом с памяти до ЦП… меедлееееенннооооо…
на «стекляном потолке в 5ГГц»— так ширина шины же тоже будет расти. Да и даже сейчас на 3200 МГц она выдаёт 25 ГБ/с и порядка 32 ГБ/с в dual-mode. Тип памяти тоже будет улучшаться. Вон, там с каждым поколением в 2 раза увеличивалась пропускная способность.
Поэтому несколько экземпляров Электрона будут подниматься медленноНесколько экземпляров Электрона отожрут до нескольких гигабайт, и ещё 897 ГБ останутся свободными.
Если посмотреть как изменился объем потребляемой памяти софтом — то вывод один, имхо — сколько не дай — все мало.
В средней конфигурации.
А сейчас куда расходовать память, когда всё уже сделано? Ну линейный или чуть выше рост будет конечно.
Один канал — это грубо говоря +1 слой платы и +300 выводов процессора.
Если посмотреть на Тридриппер, то там только корпус ЦП стоит под 50$, а сколько стоит соккет такого размера — я даже затрудняюсь.
Если массово переходить на 4 канала, то это 80-100$ к стоимости МП и 20 к стоимости любого ЦП.
Я не уверен, что рынок воспримет это позитивно.
У Интела формально 10нМ уже есть как пару лет- на одном мобильном огрызке I3.
Процесс — есть, выхода годных — нет.
Поживем — посмотрим.
Вряд-ли, сейчас 8 Гб стоят > 4500 р.
Интел уже 3 года не может выкатить массовый 10нМ продукт, ГлобалФундри — отказалась от освоения 7нМ.
Полупроводниковых производителей памяти больше толком не будет. Все теже самые Микрон, Самсунг, Хуникс и всё.
Эльпида — и та банкрот с 2012 года и принадлежит Микрону.
Интел уже 3 года не может выкатить массовый 10нМ продукт, ГлобалФундри — отказалась от освоения 7нМ.И снова Вы не следите за новостями. Samsung уже завершила разработку 3 нм, и готовится к запуску в 2021 году.
Роутеры и прочие хлебопечки только массово начали переходить на ДДР2, премиум — на ДДР3.
Есть еще применений ДДР/СДР.
А ведь
128 GiB module based on 8 Gib DDR4 using 20 nm technology
Заводик со старта должен будет прыгнуть в высшую лигу нанометров.
PS. Готовящиеся производители — Innotron Memory и JHICC.
Да и хейт немного странный. VSCode занимает на жестком диске почти гигабайт, да.
По моим наблюдениям, бомбит обычно от объема сжираемой памяти при работе. Простой пример. Старая версия Skype использовала примерно 30Мб оперативы. Благодаря добрым людям из Microsoft, я вынужденно обновился (к слову, зря) и теперь у меня новый Skype легко кушает не меньше 300Мб. Причем, у коллег легко может отжирать и 700Мб, с чем связано сложно сказать. Так вот, для мессенджера даже 300Мб — это сильно дофига.
2. Скорее всего, какие-то функции работали быстро, а какие-то глючили. А вообще я не припомню, чтобы скайп когда-то быстро работал. Даже нажатие на диалог создавало лаг. А вот если бы он пожрал память, то мог бы отобразить его мгновенно.
3. Один только экран в 4К занимает 32 МБ. Это уже больше 30 МБ :) А винда, скорее всего, кэширует этот экран. Вам уже придётся не на весь экран разворачивать скайп для экономии памяти XD.
4. В программах обычно всегда компромисс между потреблением памяти и скоростью работы. Конечно, не во всех частях программы, но во многих. Так вот, обладая 32 ГБ я не хочу, чтобы программист экономил память и пытался уместиться в 30 МБ, из-за чего программа работает в несколько раз медленнее, а некоторые вещи тупо работают очень медленно. Взять тот же Everything. Тратим пару сотен мегабайт, взамен получаем мгновенный и очень мощный поиск по всем файлам в системе. У меня 32 ГБ памяти. Ну зачем мне на каждый поиск тратить около часа? Да я зачастую за час только 30 таких поисков могу сделать.
Или взять те же браузеры. Нажимаешь на вкладку и ждёшь 3 года. Всё потому, что разработчик решил поэкономить память и не кэшировать скрин вкладки…
Ну или взять некоторые игры. Заходишь на локацию, уходишь с неё, она полностью выгружается из памяти. Потом заходишь снова, и ждёшь 20 секунд. Всё ради того, чтобы игра не занимала больше 3 ГБ памяти :(
Вам уже придётся не на весь экран разворачивать скайп для экономии памяти XD.И никогда не нужно было. Приложение всегда могло отрисовать свой экран.
Так вот, обладая 32 ГБ я не хочу, чтобы программист экономил память и пытался уместиться в 30 МБ, из-за чего программа работает в несколько раз медленнее, а некоторые вещи тупо работают очень медленно.Вот только почему-то на тех самых 32 ГБ тот самый MS Office 2000, который пытался вписаться в 30 МБ просто летает. Все операции, вот абсолютно все операции, которые мне от него нужны отрабатывают куда быстрее, чем «жутко оптимизированный и потому жрущий памяти» MS Office 2016.
Тратим пару сотен мегабайт, взамен получаем мгновенный и очень мощный поиск по всем файлам в системе.Спасибо, но у меня нет склероза — я знаю где и что у меня лежит.
Ну зачем мне на каждый поиск тратить около часа?Вы бы сначала объяснили как вы дошли до жизни такой, что вам, вдруг, мощный поиск понадобился не в виде исключения, раз в месяц, а регулярно — аж то такой степени, что вы специальную программу для него водрузили…
Заходишь на локацию, уходишь с неё, она полностью выгружается из памяти. Потом заходишь снова, и ждёшь 20 секунд. Всё ради того, чтобы игра не занимала больше 3 ГБ памяти :(Нет — это ради того, чтобы разработчик мог особо не думать о том, как игру оптимизировать. Crash Bandicoot и Final Fantasy VII как-то умудрялись подгружать все ресурсы так, что это незаметно было на системе с односкоростным CD (300кб/сек) и 2Мб памяти, не надо мне рассказывать про то, что современные игры SSD не могут обеспечить тот же фокус на системе с в 1000 раз более быстрым накопителем и в 1000 раз большим объёмом памяти.
А если бы был аккуратный учёт всех ресурсов — то сделали бы нормальную фоновую загрузку и никаких 32GB не нужно было бы…
То, кто этим занимаются — могуть сделать и так, чтобы на 3ГБ не тормозило, им 32ГБ не нужно. Те, кто не занимаются — те не занимаются и у них соотвествующего кода просто нет.
мощный поиск понадобился не в виде исключения
Spotlight и его аналогич очень удобны на самом деле. Это как автодополнение кода — секунда-другая и ты уже запускаешь нужную программу или открываешь файл, а не тратишь полминуты на пробежку через четыре меню.
Но для этого тоже есть хорошие и не сильно затратные решения — есть SphinxSearch который даже на arm за десяток миллисекунд найдёт подходящие записи из полутора миллионов и сожрёт три сотни мегабайт памяти (из них пять метров на сам демон, остальное индекс). У обычного пользователя не полтора миллиона файлов, так что в эти три сотни метров можно даже поиск по содержимому файлов впихнуть.
Нажимаешь на вкладку и ждёшь 3 года… разработчик решил поэкономить память и не кэшировать скрин вкладки…
Нет, причина в том, что браузер пытается делать десятки тысяч операций записи и чтения в секунду. Естественно, кеш операционки от такого говнокода полностью не защищает и на hdd хромы еле шевелятся.
Даже нажатие на диалог создавало лаг. А вот если бы он пожрал память, то мог бы отобразить его мгновенно.
Что же такого прожорливого должен мессенджер покэшировать, чтобы работать быстро? Пару килобайт диалогов? Хмм, может, десяток мегабайт картинок из диалогов?
Нет разумной причины мессенджеру потреблять 300-700 МБ оперативы.
Один только экран в 4К занимает 32 МБ
Обычно эти мегабайты находятся на видеокарте и не идут в счёт.
я не хочу, чтобы программист экономил память и пытался уместиться в 30 МБ, из-за чего программа работает в несколько раз медленнее, а некоторые вещи тупо работают очень медленно.
Нет, в обычных программах никто не экономит память. Компромиссы есть в базовых алгоритмах, структурах данных, а в приложении пытаются кэшировать везде, где выгодно. Резко возросшее сегодня потребление памяти никак не связано со стремлением разработчиков сделать программу быстрой, причины здесь другие.
Или взять те же браузеры. Нажимаешь на вкладку и ждёшь 3 года.
У меня вкладки переключаются мгновенно. Люблю Firefox, столько лет жизни мне сэкономил.
Что же такого прожорливого должен мессенджер покэшировать, чтобы работать быстро? Пару килобайт диалогов? Хмм, может, десяток мегабайт картинок из диалогов?
Нет разумной причины мессенджеру потреблять 300-700 МБ оперативы.
Я не знаю что делает православный Телеграм написанный на qt, но если открыть диалог с кучей сообщений и начать активно скроллить — он может и гиг оперативы съесть легко.
У меня вкладки переключаются мгновенно. Люблю Firefox, столько лет жизни мне сэкономил.Как раз таки Firefox переключает вкладки очень медленно. Больше всего претензия было как раз к нему. А всё почему. Потому что ест меньше всех памяти. Те, кто позволяет закэшировать скрин, переключают мгновенно. Хотя есть и промежуточный вариант — отрисовывать заранее при наведении, заодно и страницу восстановить.
Нет, в обычных программах никто не экономит память.Да ладно, та же винда с диска 10 раз одно и то же перегружает. Игры выше я привёл. Да и я сам пишу программы, у меня раз 100 бывало, что за счёт памяти я могу значительно ускорить работу программы.
Как раз таки Firefox переключает вкладки очень медленно.
Если вкладка уже загружена, а оперативы достаточно, то переключение всегда будет мгновенным, лиса рендерит в 60 fps и сохраняет промежуточные данные. dom есть, стили рассчитаны, текст измерен, layout сделан, при нажатии на вкладку остаётся только всё взять и отдать видеокарте.
Если же вкладка просто висит незагруженная со старта браузера, то совершенно естественно, что при нажатии на неё произойдёт лаг. Загружать её при наведении мышки не выглядит адекватным решением, ведь далеко не обязательно за этим последует клик.
3. Один только экран в 4К занимает 32 МБ. Это уже больше 30 МБ :) А винда, скорее всего, кэширует этот экран. Вам уже придётся не на весь экран разворачивать скайп для экономии памяти XD.
Теперь я начинаю понимать как мыслят программисты, которые пишут монструозные приложения. Ну а че, открыл в скайпе 10 экранных форм — вот тебе и 300Мб, открыл 20 — вот и все 700Мб.
Для справки, приложения — это не игры и интерфейс строится на основе API, который предоставляет ОС.
А винда, скорее всего, кэширует этот экран.
Это ее, винды, трудности, как она работает с видеопамятью, окнами, z-буфером и т.д. На размер потребляемой ОЗУ это практически не влияет.
Взять тот же Everything.
Это просто разные подходы к функционалу. Everything сканит и делает индекс, в котором поиск идет быстро (примерно как в любой БД), потом его на лету перестраивает если есть файлы. Но первое сканирование быстрее не становится от того, что он ест больше памяти. Так что это теплое против мягкого. А вот со скайпом функционал не поменялся. Более того, настроек стало гораздо меньше, чем раньше!
Или взять те же браузеры. Нажимаешь на вкладку и ждёшь 3 года. Всё потому, что разработчик решил поэкономить память и не кэшировать скрин вкладки…
У меня такой проблемы нет, хотя вкладок очень много открыто, но допустим. Я пот не понял логики. Ок, браузер закешировал скрин вкладки, пользователь ее ооочень быстро открыл, хочет работать, дальше что? Тыкаем в скрин? Или ждем заново когда подгрузится обновленная страница?
Но первое сканирование быстрее не становится от того, что он ест больше памяти.Да мне как-то всё-равно на первое сканирование, главное, что дальше программа работает мгновенно. Это сканирование выполняется 1 раз в жизни при установке программы. Далее тупо отслеживается журнал изменений ФС.
Ок, браузер закэшировал скрин вкладки, пользователь ее ооочень быстро открыл, хочет работать, дальше что?За то время, когда мы подведём мышку, вкладка будет готова. Мы же не полностью рендерим вкладку с нуля. Быстрее, чем за 40 мс я кликнуть никуда не смогу. А вот лаг 40 мс будет жёстко бить по производительности. Лучше я эти 40 мс буду решать, куда кликнуть. Ну и можно для рендеринга же тоже закэшировать инфу, чтобы отрендерить быстрее.
В офис Nullsoft просто пришли похвастаться разработчики спотифая и сказали, что для стриминга плейлиста им хватает всего лишь 850 мегабайт оперативки, весь Nullsoft умер от смеха и поддерживать винамп стало некому…
(а в Pale Moon на самом верху списка тем временем 7 вкладок амазона не самого лёгкого открыто, как ни странно :-)
А вообще в 2014 году я спокойно, особо не замечая, просидел полгода на PowerMac G5 с 2 гигами оперативки и 10.4, при том что до того пользовался 10.9.5 на i3. Так что веб и правда был малость полегче и попроще.
То, что electron заполонит все приложения, могут говорить только те, кто на нем не писали.
Это ужасно злая вещь, которая может упасть и не сказать ничего в логах или краш-репорте.
Это вещь, которая вроде позволяет создавать многопоточность через web-workers, но в самих web-workers не позволяет подключать нативные модули ноды.
Это такая вещь, которая очень медленно развивается. Все, что можно увидеть в release-notes — это фиксы багов. Так и у другого софта часто, но там переход с первой версии на третью не дает почти никакого преимущества, кроме обновленного движка хромиума.
Эта такая штука, в релизе у которой, в новой мажорной версии, будет вот это:
PDF Viewer is not working in 3.0.0 but will be return soon
(и это с сентября, в гитхабе пишут, что некому взяться за эту работу)
т.е. в старых версиях если вы использовали просмотр pdf документов через окна или webview, то обновившись, при открытии вашего приложения, будет открываться окно сохранения pdf файла на диск.
При написании среднего/сложного приложения, неизбежно начинает не хватать возможностей электрона и ноды, и приходится писать нативные модули на С++.
В electron огромное количество багов, в этому количеству добавляется огромное количество багов хромиума.
У меня получалось загрузить модуль только на один поток воркера. Загружать на несколько потоков один модуль не получалось, выходила ошибка:
Error: Module did not self-register.
Строго на вторую загрузку модуля, даже если грузить сначала в воркере а потом в главном потоке, будет такая ошибка.
К тому же, они сами пишут, что не рекомендуется импортить свои модули, и даже нодовские ( ибо они не работают с многопоточностью).
пруф https://github.com/electron/electron/blob/master/docs/tutorial/multithreading.md
Но вы же утверждали, что электрон не позволяет загружать нативные модули в воркеры? Теперь оказывается позволяет?
Где это позволяет? Разве что во втором потоке. Я ошибся в формулировке, в workerах можно подключать модули, но нельзя многопоточно это делать, т.е. одновременно в нескольких воркерах. То, что можно юзать только один дополнительный поток, это уже какая-та вшивая многопоточность.
Либо использованием вокреров ноды, а не хромиума, в качестве потоков.
Где можно про это почитать? Если все модули ноды однопоточны, то каким образом это будет работать? Разве что, локеры какие-нибудь ставить. Тут же опять, пропадает такая удобная штука, как transfer канва, т.е. работать с графикой многопоточно будет сложно, и потом эти данные нужно еще передавать в главный процесс. Так то можно и multiprocessing юзать.
Слишком много но.
> среду, в которой простой, может быть даже примитивный интерфейс, но единообразный для всех приложений
Такая штука давно есть. Называется «консоль». А с тех пор, как на linux far портировали, в ней вообще совсем хорошо стало.
Вендекапец случился лет 5 назад, но его, как и следовало ожидать, никто особенно и не заметил.
Вот реально, что мне сейчас такого может дать винда, чего не может ни одна другая операционка, чтобы мне страсть как захотелось за эту самую винду заплатить? И это я ещё тяжелые десктопные приложения гоняю, а большинству пользователей давно уже наплевать, какая именно прокладка у них в компе между железом и браузером.
— человек, у которого и мама и тёща уже несколько лет как пользуются linux mint. и им норм.
Маму-то за что?!
За Одноклассников, за что ж еще?
Ну и мысль о том, чтобы не нарушать закон, пользуясь пираткой, мила её христианскому сердцу (сам атеист, но тоже не приветствую пиратку без крайней необходимости, ну и потом, мне не жалко сделать маме приятно, во что бы она ни верила), а платить за винду лишних денег нет.
и даже гугл по велению левой пятки взять и перехреначить всё никак не сможет
Еще как может
blog.js.cytoscape.org/2017/02/15/passive-listeners-chrome
Вот реально, что мне сейчас такого может дать винда, чего не может ни одна другая операционка, чтобы мне страсть как захотелось за эту самую винду заплатить?DirectX?
Нет, DirectX больше не нужен.
что мне сейчас такого может дать винда, чего не может ни одна другая операционка
Ну вы же про сейчас спрашивали. Большинство игр сейчас разрабатывается под винду. Sad, but true.
Про «победу мобильных игр» и обсуждать глупо. Люди в принципе стали больше пользоваться мобильными девайсами, они на рынок «серьезных» игр почти никак не влияют.
. А в мире MS — MFC, STL, COM+, .NET, WinForms, UWP… они уже сами не знают, на чём предлагать писать разработчикам.
А на чем хотят, на том пусть и пишут. Дотнет теперь кроссплатформенный. Вы не знали?
Единственное плохо, что они слишком поздно занялись переводом всего что связано с .NET в разряд свободных технологий. Следовало бы заняться открытием всего этого лет 10+ назад, в идеале — вообще с первого дня существования .NET, но при тогдашнем руководстве Microsoft это было просто невозможно даже представить.
А, не, ну, мобильные игрушки, ок. Собственно, от MS должно остаться игровое подразделение и те, кто делают офис — вот реально две вещи, в которых MS действительно хороши.
Потому что веб-стек и стандарты пилят хоть и под руководством корпораций, но, всё-таки, нескольких, всем миром, инкрементально и с обратной совместимостью, и даже гугл по велению левой пятки взять и перехреначить всё никак не сможет. А в мире MS — MFC, STL, COM+, .NET, WinForms, UWP… они уже сами не знают, на чём предлагать писать разработчикам.Похоже, вы опять пишете, не понимая о чём речь. MFC — это тонкая C++-ная обёртка над обычным Win32 API. STL к GUI отношения не имеет, так как это стандартная библиотека C++. COM+ также из другой оперы. .NET — среда исполнения для байт-кода, в который собирается код на C#. WinForms — ну хоть что-то по теме, только вот это опять обёртка над Win32 API, просто более толстая, чем MFC, и для C# вместо C++. Вы почему-то не вспомнили про WPF, который тоже был бы по теме, но вспомнили про UWP. Так вот последнее — это действительно новая подсистема, впервые что-то новое, отличное от привычного Win32 API. Но при этом Win32 API отлично поддерживается и никто вроде как не собирается от него отказываться, по крайней мере в обозримом будущем. Уж чему-чему, а обратной совместимости у Microsoft можно только поучиться. UWP же проектируют заново, в стиле API современных ОС типа Android или iOS, где все приложения выполняются в песочницах с какими-то правами.
Это как на винде внезапно программа бы заявила: «всё, мне насрать на ваш этот ALT+F4, давайте вместо однократного нажатия удерживайте, а то вы, дебилы, поди случайно нажали».
К счастью, можно отключить.
«всё, мне насрать на ваш этот ALT+F4, давайте вместо однократного нажатия удерживайте, а то вы, дебилы, поди случайно нажали».
На маке это актуальная проблема, т.к. cmd+W (закрыть вкладку) находится прямо рядом с cmd+Q (закрыть всю программу), и да — многие промахиваются и получается очень обидно.
Так что я лично очень рад что хром просит нажимать cmd+shift+Q (про удерживание не знал) — чтобы точно не промахнуться.
У них в багтрекере был тикет на это с кучей недовольных комментариев от пользователей нечаянно закрывающих свой браузер.
Это где такое?
Теперь невозможно пользоваться RDP, попытаешься нажать F6 (то есть в некоторых клиентах Fn+F6) а у тебя язык переключится =(
В МакОС я с таким не сталкивался и все эти шорткаты настраиваются.
В iOS клавиши Fn и не было никогда.
Речь про внешние физические клавиатуры, конечно. (Другие в контексте RDP бессмысленны =).
Раньше переключение было единообразным и в MacOS и в iOS (CMD+SPACE), и (с Win8) в windows (CMD/WIN+SPACE). А теперь по умолчанию в макоси ctrl+space (но перенастраивается на другие варианты), а в iOS вообще перенастроить с Fn никуда нельзя.
Короче, всё сломали и довольны =)
Ну и по идее, F-кнопки внешних клавиатур на айпаде должны работать без модификаторов
Надо посмотреть в keyboard API.
А в macOS, кстати, можно Caps’ом переключать.
Выделенная кнопка — может быть ок, если она больше ни для чего не используется. Но у Fn есть её основное назначение: переключать верхний ряд в
режим F1-F12.
И ещё: клавиши-модификаторы должны быть инертными (как в MacOS), Fn — становится внезапно вторым CAPS LOCK или как Win или Alt в Windows — кнопкой на которую становится опасно нажимать — так как ломается контекст (alt внезапно уносит тебя в меню, а win — в меню старт — и это очень плохо с точки зрения UX).
Невозможно эффективно редактировать текст без Home/End и PgUp/PgDwn, а ведь Home — это же Fn+Left, а PgUp — это Fn+Up. Вот где основная боль -_-
Для меня пока боль привыкнуть к другой пунктуации, т.к. на маке у меня ПК раскладка по привычке. С другой стороны вопросительный знак и слэш на том же месте, что и в латинской раскладке, это немного компенсирует положение запятой (точку пока нажимаю двойным пробелом)
Edit: перемещение на слово вперед/назад через Option + стрелки
Сценарий простой: подключать одну и ту же клавиатуру (Apple wireless keyboard) к Mac, к PC и к iPad.
И раньше всё работало одинаково хорошо. А теперь — нет.
Также следует упомянуть, что идея использовать html+css+js для интерфейсов нативных приложений абсолютно не нова, возьмите steam, к примеру. Просто раньше использовали иные движки для этого, а теперь появился electron, используют electron.
У Steam там не UI на нём, а Store открывается (браузерный компонент можно запретить опцией и вся библиотека по-прежнему будет стартовать, вот только ничего нельзя будет купить).
Похоже электрон — это только первая ласточка, дальше сама Apple подсовывает свинью в виде прослойки для iOS приложений на мак вроде Stocks и диктофона.
Пример: открываете сайт в %вашем любимом браузере%, соглашаетесь на установку PWA, оно устанавливается и открывается как нативное приложение, но не через Chrome, а самой осью на движке Chromium (или тоже самое при установке из Microsoft Store).
И этим же путем скорее всего пойдет Apple, сохранив за собой полный контроль за экосистемой (это они любят), не допустив Google к возможности устанавливать и исполнять веб-приложения от своего имени. В противном случае они проиграют битву, т.к. дни нативных приложений с GUI сочтены, веб убьет их в любом случае. Тоже касается и мобильных нативных приложений, там это произойдет даже быстрее. Разумеется игры, утилиты и прочий софт, а также содержащий тяжелые вычисления останется нативным, на js/ts никто в здравом уме переписывать не будет А затем wasm и их добьет.
Electron и упадок нативных приложений