Фундаментальные технологии в IT

Фундаментальные технологии в IT

Мы всё о негативе, но я решил написать что-то положительное. Все мы знаем о том, что технологии в IT устаревают довольно быстро и любому разработчику необходимо постоянно переучиваться. Новые фрэймворки стремительно появляются и умирают, особенно во фронтэнде. Тем не менее, в IT действительно успел сформироваться некоторый пласт технологий, которые в ближайшие лет 20+ вряд ли будут выброшены на помойку. Так что, наверное, есть смысл изучить всё это в первую очередь, если вы вкатун (хотя мне в нынешнее время тяжело представить, что кто-то будет вкатываться).

Протокол IP

Да, тот самый адрес, вычислив который, можно приехать к обидчику из интернета и набить ему ебало. Существует как бы в 2-ух версиях: IPv4 и IPv6. Предполагалось, что человечество перейдёт на вторую, но не вышло, в итоге стали использовать костыль под названием NAT. Вот настолько укоренилась эта технология. Ну, подробно знать всякие штуки о сетях, подсетях и т.д. всё же надо больше девопсам, нежели разрабам.

Протоколы TCP и UDP

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

Протокол DNS

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

Протокол SMTP

Предназначен для посылки электронной почты. Службы электронной почты обладают двумя важными свойствами: во-первых, сообщение после отправки нельзя отредактировать. Во-вторых, эта система в определённой степени децентрализована, и люди, пользующиеся разными поставщиками электронной почты, могут общаться друг с другом без особых костылей (а вот, например, из WhatsApp’a сообщение в Telegram послать нельзя). Именно поэтому электронную почту используют как базу для авторизации в различных сервисах.

Протокол SSH

Является де-факто стандартом индустрии для удалённого управления серверами через командную строку и перекидывания между ними файлов. По крайней мере, никаких альтернатив лично я не встречал. Windows поначалу не имел его поддержки в своём терминале, но начиная с 10-ки всё поменялось.

JSON

Формат структурированного текста. Используется в первую очередь для передачи данных между между бэкендом и фронтендом. С годами подтвердил свою универсальность и переносимость. Правда, самой большой проблемой здесь являются реализации сериализаторов/десериализаторов. Некоторые поддерживают комментарии, некоторые разрешают, запрещают или требуют какие-то лишние запятые и т.д., что может порождать много ошибок и уязвимостей. Кроме того, сам формат разрешает довольно много свободы  в плане значений и полей, поскольку является по факту просто текстовым представлением JS’ного словаря. Тем не менее, вы с ним точно будете сталкиваться в течение своей карьеры.

Стандарт POSIX

Определяет набор системных вызовов и команд терминала для UNIX-подобных ОС, таких как Linux и Max OS. Если ваша система следует данному стандарту, то в ней гарантируется работа таких команд, как ls, cp, mv, mkdir и т.д., а также определённых функций из стандартной библиотеки языка С. Это обеспечивает некоторую минимальную переносимость исходного кода между разными ОС. Даже Windows немного его поддерживает.

Система контроля версий Git

Титан индустрии, присутствует на 97% мест работы. Умение работать с ней эссенциально для командной разработки. Увы, есть пара ситуаций, когда вы столкнётесь не с ней, а с чем-то иным. Например, разрабы внутри Google используют что-то своё. Кроме того, если ваша галера когда-то подписала документы о партнёрстве с Microsoft, высока вероятность, что использовать вы будете не Git, а Team Foundation Services. Также на совсем-совсем древнем легаси можно встретить Subversion (но я не уверен, что такое легаси всё ещё осталось).

Язык программирования С

Детище Ритчи живёт и помирать совсем не собирается. На нём написаны горы системных библиотек для различных ОС и вообще много самого разного низкоуровневого, близкого к железу кода. При этом языки программирования могут быть несовместимы друг с другом, но абсолютное большинство из них совместимо с С через FFI (может вызывать сишные библиотеки или быть вызвана сишной программой).

Язык SQL

Используется в реляционных (и не только в реляционных) системах управления базами данных. И хотя каждая СУБД имеет собственные надстройки над ним, которые сначала считаются годнотой, а потом объявляются богомерзким легаси (привет, хранимые процедуры!), все они пересекаются в определённом подмножестве. Его-то и следует изучить. Для этого могу порекомендовать книжку Бена Форты “SQL за 10 минут”

Алгоритмы и структуры данных

Нет, не именно задачи с LeetCode, а просто сами алгоритмы и структуры данных как таковые. По сути, они представляют собой не столько технологии, сколько математические концепции, а таковые переживут человечество. Солнце взорвётся и уничтожит галактику, но сумма углов любого треугольника на плоскости будет равна 180 градусам, а пирамидальная сортировка будет работать за O(n * log n). Проблемой тут являются реализации конкретных структур данных в разных языках программирования, библиотеках и т.д. Вот как раз они могут немного отличаться, устаревать и т.д.

Ну, вроде всё. Я не включил сюда ни одного языка программирования, кроме С, потому что они слишком уж динамично изменяются. Код на языке C# из 2004-го и 2024-го года - это ну совсем не одно и то же. Примерно по той же причине я не включил сюда HTML и CSS. Ну и я предупреждаю: любая из вышеприведённых вещей в итоге всё равно может быть выкинута на помойку именно тогда, когда вы этого меньше всего ожидаете! Вот кто-нибудь помнит Flash? По сути, это была целая индустрия. Тысячи игр, анимаций, баннеров, фрэймворки, библиотеки и специалисты, поддерживающие всё это и создающие новые проекты. В конечном счёте всё это почти одномоментно сгинуло по прихоти мощного монополиста, решившего отхватить кусок пирога на рынке. Да и даже такие основательные штуки, как TCP и UDP, иногда пытаются заменить чем-то другим.

Комментарии (68)

Правила комментирования
  • Любые темы про политику, войны, или всё то, что НЕ относится к теме сайта, будут УДАЛЯТЬСЯ.
  • Всё, что попадает под возможные нарушения законодательства РФ (экстремизм, призывы, дискредитация, оправдание, возбуждение и т.п.) - тоже.
  • Любые бессмысленные оскорбления участников сайта или тематики сайта. Если с чем-то не согласны - приводите аргументацию, а не оскорбления.
  • Запрещается упоминание в негативном контексте (клевета) каких-либо персоналий - физических или юридических лиц.

Мы стараемся сделать комментарии ценным информационным материалом, засорять сайт мусорными обсуждениями, никак не относящимися к теме сайта, не нужно! Спасибо за понимание.

0 / 10000

Форматы: JPG, PNG, WebP. Не более 5 файлов (по 10 МБ). Можно вставить из буфера (Ctrl+V).

Загрузка комментариев…