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

Почему языки по умолчанию не вызывают ошибок при целочисленном переполнении?
В нескольких современных языках программирования (включая C ++, Java и C #) язык позволяет целочисленное переполнение для происходят во время выполнения без возникновения каких-либо ошибок. Например, рассмотрим этот (надуманный) метод C #,...
4886 просмотров

Почему в Java нет объявлений переменных с блочной областью видимости?
Следующий метод не работает, поскольку во внутреннем блоке объявляется переменная с тем же именем, что и во внешнем блоке. По-видимому, переменные принадлежат методу или классу, в котором они объявлены, а не блоку, в котором они объявлены, поэтому я...
4690 просмотров
schedule 01.06.2022

Как бы вы подошли к реализации правила офсайда?
Я уже написал генератор, который работает, но мне хотелось бы узнать, как лучше всего реализовать правило вне игры. Кратко: Правило вне стороны означает в этом контексте, что отступ распознается как синтаксический элемент. . Вот правило...
3995 просмотров

Почему оператор swap/exchange не существует в императивных или объектно-ориентированных языках, таких как C/C++/C#/Java?
Мне всегда было интересно, почему такая простая и базовая операция, как замена содержимого двух переменных, не встроена во многие языки. Это одно из самых основных упражнений по программированию на уроках информатики; он широко используется во...
890 просмотров

Типизированный FP: аргументы кортежа и аргументы Curriable
В статически типизированных языках функционального программирования, таких как Standard ML, F#, OCaml и Haskell, функция обычно записывается с параметрами, отделенными друг от друга и от имени функции просто пробелом: let add a b = a + b...
822 просмотров

Почему регулярные выражения не могут использовать ключевые слова вместо символов?
Хорошо, я едва понимаю основы RegEx, но почему они не могли разработать его для использования ключевых слов (например, SQL) вместо некоторых загадочных подстановочных знаков и символов? Это для производительности, поскольку RegEx...
1333 просмотров
schedule 27.07.2023

Почему добавление нуля к строке допустимо?
В статье MSDN о String Basics показано следующее: string str = "hello"; string nullStr = null; string emptyStr = ""; string tempStr = str + nullStr; // tempStr = "hello" bool b = (emptyStr == nullStr);// b = false; string newStr = emptyStr +...
30541 просмотров
schedule 25.07.2023

Итераторы C ++ считаются вредными?
Сегодня на конференции библиотеки Boost Андрей Александреску , автор книги «Современный дизайн C ++ и Loki C ++» библиотека, выступила с докладом под названием «Итераторы должны работать» ( видео , слайды ) о том, почему итераторы плохи, и у него...
11830 просмотров
schedule 01.07.2022

Зачем различать методы, возвращающие значение, и методы, не возвращающие?
Почему в некоторых языках различаются методы, возвращающие значение, и методы, не возвращающие? то есть в Oracle PL / SQL, где основное различие между функцией и процедурой состоит в том, что функция должна возвращать значение, а процедура - нет....
483 просмотров

Почему в COBOL есть и «РАЗДЕЛ», и «ПАРАГРАФ»?
Почему в COBOL есть и SECTION , и PARAGRAPH ? Кто-нибудь может объяснить, почему разработчики COBOL создали как SECTION s, так и PARAGRAPH s? Они существуют с момента первоначального выпуска COBOL, поэтому я подозреваю, что настоящая причина...
22527 просмотров
schedule 01.06.2023

Должны ли ссылки в объектно-ориентированных языках программирования по умолчанию быть не обнуляемыми?
Нулевые указатели были описаны как « ошибка в миллиард долларов ». В некоторых языках есть ссылочные типы, которым нельзя присвоить нулевое значение. Интересно, следует ли при разработке нового объектно-ориентированного языка вести себя по...
594 просмотров

Почему python super не принимает только экземпляр?
В python 2.x super принимает следующие случаи class super(object) | super(type) -> unbound super object | super(type, obj) -> bound super object; requires isinstance(obj, type) | super(type, type2) -> bound super object; requires...
639 просмотров
schedule 10.07.2023

Вложенные переключатели C: корпус внешнего переключателя внутри внутреннего переключателя
Я добавляю поддержку сопрограммы в интерпретатор, который я пишу, и я хотел бы сделать что-то вроде следующего: typedef enum { bar_stuff, bar_other } Bar; typedef enum { foo_error=-1, foo_none=0, foo_again }...
8365 просмотров
schedule 21.07.2022

Есть ли в R оператор assert, как в python?
оператор, который проверяет, верно ли что-то, и если нет, печатает данное сообщение об ошибке и завершает работу.
27388 просмотров
schedule 11.10.2022

Почему регулярные выражения жадны по умолчанию?
Кажется, что это огромный источник путаницы для начинающих, пишущих регулярные выражения, может вызвать скрытые проблемы с производительностью, и, казалось бы, типичный вариант использования не будет жадным. Это только по устаревшим причинам (так...
2649 просмотров
schedule 27.09.2023

Каковы аргументы за и против эквивалентности имен и структурной эквивалентности?
В кругах дизайнеров языков велись длительные дебаты о том, должны ли языки использовать структурную эквивалентность или эквивалентность имен . Такие языки, как ALGOL, ML или Modula-3, использовали структурную эквивалентность, в то время как......
2007 просмотров

Интерпретаторы: обработка включает/импортирует
Я построил интерпретатор на С++, и пока все работает нормально, но теперь я застрял с дизайном функции импорта/включения/как бы вы ни называли ее. Я подумал о следующем: Обработка включает в себя процесс токенизации: когда в коде...
164 просмотров
schedule 08.10.2022

Почему в Haskell есть данные и новый тип?
Кажется, что определение newtype — это просто определение data , которое подчиняется некоторым ограничениям (например, только один конструктор), и благодаря этим ограничениям система времени выполнения может более эффективно обрабатывать newtype ....
35190 просмотров

Почему в С++ 0x есть оператор sizeof?
Я видел, что @GMan реализовал версию sizeof... для вариативных шаблонов, который (насколько я могу судить) эквивалентен встроенному sizeof... . Разве это не противоречит второму принципу проектирования: предпочитать библиотеки к языковым...
603 просмотров
schedule 31.07.2022

Почему в большинстве языков программирования есть только операторы сравнения двоичного равенства?
На естественных языках мы бы сказали, что «некоторый цвет является основным цветом, если это красный, синий или желтый цвет». На всех языках программирования, которые я видел, это означает что-то вроде: isPrimaryColor = someColor == "Red" or...
1921 просмотров
schedule 07.01.2023