Проводятся ли серьезные исследования того, насколько хорошо опытный программист, знающий язык X, может понимать код, написанный компетентным программистом на языке Y, для широкого спектра широко используемых языков, таких как X и Y?
Конечно, реальный мир не так прост, поскольку программисты знают только один язык. Что мы хотели бы знать: если мы сделаем наш проект, скажем, на C #, и когда-нибудь некоторые старые физики, которые знают только Fortran и Algol, посмотрят на него, в какой степени это имело бы смысл для них? Математические части этого могут показаться им понятными, если они проигнорируют то, что для них является какими-то случайными знаками препинания. Или же эксперт по Python сможет найти недостатки в моем умном Ruby-скрипте?
Могут быть проблемы от уровня поверхностного синтаксиса до уровня грандиозных понятий, таких как объекты, шаблонное метапрограммирование, функционал и так далее. Я не ожидаю, что один программист полностью поймет каждую синтаксическую деталь кода на «иностранном языке» или будет следовать религии какой-то великой концепции, но мне интересно, в какой степени они получат основной поток контроля, найдут место где что-то нарисовано на экране и что определяет его цвет или размер, убедитесь, что робот, запрограммированный для управления автомобилем, выключит двигатель, когда это будет сделано, такого рода вещи.
Хорошее качественное исследование будет включать в себя опубликованные научные исследования, официальный отчет какой-либо отраслевой группы или крупной компании-разработчика программного обеспечения, хотя я буду принимать систематические объективные наблюдения опытных руководителей семинаров и классов или других источников. Не интересуются короткими блогами, одиночными примерами или анекдотами. (Ну, может быть, несколько анекдотов, если они делают для хорошего чтения.)
Ответы:
Очевидно, это зависит от того, насколько языки связаны друг с другом. Например, если у вас есть опыт работы на C или C ++ и вы уже занимались программированием на C # или Java, вам будет легко читать и понимать другой из этих двух языков (Java или C #). Если вы хорошо знаете Лисп, Схема не должна быть большой проблемой. Однажды я отлаживал PHP-программу, не имея никаких знаний о PHP, только с моими знаниями из C, C ++ и Perl. Я совершенно уверен, что когда эта программа была бы написана на Haskell или Smalltalk, это было бы намного сложнее, чем невозможно для меня.
На самом деле, я не думаю, что академическое исследование по этой теме имело бы смысл (по крайней мере, не серьезное). Нет такого понятия, как «стандартный опытный программист, который знает язык X», поэтому в любом исследовании не будет гарантированных базовых данных. Люди имеют разные знания, и даже если они проходили через одни и те же школы, они по-разному талантливы и мотивированы.
Это может быть сложно, даже если вы очень хорошо знакомы с языком, либо потому, что качество кода очень низкое, либо используемая среда слишком сложна, либо база кода очень велика.
источник
Не уверен насчет академического исследования, однако самоочевидное именование методов, классов и функций в языках C # / C ++ / Java / Python и т. Д. Должно облегчить понимание кодовой базы, а также потока бизнес-процессов.
Соглашение об именовании в проекте и в целом при разработке программного обеспечения является очень важным аспектом. Тем не менее,
its importance
и актуальность для создания качественного программного обеспечения часто упускается из виду или игнорируется все вместе.Рекомендации по именованию, используемые в .NET Framework, и Общие соглашения по именованию, используемые в .NET, также являются хорошим справочным материалом.
источник
Это сильно зависит от индивидуального программиста и от того, как они усваивают языки. У меня абсолютно нет проблем с работой на дюжине языков, хотя у меня есть друг, который знает только C ++. Он не хуже программиста, чем я, он просто научился другому.
Лично я нахожу связанный вопрос более интересным: когда в коде есть ошибка (то есть программист X думал, что он написал,
someFunction(x, y)
но он действительно написал что-то еще), насколько трудно второму разработчику определить ошибку. Хороший программист X сделал бы совершенно очевидным, что он ХОЧЕТ делать с компьютером, и это будет легко прочитать. Однако, если он допустил ошибку, это может иметь большое значение. Такие вещи, как следующая ошибка C ++:Может быть ОБЯЗАТЕЛЬНО трудно обнаружить, если вы не знаете язык.
источник
Это зависит не только от программиста, как говорили другие люди, но и от сходства между языками, как в синтаксисе, философии и реализации.
Многие разные языки используют производный синтаксис языка Си, и поэтому следовать потоку управления будет проще, если вы знакомы с синтаксисом этого типа. То же самое касается строго типизированных и слабо типизированных языков, языков с поддержкой функций более высокого порядка, уровня абстракции и программных философий. Это зависит не только от того, сможете ли вы прочитать синтаксис, но также от знания концепций и философий языков.
Например, если вы изучили C, я думаю, что было бы разумно ожидать, что вы сможете получить поток управления из C #, Java или C ++ и т. Д. Было бы немного сложнее расшифровать VB из-за разницы в синтаксисе, или JavaScript из-за замыканий, слабой типизации и функций более высокого порядка (я знаю, что вы можете сделать это в C, но это немного шатко). Однако я не ожидал бы, что вы сможете отлаживать Lisp, F #, R или, не дай бог, сборку, потому что они используют совершенно другую парадигму программирования.
TL; DR Не только важно уметь распознавать синтаксис, в большинстве случаев вы можете расшифровать объявление или вызов метода, но и понять причину, по которой программа написана определенным образом, - это суть понимания и чтения кода. ,
источник