Pull to refresh
12
0.2
Send message
Во-первых, многое определяется предметом разговора. Если речь идёт о сравнительном анализе, то да, о многом можно поговорить. Если интересует довольно узкий вопрос и хочется выяснить пределы совершенства, то… вовсе не обязательно пытаться заставлять волосы вставать дыбом, а попробовать сделать так, как это будет оптимально выглядеть в C.

Во-вторых, я пропустил слишком много серий, и мне было бы крайне любопытно узнать о последних нововведениях. Но, даже, их наличие не может заставить нас отказаться от острых экспериментов над кодом, особенно, если будет очень важен побочный эффект. Кто знает, куда может нас завести жажда познания (и самопознания)?!?
В таких случаях, всегда хочется спросить: а где у нас есть теория (на этот счёт)?

Чем, там, занимаются специалисты по Computer Science? Когда я был студентом, мне попадались специальные статьи, пестрящие всякими формализмами (теоретико-множественными и категорными), описывающие всякие системы сортов, иерархии типов и т.д. и т.п.

Где же теории, которые позволяют просчитать варианты и определить наилучший (в данных условиях и для данных обстоятельств)?
Иногда, очень важно и полезно ответить на вопрос «а что мы можем сделать (на том или ином языке программирования)?».

В результате таких раздумий мог бы появиться, например, новый язык программирования, который можно было бы обозвать «++C» — язык, в котором, при сохранении прозрачной семантики Си, существенно изменён синтаксис таким образом, чтобы обеспечить, например, прозрачную и сквозную типизацию данных путём упрощения языковых конструкций и предоставления специальных средств управления типами (вроде RTTI, атрибутов и рефлексии).
Очень хорошо. Я Вас понял. И, при возможности, обязательно попытаюсь всё воспроизвести и проверить. Но у меня у самого имеется несколько иная идея, и я её обдумываю (пока).
Большое Вам спасибо за статью, посвящённую такому интересному вопросу. Чуть коротковато. Придётся хорошо проштудировать исходный код, прежде чем задавать конкретные вопросы.

Не могли бы Вы (пока) прояснить смысл пп. 5 («Совместимость между векторами разных типов на уровне присваивания одного другому») и 7 («Максимальная схожесть интерфейса вектора с таковым у std::vector из C++11.»)?

Допустим, у нас есть вектор, содержащий целые значения, и вектор содержащий числа двойной точности. Что будет означать попытка присвоить один вектор другому? Мы хотим, просто, скопировать значения из одного массива в другой и сделать так, чтобы копия автоматически поменяла бы тип?

Возможно, чтение кода даст мне ответ на мой вопрос, но, было бы неплохо, услышать по этому поводу какие-либо пояснения от Вас. Буду заранее благодарен.
А вот это интересно. Что лучше: calculate(4, 2, divide) или divide(4, 2)?

С одной стороны, это, вроде бы, вопрос синтаксиса. Но, с другой стороны, это вопрос явного указания «модели вычислений».

Языки программирования различаются по синтаксису, и какой-то синтаксис может оказаться более интуитивно понятным. Вызов divide(4, 2) короче, но он заставляет помнить о том, в каком порядке должны располагаться аргументы функции. Вызов calculate(4, 2, divide) не добавляет никакой новой информации по этому поводу, появляется, по сути, только, дополнительный оператор «вызов функции», позволяющий изменять вызываемую функцию (в зависимости от контекста).

Попытка придать смысл передаваемым аргументам приводит к появлению в программном коде новых имён. Указывая конкретные имена, мы задаём жёсткую «модель вычислений». Чем больше в языке программирования имён (ключевых слов, имён функций и специальных объектов), тем более жёсткой оказывается «модель вычислений».

В пределе, мы получаем, по существу, текст на естественном языке, потому что именно он даёт интуитивно понятное описание (того чего нужно). Например, фраза «разделить 4 на 2» сразу сообщает нам, что на что делится, что является числителем, а что — знаменателем.
12 ...
50

Information

Rating
2,781-st
Registered
Activity

Specialization

Specialist
SQL