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

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

4
Що саме невизначено означає у JavaScript? Чому саме там? Які звички він має? Як це може бути корисним?
У JavaScript у нас є щось, що називається невизначеним . Я щось сказав, бо я не знаю, чи це базовий клас, чи вбудована змінна, чи ключове слово, чи щось інше. Я просто знаю, що там є. Щоб побачити це в дії, ви можете просто написати: undefined; typeof undefined; Чи можете …

2
Наскільки простою повинна бути система мовної розробки?
Це частина серії запитань, яка присвячена проекту, який називається "Абстракційний проект", який має на меті абстрагувати поняття, які використовуються в мовному дизайні у вигляді рамки. Ще одну сторінку, пов’язану з нею, пов’язану зі структурним набором тексту, можна переглянути тут . Метатему, пов’язану із запитом про рамки та правильне місце для …

5
Функції першого класу
Я почав серйозно дивитися на Лісп у ці вихідні (під якими я маю на увазі, що я лише вчився Ліспу і не повертався до проектів на C #), і мушу сказати, що мені це подобається. Я поспілкувався з іншими функціональними мовами (F #, Haskell, Erlang), але не відчув того, що …

1
статичні глобальні простори та анонімні простори імен у C ++
Чому C ++ зробив якусь різницю між статичними глобальними (внутрішні зв’язки) та символами в неназваному просторі імен (зовнішній зв'язок, але жодним чином не посилатися на нього ззовні все-таки) при введенні останнього? Чи є якась із цих причин все-таки дійсною чи є нові? Чи залишилися місця, де вони все ще відрізняються, …

2
Як безпека потоку може бути забезпечена мовою програмування, подібною до того, як забезпечується безпека пам'яті Java та C #?
Java та C # забезпечують безпеку пам’яті, перевіряючи межі масиву та відмітки вказівника. Які механізми можуть бути впроваджені в мову програмування для запобігання можливості гоночних умов та тупиків?

1
Чому Свіфту потрібні столи свідків?
Я намагаюся прочитати деталі щодо впровадження Swift, і одне, чого я не можу визначити, - це його "таблиці свідків". Схоже, вони є окремим vtable-покажчиком, що використовується для структур. Але навіщо вам це потрібно? Структури копіюються за значенням, тож ви вже знаєте під час компіляції, який вони тип. Тож чи не …

1
Чи корисні продовження першого класу в сучасних об'єктно-орієнтованих мовах програмування?
Продовження є надзвичайно корисними у функціональних мовах програмування (наприклад, Contмонада в Haskell), оскільки вони дозволяють просте і регулярне позначення коду імперативного стилю. Вони також корисні для деяких старих імперативних мов, оскільки їх можна використовувати для реалізації функцій, які відсутні у мові (наприклад, винятки, супроводи, зелені нитки). Але для сучасного об'єктно-орієнтованої …

12
Чому більше мов не мають можливості порівнювати значення з кількома іншими значеннями? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 6 років тому . Розглянемо наступне: if(a == b or c) У більшості мов це потрібно писати так: …

3
Як реалізувати ледачу оцінку if ()
Зараз я впроваджую оцінювач виразів (однорядкові вирази, як формули) на основі наступного: введений вираз є токенізованим для розділення буквальних булевих, цілих чисел, десяткових знаків, рядків, функцій, ідентифікаторів (змінних) Я реалізував алгоритм Shunting-ярда (злегка модифікований для обробки функцій зі змінною кількістю аргументів), щоб позбутися дужок і замовити операторів з гідним пріоритетом …

4
Грамотне програмування, хороша / погана методологія дизайну
Нещодавно я знайшов поняття грамотного програмування . І я вважав це досить інтригуючим. Але я не стикався з твердженнями, що це поганий спосіб структурування програми. Здається, не охоплено багато місць. Навіть тут я не міг знайти жодних запитань з цього приводу. Моє питання не в його недоліках чи способах поводження …

6
Як перевірити / довести ортогональність мови програмування?
Я знаю концепцію ортогональності, але з точки зору мови програмування, чи є спосіб її перевірити / довести? Наприклад, в C #, можна використовувати publicабо staticдля підпису методу. Ви можете використовувати або обидва, і обидва, і вони не заважатимуть один одному, тому вони є ортогональними один для одного, правда? Моє запитання …

5
Створення DSL: Сценарій на версії мови загального призначення або автономної?
Я обговорюю питання про розробку мови для домену, щоб спростити задану, незрозумілу модель програмування. Частина дебатів полягає в тому, чи будувати його (як скрипт) під існуючою мовою / режимом виконання (наприклад, Java), або робити його самостійним (власний компілятор та c). Ти з вас, хто має досвід дизайну DSL, чи є …

3
Чому java generics не може бути в масивах?
Чому так відбувається, коли я намагаюся зробити масив ArrayLists: ArrayList<Integer>[] arr=new ArrayList<Integer>[40];є помилка, і java цього не дозволяє? Чи є причина, пов’язана з реалізацією дженерики, генерики будь-якою мовою Java, чи щось довільне?

1
Назва техніки для виведення аргументів типу параметра типу?
Налаштування: Припустимо, у нас є тип, Iteratorякий називається, який має параметр типу Element: interface Iterator<Element> {} Тоді у нас є інтерфейс, Iterableякий має один метод, який поверне an Iterator. // T has an upper bound of Iterator interface Iterable<T: Iterator> { getIterator(): T } Проблема в Iteratorтому, що є загальним, …

4
Чи хороша ідея створення мови для генератора, такого як "урожай"?
PHP, C #, Python і, мабуть, кілька інших мов мають yieldключове слово, яке використовується для створення генераторних функцій. На PHP: http://php.net/manual/en/language.generators.syntax.php На Python: https://www.pythoncentral.io/python-generators-and-yield-keyword/ В C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield Я стурбований тим, що як мовна особливість / засоби, yield порушує деякі умовності. Один з них - це те, про що я …

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