Запитання з тегом «language-design»

Питання, що стосуються дизайну та структури мов програмування.

15
Як би ви створили мову програмування? [зачинено]
Якби ви розробляли мову програмування, як би це зробити? Які функції ви б уклали? Що б ти не залишив? Статистично чи динамічно набрано? Сильно або слабо набрано? Складено чи інтерпретовано? Обґрунтуйте свої відповіді.

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

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

4
Як швидко можна їхати?
Go - одна з небагатьох мов, яка повинна працювати «близько до металу», тобто вона компілюється, статично набирається та виконує код власним чином, без VM. Це має забезпечити перевагу швидкості у порівнянні з Java, C # тощо. Однак, схоже, це відстає від Java (див. Перестрілку з мови програмування ) Я припускаю, …

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 ++) є всі мови третього покоління (з більш високим рівнем абстрагування від фізичних частин машини). Крім того, мови складання класифікуються як мови 2-го, а машинні - як мови першого покоління. Спочатку я думав, що …

7
Чому так багато мов передається за значенням?
Навіть мови, де у вас є явні маніпуляції з покажчиком, як C, це завжди передається за значенням (ви можете передавати їх за посиланням, але це не поведінка за замовчуванням). Яка користь від цього, чому стільки мов передаються за значеннями і чому інші передаються за посиланням ? (Я розумію, що Haskell …

3
Чи розробка Java зазвичай передбачає більше підкласингу, ніж C # /. NET?
Нещодавно я почав дивитися на розробку Android. Це повернуло мене у світ розробки програмного забезпечення Java. Останній раз, коли я працював з Java, зізнаюся, я не зрозумів OOP майже так само, як (я думаю) зараз. В основному використовуючи C # у своїй кар'єрі, я помічаю приголомшливу різницю в тому, як …

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

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інтерфейсі, а такий метод, як .equalsу Objectкласі. Мені здається довільним, чому такий метод, як, наприклад, .compareTo()вже не в Objectкласі. Для використання .compareTo()ви реалізуєте Comparableінтерфейс та реалізуєте .compareTo()метод для своїх цілей. Для .equals()методу ви просто перекриєте метод у своєму класі, оскільки всі класи успадковують від Objectкласу. Моє …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.