Существует ли разработанный язык C++ без атрибутов C?

У меня была похожая проблема. вот что я сделал.

  1. Помечен протокол как @objc.
  2. Помечал все методы, которые я расширил, с поведением по умолчанию как необязательное.
  3. Затем использовал Self. в #selector.

    @objc public protocol UpdatableUserInterfaceType {
      optional func startUpdateUITimer()
      optional var updateInterval: NSTimeInterval { get }
      func updateUI(notif: NSTimer)
    }
    
    public extension UpdatableUserInterfaceType where Self: ViewController {
    
      var updateUITimer: NSTimer {
        return NSTimer.scheduledTimerWithTimeInterval(updateInterval, target: self, selector: #selector(Self.updateUI(_:)), userInfo: nil, repeats: true)
      }
    
      func startUpdateUITimer() {
        print(updateUITimer)
      }
    
      var updateInterval: NSTimeInterval {
        return 60.0
      }
    }
    
11
задан jmucchiello 12 June 2009 в 18:12
поделиться

9 ответов

Язык D

D - это язык программирования систем и приложений общего назначения. Это язык более высокого уровня, чем C ++, но он сохраняет возможность писать высокопроизводительный код и напрямую взаимодействовать с API операционной системы и с оборудованием. D хорошо подходит для написания программ размером в миллион строк от среднего до большого с группами разработчиков. D прост в освоении, предоставляет множество возможностей для помощи программисту и хорошо подходит для агрессивной технологии оптимизации компилятора.

Общий вид D похож на C и C ++. Это упрощает изучение и перенос кода на D. Переход с C / C ++ на D должен казаться естественным. Программисту не нужно будет изучать совершенно новый способ работы.

D отказывается от совместимости с исходным кодом C. Расширения для C, поддерживающие совместимость исходного кода, уже сделаны (C ++ и ObjectiveC). Дальнейшая работа в этой области затруднена из-за наличия такого большого количества устаревшего кода, что маловероятно, что можно будет внести существенные улучшения.

23
ответ дан 3 December 2019 в 02:11
поделиться

У меня есть соблазн проголосовать против этого вопроса (но пока еще нет). Ваше требование «вы не платите за то, что не используете», очень сильно зависит от того, что именно вы используете. В одном из своих комментариев вы уже упоминали, что ассемблер, пожалуй, самый простой язык из всех существующих, но вы жалуетесь на C, который находится где-то между сборкой и C ++.

Если вы обнаружите сборку мусора и явные объектно-ориентированные функции » пух "то, честно говоря, я думаю, что C, вероятно, лучший кандидат. Язык на самом деле маленький и элегантно оформлен. Он отвечает требованию большинства людей о том, что "влезает в голову". Для языка, который дает такой полный контроль над оборудованием, он очень выразителен.

Если вы не привязаны к оборудованию, тогда Scheme или какой-нибудь другой минималистский диалект Лиспа, вероятно, отвечает всем требованиям, поскольку «не навязывает то, что вы не хотите, в свой код», но опять же, все очень сильно зависит от того, что именно вы не хотите.

Если есть некоторые высокоуровневые функции, без которых вы «не можете жить» (что, кажется, вы подразумеваете, называя «C ++ без совместимости с C» в качестве предпочитаемого вами языка), то вам следует прямо сказать, что это такое. Что именно предлагает C ++, чем вы не хотите жертвовать?

(что, похоже, вы подразумеваете, называя «C ++ без совместимости с C» своим предпочтительным языком), тогда вы должны явно указать, что это такое. Что именно предлагает C ++, чем вы не хотите жертвовать?

(что, похоже, вы подразумеваете, называя «C ++ без совместимости с C» своим предпочтительным языком), тогда вы должны явно указать, что это такое. Что именно предлагает C ++, чем вы не хотите жертвовать?

4
ответ дан 3 December 2019 в 02:11
поделиться

Другой альтернативой является Ada - gc не является обязательным при реализации языка:

http://en.wikipedia.org/wiki/Ada_ (programming_language)

4
ответ дан 3 December 2019 в 02:11
поделиться

Вы также можете попробовать Ch по адресу: http://www.softintegration.com/

1
ответ дан 3 December 2019 в 02:11
поделиться

SPECS - это альтернативная синтаксическая привязка для C ++. Эта привязка включает простой синтаксис для объявления и определения типов, функций, объектов и шаблонов и изменяет несколько проблемных операторов и структур управления. Результирующий синтаксис можно анализировать с помощью LALR (1).

1
ответ дан 3 December 2019 в 02:11
поделиться

Я не совсем уверен, сколько стоит обратная совместимость с C ...

0
ответ дан 3 December 2019 в 02:11
поделиться

Я не совсем уверен, что есть какие-либо хиты времени выполнения, связанные с обратной совместимостью C, не могли бы вы уточнить? Конечно, обратная совместимость дает больше шансов повеситься, но строгое соблюдение правил может смягчить это. Итак, я полагаю, что мой ответ вам: C ++ - это язык, который делает то, о чем вы просите, и вам просто нужен инструмент для обеспечения соблюдения действительных конструкций.

Изменить: странно, что я не заметил сообщение прямо подо мной с тем же первым строчный комментарий

0
ответ дан 3 December 2019 в 02:11
поделиться

Эйфель. Похоже на Паскаль, имеет семантику типа C ++. Кроме того, добавлены специальные утверждения «программирование по контракту», которые встроены в определение языка за много лет до того, как люди заговорили о библиотеках модулей «X».

1
ответ дан 3 December 2019 в 02:11
поделиться

Попробуйте айкидо. Синтаксически похоже на C ++, и я не думаю, что он наследует обратную совместимость в стиле C.

Aikido @ Wikipedia

0
ответ дан 3 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: