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

Вопросы, связанные с дизайном и структурой языков программирования.

2
Почему побитовые операторы имеют более низкий приоритет, чем сравнения?
Может ли кто-нибудь объяснить обоснование, почему в группе самых популярных языков (см. Примечание ниже) операторы сравнения (==,! =, <,>, <=,> =) Имеют более высокий приоритет, чем побитовые операторы (&, |, ^ ~) Я не думаю, что я когда-либо сталкивался с использованием, где этот приоритет был бы естественным. Это всегда такие …

6
Почему C # был создан с ключевыми словами «new» и «virtual + override» в отличие от Java?
В Java есть нет virtual, new, overrideключевые слова для определения метода. Таким образом, работа метода легко понять. Потому что, если DerivedClass расширяет BaseClass и имеет метод с таким же именем и тем же подписью BaseClass тогда наиважнейшим будет проходить время выполнения полиморфизма ( при условии , что метод не является …

9
Почему языки не включают импликацию как логический оператор?
Это может быть странный вопрос, но почему во многих языках нет смысла в качестве логического оператора (Java, C, C ++, Python Haskell - хотя, как и в прошлом, пользовательские операторы добавили его тривиально, чтобы добавить его)? Я считаю, что логическое значение гораздо яснее писать (особенно в утверждениях или выражениях, подобных …

4
Почему тип идет после имени переменной в современных языках программирования?
Почему почти во всех современных языках программирования (Go, Rust, Kotlin, Swift, Scala, Nim, даже последняя версия Python) типы всегда идут после имени переменной в объявлении переменной, а не раньше? Почему x: int = 42и нет int x = 42? Разве последнее не более читабельно, чем первое? Это просто тенденция или …

2
Почему void не разрешен как универсальный тип в C #
Каковы были дизайнерские решения, которые приводили доводы в пользу того, что они voidне конструируемы и не допускаются в качестве универсального типа? В конце концов, это просто специальная пустая ячейка, structкоторая позволила бы избежать общего PITA, состоящего из отдельных участников Funcи Actionделегатов. (C ++ допускает явные voidвозвраты и допускает voidв качестве …

3
Что такое система типов?
Фон Я проектирую язык, как побочный проект. У меня есть рабочий ассемблер, статический анализатор и виртуальная машина для него. Поскольку я уже могу компилировать и запускать нетривиальные программы, используя созданную мной инфраструктуру, я подумал о том, чтобы выступить с презентацией в моем университете. Во время моего выступления я упомянул, что …

5
Почему все функции <алгоритма> принимают только диапазоны, а не контейнеры?
Есть много полезных функций &lt;algorithm&gt;, но все они работают с «последовательностями» - парами итераторов. Например, если у меня есть контейнер и мне нравится работать std::accumulateна нем, мне нужно написать: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Когда все, что я собираюсь сделать, это: int sum = std::accumulate(myContainer, …

4
Почему итераторы в Python вызывают исключение?
Вот синтаксис для итераторов в Java (несколько похожий синтаксис в C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Что имеет смысл. Вот эквивалентный синтаксис в Python: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Я думал, что исключения должны были использоваться только …

8
Зачем разрабатывать современный язык без механизма обработки исключений?
Многие современные языки предоставляют богатые функции обработки исключений , но язык программирования Apple Swift не предоставляет механизм обработки исключений . Несмотря на то, что я погружен в исключения, мне трудно понять, что это значит. Swift имеет утверждения и, конечно, возвращает значения; но мне сложно представить, как мой образ мышления, основанный …

13
Почему оператор присваивания присваивается левой стороне?
Я начала преподавать программирование подруге совсем недавно (мы используем Python), и когда мы начали обсуждать создание переменных и оператор присваивания, она спросила, почему значение справа присваивается имени слева, а не наоборот , Я не слишком много думал об этом раньше, потому что это казалось мне естественным, но она сказала, что …

5
Почему старые языки программирования продолжают пересматриваться?
Этот вопрос не «Почему люди до сих пор используют старые языки программирования?» Я это прекрасно понимаю. Фактически, два языка программирования, которые я знаю лучше всего, это C и Scheme, оба из которых восходят к 70-м годам. Недавно я читал об изменениях в C99 и C11 по сравнению с C89 (который, …

4
Почему структуры и классы являются отдельными понятиями в C #?
При программировании на C # я наткнулся на странное решение о дизайне языка, которое просто не могу понять. Таким образом, C # (и CLR) имеют два совокупных типа данных: struct(тип значения, хранящийся в стеке, без наследования) и class(тип ссылки, хранящийся в куче, имеет наследование). Вначале эта настройка звучит неплохо, но …

7
Почему метод финализации включен в Java?
Согласно этому посту , мы никогда не должны полагаться на вызываемый метод finalize. Так почему же Java вообще включила его в язык программирования? Кажется ужасным решение включить в любой язык программирования функцию, которая может быть вызвана.

15
Как языки повлияли на дизайн процессора? [закрыто]
Нам часто говорят, что аппаратному обеспечению не важно, на каком языке написана программа, поскольку оно видит только скомпилированный двоичный код, однако это не вся правда. Например, рассмотрим скромный Z80; его расширения к набору команд 8080 включают в себя такие инструкции, как CPIR, которые полезны для сканирования строк в стиле C …

22
Были ли пробелы в идентификаторах когда-либо идиоматическими? [закрыто]
Стиль C # предлагает использовать CamelCase в идентификаторах для разделения слов. Традиция Лиспа предлагает использовать вместо него тире. Существовал ли когда-либо язык программирования, где использование пробелов в идентификаторах было не только разрешено, но и широко использовалось при использовании многословных идентификаторов? В некоторых реализациях Scheme могут быть идентификаторы с пробелами , …

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