The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Pharo 11, диалекта языка Smalltalk , opennews (??), 30-Май-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


7. "Выпуск Pharo 11, диалекта языка Smalltalk "  –2 +/
Сообщение от Аноним (7), 30-Май-23, 13:32 
Во всех смартфонах Apple. Objective-C в сущности это Smalltalk построенный поверх C. Только на нем программируют воображая будто это Java, а потом удивляются, а чего это он такой неудобный?
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

13. "Выпуск Pharo 11, диалекта языка Smalltalk "  –2 +/
Сообщение от Аноним (13), 30-Май-23, 14:59 
Про свифт слышал? Вылезай из берлоги, уже 10 лет там сидишь.
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск Pharo 11, диалекта языка Smalltalk "  +5 +/
Сообщение от Бывалый смузихлёб (?), 30-Май-23, 16:11 
Обжектив как раз несравненно удобней и наглядней жабы. Только первую неделю непривычно обилие квадратных скобок
И, кстати, в общем и целом приятнее и самобытнее свифта, который то ли недошарп, то ли - недокотлин
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

20. "Выпуск Pharo 11, диалекта языка Smalltalk "  –4 +/
Сообщение от Аноним (20), 31-Май-23, 00:27 
> Objective-C в сущности это Smalltalk построенный поверх C.

С разморозкой! В смартфоах примерно 90% аппликаций в маркетах написаны на реакте или флаттере. Вне зависомости ios это или android.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

22. "Выпуск Pharo 11, диалекта языка Smalltalk "  +/
Сообщение от Маковод (?), 31-Май-23, 05:10 
На реакте и флаттере не делают серьезные приложения, ибо выглядят и работают они довольно печально. Их используют либо стартапы без денег, либо компании без хороших программистов.
Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск Pharo 11, диалекта языка Smalltalk "  +/
Сообщение от Бывалый смузихлёб (?), 31-Май-23, 17:00 
Ты наверное с кордовой путаешь

Написанное даже средним программистом приложение на RN для яблока неотличимо от полностью нативного за исключением очень специфических нюансов( но там уже и не натив, а скорее анреал или юнити нужны )

Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск Pharo 11, диалекта языка Smalltalk "  +/
Сообщение от Аноним (30), 31-Май-23, 13:10 
ШОК! 90% мусора в аппсторах написано на мусоре!
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

26. "Выпуск Pharo 11, диалекта языка Smalltalk "  +1 +/
Сообщение от Аноним (26), 31-Май-23, 10:18 
Если так натягивать сову на глобус, то Python, Ruby и вообще все динамически типизированные ООП языки - это тоже Смолтолк.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

29. "Выпуск Pharo 11, диалекта языка Smalltalk "  +/
Сообщение от Аноним (30), 31-Май-23, 13:00 
И близко нет. В ObjC есть модель сообщений, в них нет.
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск Pharo 11, диалекта языка Smalltalk "  +/
Сообщение от Аноним (34), 01-Июн-23, 10:45 
Заблуждаетесь. Допустим у нас есть такой код:

some_obj.do_smth(1)

Здесь some_obj - это экземпляр некоторого класса. do_smth - сообщение, которое мы ему отправляем. 1 - аргумент этого сообщения.

У каждого объекта есть ссылка на класс который его породил. Когда some_obj получит сообщение do_smth он пойдёт по этой ссылке в свой класс, потому что именно в классе хранится таблица методов. Далее класс начнёт поиск сообщения в таблице. Как он будет это делать - зависит от языка. В одних он тупо использует do_smth, как ключ, в других - он учтёт количество переданных аргументов или даже их тип (т.н. перегрузка методов).

Если класс найдёт соответствующий метод, то он параметризирует его данными из объекта и из аргументов сообщения, выполнит его и отдаст результат.

Гораздо интереснее то что произойдёт когда класс метод не найдёт. Я не буду здесь учитывать наследование.

В Смолтолке класс дёрнет свой метод #doesNotUnderstand:, который по дефолту кидает исключение с текстом типа "класс такой-то не содержит метода для обработки сообщения do_smth 1". Этот метод можно переопределить и динамически перенаправить сообщение в нужный метод или другой объект. Можно например сказать - если сообщение начинается с "do" то разбей его по '_', затем дёрни метод do с аргументами smth и 1.

Этот механизм существует во всех динамически-типизированных ООП языках. В Python аналогом #doesNotUnderstand: выступает метод __getattr__, в Ruby - method_missing, в PHP - хук __call. Во всех этих языках сообщение не соответствует методу напрямую, а так же его можно хранить в переменной или создать динамически из строк. Это и есть "модель сообщений". Она даёт программисту огромные возможности и сильно упрощает реализацию большинства паттернов, но у неё есть один серьёзный недостаток - её невозможно валидировать статически.

В статически-типизированных ООП языках такая магия не приемлема - в них валидатор должен до запуска программы знать какой класс, в итоге, обработает сообщение. Поэтому в таких языках до недавних времён существовало прямое соответствие между сообщением и его методом-обработчиком. Из-за этого слово "сообщение" в этих языках вообще перестали использовать и стали говорить "мы вызываем метод do_smth у объекта some_obj". Из чего выросло ложное разделение на языки с "моделью сообщений" и языки с "моделью вызова метода". Сообщения в Java и C# никуда не делись, их можно конструировать и отправляеть в рантайме с помощью рефлексии и dynamic.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру