Поэтому я пишу свои первые проекты на C ++, и кажется, что для того, чтобы сделать код «чистым», нужно больше усилий, чем просто работать. Т.е. кажется, что C ++ «позволяет» писать некрасивый, но работающий код.
Что заставило меня задуматься,
Может ли язык программирования обеспечить чистый код в дизайне? Уже есть такие языки?
Кроме того, как это включено в принципы проектирования в разработке / теории языка программирования? Какие меры используются?
Ответы:
Основной эффект, который языковой дизайн оказывает на «чистый код», находится на синтаксическом уровне. Языки с большим количеством сокращений и непонятных операторов (Perl / APL) пригодны для «грязного» кода, тогда как языки с меньшим набором элементов (скажем, Python) пригодны для более чистого кода.
Семантика, однако, совсем другое животное. Невозможно добиться того, чтобы семантика языка использовалась чисто, особенно потому, что вы, как компилятор, не можете знать, что пытается сделать пользователь языка. Мощный инструмент - это просто мощный инструмент, хороший или плохой.
В конце концов, семантика важнее синтаксиса. Это также та часть, которую труднее всего понять разработчику технического обслуживания (например, «что на самом деле означает этот код? Я вижу, что он делает ...»).
Следовательно, я бы сказал, что нет никакого проекта для обеспечения чистого кода, но вы можете написать простой синтаксис с чистой семантикой, которая облегчит его. Что бы там ни было, чистый код - это, прежде всего, вопрос знаний, мотивации, дисциплины и навыков разработчика.
источник
Языки могут заставлять или побуждать программистов устранять определенные классы ошибок, что является частью определения чистого кода. Например, разные языки выполняют относительно приличную работу по адресу:
Тем не менее, это только помогает вам пройти путь, потому что чистый код - это, прежде всего, общение между людьми . Языки программирования действительно имеют только один рычаг, чтобы помочь в этом, и это их выразительная сила . Это очень сложный термин для определения, но в целом хорошим программистам проще писать более понятный код на более выразительных языках. У них есть больше инструментов, чтобы легко выразить алгоритм в терминах, которые хорошо общаются с другими людьми. Не поймите меня неправильно, вы можете написать чистый код практически на любом языке программирования. Просто некоторые языки делают это проще и дают лучший относительный результат.
Однако, вы не можете просто набрать выразительность, и люди волшебным образом начнут писать лучший код. С большинством программистов вы даете им больше ручек для включения их языка, и они не будут знать, как правильно их использовать, поэтому их код на самом деле оказывается хуже. Требуется дисциплина и хорошее наставничество, чтобы улучшить качество вашего кода. Там нет серебряных пуль.
источник
До некоторой степени Многие языки специально разработаны для поощрения некоторых форм чистого кода в соответствии с идеалами разработчиков языков. Конечно, можно написать некрасивый и непонятный код на любом языке, но некоторые языки прилагают больше усилий, чтобы препятствовать этому.
В качестве примера Python заставляет вас делать отступы блоков в соответствии с семантической структурой языка, в то время как многие другие языки позволяют делать отступы совершенно случайно или вообще не делать этого. Это пример языка, активно поощряющего определенный идеал чистоты.
источник
Если вы можете определить его количественно, вы можете создать язык, который может его оптимизировать.
Хотя я не знаю какого-либо конкретного языка, который фактически применяет политику «чистого кода», копы стиля, которые запускаются при сборке, довольно распространены.
Основная причина того, что это отдельный шаг от запекания в язык, во многом зависит от приоритетов. В интересах языка программирования обеспечить максимальную гибкость для программистов, чтобы получить самый широкий уровень принятия. Существует так много разных языков программирования и DSL, что искусственное ограничение пользовательской базы, будучи разборчивым и рассудительным в отношении того, что ввод разрешен, может помешать более широкому принятию.
Например, не в интересах C # заставлять людей писать
вместо того
Но шашки стиля могут считаться придирчивыми, потому что это то, для чего они предназначены.
Итак, чтобы ответить на вопрос
акцент мой
Безусловно, до тех пор, пока вы даете четкое определение того, что означает «чистый код».
Например, я мог бы определить «чистый код», чтобы означать:
и вы можете не согласиться с некоторыми или всеми этими соглашениями, но в конце концов они поддаются количественной оценке и могут применяться программно.
источник
Нет, не в том смысле, что вы описываете. Обнаружение "уродства" не может быть сделано автоматически!
Тем не менее, разработчики языка могут сделать что-то для поощрения хорошего кода (я не хочу говорить «чистый», потому что иногда хороший, безопасный код также длинный и «некрасивый»). Например, разработчики языка Rust смотрели на вещи, которые склонны делать дисциплинированные программисты на C ++ (например, наделив значения, выделенные в куче, одним «владельцем»), и упростили выполнение некоторых из этих вещей. Это включает предоставление проверки типов, которую вы можете использовать для проверки того, что вы не допустили некоторые типичные ошибки.
Я бы сказал, что хороший дизайн языка часто реагирует: дизайнеры смотрят на то, что делают хорошие программисты, и пытаются сделать это проще и «красивее».
источник