Вопросы с тегом 'language-design'

Тег для вопросов, связанных с дизайном любого аспекта языков программирования.
34

"Наименьшее удивление" и параметр Mutable Default Argument

Любой, владеющий Python достаточно долго, был укушен (или разорван на куски) по следующей проблеме: def foo(a=[]): a.append(5) return a Новички Python ожидают, что эта функция всегда вернет список только с одним элементом: [5]. В результа...
15 июл. '09 в 18:00
16

Почему Java не поддерживает unsigned ints?

Почему Java не поддерживает поддержку целых чисел без знака? Мне кажется, что это странное упущение, учитывая, что они позволяют писать код, который с меньшей вероятностью создает переполнения на неожиданно большом входе. Кроме того, использование ...
10 янв. '09 в 1:35
13

Почему мы должны определять как == и!= В С#?

Компилятор С# требует, чтобы всякий раз, когда пользовательский тип определяет оператор ==, он также должен определить != (см. здесь). Почему? Мне любопытно узнать, почему дизайнеры считают это необходимым и почему компилятор не может использовать...
02 авг. '11 в 18:37
4

Почему "final" не допускается в методах интерфейса Java 8?

Одной из наиболее полезных функций Java 8 являются новые методы default на интерфейсах. Есть по существу две причины (могут быть и другие), почему они были введены: Предоставление фактических реализаций по умолчанию. Пример: Iterator.remove() Раз...
04 мая '14 в 6:25
11

Что блокирует Ruby, Python, чтобы получить скорость Javascript V8?

Существуют ли какие-либо функции Ruby/Python, которые блокируют реализацию оптимизаций (например, встроенное кэширование). Двигатель V8 имеет? Python совместно разрабатывается ребятами Google, поэтому он не должен быть заблокирован патентами на прог...
02 мар. '11 в 14:20
6

Преимущества прототипного наследования над классическим?

Итак, я окончательно перестал тащить ноги все эти годы и решил научиться JavaScript "правильно". Одним из наиболее важных элементов дизайна языков является реализация наследования. Имея опыт работы в Ruby, я был очень рад видеть закрытия и динамическ...
10 мая '10 в 7:22
5

Как ключевое слово "this" работает внутри функции?

Я просто наткнулся на интересную ситуацию в JavaScript. У меня есть класс с методом, который определяет несколько объектов с использованием объектно-литеральной нотации. Внутри этих объектов используется указатель this. Из поведения программы я поня...
25 сент. '08 в 15:25
14

Перегрузка функций по типу возврата?

Почему в большинстве статических типизированных языков не поддерживается перегрузка функций/методов по типу возврата? Я не могу думать об этом. Это кажется не менее полезным или разумным, чем поддержка перегрузки по типу параметра. Почему он так попу...
14 янв. '09 в 5:38
10

Что означает DIM в Visual Basic и BASIC?

Что означает DIM в Visual Basic?
23 июн. '09 в 15:57
11

Почему у Python нет знаковой функции?

Я не могу понять, почему у Python нет функции sign. Он имеет встроенный abs (который я считаю сестрой sign), но не sign. В python 2.6 существует даже функция copysign (в math), но нет знака. Зачем писать copysign(x,y), когда вы могли бы просто на...
31 дек. '09 в 16:56
8

Почему я не могу использовать абстрактные статические методы в С#?

В последнее время я работал с поставщиками, и я столкнулся с интересной ситуацией, когда я хотел иметь абстрактный класс, который имел абстрактный статический метод. Я прочитал несколько сообщений по этой теме, и это вроде как имело смысл, но есть ли...
06 авг. '08 в 11:04
10

Почему частные поля являются приватными для типа, а не экземпляра?

В С# (и многих других языках) он вполне законен для доступа к закрытым полям других экземпляров того же типа. Например: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if(anotherFoo.aBool) ... } } ...
08 авг. '11 в 14:21
16

Почему в Java нет множественного наследования, но допускается реализация нескольких интерфейсов?

Java не разрешает множественное наследование, но позволяет реализовать несколько интерфейсов. Почему?
25 мар. '10 в 12:40
4

Почему локальные переменные требуют инициализации, но полей нет?

Если я создаю bool в моем классе, просто что-то вроде bool check, по умолчанию он равен false. Когда я создаю один и тот же bool в моем методе, bool check (а не внутри класса), я получаю сообщение об ошибке "использование непризнанной проверки лок...
13 июн. '15 в 8:07
15

Что означает void в C, С++ и С#?

Глядя на то, чтобы получить основы, на которых исходит термин VOID, и почему его называют недействительным. Цель вопроса состоит в том, чтобы помочь кому-то, у кого нет опыта работы в C, и вдруг смотрит на кодовую базу на основе C.
25 июн. '09 в 10:04