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

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

30
«Наименьшее удивление» и изменчивый аргумент по умолчанию
Любой, кто возился с Python достаточно долго, был укушен (или разорван на части) следующей проблемой: def foo(a=[]): a.append(5) return a Python послушники бы ожидать эта функция всегда возвращает список только с одним элементом: [5]. Результат вместо этого очень отличается, и очень удивительно (для новичка): >>> foo() [5] >>> foo() [5, …

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

13
Почему мы должны определять оба == и! = В C #?
Компилятор C # требует, чтобы всякий раз, когда пользовательский тип определял оператор ==, он также должен определять !=(см. Здесь ). Зачем? Мне любопытно узнать, почему дизайнеры сочли это необходимым и почему компилятор не может по умолчанию использовать разумную реализацию для одного из операторов, когда присутствует только другой. Например, Lua позволяет …

5
Почему «final» не допускается в интерфейсных методах Java 8?
Одной из наиболее полезных функций Java 8 являются новые defaultметоды интерфейсов. По сути, есть две причины (могут быть и другие), почему они были введены: Предоставление фактических реализаций по умолчанию. Пример:Iterator.remove() С учетом эволюции JDK API. Пример:Iterable.forEach() С точки зрения разработчика API, мне бы хотелось иметь возможность использовать другие модификаторы в …


5
Преимущества наследования прототипа перед классическим?
Так что все эти годы я, наконец, перестал тянуть ноги и решил «правильно» выучить JavaScript. Одним из самых головокружительных элементов дизайна языков является реализация наследования. Имея опыт работы с Ruby, я был очень рад видеть замыкания и динамическую типизацию; но за всю жизнь я не могу понять, какие выгоды можно …

11
Что блокирует Ruby, Python для получения скорости Javascript V8? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Закрыто 5 лет назад . Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. Существуют …

14
Перегрузка функции по типу возврата?
Почему более распространенные статически типизированные языки не поддерживают перегрузку функций / методов по типу возвращаемого значения? Я не могу думать ни о чем, что делает. Это кажется не менее полезным или разумным, чем поддержка перегрузки по типу параметра. Почему это так менее популярно?

5
Как работает ключевое слово «this» внутри функции?
Я только что натолкнулся на интересную ситуацию в JavaScript. У меня есть класс с методом, который определяет несколько объектов, используя объектно-буквенную нотацию. Внутри этих объектов thisуказатель используется. Из поведения программы я сделал вывод, что thisуказатель ссылается на класс, для которого был вызван метод, а не на объект, создаваемый литералом. Это …

12
Почему в Python нет функции знака?
Я не могу понять, почему у Python нет signфункции. Он имеет absвстроенную функцию (которую я считаю signсестрой), но нет sign. В Python 2.6 есть даже copysignфункция (по математике ), но без знака. Зачем писать, copysign(x,y)когда вы можете просто написать, 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
Что значит void в C, 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
Когда кто-то пишет новый язык программирования, что они пишут на IN?
Пожалуйста, извините за мое невежество. Я зацикливаюсь на PHP и начинаю ходить по SO, и чувствую себя обязанным задать вопрос, который меня интересовал годами: Когда вы пишете совершенно новый язык программирования, на чем вы его пишете ? Это, наверное, звучит очень глупо для всех вас, программистов, к которым я испытываю …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.