На чём пишут сайты?
С чего начать?
Начните с того, чтобы просто посмотреть возможности и синтаксис каждого из языков. Если вы выбираете язык под проект, сопоставьте необходимые технологии и соберите единый стек.
JavaScript
Назначение: встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. Есть очень много фреймворков для разработки, таких как React, React Native, Angular.js, Node.js.
Конкретные возможности: анимация, интерактивное взаимодействие через браузер.
Как научиться: документация MDN, Современный учебник JavaScript, SoloLearn, W3Schools.
PHP
Назначение: интенсивно применяется для разработки веб-приложений. Популярность в области построения сайтов обоснована наличием большого набора встроенных средств и дополнительных модулей. Основные из них:
- автоматическое извлечение POST- и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
- взаимодействие с большим количеством различных систем управления базами данных через дополнительные модули (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO), Redis;
- автоматизированная отправка HTTP-заголовков;
- работа с HTTP-авторизацией;
- работа с cookies и сессиями;
- работа с локальными и удалёнными файлами, сокетами;
- обработка файлов, загружаемых на сервер;
- работа с XForms.
Как научиться: официальная документация на русском, SoloLearn, HTML Academy, W3Schools.
C
Назначение общее; используется для написания быстрых алгоритмов, результаты работы которых обычно используются в вебе.
Фреймворк специально для веба: Facil.io.
Как научиться: Tproger, Prog-Cpp, Learn C.
C++
Назначение общее. Отличается от C как более объектно-ориентированным синтаксисом, так и наличием умной работы с памятью и богатой стандартной библиотекой.
Фреймворк для веба: CppCMS.
Как научиться: CppReference, W3Schools, Microsoft Docs (Ru).
Python
Назначение: повышение производительности разработчика, обработка больших данных, машинное обучение, веб-разработка.
Фреймворки: Django (djbook, django Project, MDN), Flask (русская документация, Pallets Project, Wikibooks (Ru)) - для веба; Keras (keras.io), scikit-learn (Neurohive, scikit-learn.org) - для машинного обучения.
Как научиться: Python World (Ru), Tproger.
Java
Назначение общее. Приложения на Java могут запускаться везде, где есть Java-машина - Android, Windows/macOS/Linux/Free BSD и другие платформы. Java имеет огромное количество фреймворков различного назначения, поэтому считается универсальным языком.
Как научиться: Java Rush - лекции, Java Online - про Web-технологии и фреймворки.
SQL
Назначение: управление базами данных.
Как научиться: интерактивный учебник, сайты для практики, itProger.