LINUX.ORG.RU

Модульность или куда катится мир

 


0

3

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

Для интерфейса и реализации отдельно задаётся импорт, т.е. перечень ссылок.

Интерфейсы ссылаются друг на друга, образуя дерево. Реализации могут ссылаться друг на друга, образуя произвольный граф.

И - вуаля! Нет проблемы циклических ссылок. Система сама понинает, что в каком порядке собирать, функции из разных модулей могут вызывать друг друга.

Примерно то же самое, но более мощное, и более грязное, мы видим в С. Роль интерфейса играет заголовочный файл. Заголовочные файлы включаются друг в друга, образуя дерево. В теле файла *.c можно писать что угодно. Так реализации могут циклически ссылаться друг на друга.

Линкер решает проблему ссылок, собирая циклический граф вызовов функций.

В CL, Python и Golang я не вижу этого механизма. Точно могу сказать за CL, что этого механизма нет. Нужно вручную выделять часть, образующую цикл и выносить её в отдельный пакет. В Питоне пишут про какие-то «хаки». В Go предлагают объединить весь код в один модуль или вынести общий интерфейс вверх по иерархии. То, что раньше делал компьютер, нужно делать руками.

Производительность труда разработчика снизилась.

В ИТ отрасли произошла деавтоматизация. А казалось бы, компьютер придуман, чтобы автоматизировать труд, в т.ч. труд разработчика.

Что не так со мной? Или не со мной?

★★★★★
Ответ на: комментарий от den73

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

A1
()
Ответ на: комментарий от impfp

Ты сослался на конкретный термин, который не обозначает то, что ты имел в виде. Какие люди со стороны? Если хочешь, чтобы тебя поняли, выражайся яснее. А нет - так и не надо. Мне недосуг.

den73 ★★★★★
() автор топика
Ответ на: комментарий от A1

Если ты так упарываешься по старым идеям, то SRP как бы никто не отменял https://blog.8thlight.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html , а по нему выходит что циклические ссылки — очевидное говно.

Извини, ты опоздал к обсуждению.

den73 ★★★★★
() автор топика

Анонимус неодобряет

А ещё запретили указатели и понаделали сборщики мусора. Вообще бардак развели.

Делить вещи, которые не работают друг без друга - это нонсенс. Несогласные могут отрубить себе голову.

anonymous
()
Ответ на: комментарий от den73

Я привёл примеры ситуаций из жизни.

Привели, но не снабдили их кодом, а без кода здесь нечего обсуждать.

Оно уже прошло, прекрасное предметное обсуждение.

...главным результатом которого стало то, что участники покидались какашками.

Anatolik ★★
()

Что не так со мной?

Хочешь циклические зависимости реализаций.

Производительность труда разработчика снизилась.

Наоборот.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.