LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Из-за препроцессора и отсутствия понятия «проект». Программа на Си/Си++ является бесконечным параметрическим семейством программ, потому что при сборке можно передать -Dprintf=шли_всё_в_АНБ и так для любого символа, и так отдельно в каждом файле.

Поэтому прочитать программу на Си/++, не собрав её, принципально нельзя. Есть костыли - compile_commands.json, bear и иже с ними. Но они позволяют работать лишь с одной конфигурацией из бесконечного множества. Считать ли работу с одной конфигурацией работой с программой - это дело совести того, кто так говорит.

Есть также частные случаи, когда есть понятие проекта. Наверное, какой-нибудь Visual Studio, или в случае использования Qt. Но это не покрывает язык в целом и все программы.

Исправление den73, :

Из-за препроцессора и отсутствия понятия «проект». Программа на Си/Си++ является бесконечным параметрическим семейством программ, потому что при сборке можно передать -Dprintf=шли_всё_в_АНБ и так для любого символа, и так отдельно в каждом файле.

Поэтому прочитать программу на Си/++, не собрав её, принципально нельзя. Есть костыли - compile_commands.json, bear и иже с ними. Но они позволяют работать лишь с одной конфигурацией из бесконечного множества. Считать ли работу с одной конфигурацией работой с программой - это дело совести того, кто так говорит.

Есть также частные случаи, когда есть понятие проекта. Но это не покрывает язык в целом.

Исправление den73, :

Из-за препроцессора и отсутствия понятия «проект». Программа на Си/Си++ является бесконечным параметрическим семейством программ, потому что при сборке можно передать -Dprintf=шли_всё_в_АНБ и так для любого символа, и так отдельно в каждом файле.

Поэтому прочитать программу на Си/++, не собрав её, принципально нельзя. Есть костыли - compile_commands.json, bear и иже с ними. Но они позволяют работать лишь с одной конфигурацией из бесконечного множества. Считать ли работу с одной конфигурацией работой с программой - это дело совести того, кто так говорит.

Есть также частные случаи, когда есть понятие проекта. Но это не покрывает язык в целом.

Касаемо проблемы, указанной @eao197, она есть и в Го: как только упираемся в интерфейс, мы не знаем, что конкретно его воплощает. Но в Го нет препроцессора, поэтому можно статически составить список всех реализаций интерфейса в данной программе.

Исправление den73, :

Из-за препроцессора и отсутствия понятия «проект». Программа на Си/Си++ является бесконечным параметрическим семейством программ, потому что при сборке можно передать -Dprintf=шли_всё_в_АНБ и так для любого символа, и так отдельно в каждом файле.

Поэтому прочитать программу на Си/++, не собрав её, принципально нельзя. Есть костыли - compile_commands.json, bear и иже с ними. Но они позволяют работать лишь с одной конфигурацией из бесконечного множества. Считать ли работу с одной конфигурацией работой с программой - это дело совести того, кто так говорит.

Есть также частные случаи, когда есть понятие проекта. Но это не покрывает язык в целом.

Исправление den73, :

Из-за препроцессора и отсутствия понятия «проект». Программа на Си/Си++ является бесконечным параметрическим семейством программ, потому что при сборке можно передать -Dprintf=шли_всё_в_АНБ и так для любого символа, и так отдельно в каждом файле.

Поэтому прочитать программу на Си/++, не собрав её, принципально нельзя. Есть костыли - compile_commands.json, bear и иже с ними. Но они позволяют работать лишь с одной конфигурацией.

Есть также частные случаи, когда есть понятие проекта. Но это не покрывает язык в целом.

Исходная версия den73, :

Из-за препроцессора и отсутствия понятия «проект».