Подскажите как и где, без привязки к конкретному ЯП или на С/С++, изучить web- технологию!
Не встречал ещё, чтобы описывалась web-технология без привязки к конкретному ЯП. Дело в том, что все движутся по протоптанной дорожке, изучая её, с привязкой с PHP, JS, HTML, CSS и т.д. Эти ЯП и псевдоЯП "заточены" под web, где это всё и рассматривается, но базируются они(их библиотеки, фреймворк и т.п.), в большинстве, на С/С++, в котором эта технология не рассматривается. Специально изучать такие "тормоза", как PHP, JS и др. не хочется. Как компромис пока есть Go, но зачем он мне, если я предпочитаю С/С++! Посоветуйте как быть?
Ответы (2 шт):
"Веб-технологии" в основе своей имеют HTML. Дополнительный необходимый минимум - CSS и JS. Поэтому без изучения этих неЯП (с некоторой оговоркой разве что js можно отнести к таковым) изучение веб-технологий не мыслимо.
ЯП же всего-то и делают, что в результате работы "программы" формируют html (а также могут и остальное). И тут почти не важно какой именно ЯП это будет делать. Другое дело что web-сервер должен уметь с ними работать. А тут уже не всё так просто. Поэтому основными ЯП на сегодня являются PHP, Python и Perl.
Но кроме ЯП в "веб-технологиях" применяется масса других ...эмм... "технологий" - от SQL до администрирования серверов.
Изучают именно в таком порядке не просто так.
Как уже сказали, веб-технологии делятся на две части, это фронтэнд и бекэнд.
Фронтэнд
На стороне фронтэнда находится пользователь и его компьютер. Для отображения информации используется браузер, который отвечает требованиям безопасности. Его задача отрисовать страницу и показать её пользователю.
Тут вас ждет первое разочарование, вы можете пользоваться только тем, что может браузер и ограничены его возможностями. А задача браузера получить текстовое описание документа в HTML и никак иначе, по этому описанию он сам построит страницу. Отображение компонентов в браузере настраивается через CSS, других способов браузер не поддерживает. Ну и в догонку для программного управления находящимся на странице элементами используется встраиваемый язык JavaScript.
С этой стороны браузер уже вас ограничиваем набором технологий, которые вы можете использовать внутри него. Есть конечно WebAssembly, но это будет усложнение ради усложнения.
Бекэнд
Задача бекэнда отдать просто данные для браузера, тут вы можете использовать всё, что захотите. Браузеру нужно отдать его начальные HTML/CSS/JS (с нужными метаданными в виде заголовков) и дальше просто перекидываться данными.
Но и тут не всё так просто, поскольку придется писать свой веб-сервер для обработки данных. Но такие сервера уже написаны, при этом на Си и большой толпой квалифицированных разработчиков. Вы даже можете использовать их наработки для себя или покопаться в их исходниках. Вот, для примера, статья на тему Разработка веб приложений на C/С++ [nginx + fastcgi] + Web-приложение на C/C++ с помощью FastCGI — это просто.
Но в вебе в первую очередь преимущество имеют наличие готовых инструментов, скорость разработки, удобства разработки и внесения изменений. И тут этим похвастаться С/С++ не могут. Скорость работы и оптимизация это хорошо, но современный мир требует готовое приложение здесь и сейчас.
Клиент-серверные приложения
Но если отбросить браузер как клиентскую часть фронтэнда, диктующую основные условия, и написать свой клиент - то вы получите обычное клиент-серверное приложение. А как разрабатывать клиент-серверные приложения материалов значительно больше. Веб-технология это просто частный случай, поэтому в теории вы можете ограничиться этим как изучением без привязки к языку.
UPD
Браузер рендерит внутри себя HTML+CSS, от них вы не уйдете никуда, браузер понимает только их. Далее браузер выставляет наружу интерфейсы, обращение к которым управляет поведением страницы. К этим интерфейсам можно обращаться через JavaScript и добавлять функциональность через WebAssembly (написать программу на С/С++ и скомпилировать в WebAssembly).
При этом сам WebAssembly позиционируется как возможность работать совместно с JavaScript и его код вы все равно встретите. Накидаю несколько примеров:
- На MDN есть примеры использования и как это работает: https://developer.mozilla.org/ru/docs/WebAssembly
- Туториал к Emscripten: https://emscripten.org/docs/getting_started/Tutorial.html
- Статья на хабре по теме: https://habr.com/ru/articles/718874/
Опять же всё сводится к тому, что придется все равно изучить, как работать правильно в окружении браузера, который диктует условия. Изучить их проще по пути HTML+CSS+JS. Да, вы можете использовать С/С++ для ускорения сложных вычислений, но в большинстве случаев этого не требуется. Код писать для этих целей сложнее, а JS давно обзавелся зоопарком библиотек.
Итого да, в какой-то степени можно и на фронте использовать С/С++, но довольно затруднительно и невыгодно для большинства сценариев.