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

Мог ли C++ избежать использования идиомы pimpl?
Насколько я понимаю, идиома pimpl существует только потому, что C++ заставляет вас размещать все члены закрытого класса в заголовке. Если бы заголовок содержал только общедоступный интерфейс, теоретически любое изменение в реализации класса не...
2953 просмотров

Есть ли язык в стиле C ++ без атрибутов C?
Основная причина использовать C ++ вместо управляемого языка в наши дни - это получить преимущества, которые C ++ приносит. Один из столпов C ++ - «вы не платите за то, что вам не нужно». Однако можно возразить, что иногда вы не хотите платить за...
865 просмотров
schedule 01.05.2023

Чего не хватает F # для объектно-ориентированного проектирования или что является императивом?
Много раз я слышал, что F # не подходит для конкретных задач, таких как UI. «Используйте правильный инструмент» - это обычная фраза. Помимо отсутствующих инструментов, таких как конструктор WinForms / WPF / ORM, я не уверен, что именно отсутствует...
2216 просмотров
schedule 24.08.2023

C# — каковы преимущества частичных классов?
Я спрашиваю об этом, потому что считаю довольно опасной особенностью распространять определение класса, так что вы не можете быть уверены, знаете ли вы все об этом. Даже если я найду три частичных определения, откуда мне знать, что где-то нет...
638 просмотров
schedule 05.12.2022

Почему C не имел логического типа данных до C99?
Я понимаю, что вы можете просто #define некоторые целые числа, но почему C не имел выделенного логического типа данных до C99? Это такое обычное явление в программировании и логике, что я не понимаю отсутствие явного типа и обозначения.
7335 просмотров
schedule 22.10.2022

Неизменяемость после внедрения зависимостей, инициализация
Я хотел бы иметь возможность указать, что переменные-члены объекта являются неизменяемыми после того, как объект был «инициализирован», что для меня означает после того, как он был введен с любыми зависимостями и выполнил любые другие операции...
4045 просмотров

Почему в C # недопустимы константные параметры?
Это выглядит странно, особенно для разработчиков на C ++. В C ++ мы обычно отмечали параметр как const , чтобы быть уверенным, что его состояние не будет изменено в методе. Есть и другие причины, специфичные для C ++, например, передача const ref...
38931 просмотров
schedule 10.12.2022

Когда использовать ( пробел ) и когда использовать . ( точка ) при вызове методов в Scala?
Я видел, как Scala использует оба взаимозаменяемо, но я не знаю, когда использовать тот или другой. Есть ли конвенция? Например, они эквивалентны "hello" toString и "hello".toString() И их можно даже смешивать...
2840 просмотров
schedule 21.05.2024

Почему в Ruby есть как частные, так и защищенные методы?
Прежде чем я прочитал в этой статье , я думал, что контроль доступа в Ruby работает так: public - доступен для любого объекта (например, Obj.new.public_method ) protected - доступен только из самого объекта, а также из любых подклассов...
49728 просмотров
schedule 01.04.2024

Как построить язык с помощью жестов рук
Я разрабатываю программу, которая может распознавать несколько жестов рук. Теперь требованию нужен язык с использованием жестов рук. Итак, как я могу его построить? Моя текущая идея заключается в использовании регулярных выражений и формы Бэкуса...
281 просмотров

Как языки со статической типизацией обходятся без дженериков?
Мне любопытно, какие языки со статической типизацией не поддерживают дженериков (и в меньшей степени, какие языки исторически не имели дженериков) и как они с этим справляются. Пользователи просто транслируют повсюду? Есть ли какой-то особый соус...
746 просмотров
schedule 11.11.2023

Смущает бокс. Приведение -1 к Int64 вызывает InvalidCastException
Хорошо, я, должно быть, упускаю из виду что-то очень простое, но я потерян. Учитывая это object val = -1; var foo = (Int32)(val); var bar = (Int64)(val); Приведение к броскам Int64 и InvalidCastException. Я понимаю, что это связано с...
1405 просмотров

Означает ли частное разные вещи в C ++ и C #?
Мне было интересно, почему C # не поддерживает функции private virtual , и наткнулся на метко названный Почему частные виртуальные методы запрещены в C #? В принятом ответе Эрик Липперт (кто, вероятно, знает, о чем он говорит ...) сказал:...
428 просмотров
schedule 05.03.2022

Протоколы Clojure против структурных типов Scala
После просмотра интервью с Ричем Хикки на Протоколы в Clojure 1.2, и, зная очень мало о Clojure, у меня есть несколько вопросов по протоколам Clojure: Предназначены ли они для того же, что и структурные типы в Scala? Какие преимущества у...
2378 просмотров

Контекстно-свободная грамматика для языка
У меня проблема со следующим языком: Я должен написать контекстно-свободную грамматику: который описывает это. Я уже сделал несколько упражнений, но это действительно сложно для меня. Я сижу часами без полезного подхода. Было бы...
441 просмотров

язык без если?
Коллега сказал, что слышал о языке, в котором нет понятия «если». Это возможно? Если да, то какой это язык?
4864 просмотров
schedule 15.12.2022

В чем причина отсутствия более простого многострочного комментария в Perl?
Я знаю разные способы введения многострочных комментариев в Perl. Но я хочу знать, почему у него нет чего-то более простого многострочного комментария, такого как /* comment */ , который сделал бы его намного проще. В настоящее время я подписан...
613 просмотров
schedule 30.09.2022

Преимущества перечисления Java по сравнению со старым шаблоном Typesafe Enum?
В Java до JDK1.5 шаблон "Typesafe Enum" был обычным способом реализации типа, который может принимать только конечное число значений: public class Suit { private final String name; public static final Suit CLUBS =new Suit("clubs");...
13272 просмотров

Зачем использовать ключевое слово out вместо присваивания в С#?
Я исследовал ключевое слово out в C# после прочтения раздела об этом в C# in Depth. Кажется, я не могу найти пример, показывающий, почему ключевое слово требуется вместо простого присвоения значения оператору возврата. Например: public void...
901 просмотров
schedule 06.12.2022

Почему «получает» Ruby включает закрывающую новую строку?
Мне никогда не нужна конечная новая строка, которую я получаю от gets . Половину времени я забываю chomp об этом, и это заноза в сердце.... Почему это там?
7114 просмотров
schedule 22.03.2024