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

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

15
Как бы вы разработали язык программирования? [закрыто]
Если бы вы разработали язык программирования, как бы вы это сделали? Какие функции вы бы добавили? Что бы вы оставили? Статически или динамически типизировано? Сильно или слабо напечатано? Скомпилировано или интерпретировано? Обоснуйте свои ответы.

9
Почему такая ограниченная поддержка Design by Contract существует в большинстве современных языков программирования?
Недавно я открыл для себя Design by Contract (DbC) и считаю, что это чрезвычайно интересный способ написания кода. Среди прочего, казалось бы, предложить: Лучшая документация. Поскольку договор является документацией, он не может быть устаревшим. Кроме того, поскольку в контракте конкретно указывается, что делает подпрограмма, это помогает поддерживать повторное использование. Упрощенная …

12
Почему у большинства языков программирования есть специальное ключевое слово или синтаксис для объявления функций? [закрыто]
Большинство языков программирования (как динамически, так и статически типизированных) имеют специальные ключевые слова и / или синтаксис, которые выглядят значительно иначе, чем объявления переменных для объявления функций. Я вижу функции как объявление другой именованной сущности: Например в Python: x = 2 y = addOne(x) def addOne(number): return number + 1 …

4
Как быстро можно идти?
Go - один из немногих языков, которые должны работать «близко к металлу», то есть он скомпилирован, статически типизирован и выполняет код без изменений, без виртуальной машины. Это должно дать ему преимущество в скорости перед Java, C # и тому подобным. Кажется, однако, что это позади Java (см. Shootout языка программирования …

8
Недостатки управления памятью на основе областей
Мне действительно нравится управление памятью на основе области (SBMM) или RAII , так как на него чаще всего (сбивает с толку?) Ссылается сообщество C ++. Насколько я знаю, за исключением C ++ (и C), сегодня нет другого основного языка, который бы использовал SBMM / RAII в качестве основного механизма управления …

5
Почему C # не имеет локальной области видимости в случае блоков?
Я писал этот код: private static Expression<Func<Binding, bool>> ToExpression(BindingCriterion criterion) { switch (criterion.ChangeAction) { case BindingType.Inherited: var action = (byte)ChangeAction.Inherit; return (x => x.Action == action); case BindingType.ExplicitValue: var action = (byte)ChangeAction.SetValue; return (x => x.Action == action); default: // TODO: Localize errors throw new InvalidOperationException("Invalid criterion."); } } И …

26
На что вы хотите обратить внимание языковых дизайнеров? [закрыто]
Цель этого вопроса не состоит в том, чтобы собрать подробный список функций языка программирования, без которых вы не можете жить или хотите, чтобы ваш основной язык был выбран. Цель этого вопроса состоит в том, чтобы пролить свет на углы языкового дизайна, о которых большинство языковых дизайнеров может и не подумать. …

2
Что такое 4 и 5 поколения языков программирования? Их больше? [закрыто]
Поскольку это часто классифицируется на уровне школы / колледжа, популярные языки программирования (C #, Java, C ++) - это все языки 3-го поколения (с более высоким уровнем абстракции от физических частей машины). Кроме того, языки ассемблера классифицируются как 2-е, а машинные языки - как языки 1-го поколения. Изначально я думал, …

7
Почему так много языков передается по значению?
Даже в тех языках, где у вас есть явные манипуляции с указателями, такие как C, они всегда передаются по значению (вы можете передавать их по ссылке, но это не поведение по умолчанию). Какова польза от этого, почему так много языков передаются значениями и почему другие передаются по ссылке ? (Я …

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

3
В разработке Java обычно используется больше подклассов, чем в C # / .NET?
Я недавно начал смотреть на разработку Android. Это вернуло меня в мир разработки программного обеспечения на Java. В прошлый раз, когда я работал с Java, я должен признать, что ООП я не понимал почти так же, как (я думаю), что я делаю сейчас. Поскольку я в основном использовал C # …

5
Почему C # и Java используют равенство ссылок по умолчанию для '=='?
Некоторое время я размышлял, почему Java и C # (и я уверен, что другие языки) по умолчанию ссылаются на равенство для ==. В программировании, которое я делаю (что, безусловно, является лишь небольшим подмножеством проблем программирования), я почти всегда хочу логическое равенство при сравнении объектов вместо ссылочного равенства. Я пытался придумать, …

6
Почему языки программирования позволяют скрывать / скрывать переменные и функции?
Многие из самых популярных языков программирования (такие как C ++, Java, Python и т. Д.) Имеют концепцию скрытия / теневого копирования переменных или функций. Когда я сталкивался с сокрытием или затенением, они стали причиной трудностей при поиске ошибок, и я никогда не видел случая, когда я считал необходимым использовать эти …

10
Почему Math.Sqrt () является статической функцией?
При обсуждении статических методов и методов экземпляров я всегда думаю, что это Sqrt()должен быть метод экземпляров числовых типов, а не статический метод. Почему это? Это очевидно работает на значение. // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); Типы значений, очевидно, …

4
Почему .compareTo () в интерфейсе, а .equals () в классе в Java?
Я хочу знать, почему интерфейс .compareTo()находится в Comparableинтерфейсе, а метод like .equals- в Objectклассе. Мне кажется произвольным, почему такой метод .compareTo()уже не в Objectклассе. Чтобы использовать .compareTo(), вы реализуете Comparableинтерфейс и реализуете .compareTo()метод для ваших целей. Для .equals()метода вы просто переопределяете метод в своем классе, так как все классы наследуются …

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