Як щодо п’яти речей, які я ненавиджу, у списках "Що я ненавиджу про якусь мову"? : D
5- Фарбування помаранчевим червоним не робить це яблуком.
Коли мова розроблена, дизайнери зазвичай мають на увазі, для чого вона корисна. Використовувати його для чогось зовсім іншого може спрацювати, але скаржитися, коли це не просто глупо. Візьміть Python. Я впевнений, що або хтось має, або хтось колись зробить утиліту для створення exe з Python-коду. Чому на землі Божій ти хотів би це зробити? Було б акуратно - не зрозумійте мене неправильно - але це не має ніякої користі. Тож перестаньте скаржитися на це!
Добре розроблений проект, ймовірно, міститиме код з декількох мов. Це не означає, що ви не можете завершити проект лише однією мовою. Деякі проекти можуть бути в межах можливостей будь-якої мови, якою ви користуєтесь.
4- Ти стоїш на дерев'яних ніжках?
Платформа може бути великим впливом того, що може зробити мова. На сьогоднішній день сміттєзбірники, а то й паскалі ранні спроби "вивезення сміття", можуть допомогти згасанню пам'яті (можливо, мальком більше барана ??). Комп'ютери швидше, і, звичайно, ми очікуємо, що більше наших мов. І, чесно кажучи, ми, мабуть, повинні. Однак для зручності компілятора можна створити величезну ціну для створення хеш-таблиць або рядків або різноманітних інших понять. Ці речі можуть не бути успадкованими платформою, для якої вони використовуються. Якщо сказати, що їх легко включити до мови, це просто скаже мені, що ти можеш не мати ноги, на якій можна стояти.
3- Хто в цьому винен?
Клопи. Ти знаєш. Я люблю клопів. Чому я люблю клопів. Тому що це означає, що я можу зберегти свою роботу. Без помилок було б багато закритих піцерій. Однак користувачі ненавидять помилок. Але ось трохи сплеску холодної води. Кожна помилка - це помилка програмістів. Не мова. Мова з таким суворим синтаксисом, який би значно зменшив кількість помилок, які можна було б створити, був би абсолютно марною мовою. Це, можливо, можна було б перерахувати з одного боку. Ви хочете гнучкості чи потужності? У вас є помилки. Чому? Тому що ти не ідеальний, і ти робиш помилки. Візьмемо дійсно ідентифічний приклад на мові C:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
Ми всі знаємо, що це робити. Однак те, що, можливо, хтось із нас не усвідомлює, це те, що функціональність може бути дуже корисною. Залежно від того, що ти робиш. Перевищення буфера - це вартість цієї функціональності. Цей код вище. Якщо я насправді випустив це на публіку. Це знову .. скажи це зі мною .. "Моя вина". Це не те, що я дозволив мені це зробити.
2 - Чи не слід ставити це в кошик?
Дуже легко вказати на особливості на мові, яку ми не розуміємо, оскільки ми не використовуємо її часто і називаємо її дурною. Поскаржись, що це там і т.д. Гото завжди мене розважає. Люди завжди скаржаться на те, що гото є мовою. Але я думаю, що ваша остання програма включала тип goto. Якщо ви коли-небудь використовували перерву чи продовження, ви використовували goto. Ось що це. Зрозуміло, це "безпечне" гото, але воно є. Гото мають їх використання. Незалежно від того, чи використовуються "неявні" gotos, як продовжувати або перервати, або явні gotos (використовуючи власне ключове слово "goto" для будь-якої мови). Не те, щоб розробники мови були бездоганними, але, як правило, ... якщо функціональність існувала ще з світанку (для цієї мови). Ймовірно, цей аспект є визначальною якістю цієї мови. Значення .. це ' s використовується і, швидше за все, не висить через зворотну сумісність. Він використовується сьогодні. Як і 5 хвилин тому. І правильно використовується. Ну .. певно, хтось також його неправильно використовує, але це стосується №3 мого списку.
1. - Все є предметом.
Ок .. ця справді є підмножиною №2. Але це, безумовно, найприємніша скарга, яку я бачу у списках ненависті. Не все є об’єктом. Існує велика кількість понять, які не належать або не повинні бути об'єктами. Розміщення речей там, де вони не належать, - це просто некрасиво і може знизити ефективність програми. Звичайно. Можливо, не сильно залежно від мови. Це також стосується №5. Це означає ... так. Глобальні в порядку. Функції, призначені для статичних методів, добре. Поєднувати програмування OO з глобальними функціями - це нормально. Тепер .. це не означає, що ми всі повинні вийти і "звільнити" наш код від об'єктних моделей. При проектуванні ділянки коду або всього проекту, що відбувається за лаштунками повиннівраховуйте при складанні. Мало того, де живе ця концепція та багато інших факторів. Навіщо обертати глобальні функції в межах класів або понять простору імен, якщо це не відповідає меті? Візьміть статичні змінні члена. Це дуже мене забавляє, тому що ... ну..Залежно від мови та впровадження курсу, але загалом кажучи, ви просто оголосили глобальним. Так, є деякі причини, щоб зафіксувати ці поняття, що не належать до ОО, в OO обгортки. Одним із них є самодокументування коду. Це може мати сенс. Так .. як я кажу. Не виходьте і не звільняйте свій код. Але будь-яка добра сучасна мова матиме глобальну концепцію поза її моделювання ОО. Так, я конкретно маю на увазі, що мова програмування OO без глобальної концепції, швидше за все, має серйозні вади дизайну. Хоча знову ж таки .. залежить від наміру та дизайну мови, тому я не намагаюся вибрати якусь конкретну мову, і тут дуже багато для аналізу. Будь-хто, Поміркуйте, де код повинен жити і бути найбільш ефективним. Додавання купового спалаху до чогось, що не додає функціональності чи підтримки, просто швидше зношує клавіатуру. Це нікому не приносить користі. Ну .. якщо вам не подобаються окуляри брауні від людини, яка, ймовірно, неправильно навчила вас, що все є предметом.
Коротше кажучи, програмування - це не просто безглуздо натискання клавіатури. У будь-якому проекті є чимало міркувань щодо дизайну. Я знаю, що це кліше, але ви повинні дивитися на нього з усіх кутів. Навіть із сучасними мовами, що захищають тип. Ви не просто викручуєте код і очікуєте, що він буде добре працювати. Звичайно .. це може спрацювати, але це може бути не правильним шляхом. Загалом виберіть мову та формат, які найкраще підходять для конкретної роботи ТА оточення. Але жодна мова не забирає думки за нею. Якщо ти не думаєш .. ти просто набираєш текст.