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

50
Что такое система типов?

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

49
Почему все функции <алгоритма> принимают только диапазоны, а не контейнеры?

Есть много полезных функций <algorithm>, но все они работают с «последовательностями» - парами итераторов. Например, если у меня есть контейнер и мне нравится работать std::accumulateна нем, мне нужно написать: std::vector<int> myContainer = ...; int sum =...

48
Почему итераторы в 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:...

47
Почему оператор присваивания присваивается левой стороне?

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

47
Зачем разрабатывать современный язык без механизма обработки исключений?

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

46
Почему старые языки программирования продолжают пересматриваться?

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

44
Почему структуры и классы являются отдельными понятиями в C #?

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

44
Как языки повлияли на дизайн процессора? [закрыто]

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

44
Почему метод финализации включен в Java?

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

43
Были ли пробелы в идентификаторах когда-либо идиоматическими? [закрыто]

Стиль C # предлагает использовать CamelCase в идентификаторах для разделения слов. Традиция Лиспа предлагает использовать вместо него тире. Существовал ли когда-либо язык программирования, где использование пробелов в идентификаторах было не только разрешено, но и широко использовалось при...

41
Как бы вы разработали язык программирования? [закрыто]

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

40
Почему такая ограниченная поддержка Design by Contract существует в большинстве современных языков программирования?

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

39
Как быстро можно идти?

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

39
Почему у большинства языков программирования есть специальное ключевое слово или синтаксис для объявления функций? [закрыто]

Большинство языков программирования (как динамически, так и статически типизированных) имеют специальные ключевые слова и / или синтаксис, которые выглядят значительно иначе, чем объявления переменных для объявления функций. Я вижу функции как объявление другой именованной сущности: Например в...

38
На что вы хотите обратить внимание языковых дизайнеров? [закрыто]

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

38
Недостатки управления памятью на основе областей

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

36
Что такое 4 и 5 поколения языков программирования? Их больше? [закрыто]

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

36
Почему так много языков передается по значению?

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

35
Когда имеет смысл сначала скомпилировать свой язык в код на C?

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