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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему массивы ковариантны, но дженерики инвариантны?

Из эффективной Java Джошуа Блоха, Массивы отличаются от типичного типа двумя важными способами. Первые массивы ковариантны. Дженерики являются инвариантными. Ковариант просто означает, что если X является подтипом Y, тогда X [] также будет подтипо...
07 сент. '13 в 0:16
12 отв.

Когда кто-то пишет новый язык программирования, что они пишут IN?

Пожалуйста, извините мое невежество. Я занимаюсь PHP и получаю мокрый взгляд на страницы, и чувствую себя вынужденным задавать вопрос, о котором я давно мечтал: Когда вы пишете совершенно новый язык программирования, что вы его пишете? Это, наверно...
27 окт. '09 в 11:59