На чем написаны браузеры?

Обновлено: 05.07.2024

Почти все приложения Windows (включая приложения, в основном работающие со строками и деревьями) написаны на C++. Почти все пользовательское пространство Linux написано на C. Это по-прежнему ужасные, небезопасные и хрупкие языки, которые каждый день вызывают разочарование и потери у программистов и пользователей.

Жаль, что вас минусуют, потому что вы во многом правы. Не поймите меня неправильно, правильный код вполне можно написать на C/C++. Просто 95% программистов, использующих эти языки, не очень опытны. Программы имеют тенденцию быть неправильными и хрупкими. В C++ большая часть этой хрупкости проистекает из его C-корней.

Когда C был молодым, задержка памяти обычно составляла 1 или 2 такта. Конвейерной обработки не было, самое большее — простой конечный автомат, который завершал работу за несколько тактов. Филиал не стоил больших денег. Максимум несколько циклов. Также не было ссылки на указатель. Произвольный доступ был почти таким же быстрым, как и последовательный доступ.

Сегодняшние ЦП имеют задержку памяти 150-300 тактов. Современное ядро ​​ЦП обычно может удалять 1-4 инструкции за такт. Одна инструкция обычно занимает около 16 тактовых циклов от декодирования до удаления. Таким образом, ЦП часто приходится выполнять вслепую и просто угадывать, куда пойдет поток выполнения. Филиалы модифицируют этот поток. Процессоры просто угадывают поток, предсказывают ветвь. Когда они ошибаются, им просто нужно аннулировать выполняемые в данный момент инструкции и начать заново. Ветки — это то, чего следует избегать. Особенно непредсказуемые. Указатели на функции — это ветки. Несмотря на то, что их можно предсказать, они часто просто выпадают из кеша предсказателей ветвлений.

Нам нужно что-то, что может минимизировать затраты, с которыми современные процессоры не справляются. C/C++ очень разветвлен и часто использует медленные указатели на функции (vtable, таблицы переходов и т. д.).

Проблема в том, что между процессорами больше различий, чем когда-либо прежде, даже в пределах одной архитектуры набора инструкций. Для x86 не только затраты на инструкции сильно различаются, но и поддержка набора инструкций фрагментирована.

C/C++ — не последнее слово. Небезопасно и слишком медленно по сравнению с тем, на что способно текущее оборудование. Проблема в том, что более безопасного и подходящего языка пока не существует. Некоторой безопасностью можно пожертвовать ради большей скорости, но это должен быть ситуативный выбор программиста, а не единственный способ или даже по умолчанию.

C/C++ — это то, чем я занимаюсь на своей основной работе.

Когда полдюжины браузеров, которые составляют около 99,9 % рынка браузеров, используют C++, возможно, объяснение заключается не в том, что "они все неправильные".

> Когда полдюжины браузеров, которые составляют около 99,9% рынка браузеров, все используют C++, возможно, объяснение не в том, что "Они все неправильные".

Я ни в коем случае не говорил, что они не правы! C++ — это лошадь и телега. С точки зрения производительности, автомобильного языка программирования еще не существует. Конечно, нужно и нужно использовать то, что есть на данный момент!

Лучшего языка для написания веб-браузера пока не существует. Или для написания других подобных сложных приложений с требованиями к производительности.

Так что да, C++, вероятно, лучший язык для написания веб-браузера прямо сейчас. Самая чистая грязная рубашка. Конечно, не самый безопасный, но из языков высокого уровня у него лучшая производительность. У него достаточно большая рабочая сила, что важно, если вы строите большой проект. C/C++ изначально взаимодействует с текущими операционными системами. И множество других соображений делают его разумным выбором.

Но C/C++ довольно далек от того, каким мог бы быть язык. Это очень подвержено ошибкам. Слишком сложный. Сложно поддерживать.

И это медленно. Не по сравнению с другими языками, а с потенциалом производительности процессора. Я могу написать очень быстрое программное обеспечение на C++, если я фактически вернусь к ассемблеру или, по крайней мере, к встроенным компонентам компилятора. Другими словами, будучи человеком-компилятором.

Широкое распространение UNIX в отрасли убило другие языки, потому что они не были языком системного программирования UNIX, а другие поставщики систем не могли бороться с рабочими станциями на базе UNIX.

Так же, как JavaScript в браузере, C в конечном итоге уничтожил альтернативы на рынке рабочих станций.

C++ смог получить признание в отрасли, потому что поставщики компиляторов C++ на самом деле были поставщиками компиляторов C, которые включали C++ в свои продукты, поскольку C++ также исходил от AT&T.

Кроме того, скорость компьютеров стала достаточно высокой для обычных систем на основе виртуальных машин.

Разработчики бизнес-приложений перешли на языки для виртуальных машин, а системные программисты сосредоточились на языках, поддерживаемых более крупными поставщиками ОС, C и C++.

Все поставщики компиляторов, продающие компиляторы для языков системного программирования, которые не пользовались первоклассным обслуживанием в основных ОС, либо закрылись, либо изменили бизнес.

Поэтому 20 лет спустя C и C++ стали единственными альтернативами для системного программирования, если только вы не хотите играть с мертвыми языками.

Ада используется в проектах, где это необходимо, или в программных сценариях, где человеческая жизнь находится в опасности, например в авиации, системах управления поездами, медицинских устройствах и т. д.

И теперь нас каждый день бьют по уязвимостям безопасности из-за неустойчивых указателей и ошибок за пределами границ.

Ошибки C++ иногда — слишком часто — быстрее найти даже при дизассемблировании, чем в исходном коде. Серьезно. Да, это очень медленный подход. Но вы можете видеть, что происходит на самом деле, и картина разительно отличается от точки зрения исходного кода. Хотя дизассемблирование многословно, нет синтаксического сахара, который может скрыть истинную функцию. Функции C++, такие как перегрузка операторов и исключения, локально скрывают реальную функциональность. Я видел другой язык, который имеет множество разных способов делать то же самое и поддерживает разработку только для записи. Перл.

Нет, листинг дизассемблирования — это не то, что я обычно использую для отладки. Просто один из инструментов. Дело в том, что что-то не так, когда дизассемблирование может быть проще для понимания, чем исходный код!

Так угнетает, когда приходится часто с этим сталкиваться. Наш лучший инструмент не очень хорош.

Ну, от всего этого у меня хлеб на столе, так что, думаю, мне не стоит слишком жаловаться.

Ну, проблема с C++ заключается в том, что его возможности слишком легко зайти слишком далеко. Я видел коммерческие библиотеки C++, которые до абсурда перегружали операторы. Я сейчас не помню названия, но это была библиотека баз данных.

Перегрузка операторов – отличная функция, но ее следует использовать как можно реже и только там, где это интуитивно понятно.

Шаблоны предлагают еще больше веревки, чтобы повеситься, и хотя я поздно перешел на использование шаблонов, я бы никогда не сказал, что эта функция заходит слишком далеко. Без сомнения, это топливо для клуджа, но языку нужна эта функция, и она позволяет вам делать действительно полезные и элегантные вещи.

Мне никогда не приходило в голову, что просмотр дизассемблированного кода может быть полезен для отладки, и я полагаю, что обычно это бесполезно, если вы действительно не делаете какие-то довольно сложные вещи с языком. Однако было бы очень познавательно понять, что на самом деле делает компилятор, но если проверка дизассемблирования дает представление о том, как лучше всего использовать язык, то я подозреваю, что дизайн языка или, по крайней мере, компилятор делает что-то не так.

Я действительно думаю, что C++ требует слишком много внимания к тому, как реализуются определенные операции, например, это самое обсуждение, но это цена, которую я готов заплатить за язык, который позволяет мне делать вещи так, как я хочу. их.

Я программирую на Python в свободное время и для небольших задач по написанию сценариев, и не могу представить себе выбор C++ вместо Python для любого личного проекта, который я делал за последние пару лет (который в любом случае, как правило, небольшой), но я использую C++ на работе, и я очень рад, что продолжаю использовать его спустя 20 лет с перерывами (в основном на работе).

Языки высокого уровня просто облегчают дерьмовым программистам приближение к рабочему решению.

Я не думаю, что за 20 лет я когда-либо видел коммерческую стороннюю библиотеку C++, которая, по моему мнению, была грамотно разработана и реализована. Я собирался предложить в качестве исключения mysql++, но потом вспомнил, что это библиотека с открытым исходным кодом, поэтому ее нельзя считать коммерческой. C++, кажется, порождает много дрянного, но мало полезного кода.

Я мало занимался Java, и я не думаю, что это плохой язык, я никогда не видел среды разработки Java, которую я бы даже пожелал своим врагам. Java, кажется, порождает раздутые, чрезмерно спроектированные, но недостаточно гибкие конструкции, которые требуют от программиста слишком многого из того, что мы изобрели для себя, в первую очередь, для компьютеров.

какие языки больше подходят для современного оборудования? Большая часть моего опыта работы с C (Linux) приходится на встроенное оборудование (и довольно много лет назад). Раньше я никогда не сталкивался с бесполезными циклами, но эта настройка действительно отличается от современного процессора на настольном компьютере.

Что в них хрупкого, ненадежного и ужасного? Я много лет писал на C/C++ (среди других языков) и довольно редко вижу ошибку, связанную с этим языком.

Вы редко сталкиваетесь с неинициализированными указателями или ошибками, связанными с границами массива? Хотел бы я, чтобы мои коллеги были правы.

Я обнаружил, что классы RAII, такие как std::unique_ptr, действительно помогают. Ошибки, такие как неинициализированный указатель, часто вызваны плохой семантикой владения в дизайне программы, и я не думаю, что вы избежите этого в языках с подсчетом ссылок. У вас по-прежнему будет беспорядочный дизайн класса без четкого владельца, и есть типы ресурсов, которыми нужно управлять, помимо памяти (дескрипторы файлов, блокировки, сокеты).

Я не говорю, что ваши коллеги плохие инженеры, у меня было много проблем с дизайном собственности на протяжении многих лет, и иногда они возникают до сих пор.Я просто не думаю, что C++ уникален в этом отношении, даже если он заставляет вас думать о нем более регулярно, поскольку взаимодействие с памятью очень распространено.

Какой у вас опыт написания на C++? какой последний крупный проект вы завершили с его помощью? я не большой поклонник C++, но он стал основой чрезвычайно большого количества чрезвычайно успешных и широко распространенных проектов.

В прошлом я написал много крупных проектов на C++. Теперь я стараюсь избегать этого, насколько это возможно, но в последний раз я программировал на C++ всего две недели назад[1], и это напомнило мне, насколько это было плохо — ужасные сообщения об ошибках и ужасная производительность конечной программы. В какой-то момент мне придется заменить его, потому что программа не соответствует нашим требованиям к производительности, и никто не может сказать мне, почему[2]. (Редактировать: видимо [2] уже дан ответ)

Из всех вещей, которые вы должны ожидать от языка, отличного от C++, маловероятно, что производительность будет в этом списке.

Если вы не можете добиться производительности чего-либо на C++, маловероятно, что вы сможете добиться производительности на большинстве других языков.

(Если вы не хотите попробовать это на фортране)

Я ожидаю, что программы C превзойдут программы C++ просто потому, что они более явные (в отношении всего, от распределения до уровней косвенности).

Попробуйте сравнить qsort с stl::sort.

Подсказка: stl::sort работает намного быстрее. Он может встроить функцию сравнения. Хорошо, это просто показывает, насколько медленны указатели на функции. Я предполагаю, что компиляторы все еще не могут оптимизировать указатель функции в qsort.

Конечно, специализированный сортировщик на C был бы быстрее, если бы он мог встроить функцию сравнения. C++ автоматизация копирования и вставки. эээ, я имею в виду, что шаблоны полезны, потому что они часто могут встроить вашу функцию и тип данных в алгоритм без использования указателей на функции. За счет многократного создания одного и того же или аналогичного кода алгоритма раздувания двоичного файла.

Сообщения об ошибках Clang намного лучше, чем GCC — он даже исправит ваши опечатки и предложит, какой символ вы на самом деле хотели ввести. Примерно в 2010 году Google перешел на гибридную среду Clang + GCC (один и тот же исходный код будет передаваться обоим компиляторам, сообщения об ошибках от Clang будут передаваться обратно пользователю, а объектные файлы из GCC будут связаны для формирования окончательного двоичного файла), и счастье разработчиков C++ резко возросло.

Честно говоря, я думаю, что gcc почти догнал clang с gcc-4.9, когда дело доходит до качества сообщений об ошибках.

Я немного предпочитаю способ, который clang выбирает для выделения всего родительского узла AST, который, по его мнению, несет ответственность за ошибку, но подход, который использует g++, совершенно ясен.

На него был дан ответ, и, согласно ответу, можно легко получить ускорение в 20-30 раз. Возможно, ваша проблема не в C++ как таковом.

* Набор вообще не используется - кажется, что большинство наборов содержат только 3-4 элемента. Вы также можете использовать вектор. * Не похоже, что ваши интервалы перекрываются, и похоже, что они уже упорядочены. interval_map может быть ненужным, и, возможно, стоит хранить данные в простом векторе. * Вы также не хотите копировать object_set. Константной ссылки более чем достаточно * И, наконец, если вы хотите свернуть на территорию придирок, вам нужно использовать циклы на основе диапазона. Это может или не может привести к лучшему скомпилированному коду. Это определенно намного читабельнее.

Я не согласен с ужасными сообщениями об ошибках или мыслью о том, что C++ чудовище для изучения и контроля. Но если есть что-то, что он вам дает, так это достойную производительность при правильном использовании.

Скажем так: разработчики браузеров пишут на C++ не потому, что считают его таким замечательным :)

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он сосредоточился только на одной проблеме, отредактировав этот пост.

Закрыт 8 лет назад.

Похоже, что большинство распространенных веб-браузеров (Firefox, Chrome, Safari) разработаны с использованием C++. Почему так?

На этот вопрос, скорее всего, будет несколько простых ответов, если предположить, что он точен (обратите внимание на комментарий Джесси о Firefox, а помимо этих трех браузеров и IE существует множество браузеров). Я не думаю, что это продуктивно.

@Jesse, разве интерпретатор js не написан на C++? Это было бы похоже на C++, не так ли? (могу ошибаться..)

14 ответов 14

Другой способ задать вопрос: какая поддержка нужна браузеру? Краткий список:

  • Поддержка синтаксического анализа (необходима для понимания [X]HTML, CSS и [ECMA/Java]Script)
  • Функции обхода/интерпретации дерева (часть синтаксического анализа и создания пользовательского интерфейса)
  • Поддержка ускоренной графики
  • Быстрый доступ в сеть
  • Для более продвинутых браузеров: управление процессами и выделение памяти между страницами.
  • Должен работать на всех поддерживаемых платформах

Почему не Java? Вы когда-нибудь пытались создать пользовательский интерфейс с помощью Java? Это кажется громоздким и медленным по сравнению с чем-либо еще, потому что это так.Отсутствие ускоренной графики здесь тоже большой минус. Песочница Java действительно хороша и может помочь улучшить безопасность браузера, если она используется правильно, но ее сложно настроить и заставить работать. Не говоря уже о том, что поддержка графических форматов отстает от большинства современных браузеров.

Почему не С? Практически для каждой платформы (включая встроенные устройства) есть компилятор C. Однако существует много того, что C не делает для вас, и вам придется проявлять особую бдительность. У вас есть доступ ко всем самым низким уровням API, но большинство разработчиков C не используют GUI. Даже библиотеки C GUI написаны в объектно-ориентированной манере. Как только вы начинаете говорить о пользовательском интерфейсе, объектно-ориентированный язык становится более понятным.

Почему не Objective C? Если ваша единственная цель — Apple, это имеет большой смысл. Тем не менее, большинство разработчиков не знают Objective-C, и единственная причина для его изучения — работа с ящиками NeXT или Apple. Конечно, вы можете использовать любую библиотеку C с Objective-C, и есть компиляторы для многих платформ, но найти людей, которые будут работать над этим, будет немного сложнее. Кто знает? Возможно, Apple сможет исправить этот кажущийся недостаток.

Веб-браузеры — это программное обеспечение, установленное на вашем ПК. Для доступа в Интернет вам потребуется веб-браузер, например Netscape Navigator, Microsoft Internet Explorer или Mozilla Firefox.

Существует четыре ведущих веб-браузера: Explorer, Firefox, Netscape и Safari, но доступно и множество других браузеров. Возможно, вам будет интересно узнать полную статистику браузера. Теперь мы рассмотрим эти браузеры более подробно.

При разработке сайта мы должны постараться сделать его совместимым с максимально возможным количеством браузеров. В частности, сайты должны быть совместимы с основными браузерами, такими как Explorer, Firefox, Chrome, Netscape, Opera и Safari.

Internet Explorer< br />Internet Explorer

Internet Explorer (IE) – это продукт гиганта программного обеспечения Microsoft. Это наиболее часто используемый браузер во вселенной. Он был представлен в 1995 году вместе с запуском Windows 95, а в 1998 году обогнал Netscape.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Internet Explorer

Internet Explorer
Google Chrome

Этот веб-браузер разработан компанией Google, и его бета-версия была впервые выпущена 2 сентября 2008 г. для Microsoft Windows. Сегодня известно, что Chrome является одним из самых популярных веб-браузеров, его доля в мире составляет более 50%.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Google Chrome

Internet Explorer
Mozilla Firefox

Firefox – это новый браузер, созданный на основе Mozilla. Он был выпущен в 2004 году и стал вторым по популярности браузером в Интернете.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Firefox

Safari Browser
Safari

Safari – это веб-браузер, разработанный Apple Inc. и включенный в Mac OS X. Впервые он был выпущен в виде общедоступной бета-версии в январе 2003 года. Safari очень хорошо поддерживает новейшие технологии, такие как XHTML, CSS2 и т. д.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Safari

Opera Browser
Opera

Opera меньше по размеру и быстрее большинства других браузеров, но при этом полнофункциональна. Быстрый, удобный, с клавиатурным интерфейсом, несколькими окнами, функциями масштабирования и многим другим. Доступны версии с поддержкой Java и без поддержки Java. Идеально подходит для новичков в Интернете, школьников, людей с ограниченными возможностями, а также в качестве внешнего интерфейса для компакт-дисков и киосков.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Скачать Opera

Konqueror Browser
Konqueror

Konqueror — это веб-браузер с открытым исходным кодом, совместимый с HTML 4.01, поддерживающий апплеты Java, JavaScript, CSS 1, CSS 2.1, а также подключаемые модули Netscape. Он работает как файловый менеджер, а также поддерживает базовое управление файлами в локальных файловых системах UNIX, от простых операций вырезания/копирования и вставки до расширенного просмотра файлов в удаленной и локальной сети.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Konqueror

Lynx Browser< br />Рысь

Lynx – это полнофункциональный веб-браузер для пользователей Unix, VMS и других платформ, использующих терминалы или эмуляторы с адресацией курсора и символьными ячейками.

Вы можете загрузить последнюю версию этого браузера, нажав здесь → Загрузить Lynx

Репрезентативное изображение различных веб-браузеров

К моменту, когда вы читаете эту статью, вы наверняка уже пользуетесь веб-браузером

который представляет содержание этой статьи в текстовом/графическом формате на экране вашего компьютера. Веб-браузер или часто называемый браузером — это прикладное программное обеспечение, которое устанавливается на компьютер для обеспечения доступа к всемирной паутине. Он загружает веб-страницы с сервера вместе с необходимыми файлами, такими как изображения, вспышки, видео и т. д., интерпретирует их, а затем отображает на экране. Все, что вам нужно сделать, это просто ввести URL-адрес (унифицированный указатель ресурсов) веб-страницы в адресной строке, и браузер отобразит веб-страницу на вашем экране.

Основная функция браузера – получение файлов с сервера и их отображение на экране. Он в основном отображает файлы html, содержащие изображения, PDF, видео, вспышки и т. Д. В упорядоченном макете. Браузер — это группа структурированных кодов, которые выполняют множество задач по отображению веб-страницы на экране. Эти коды разделены на разные компоненты в соответствии с выполняемыми ими задачами. Структура браузера показана на изображении ниже.

Блок-схема, показывающая архитектуру веб-браузера

Блок-схема, показывающая архитектуру веб-браузера

<р>1. Пользовательский интерфейс — это пространство, в котором происходит взаимодействие между пользователями и браузером. Большинство браузеров имеют общие входные данные для пользовательского интерфейса. Вот некоторые из них: адресная строка, кнопки «Далее» и «Назад», кнопки «Домой», «Обновить» и «Стоп», параметры добавления веб-страниц в закладки и т. д.

<р>2. Браузерный движок — это фрагмент кода, который передает входные данные пользовательского интерфейса движку рендеринга. Он отвечает за запросы и управление механизмом рендеринга в соответствии с входными данными из различных пользовательских интерфейсов.

<р>3. Механизм рендеринга — это часть, полностью отвечающая за отображение запрошенного контента на экране. Сначала он анализирует HTML-теги, а затем, используя стили, строит дерево рендеринга и, наконец, макет рендеринга, который отображает содержимое на экране.

<р>5. Интерпретатор Java Script — это компонент браузера, написанный для интерпретации кода java script, представленного на веб-странице.

Как работают браузеры?

Всемирная паутина работает по модели клиент-сервер. Пользовательский компьютер работает как клиент, который может получать и отправлять данные на сервер. Когда веб-страница запрашивается пользователем, браузер связывается с запрошенным сервером (где хранится веб-сайт) и, получая и интерпретируя запрошенные файлы, отображает веб-страницу на экране компьютера.

Простая блок-схема, показывающая работу веб-браузера

Хотя работа с браузером не так проста, как кажется, так как перед появлением веб-страницы на экране выполняется множество внутренних задач. Весь процесс состоит из следующих трех шагов:

<р>1. Связь с DNS-сервером. Когда пользователь вводит URL-адрес в адресную строку и нажимает «Ввод», сначала браузер связывается с DNS-сервером. DNS-сервер хранит IP-адреса сервера, связанные с соответствующими доменными именами. DNS-сервер берет доменное имя из браузера и возвращает браузеру соответствующий IP-адрес.

<р>2. Связаться с сервером — после получения IP-адреса сервера для запрошенной веб-страницы браузер отправляет запрос на этот сервер для получения желаемых файлов. Например, рассмотрим следующий URL:

Продолжение работы

<р>3. Рендеринг — весь процесс, за которым следует браузер, от получения веб-страницы до ее отображения на экране, называется рендерингом. Он выполняется в следующие шаги:

Типичная блок-схема, показывающая процесс рендеринга в веб-браузерах

<р>в.Применить стили. К веб-страницам могут быть прикреплены таблицы стилей, а веб-браузер также имеет стили по умолчанию. Используя синтаксический анализатор CSS, они интерпретируются для определения стилей (таких как высота, ширина, интервал, граница, цвет, поля и т. д.) для содержимого, указанного в HTML.

д. Создание фреймов — с помощью HTML и таблиц стилей браузер создает фреймы. Фрейм представляет собой прямоугольный блок с различными свойствами, такими как ширина, высота, цвет, интервал и т. д.

ж. Покраска рамок. Как только макеты созданы, следующим процессом является покраска. Живопись — это термин, используемый для процесса точной визуализации объектов на экране, после чего веб-страница отображается на экране компьютера. Браузер выполняет все процессы за доли секунды.

Ошибка и мобильный браузер

Несколько раз после ввода URL-адреса в адресную строку мы ожидаем веб-страницу, но появляется сообщение об ошибке. Вот некоторые распространенные сообщения об ошибках:

<р>1. 404 Not Found — это сообщение об ошибке отображается браузером, когда он не может найти веб-страницу, указанную в адресной строке. Это может быть из-за того, что введен неправильный путь или указанный файл был удален.

<р>2. 401 Unauthorized или 403 Forbidden. В некоторых случаях веб-сайт или сервер, на котором хранятся запрошенные веб-файлы, могут быть защищены паролем, и у вас нет прав на доступ к файлам. Тогда такое сообщение появится в браузере.

<р>3. Вращающиеся песочные часы — это не сообщение об ошибке. В окне браузера отображаются вращающиеся песочные часы, показывающие, что браузер пытается установить соединение с запрошенным сервером.

Расширение доступа к Интернету через мобильные телефоны вызвало необходимость в специальных специализированных браузерах. Мобильные телефоны имеют ограниченные ресурсы (память, хранилище, процессор и т. д.), поэтому им требуется легкий мини-браузер для доступа во Всемирную паутину. Следовательно, эти браузеры, обычно называемые мобильными браузерами, оптимизированы для более эффективного отображения веб-сайтов на мобильных телефонах и КПК.

Изображение отображения веб-браузера на мобильном телефоне и КПК

Мобильные браузеры способны отображать веб-страницы, написанные на HTML, XHTML. Новейшие мобильные браузеры также поддерживают такие технологии, как CSS, Java script и AJAX. Для мобильных телефонов доступно множество браузеров, среди них Google Android , iPhone OS, Symbian и т. д. – некоторые из популярных мобильных браузеров.

История

Браузеры существуют на компьютерах с самого начала распространения Интернета. Первый в истории браузер, названный «worldwideweb», был создан Тимом Бернерсом-Ли на компьютере Next в декабре 1990 года. Он был представлен ряду людей в ЦЕРН (Европейская организация ядерных исследований) в марте. , 1991 г.

Бернерс-Ли и один из его студентов в ЦЕРНе по имени Жан-Франсуа Грофф перенесли «всемирную сеть» с компьютера Next на более распространенный язык C в период с 1991 по 1992 год. Новый проект назывался «Libwww». В то же время Никола Пеллоу, студент-математик, проходящий стажировку в ЦЕРН со своей командой, написал еще один браузер под названием Line-mode, который работал на различных компьютерах от Unix до Microsoft DOS. В 1992 году было выпущено четыре различных браузера с некоторыми расширенными функциями: Erwise, ViolaWWW, Midas и Samba в хронологическом порядке.

Первый крупный браузер Mosaic был запущен в 1993 году Марком Андриссеном и Эриком Биной ​​из NCSA. Это был кроссплатформенный браузер с такими функциями, как создание закладок, история, поддержка аудио-видео и т. д. Позже, в августе 1994 года, NCSA передало законные права на Mosaic компании Spyglass Inc., которая впоследствии передала лицензию на эту технологию нескольким другим компаниям, включая Microsoft для Internet Explorer. В январе 1994 г. NCSA прекратило его дальнейшую разработку.

Изображение первого крупного браузера

В 1994 году группа исследователей телекоммуникационной компании Telenor в Норвегии приступила к разработке нового браузера Opera. Позже два члена команды, Джон Стивенсон фон Тетчнер и Гейр Иварсой, покинули компанию и основали «Opera Software» и летом 1996 года запустили первую версию Opera 2.1 в коммерческую эксплуатацию. В феврале 1994 года был запущен новый браузер под названием Navipress для ПК и Macintosh, который позже был переименован в AOLPress. Он по-прежнему доступен для загрузки, но не поддерживается с 1997 года.

15 декабря 1994 г. компания Netscape выпустила первую коммерческую версию Mozilla, Mozilla 1.0.В 2002 году он стал доступен как браузер с открытым исходным кодом, а позже, в конце 2004 года, он был переименован в Firefox. «Internet Explorer», веб-браузер, разработанный Microsoft, был запущен с операционной системой Windows 95. Благодаря широкому охвату Microsoft к 1999 году он стал ведущим веб-браузером.

2 сентября 2008 г. компания Google выпустила первую бета-версию браузера Chrome для Microsoft Windows. Позднее, в декабре 2008 г., была выпущена первая стабильная версия, и с тех пор ее популярность среди пользователей Интернета постоянно растет.

Доля рынка

Несколько браузеров борются (также называемые войнами браузеров), чтобы расширить свое присутствие на компьютерах по всему миру. В конце 1990-х годов Internet Explorer стал самым популярным браузером, оставив позади главного конкурента Netscape. В новом столетии появились новые браузеры, такие как Mozilla Firefox, Chrome, Safari, Opera и т. д., сильно конкурирующие с Internet Explorer. Ниже представлена ​​таблица, в которой показаны доли рынка различных браузеров в августе 2011 г.

Читайте также: