Наиболее важные протоколы и соглашения в IT
От: Shmj Ниоткуда  
Дата: 16.09.22 05:58
Оценка: -1
В основном в IT царит анархия и самоуправство, все делается по беспределу.

Однако же некие намеки на соглашения имеются, хотя многие их просто игнорируют (или даже не слышали о таких). Вот самый полный список: https://en.wikipedia.org/wiki/Category:Application_programming_interfaces (если найдете более полный или лучше структурированный — буду благодарен).

Вопрос такой: какие, по вашему опыту, наиболее важные соглашения/протоколы в IT? Давайте попробуем в порядке убывания важности.

Моя версия:

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

2. Особняком — стандарт вызова библиотек C. Только библиотеки на языке C можно вызывать из большинства других языков (а так же добавлять обертки, чтобы ваши библиотеки вызывали как будто это C-библиотеки). Поправьте если не точно выразил. Это как мостик между языками программирования.

3. Протокол IP (ну и, до кучи, TPC/UDP/QUICK). Все устройства связаны по нему, это инфраструктура нашего мира. Даже захотели поменять на IPv6, который создали, на минуточку — в 1996 году — и хрен там. До сих пор IPv6 больше приятный бонус, нежели основополагающий протокол.

4. API операционных систем, POSIX, OpenGL. В принципе, операционных систем, которыми реально пользуются люди, не так уж много. Это Unix-based, Windows, Android, iOS, macOs — всего как пальцев 1 руки.

5. Соглашения, которые умеет браузер. Браузер стал своего рода сверх-операционной системой. Основные протоколы браузера это: HTTP/WebSocket, HTML+CSS, EcmaScript, WebAssembly, GLSL. Более мелкие не считаю, там их с несколько десятков.

6. Форматы структурированных данных ASN.1, XML, JSON, CSV и языки запросов/модификаций данных SQL, GraphQL.

7. Стандартная библиотека вашего ЯП. Для некоторых это может быть на первом месте, т.к. позволяет не вникать в детали всего вышеперечисленного.

8. Еще вспомнил важное — кодировки, Unicode. Unicode очень важен, хотя бы к этому мы пришли как человечество.

9. Еще вспомнил. Файловые системы. Многие переносимы между разными ОС.

10. Еще — универсальные протоколы для взаимодействия устройств, USB.

Просьба дополнить.
Отредактировано 16.09.2022 7:01 Shmj . Предыдущая версия . Еще …
Отредактировано 16.09.2022 6:41 Shmj . Предыдущая версия .
Отредактировано 16.09.2022 6:02 Shmj . Предыдущая версия .
Re: Наиболее важные протоколы и соглашения в IT
От: vsb Казахстан  
Дата: 16.09.22 06:09
Оценка: 5 (1)
Здравствуйте, Shmj, Вы писали:

S>Вопрос такой: какие, по вашему опыту, наиболее важные соглашения/протоколы в IT? Давайте попробуем в порядке убывания важности.


S>1. Языки программирования — с этой абстракции все началось — когда идея стала выше железа.


Не понял, какое отношение они имеют к протоколам.

S>2. Особняком — стандарт вызова библиотек C. Только библиотеки на языке C можно вызывать из большинства других языков (а так же добавлять обертки, чтобы ваши библиотеки вызывали как будто это C-библиотеки). Поправьте если не точно выразил. Это как мостик между языками программирования.


Скорее согласен. Штука важная.

S>3. Протокол IP (ну и, до кучи, TPC/UDP). Все устройства связаны по нему, это инфраструктура нашего мира. Даже захотели поменять на IPv6, который создали, на минуточку — в 1996 году — и хрен там. До сих пор IPv6 больше приятный бонус, нежели основополагающий протокол.


Почему бонус? Во многих странах он уже лидирует. Я бы не стал списывать его со счетов.

S>4. API операционных систем, POSIX, OpenGL. В принципе, операционных систем, которыми реально пользуются люди, не так уж много. Это Unix-based, Windows, Android, iOS, macOs — всего как пальцев 1 руки.


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

S>6. Форматы структурированных данных ASN.1, XML, JSON, CSV и языки запросов/модификаций данных SQL, GraphQL.


Из этого только JSON и SQL. Остальное или мусор (XML, CSV) или устарело (ASN.1) или не доказало свою актуальность (GraphQL).

S>7. Стандартная библиотека вашего ЯП. Для некоторых это может быть на первом месте, т.к. позволяет не вникать в детали всего вышеперечисленного.


S>Просьба дополнить.


REST

Парадигмы программирования, раз уж про соглашения разговор зашел.

Соглашения и культура, относящиеся к утилитам командной строки. Общепринятые стандарты вызова (например флаги через дефис), общепринятые флаги вроде --help, концепция компоновки нескольких утилит в пайплайн, отдельный канал для ошибок.

Культура разработки UNIX, хотя она кажется уже уходит в прошлое (к примеру текстовые протоколы из этой области, подробней The Art of UNIX Programming).

Протоколы сотовой связи.
Отредактировано 16.09.2022 6:10 vsb . Предыдущая версия .
Re: Наиболее важные протоколы и соглашения в IT
От: gyraboo  
Дата: 16.09.22 06:16
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Просьба дополнить.


В мире JEE есть JSR, по сути вся JEE строится на JSR, т.е. на спецификациях. Спеки описывают очень многие аспекты создания корпоративного ПО. Например, есть спеки на мессаджинг, на валидацию, на ORM. Спеки как правило включают в себя набор Java-интерфейсов, а реализации их реализуют. Тот же Spring или Hibernate уже давно реализует многие из этих спек. Хотя, справедливости ради, некоторые вещи самопальный Спринг реализует богаче (например DI Спринга, Autowire будет вроде как побогаче в возможностях, чем спековский Inject).
Если изучать JSR-спеки, то достаточно просто можно пройти собесы в крупные компании. Если разрабатывать корпоративное ПО на спеках, то тоже вроде как это лучше и удобнее, чем городить самопальные велосипеды.
Re: Наиболее важные протоколы и соглашения в IT
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 16.09.22 06:38
Оценка: 5 (1) +1
Здравствуйте, Shmj, Вы писали:

S>В основном в IT царит анархия и самоуправство, все делается по беспределу.

S>Однако же некие намеки на соглашения имеются, хотя многие их просто игнорируют (или даже не слышали о таких).

RFC


Рабочее предложение (англ. Request for Comments, RFC) — документ из серии пронумерованных информационных документов Интернета, содержащих технические спецификации и стандарты, широко применяемые во всемирной сети.


Например, TCP

Спецификация: RFC 793 (сентябрь 1981 года) / STD 7


ISO/IEC


Стандарты DIN, EN, ISO и IEC в чем различия?

ISO = Международные стандарты (механика)
IEC = Международные стандарты (электротехника и электротехника)


Например, C++

Диалекты: ISO/IEC 14882 C++


Спецификации, реализации и запреты


1) На стандарты есть спецификации, в них подробно написано как всё должно в конечном итоге работать.
2) Каждый человек может создавать что-то по чужой спецификации, но может использовать и чисто свои разработки.
3) Другое дело, что лично тебе или кому-то другому не получится запретить делать, что они хотят, нарушать чужие стандарты и соглашения.

Спецификации есть, порой это огромные документы. Если хочется можешь найти спецификации по C++, OpenGL и многие другие технологии, например, в формате pdf. А насчёт запретов как ты себе представляешь запретить кому-то и что-то делать как им вздумается, если они хотят и делают.
Re: Наиболее важные протоколы и соглашения в IT
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 16.09.22 06:58
Оценка:
TCP не нужен, есть QUIC

Unicode тоже ненужнен, есть альтернативный китайский стандарт
GB 18030 (the GB 18030-2022 update)
«Since 1 May 2006, support for the mandatory subset is officially required for all software products sold in the PRC. »
Отредактировано 16.09.2022 7:06 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 16.09.2022 7:05 Эйнсток Файр . Предыдущая версия .
Отредактировано 16.09.2022 7:03 Эйнсток Файр . Предыдущая версия .
Отредактировано 16.09.2022 7:02 Эйнсток Файр . Предыдущая версия .
Re[2]: Наиболее важные протоколы и соглашения в IT
От: Shmj Ниоткуда  
Дата: 16.09.22 06:58
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>В мире JEE есть JSR, по сути вся JEE строится на JSR, т.е. на спецификациях.


По сути это стандартная библиотека вашего языка — это #7.
Re[3]: Наиболее важные протоколы и соглашения в IT
От: gyraboo  
Дата: 16.09.22 07:08
Оценка:
Здравствуйте, Shmj, Вы писали:

G>>В мире JEE есть JSR, по сути вся JEE строится на JSR, т.е. на спецификациях.


S>По сути это стандартная библиотека вашего языка — это #7.


Не совсем. Стандартная библиотека Джавы — это JDK. А я говорю про спеки из JEE (Java Enterprise Edition). Спеки JEE (программные интерфейсы) не входят в стандартные библиотеки JDK. А сами реализации спек (реализации интерфейсов) вообще могут поставляться сторонними компаниями или организациями, не входящими в консорциум Джава. Т.е. JSR выходит за пределы стандартной платформы Джава, управляется он с помощью JCP. Многие джависты вообще не в курсе, что есть спеки. Поэтому спеки — это не часть языка, и не подпадают под п.7
Re[2]: Наиболее важные протоколы и соглашения в IT
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.09.22 09:54
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>TCP не нужен, есть QUIC


А если нужно без шифрования?

ЭФ>Unicode тоже ненужнен, есть альтернативный китайский стандарт

ЭФ>GB 18030 (the GB 18030-2022 update)
ЭФ>«Since 1 May 2006, support for the mandatory subset is officially required for all software products sold in the PRC. »

«As a Unicode Transformation Format (i.e. an encoding of all Unicode code points), GB18030 supports <...>»

То есть это не независимый стандарт. К счастью.
The God is real, unless declared integer.
Re[2]: Наиболее важные протоколы и соглашения в IT
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.09.22 10:05
Оценка:
Здравствуйте, vsb, Вы писали:

S>>1. Языки программирования — с этой абстракции все началось — когда идея стала выше железа.


vsb>Не понял, какое отношение они имеют к протоколам.


Это в широком смысле как протоколы общения человека с компьютером
Ну, точнее, форматы данных.

S>>6. Форматы структурированных данных ASN.1, XML, JSON, CSV и языки запросов/модификаций данных SQL, GraphQL.


vsb>Из этого только JSON и SQL. Остальное или мусор (XML, CSV) или устарело (ASN.1) или не доказало свою актуальность (GraphQL).


Про устарелость ASN.1 спешишь. У меня текущий проект из 5G. Там всё взаимодействие между участниками стандартизовано как ASN.1 PER согласно спекам конкретных протоколов (NGAP, E1AP, F1AP и так далее). PER тут существенен для экономии трафика на сигнализации.

Ну да, в разработки за пределами узкой ниши не идёт... но там процветает.

Про XML тоже поспешно, его очень много и не сокращается. JSON его побивает, да, но не радикально.

C остальным согласен.

vsb>Соглашения и культура, относящиеся к утилитам командной строки. Общепринятые стандарты вызова (например флаги через дефис), общепринятые флаги вроде --help, концепция компоновки нескольких утилит в пайплайн, отдельный канал для ошибок.


vsb>Культура разработки UNIX, хотя она кажется уже уходит в прошлое (к примеру текстовые протоколы из этой области, подробней The Art of UNIX Programming).


vsb>Протоколы сотовой связи.


Вот не выделял я бы их больше любых остальных
The God is real, unless declared integer.
Re: Наиболее важные протоколы и соглашения в IT
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.09.22 10:19
Оценка:
Здравствуйте, Shmj, Вы писали:

Дополнительный код как основа целочисленной арифметики. Более-менее окончательно устоялся только к 80-м годам.

Восьмибитные байты как единица адресации памяти и потоков данных в сетях.

Плавающая точка/запятая:
— конкретные соглашения, которые от 40-летнего опыта легли в основу IEEE754;
— стоящая за ней алгоритмическая база, позволяющая эффективные реализации;
— накопленный опыт, что надо и что не надо делать.

Динамические библиотеки.

Общая терминология, которая устоялась, но заметно отличается от своих корней. Компилятором вначале назывался линкер. Virtual за пределами IT значит "то что на самом деле", смысл практически изменился до противоположного. Таких примеров сильно больше, можно дополнять.
The God is real, unless declared integer.
Re: Наиболее важные протоколы и соглашения в IT
От: Baiker  
Дата: 16.09.22 14:10
Оценка:
Здравствуйте, Shmj, Вы писали:

S>В основном в IT царит анархия и самоуправство, все делается по беспределу.


Это слишком вольная интерпретация слова "капитализм в ИТ". Да, фирмы придумывают форматы, стандарты, одних раздавливают в судах, другие объединяются в консорциумы — это не анархия, а развитие.

S>Однако же некие намеки на соглашения имеются, хотя многие их просто игнорируют (или даже не слышали о таких). Вот самый полный список


К чему эта ерунда? Что ты хочешь — выучить все стандарты? Или тебе на 2 курсе задали курсовую? Ну так и пиши сам, если вообще понимаешь, ЧТО ты хочешь написать.

S>Вопрос такой: какие, по вашему опыту, наиболее важные соглашения/протоколы в IT?


Да никаких! Всё, что было изобретено до сего момента, всё равно "выжившие костыли", время которых умирать просто ещё не пришло. Ни СУБД, ни ГУИ, ни TCP/IP не являются идеалом, который можно было бы отлить в граните. Языки п-я — тем более, они в ещё более плачевном состоянии. Про форматы данных молчу — там маразм разной степени. Так что нет, придумывай новую тему.
Re[4]: Наиболее важные протоколы и соглашения в IT
От: Shmj Ниоткуда  
Дата: 16.09.22 20:29
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Не совсем. Стандартная библиотека Джавы — это JDK. А я говорю про спеки из JEE (Java Enterprise Edition). Спеки JEE (программные интерфейсы) не входят в стандартные библиотеки JDK.


Вот это специфично исключительно для Java. В других платформах такой централизации не припомню, хотя тенденция на некие стандарты сверх стандартной библиотеки таки имеется. Вроде в C++ boost своего рода стандарт, пусть и не признанный.
Re[3]: Наиболее важные протоколы и соглашения в IT
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.09.22 20:56
Оценка: +1
Здравствуйте, netch80, Вы писали:

ЭФ>>TCP не нужен, есть QUIC


N>А если нужно без шифрования?


Я б по другому спросил. А если нужно без встроенной семантики HTTP/2.0?
Re[4]: Наиболее важные протоколы и соглашения в IT
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 17.09.22 05:00
Оценка:
Здравствуйте, Pzz, Вы писали:

ЭФ>>>TCP не нужен, есть QUIC


N>>А если нужно без шифрования?


Pzz>Я б по другому спросил. А если нужно без встроенной семантики HTTP/2.0?


Да, так ещё лучше.
The God is real, unless declared integer.
Re[5]: Наиболее важные протоколы и соглашения в IT
От: gyraboo  
Дата: 17.09.22 07:12
Оценка:
Здравствуйте, Shmj, Вы писали:

G>>Не совсем. Стандартная библиотека Джавы — это JDK. А я говорю про спеки из JEE (Java Enterprise Edition). Спеки JEE (программные интерфейсы) не входят в стандартные библиотеки JDK.


S>Вот это специфично исключительно для Java. В других платформах такой централизации не припомню, хотя тенденция на некие стандарты сверх стандартной библиотеки таки имеется. Вроде в C++ boost своего рода стандарт, пусть и не признанный.


Не совсем. Для котлина, груви, скалы т к. языках, работающих на JVM и совместимых с джавой, тоже можно юзать эти спеки. Что в общем-то и делают, корпоративное ПО иногда пишут и на этих языках.
За эти стандарты я джава и люблю. Изучил — и спокойно работаешь. И не изоьреаншь велосипеды там, где есть стандарты. Поэтому, зная спеки, разрабатывать типичное корпоративное ПО легко и приятно.
Отредактировано 17.09.2022 7:21 gyraboo . Предыдущая версия . Еще …
Отредактировано 17.09.2022 7:14 gyraboo . Предыдущая версия .
Отредактировано 17.09.2022 7:13 gyraboo . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.