Чи може мова програмування за допомогою дизайну застосовувати «чистий код»? [зачинено]


19

Тому я кодую свої перші проекти в C ++ і, здається, потрібно більше зусиль, щоб зробити код "чистим", а не просто працювати. Тобто здається, ніби C ++ "дозволяє" писати некрасивий, але робочий код.

Що змусило мене задуматися,

Чи може мова програмування застосовувати чистий код за допомогою дизайну? Чи вже є такі мови?

Крім того, як це включено як принципи проектування в розробку / теорію мови програмування? Які заходи застосовуються?


14
Багато мов спробували. На мою думку, віддалено не вдалося.
Gort the Robot

5
На жаль, це цілком ґрунтується на думці, оскільки немає об'єктивного визначення поняття "чистий код". Не соромтесь обговорювати це в нашій кімнаті чату , я впевнений, що всі, хто там знаходиться, матимуть свою думку.
Ixrec

9
Ні, ви можете написати FORTRAN будь-якою мовою.
whatsisname

4
Ви запитуєте, чи можна не підтвердити мову. Як то кажуть, ідіоти геніальні .
Gort the Robot

2
Які характеристики має "чистий код" для цілей цього питання? Вам потрібно визначити це, інакше будь-яка відповідь з будь-яким обґрунтуванням може бути достовірною.
Теодорос Чатзіґананакіс

Відповіді:


20

Основний ефект, який має мовна конструкція на "чистий код", є на синтаксичному рівні. Мови з великою кількістю скорочених і незрозумілих операторів (Perl / APL) піддаються "брудному" коду, тоді як мови з меншим набором елементів (скажімо, Python) піддаються більш чистому коду.

Однак семантика - це зовсім інша тварина. Немає можливості переконатись у тому, що семантика мови використовується чисто, особливо тому, що ви не можете як компілятор знати, чого намагається виконати користувач цієї мови. Потужний інструмент просто це - потужний інструмент, для добра чи хворого.

Зрештою, семантика важливіша за синтаксис. Це також та частина, яку найскладніше зрозуміти як розробник технічного обслуговування (наприклад, "що насправді означає цей код? Я бачу, що він робить ...").

Отже, я б сказав, що не існує дизайну для забезпечення чистого коду, але ви можете написати простий синтаксис із чистою семантикою, що полегшує його. На краще чи гірше, чистий код - це насамперед питання знань, мотивації, дисципліни та вміння розробника.


2
Я б сказав, що система типів може пройти довгий шлях до впровадження правильної семантики. Наприклад, сильно набрані мови гарантують, що змінним присвоюються значення застосовуваних типів. Мова, яка робить типи дешевими та простими, заохочує кодування більшої кількості семантики у типах. Сильно набрана мова змушує програмістів висловлювати наміри щодо перетворення типів. Мова, яка затьмарює семантику за допомогою шаблону, також ускладнює міркування про семантику. Що стосується того, що таке "чиста" семантика, то не ясно. Але я б міг уявити, що вона суттєво збігається з правильною семантикою.
Відновіть Моніку

7

Мови можуть змусити або спонукати програмістів звертатися до певних класів помилок, що є частиною визначення чистого коду. Наприклад, різні мови займаються відносно гідною роботою щодо вирішення:

  • Винятки нульових покажчиків.
  • Спільні помилки стану
  • Емісійні питання.
  • Неперевірені винятки.

Це лише перетворює вас на частину шляху, оскільки чистий код стосується передусім людського спілкування. Мови програмування дійсно мають лише один важіль, який допомагає у цьому, і це їх виражальна сила . Це визначити дійсно важкий термін, але в принципі хорошим програмістам простіше писати чистіший код на виразніших мовах. У них є більше інструментів для легкого вираження алгоритму в термінах, які добре спілкуються з іншими людьми. Не зрозумійте мене неправильно, ви можете написати чистий код майже ( будь-якою) мовою програмування. Просто деякі мови полегшують та мають кращий відносний результат.

Однак ви не можете просто набрати експресивність і магічно люди почнуть писати кращий код. У більшості програмістів ви даєте їм більше ручок, щоб перетворити їх мову, і вони не знають, як правильно ними користуватися, тому їх код закінчується гірше. Для підвищення якості коду потрібна дисципліна та хороше наставництво. Срібних куль немає.


6

Певною мірою. Багато мов свідомо розроблені для заохочення деяких форм чистого коду відповідно до ідеалів мовних дизайнерів. Звичайно, можна писати некрасивий і незрозумілий код будь-якою мовою, але деякі мови докладають більше зусиль, щоб відбити їх.

Як приклад, Python змушує вас відступати блокам відповідно до семантичної структури мови, тоді як багато інших мов дозволяють відступати цілком випадково або зовсім не. Це приклад мови, яка активно заохочує певний ідеал чистоти.


3

Якщо ви зможете його кількісно оцінити, ви можете створити мову, яка може оптимізувати її.

Хоча я не знаю жодної конкретної мови, яка насправді застосовує політику "чистого коду", стильні копи, які працюють на складанні, є досить поширеними.

Основна причина того, що це окремий крок від того, щоб випекти мову, багато в чому залежить від пріоритетів. Мова інтересів програмування полягає в інтересах, щоб дозволити програмістам максимальну гнучкість отримати найширший рівень прийняття. Існує так багато різних мов програмування та DSL, що штучне обмеження користувальницької бази шляхом вибагливості та сумніву щодо того, який вхід дозволений, швидше за все, може перешкодити більш широкому застосуванню.

Наприклад, не в інтересах C # змушувати людей писати

if (condition)
{

замість

if (condition) {

Але шашки стилів можна вважати вибагливими, адже саме так вони і розроблені.

Отже, щоб відповісти на запитання

Чи може мова програмування застосовувати чистий код за допомогою дизайну?

акцент мій

Абсолютно, якщо ви надаєте чітке визначення того, що означає "чистий код".

Наприклад, я можу визначити "чистий код", щоб означати:

  • довжина рядка не більше 80 символів
  • функції, що складаються не більше 100 рядків
  • відступ повинен бути двома пробілами
  • відкриті фігурні дужки повинні проходити в кінці рядка, якому передує рівно один пробіл
  • не більше двох операторів на рядок

і ви можете не погодитися з деякими або всіма цими умовами, але наприкінці дня їх можна оцінити кількісно і їх можна запровадити програмно.


1

Ні, не в тому сенсі, який ви описуєте. Виявлення "потворності" неможливо зробити автоматично!

Однак мовні дизайнери можуть робити щось задля заохочення хорошого коду (я не хочу говорити "чистим", оскільки іноді хороший, безпечний код також довгий і "потворний"). Наприклад, дизайнери мови Rust розглядали те, до чого схильні дисципліновані програмісти C ++ (як, наприклад, давання значень, що виділяються в купу, єдиного "власника"), і полегшували робити деякі з цих речей. Сюди входить надання перевірки набору тексту, за допомогою якого ви можете перевірити, чи не допустили певних поширених помилок.

Я б сказав, що хороший дизайн мови часто реагує: дизайнери дивляться на те, що роблять хороші програмісти, і намагаються зробити це простішим і «гарнішим».

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.