Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Заблокирован

Синтаксис присваивания для ООП

09.01.2017, 19:44. Показов 853. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне не нравится синтаксис присваивания, принятый в большинстве языков, обычно что-то вроде = или set. во-первых, это обычно не выражения, а спецформы, во-вторых, это несет отпечаток тяжелого наследия функциональной парадигмы.

Я исхожу из того, что всегда лучше, если синтаксис непротиворечиво и последовательно отражает семантику. При этом, разного рода подковерная возня, типа макросов, спецформ, декларейшнов, операторов и прочего дерьма, которое запаривает голову пользователю своей подковерной возней, пряча множество неочевидных действий за одну конструкцию-ширму недопустимы на уровне ядра. Ничего кроме выражений в ядре быть не должно.

Согласно теории Акторов, этот процесс заключается в том, что актор получает адрес какого то другого актора, и запоминает его(оставляет в своем локальном хранилище) или перезаписывает (думаю, что в общем случае присваивание не должно отличаться от связывания, если отличие не указано явно ).

Думаю, должно быть что-то вроде такого:

Objective-C
1
someActor create initWith(initCode) sendAddressTo(anotherActor)
немного многословно, но зато отражает суть. На уровне ядра языка это должно быть полностью. Громоздкость такого синтаксиса я не хочу тут обсуждать, потому что, во-первых, громоздкость отдельных конструкций не означает громоздкость языка в целом, а во-вторых, так как предполагается, что это набор выражений языка, то это можно обернуть и сократить как угодно на пользовательском уровне.
В общем не уверен пока, поэтому хотелось бы выслушать критику(особенно семантической стороны), и посмотреть на альтернативные предложения
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.01.2017, 19:44
Ответы с готовыми решениями:

ООП.Для нахождения суммы, разности, присваивания, произведения векторов и матриц различных типов (целого, вещественного, комплексного)
Для нахождения суммы, разности, присваивания, произведения векторов и матриц различных типов (целого, вещественного, комплексного). С...

ООП-синтаксис
На других языках с этим проблем не было, а тут - не пойму, как передать "на сторону" т.е. в другую функцию, ссылку на метод объекта....

Синтаксис PHP и ООП
Подскажите пожалуйста почему данный код не работает, возможно ли реализовать данный код без использования конструктора или метода. Например...

11
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
09.01.2017, 21:41
Цитата Сообщение от asmquest Посмотреть сообщение
Мне не нравится синтаксис присваивания
Пожалуйся в ООН. Или в Спортлотто.

Цитата Сообщение от asmquest Посмотреть сообщение
Думаю, должно быть что-то вроде такого
Цитата Сообщение от asmquest Посмотреть сообщение
немного многословно, но зато отражает суть.
Не отражает, а вообще давно придумали := и <-
0
Заблокирован
09.01.2017, 21:53  [ТС]
покажите пример со стрелкой. Это из какого языка?

а := ничего не отражает, говно.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
10.01.2017, 08:45
Цитата Сообщение от asmquest Посмотреть сообщение
Это из какого языка?
Ocaml

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
    class summator =
        object
            val mutable sum = 0
            method add n = sum <- sum + n
            method get = sum
        end
     
    let () =
        let s = new summator in
            for i = 1 to 10 do
                s#add i
            done;
            print_int s#get
--- http://ideone.com/Ywo2Uk

Цитата Сообщение от asmquest Посмотреть сообщение
а := ничего не отражает, говно.
Всё оно нормально отражает.
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,885
10.01.2017, 09:43
В разных языках используются разные символы. Не вижу в этом проблемы.

Один и тот же символ в разных языках может означать разные операции. В частности, "=" - это не обязательно операция присваивания.
Кликните здесь для просмотра всего текста
Более того, в некоторых языках операция присваивания в принципе недопустима.
В общем случае есть имена, есть значения, есть операция связывания имени со значением. В некоторых языках значения могут быть "неполными" (содержать несвязанные переменные). В некоторых языках допускается связывание переменной с переменной.

В частности, в С++ "=" для некоторых типов данных - это присваивание, а для некоторых - это вызов копирующего конструктора. Странно, конечно, но это же С++.
0
Заблокирован
10.01.2017, 10:06  [ТС]
korvin_, эта стрелка в данном случае, часть нотации функции, и к присваиванию никакого отношения не имеет
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
11.01.2017, 20:33
Цитата Сообщение от asmquest Посмотреть сообщение
эта стрелка в данном случае, часть нотации функции, и к присваиванию никакого отношения не имеет
RTFM:

The expression inst-var-name <- expr assigns the value of expr to the instance variable inst-var-name, which must be mutable
0
Заблокирован
11.01.2017, 21:11  [ТС]
korvin_, да, прошу прощения, невнимательно посмотрел.
Но мне это не нравится, это всего лишь небольшой сахарок, экономия на спичках
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
11.01.2017, 22:57
Цитата Сообщение от asmquest Посмотреть сообщение
Но мне это не нравится, это всего лишь небольшой сахарок, экономия на спичках
Портянки текста
Цитата Сообщение от asmquest Посмотреть сообщение
что-то вроде такого
нафиг не нужны, только захламляют код водой почём зря.
0
44 / 44 / 19
Регистрация: 04.05.2014
Сообщений: 190
18.01.2017, 11:16
asmquest, а синтаксис присваивания в ассемблере вам нравится?
Assembler
1
MOV eax, 123
0
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
18.01.2017, 22:34
Думаю, кто же эту ахинею предложил?
Смотрю на автора, а это asmquest.
Сразу стало все на свои места.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
18.01.2017, 22:40
Цитата Сообщение от asmquest Посмотреть сообщение
покажите пример со стрелкой. Это из какого языка?
Из самого первого высокоуровнего языка. Планкалкуль называется. только стрелка там была в другую сторону и переменная в которую поместить результат записывалась справа от выражения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2017, 22:40
Помогаю со студенческими работами здесь

Перегрузка присваивания для стека
Пытаюсь написать перегрузку присваивания для стека. Как видно из кода ниже, я сначала с помошью конструктора копирования создаю временный...

Оператор присваивания для массива
Есть шаблонный класс который служит контейнером для различных типов c помощью массива. Как получить значение конкретного индекса нашел,...

Как перевести синтаксис макроса VBA (Excel) в синтаксис Visual FoxPro
Здравствуйте! Скажите пожалуйста, как перевести синтаксис записанного макроса в excel в синтаксис FoxPro? Нужно, чтобы из FoxPro...

Как перевести синтаксис Intel в синтаксис AT&T? (ассемблерная вставка в СИ)
Извиняюсь, что, возможно, пишу не в ту тему. Нужен именно AT&amp;T синтаксит. В качестве примера для курсовой я разбираю перемножение...

Оператор присваивания для объектов на кучу
Как использовать оператор присваивания для объектов на куче, допустимо ли такое? T* v1 = new T; T* v2 = new T; v2-&gt;operator=(*v1);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru