Описание тега language-design
Тег для вопросов, связанных с дизайном любого аспекта языков программирования.
1
ответ
Ошибка компилятора в зависимости от положения параметра в сигнатуре метода. Использование неназначенной локальной переменной
Допустим, у меня есть этот класс: class Boo { public override string ToString() { return "I am Boo!"; } } И эти методы: static int Foo(out Boo boo) { boo = new Boo(); return 1; } static void Lol(Boo boo, int n) { Console.WriteLine(n); Console.WriteL…
03 фев '17 в 15:29
2
ответа
Как получить класс объекта-одиночки во время компиляции?
Рассмотрим что-то вроде этого: object Singleton val cls: Class[Singleton] = ??? Что я должен написать вместо ???? Я старался classOf[Singleton], classOf[Singleton.type], Singleton.type, но ничего не получалось. (Я знаю конечно о getClassДоделанная в…
24 май '11 в 23:47
3
ответа
Почему неявный конструктор копирования вызывает конструктор копирования базового класса, а определенный конструктор копирования - нет?
Рассмотрим иерархию классов, где A это базовый класс и B происходит от A, Если конструктор копирования не определен в B, компилятор будет синтезировать один. При вызове этот конструктор копирования вызовет конструктор копирования базового класса (да…
07 фев '12 в 14:42
2
ответа
Является ли клонирование кода обычной практикой в C,Java и Python?
Клоны кода, также известные как дублирующий код, часто считаются вредными для качества системы. Мне интересно, можно ли увидеть этот дублированный код в стандартных API или других зрелых инструментах. Если это действительно так, то какой язык (напри…
24 мар '12 в 15:41
4
ответа
Какое общее название для объявления, определения, выражения и заявления?
Если установленное имя не существует, какое имя вы можете предложить?
21 фев '10 в 01:47
5
ответов
Почему / разрешил C неявные объявления функций и переменных без типов?
Почему для языка имеет смысл разрешать неявные объявления функций и переменных без типов? Я получаю, что C старый, но позволяет пропустить объявления и по умолчанию int() (или же int в случае переменных) мне не кажется таким вменяемым даже тогда. Ит…
06 авг '12 в 19:54
1
ответ
Имеет ли смысл "тратить" 8 байтов на экземпляр String для смещения / подсчета?
Строки в Java поддерживают структурное совместное использование для некоторых методов, таких как substringЭто означает, что предположительно неизменяемые данные не нужно копировать (что (неожиданно) поддерживает большие массивы символов, которые в п…
16 сен '11 в 14:29
4
ответа
Какие уроки можно извлечь из прототипа модели в javascript?
Вопрос с точки зрения языкового дизайна. Я должен немного объяснить ситуацию. Я работаю над вариантом javascript, который не поддерживает прототипы, однако это устаревшая система типов (наиболее важна поддержка instanceof). Спецификация ecmascript н…
09 мар '09 в 03:30
1
ответ
Есть ли язык, который позволяет манипулировать примитивами?
В большинстве случаев языки не позволяют манипулировать ссылками на примитивы. Например.: var a = 0; var b = a; // value is copied b++; // b now represents a new value as this is really b = b + 1; so a != b Хотя манипулирование не примитивами вызове…
15 июн '11 в 16:43
15
ответов
C, C++, Java, что дальше и как это будет выглядеть?
Как вы думаете, как будет выглядеть следующая эволюция языков?
02 окт '08 в 14:50
3
ответа
Зачем использовать фигурные скобки над скобками?
Во многих примерах Scala я вижу, что люди используют фигурные скобки в местах, которые я нахожу совершенно странными, когда одно и то же утверждение можно легко написать с помощью скобок. Пример: lst foreach (x => println(s"the value returned is:…
03 июл '14 в 12:22
2
ответа
Как выглядит вывод C++ PHP-компилятора HipHop?
Достаточно ли чисто, чтобы вы могли отказаться от PHP и оптимизировать вручную код C++?
09 апр '10 в 23:05
3
ответа
Хэш-значения Python2 плохо распределены
При использовании встроенного Python hash() Функция на струнах, я просто играл с ней, когда заметил что-то странное. Обычно нормальная хеш-функция должна быть некоррелированной в том смысле, что из hash(A), hash(B) должно быть полностью неузнаваемым…
21 июн '17 в 19:28
4
ответа
В чем разница между классом и типом в Scala (и Java)?
Scala Где в Scala можно наблюдать различия между классом и типом и почему это различие важно? Является ли это только соображением с точки зрения языкового дизайна или имеет "практическое" влияние при программировании на Scala? Или это фундаментально…
17 фев '11 в 16:25
3
ответа
How to make a Side-by-Side Compiler for .NET
Сценарий Никхила Котари #, возможно, является одной из самых удивительных концепций, которые я видел на арене JavaScript в течение достаточно долгого времени. Этот вопрос не о JavaScript, а о компиляции языка во время выполнения.NET. Меня довольно …
16 сен '08 в 18:10
2
ответа
Почему C++11 определяет несуществующее значение как значение по умолчанию?
Ниже приводится выдержка из ссылки 1 cppreference и ссылки 2 cppreference: enum codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; template < class Elem, unsigned long Maxcode = 0x10ffff, std::codecvt_mode Mode = (std::c…
15 фев '17 в 04:17
2
ответа
Почему методы доступа const в std::string возвращают ссылку?
std::string аксессоры (back, front, at, а также operator[]) иметь const и не const перегрузки, как показано ниже: char& x(); const char& x() const; Почему вторая версия возвращает const ссылка, в отличие от простого возврата char по значению…
13 июн '15 в 16:00
2
ответа
Почему в std.parallel нет 'forall'?
Я перебираю новую библиотеку std.parallel. Я не являюсь разработчиком языка или библиотеки, так что прости мое невежество, но разве не было бы полезно, если бы forall утверждение на языке или хотя бы в std.parallel? Например, вместо этого: auto logs…
27 июн '11 в 00:13
6
ответов
Мог ли C++ не избавиться от идиомы pimpl?
Как я понимаю, pimpl идиома существует только потому, что C++ заставляет вас помещать все закрытые члены класса в заголовок. Если бы заголовок содержал только открытый интерфейс, теоретически, любое изменение в реализации класса не требовало бы пере…
06 ноя '08 в 15:56
5
ответов
Почему шаблон функции не может быть частично специализированным?
Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Я хотел бы знать обоснование, почему оно запрещает это? Они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, c…
24 фев '11 в 07:11