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

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

4
Что именно undefined означает в JavaScript? Почему это там? Какие у него использования? Чем это может быть полезно?
В JavaScript у нас есть нечто, называемое неопределенным . Я сказал что-то, потому что я действительно не знаю, является ли это базовым классом, или встроенной переменной, или ключевым словом, или чем-то еще. Я просто знаю, что это там. Чтобы увидеть это в действии, вы можете просто написать: undefined; typeof undefined; …

2
Насколько легко должна использоваться среда разработки языка?
Это часть серии вопросов, посвященных проекту под названием «Проект абстракции», целью которого является абстрагирование понятий, используемых в языковом дизайне, в форме фреймворка. Другая связанная с ним страница, связанная со структурной типизацией, может быть просмотрена здесь . Мета-тема, связанная с запросом о фреймворке и подходящем месте для публикации, находится здесь . …

5
Функции первого класса
Я начал серьезно смотреть на Lisp в эти выходные (я имею в виду, что изучал только Lisp и не возвращаюсь к проектам на C #) и должен сказать, что мне это нравится. Я баловался с другими функциональными языками (F #, Haskell, Erlang), но не чувствовал ничьей, которую дал мне Лисп. …

1
статические глобалы и анонимные пространства имен в C ++
Почему в C ++ проводилось какое-либо различие между статическими глобальными переменными (внутренняя связь) и символами в безымянном пространстве имен (внешняя связь, но в любом случае нет возможности ссылаться на нее извне) при представлении последнего? Какие-либо из этих причин все еще действительны, или есть новые? Есть ли места, где они все …

2
Как безопасность потоков может быть обеспечена языком программирования, аналогичным тому, как в Java и C # обеспечивается безопасность памяти?
Java и C # обеспечивают безопасность памяти, проверяя границы массивов и разыменования указателей. Какие механизмы можно было бы внедрить в язык программирования, чтобы предотвратить возможность состояния гонки и тупиков?

1
Зачем Свифту нужны свидетели?
Я пытаюсь прочитать подробности реализации Swift, и одну вещь, которую я не могу прибить, - это «таблицы свидетелей». Похоже, это отдельный указатель vtable, используемый для структур. Но зачем тебе это? Структуры копируются по значению, так что вы уже знаете во время компиляции, какого они типа. Так разве вы не просто …

1
Полезны ли первоклассные продолжения в современных объектно-ориентированных языках программирования?
Продолжения чрезвычайно полезны в функциональных языках программирования (например, в Contмонаде в Haskell), поскольку они допускают простую и регулярную запись кода императивного стиля. Они также полезны в некоторых старых императивных языках, потому что их можно использовать для реализации отсутствующих языковых функций (например, исключений, сопрограмм, зеленых потоков). Но для современного объектно-ориентированного языка …

12
Почему больше языков не могут сравнивать значение с несколькими другими значениями? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 5 лет назад . Учтите следующее: if(a == b or c) На большинстве языков это должно быть …

3
Как реализовать ленивую оценку if ()
В настоящее время я реализую оценщик выражений (однострочные выражения, например формулы), основанный на следующем: введенное выражение токенизируется для разделения буквенных логических значений, целых чисел, десятичных дробей, строк, функций, идентификаторов (переменных) Я реализовал алгоритм Shunting-yard (слегка измененный для обработки функций с переменным числом аргументов), чтобы избавиться от скобок и упорядочить операторы …

4
Грамотное программирование, методология хорошего / плохого дизайна
Недавно я нашел концепцию грамотного программирования . И я нашел это довольно интригующим. И все же я не сталкивался с утверждениями, что это плохой способ структурировать программу. Кажется, не во многих местах. Даже здесь я не смог найти никаких вопросов по этому поводу. Мой вопрос не о его недостатках или …

6
Как проверить / доказать ортогональность языка программирования?
Я знаю концепцию ортогональности, но есть ли способ проверить / доказать это с точки зрения языка программирования? Например, в C # можно использовать publicили staticдля сигнатуры метода. Вы можете использовать один или оба, и они не будут мешать друг другу, поэтому они ортогональны друг другу, верно? У меня вопрос, как …

5
Создание DSL: написано на языке общего назначения или автономно?
Я обсуждаю разработку предметно-ориентированного языка, чтобы упростить данную неясную модель программирования. Частью дискуссии является вопрос о том, следует ли создавать его (в виде скрипта) поверх существующего языка / среды выполнения (например, Java) или сделать его автономным (собственный компилятор и т. Д.). Те из вас, у кого есть опыт проектирования DSL, …

3
Почему java-генерики не могут быть в массивах?
Почему, когда я пытаюсь создать массив ArrayLists: ArrayList<Integer>[] arr=new ArrayList<Integer>[40];возникает ошибка, а java не позволяет этого? Есть ли какая-то причина, связанная с реализацией обобщений, обобщений на любом языке или чего-то другого в Java?

1
Имя техники для вывода аргументов типа параметра типа?
Настройка: Давайте предположим, что у нас есть вызываемый Iteratorтип с параметром типа Element: interface Iterator<Element> {} Тогда у нас есть интерфейс, Iterableкоторый имеет один метод, который будет возвращать Iterator. // T has an upper bound of Iterator interface Iterable<T: Iterator> { getIterator(): T } Проблема с Iteratorуниверсальностью заключается в том, …

4
Хорошая идея - иметь возможность использовать язык генератора, такой как «yield»?
PHP, C #, Python и, вероятно, некоторые другие языки имеют yieldключевое слово, которое используется для создания функций генератора. В PHP: http://php.net/manual/en/language.generators.syntax.php В Python: https://www.pythoncentral.io/python-generators-and-yield-keyword/ В C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield Я обеспокоен тем, что как языковая функция / средство yieldнарушает некоторые соглашения. Одним из них является то, что я бы назвал "уверенность". …

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