Запитання з тегом «language-design»

Тег для питань, пов’язаних із дизайном будь-якого аспекту мов програмування.

30
"Найменше здивування" та змінна аргументація за замовчуванням
Кожен, хто поводився з Python досить довго, був покусаний (або розірваний на частини) наступним номером: def foo(a=[]): a.append(5) return a Python послушники б очікувати ця функція завжди повертає список тільки з одним елементом: [5]. Натомість результат настільки різний і вражаючий (для новачків): >>> foo() [5] >>> foo() [5, 5] >>> …

16
Чому Java не підтримує неподписані вставки?
Чому Java не включає підтримку непідписаних цілих чисел? Мені це здається дивним упущенням, враховуючи те, що вони дозволяють писати код, який менш імовірно створює переповнення на несподівано великий вхід. Крім того, використання непідписаних цілих чисел може бути формою самодокументації, оскільки вони вказують на те, що значення, яке повинен був утримувати …

13
Чому ми повинні визначати обидва == і! = У C #?
Компілятор C # вимагає, щоб кожен раз, коли спеціальний тип визначає оператора ==, він також повинен визначати !=(див. Тут ). Чому? Мені цікаво дізнатись, чому дизайнери вважали це необхідним і чому компілятор за замовчуванням не може прийняти розумну реалізацію для будь-якого з операторів, коли присутній лише інший. Наприклад, Lua дозволяє …

5
Чому в методах інтерфейсу Java 8 "остаточний" не дозволено?
Однією з найбільш корисних особливостей Java 8 є нові defaultметоди інтерфейсів. По суті є дві причини (можуть бути й інші), чому вони були введені: Надання фактичних реалізацій за замовчуванням. Приклад:Iterator.remove() Дозвіл еволюції API JDK Приклад:Iterable.forEach() З точки зору дизайнера API, мені хотілося б використовувати інші модифікатори для методів інтерфейсу, наприклад …


5
Переваги прототипічного успадкування над класичним?
Тому я нарешті перестала тягнути ноги всі ці роки і вирішила навчитися JavaScript "правильно". Одним із найпопулярніших елементів дизайну мов є його успадкування. Маючи досвід роботи в Ruby, я був дуже радий бачити закриття та динамічний набір тексту; але все життя я не можу зрозуміти, яку користь матиме від об'єктів, …

11
Що блокує Ruby, Python для отримання швидкості Javascript V8? [зачинено]
Закрито . Це питання має бути більш зосередженим . Наразі відповіді не приймаються. Закрито 5 років тому . Заблокований . Це запитання та його відповіді заблоковано, оскільки це питання поза темою, але має історичне значення. Наразі він не приймає нових відповідей чи взаємодій. Чи є якісь функції Ruby / Python, …

14
Функція перевантаження за типом повернення?
Чому більш основні статично набрані мови не підтримують функцію / метод перевантаження за типом повернення? Я не можу думати ні про що. Це здається не менш корисним або розумним, ніж підтримка перевантаження за типом параметра. Чому це так менш популярно?

5
Як ключове слово "це" працює у функції?
Я просто натрапив на цікаву ситуацію в JavaScript. У мене є клас із методом, який визначає кілька об'єктів за допомогою об'єктно-буквальних позначень. Усередині цих об'єктів використовується thisвказівник. З поведінки програми я дійшов висновку, що thisвказівник посилається на клас, до якого викликався метод, а не на об'єкт, що створюється літералом. Це …

12
Чому Python не має функції знаку?
Я не можу зрозуміти, чому Python не має signфункції. У нього є absвбудований (який я вважаю signсестрою), але ні sign. У python 2.6 є навіть copysignфункція (з математики ), але ніякої ознаки. Навіщо турбуватися писати а, copysign(x,y)коли ви могли просто написати a, signа потім отримати copysignбезпосередньо з abs(x) * sign(y)? …

5
Чому масив не призначається Iterable?
з Java5 ми можемо написати: Foo[] foos = ... for (Foo foo : foos) або просто за допомогою Iterable в циклі for. Це дуже зручно. Однак ви не можете записати загальний метод для такого вибору: public void bar(Iterable<Foo> foos) { .. } і викликає його масивом, оскільки він не є …

7
Чому я не можу використовувати абстрактні статичні методи в C #?
Я працював із Останнім часом провайдерами досить небагато, і мені трапилось цікаве становище, коли я хотів мати абстрактний клас, який мав абстрактний статичний метод. Я прочитав кілька публікацій на цю тему, і це мало сенс, але чи є приємне чітке пояснення?
182 c#  .net  language-design 

15
Що означає порожнеча в C, C ++ та C #?
Шукаємо основи того, звідки походить термін " недійсність " і чому його називають недійсним. Намір питання полягає в тому, щоб допомогти тому, хто не має досвіду роботи з C, і раптом дивиться на кодову базу на основі С.

3
Чому було твердження (j ++); заборонено?
Наступний код невірний (див. Його на ideone ): public class Test { public static void Main() { int j = 5; (j++); // if we remove the "(" and ")" then this compiles fine. } } помилка CS0201: Лише призначення, виклик, приріст, зменшення, очікування та нові об'єкти вирази можуть використовуватися …

13
Коли хтось пише нову мову програмування, що вони пишуть на ньому?
Вибачте, будь ласка, про моє незнання. Я блукаю в PHP і мочу ноги переглядаючи ТАК, і я змушений задати питання, про яке я цікавився роками: Коли ви пишете абсолютно нову мову програмування, що ви пишете на ній ? Це, мабуть, звучить по-справжньому нерозумно для всіх ваших програмістів, до яких я …

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