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

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

22
Являются ли нулевые ссылки действительно плохой вещью?
Я слышал, что включение нулевых ссылок в языки программирования является «ошибкой в ​​миллиард долларов». Но почему? Конечно, они могут вызывать NullReferenceExceptions, но что с того? Любой элемент языка может быть источником ошибок при неправильном использовании. И какая альтернатива? Я полагаю, вместо того, чтобы сказать это: Customer c = Customer.GetByLastName("Goodman"); // …

14
Почему большинство языков программирования поддерживают возврат только одного значения из функции? [закрыто]
Есть ли причина, по которой функции в большинстве (?) Языков программирования поддерживают любое количество входных параметров, но только одно возвращаемое значение? В большинстве языков можно обойти это ограничение, например, используя выходные параметры, возвращая указатели или определяя / возвращая структуры / классы. Но кажется странным, что языки программирования не были разработаны …

14
Почему 0 ложно?
Этот вопрос может показаться глупым, но почему 0оценки falseи любое другое [целочисленное] значение для trueбольшинства языков программирования составляют? Сравнение строк Поскольку вопрос кажется немного слишком простым, я объясню немного подробнее: во-первых, это может показаться очевидным любому программисту, но почему бы не появиться язык программирования - на самом деле может быть, …

6
Почему именно XML называют «языком»?
Мне было интересно, почему в названии XML есть буква L. Сам по себе XML ничего не «делает». Это просто формат хранения данных, а не язык! Языки "делают" вещи. Чтобы заставить XML «делать» что-то, превращать его в язык, нужно добавить xmlnsатрибуты к его корневому элементу. Только тогда он сообщает окружающей среде, …

12
Мне сказали, что исключения должны использоваться только в исключительных случаях. Как я узнаю, является ли мой случай исключительным?
Мой конкретный случай здесь заключается в том, что пользователь может передать строку в приложение, приложение анализирует ее и назначает ее структурированным объектам. Иногда пользователь может ввести что-то недопустимое. Например, их вклад может описать человека, но они могут сказать, что их возраст - «яблоко». Правильное поведение в этом случае - откатить …


30
Какие функции вы хотели бы иметь в PHP? [закрыто]
Так как сейчас сезон отпусков и все загадывают желания, мне интересно, какие языковые функции вы бы хотели добавить в PHP? Я заинтересован в некоторых практических предложениях / пожеланиях для языка. Под практическим я подразумеваю: Что-то, что можно сделать практически (не: «Я бы хотел, чтобы PHP угадал, что означал мой код, …

11
Разработчики Java сознательно отказались от RAII?
Как давний программист на C #, я недавно узнал больше о преимуществах Resource Acquisition Is Initialization (RAII). В частности, я обнаружил, что идиома C #: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } имеет эквивалент C ++: { DbConnection dbConn(connStr); // do stuff with dbConn …
82 java  c#  c++  language-design 

10
Если ноль плох, почему современные языки реализуют его? [закрыто]
Я уверен, что разработчики языков, таких как Java или C #, знали проблемы, связанные с существованием нулевых ссылок (см. Действительно ли нулевые ссылки - это плохо? ). Также реализация типа параметра не намного сложнее, чем нулевые ссылки. Почему они решили включить его в любом случае? Я уверен, что отсутствие нулевых …

12
Должен ли я использовать генератор синтаксического анализатора или я должен свернуть свой собственный код лексера и анализатора?
Какие конкретные преимущества и недостатки каждого способа работы над грамматикой языка программирования? Почему / Когда я должен катиться самостоятельно? Почему / Когда я должен использовать генератор?

11
Почему String неизменяем в Java?
Я не мог понять причину этого. Я всегда использую класс String, как и другие разработчики, но когда я изменяю его значение, создается новый экземпляр String. В чем может быть причина неизменности класса String в Java? Я знаю, что есть некоторые альтернативы, такие как StringBuffer или StringBuilder. Это просто любопытство.

14
Почему арифметическое переполнение игнорируется?
Вы когда-нибудь пытались суммировать все числа от 1 до 2 000 000 на вашем любимом языке программирования? Результат легко вычислить вручную: 2 000 001 000 000, что примерно в 900 раз превышает максимальное значение 32-разрядного целого числа без знака. C # распечатывает -1453759936- отрицательное значение! И я думаю, что Java …

9
Зачем использовать частичные классы?
В моем понимании partialключевое слово делает только то, что позволяет разделить класс между несколькими исходными файлами. Есть ли причина для этого, кроме как для организации кода? Я видел, как это используется в сгенерированных классах пользовательского интерфейса. Кажется, плохая причина для создания целого ключевого слова. Если класс достаточно большой, чтобы требовать …

8
Как некоторые языковые сообщества (например, Ruby и Python) смогли предотвратить фрагментацию, в то время как другие (например, Lisp или ML) не смогли этого сделать?
Термин «Лисп» (или «Лисп-подобный») является зонтиком для множества разных языков, таких как Common Lisp, Scheme и Arc. В других языковых сообществах, как и в ML, наблюдается аналогичная фрагментация Тем не менее, и Ruby, и Python сумели избежать этой участи, когда инновации происходили чаще в реализации (например, PyPy или YARV), а …

10
Синтаксический дизайн. Зачем использовать круглые скобки, если аргументы не передаются?
Во многих языках синтаксис function_name(arg1, arg2, ...)используется для вызова функции. Когда мы хотим вызвать функцию без каких-либо аргументов, мы должны это сделать function_name(). Я нахожу странным, что компилятор или интерпретатор сценариев потребовал ()бы успешного обнаружения его как вызова функции. Если известно, что переменная может быть вызвана, почему этого function_name;недостаточно? С …

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