LINUX.ORG.RU
ФорумTalks

Как поживают Ъ ООП языки?

 tru, , ,


0

4

Типа Smalltalk, Objective-C и т.п. А то что-то толком и не слышно о них новостей. Не приключился ли с ними застой? Выходят ли новые удобные средства разработки? Как дела с обучающими курсами и литературой? Почему так мало адептов у них на ЛОРе да и вообще?

Если кто в теме, просветите, пожалуйста.

Всем отдохнуть хорошенько. :)

Ответ на: комментарий от ymn

Чего он там решает, можно узнать?

как поступить с полученным сообщением, очевидно же.

Отправка сообщения, по факту, ничем не отличается от вызова метода. С тем же успехом можно говорить, что объект C++ может решать как поступить с полученным сообщением.

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от mono

Нет, но среда хорошая, пользуюсь.

Какие плюшки есть в сравнении с XCode?

quiet_readonly ★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Да, и объясни почему Objective-C - не Ъ ООП.

Потому что ObjectiveC и C++ разбираются одним компилятором и даже одним и тем же парсером, потому что в современном ObjectiveC посыл сообщения никак не отличить от вызова метода в C++, потому что вызов метода по сигнатуре имеется и в Qt, который построен на самом что ни на есть чистом C++, хоть и с кодогенерацией плюсов из плюсов.

А успех C++ для оторванных от жизни нытиков как бельмо на глазу, вот и ObjectiveC объявили нечистым.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от Deleted

у которого даже бинарной совместимости к 2013 году нет

Все линуксовые компиляторы C++ совместимы с ABI G++. Все маздайные - с ABI VC++. Проблемы нет уже лет с 10.

Поработаю телепатом: наверное, он имел ввиду несовместимость ABI библиотек, ЕМНИП в той же STL новый стандарт где-то приводит к обязательному изменению ABI.

Беда всех этих срывателей покровов в том, что они либо приводят в пример некомпилируемые языки либо не знают, что в ObjectiveC имеется целых 3 версии ABI.

quiet_readonly ★★★★
()
Ответ на: комментарий от CrossFire

Отправка сообщения, по факту, ничем не отличается от вызова метода.

Нет. Операция отправки сообщения не гарантирует, что она вообще будет выполнена либо обработана каким-то определенным образом.

ymn ★★★★★
()
Ответ на: комментарий от ymn

Нет. Операция отправки сообщения не гарантирует, что она вообще будет выполнена либо обработана каким-то определенным образом.

Гарантирует, если отправляется ненулевому указателю.

quiet_readonly ★★★★
()

В своих нишах живут неплохо. Objective C поддерживается Apple, Erlang поддерживается Ericsson, Smalltalk не поддерживается никем и потому сдох, а настоящий Ъ-ООП язык (сигма-исчисление) существует только как академический курьёз.

Miguel ★★★★★
()
Ответ на: комментарий от ymn

Операция отправки сообщения не гарантирует, что она вообще будет выполнена либо обработана каким-то определенным образом.

Только в теории.

tailgunner ★★★★★
()

Типа Smalltalk

вполне себе жив

Выходят ли новые удобные средства разработки?

Так «новые» или «удобные» ? В последнее время эти два множества очень часто не пересекаются.

Как дела с обучающими курсами и литературой?

У VisualWorks Smalltalk шикарная документация (под 3000 страниц, не считая довольно обширных примеров и документации внутри исходников):

(1001) darkman@sl500:--/vw/doc> ll -h
итого 41M
-r--r--r-- 1 darkman darkman 3,3M янв.  14 12:20 AppDevGuide.pdf
-r--r--r-- 1 darkman darkman  14K янв.  14 12:20 ARs_Resolutions78release.txt
-r--r--r-- 1 darkman darkman 1,2M янв.  14 12:20 BasicLibraries.pdf
-r--r--r-- 1 darkman darkman 2,3M янв.  14 12:20 COMConnectGuide.pdf
-r--r--r-- 1 darkman darkman 1,4M янв.  14 12:20 DatabaseAppDevGuide.pdf
-r--r--r-- 1 darkman darkman 1,5M янв.  14 12:20 DLLandCConnectGuide.pdf
-r--r--r-- 1 darkman darkman 1,4M янв.  14 12:20 DSTAppDevGuide.pdf
-r--r--r-- 1 darkman darkman 5,2K янв.  14 12:20 fixed_ars.txt
-r--r--r-- 1 darkman darkman 257K янв.  14 12:20 GlorpGuide.pdf
-r--r--r-- 1 darkman darkman 2,6M янв.  14 12:20 GUIDevGuide.pdf
drwxr-xr-x 2 darkman darkman   39 янв.  14 12:20 index
-r--r--r-- 1 darkman darkman  528 янв.  14 12:20 index.pdx
-r--r--r-- 1 darkman darkman 512K янв.  14 12:20 InternationalGuide.pdf
-r--r--r-- 1 darkman darkman 735K янв.  14 12:20 MQGuide.pdf
-r--r--r-- 1 darkman darkman 861K янв.  14 12:20 NetClientDevGuide.pdf
-r--r--r-- 1 darkman darkman 1,2M янв.  14 12:20 OpentalkDevGuide.pdf
-r--r--r-- 1 darkman darkman 769K янв.  14 12:20 PluginDevGuide.pdf
-r--r--r-- 1 darkman darkman 807K янв.  14 12:20 ReleaseNotes7.0.pdf
-r--r--r-- 1 darkman darkman 1,3M янв.  14 12:20 ReleaseNotes7.1.pdf
-r--r--r-- 1 darkman darkman 712K янв.  14 12:20 ReleaseNotes7.2.1.pdf
-r--r--r-- 1 darkman darkman 122K янв.  14 12:20 ReleaseNotes7.3.1.pdf
-r--r--r-- 1 darkman darkman 756K янв.  14 12:20 ReleaseNotes7.3.pdf
-r--r--r-- 1 darkman darkman 114K янв.  14 12:20 ReleaseNotes7.4.1.pdf
-r--r--r-- 1 darkman darkman 991K янв.  14 12:20 ReleaseNotes7.4.pdf
-r--r--r-- 1 darkman darkman 542K янв.  14 12:20 ReleaseNotes7.5.pdf
-r--r--r-- 1 darkman darkman 3,2M янв.  14 12:20 ReleaseNotes7.6.pdf
-r--r--r-- 1 darkman darkman 171K янв.  14 12:20 ReleaseNotes7.7.1.pdf
-r--r--r-- 1 darkman darkman 1,3M янв.  14 12:20 ReleaseNotes7.7.pdf
-r--r--r-- 1 darkman darkman  69K янв.  14 12:20 ReleaseNotes7.8.1.pdf
-r--r--r-- 1 darkman darkman 686K янв.  14 12:20 ReleaseNotes7.8.pdf
-r--r--r-- 1 darkman darkman 252K янв.  14 12:20 ReleaseNotes7.9.1.pdf
-r--r--r-- 1 darkman darkman 721K янв.  14 12:20 ReleaseNotes7.9.pdf
-r--r--r-- 1 darkman darkman 623K янв.  14 12:20 SecurityGuide.pdf
-r--r--r-- 1 darkman darkman 1,2M янв.  14 12:20 SourceCodeMgmtGuide.pdf
drwxr-xr-x 2 darkman darkman  146 янв.  14 12:20 TechNotes
-r--r--r-- 1 darkman darkman 974K янв.  14 12:20 ToolGuide.pdf
-r--r--r-- 1 darkman darkman 1,9M янв.  14 12:20 WalkThrough.pdf
-r--r--r-- 1 darkman darkman 1,6M янв.  14 12:20 WebAppDevGuide.pdf
-r--r--r-- 1 darkman darkman 1,7M янв.  14 12:20 WebGUIDevGuide.pdf
-r--r--r-- 1 darkman darkman 2,2M янв.  14 12:20 WebServerConfig.pdf
-r--r--r-- 1 darkman darkman 1,7M янв.  14 12:20 WebServices.pdf

Darkman ★★★
()
Ответ на: комментарий от quiet_readonly

Гарантирует, если отправляется ненулевому указателю.

В Smalltalk гарантируется даже для нулевого указателя:

nil open.

->
Unhandled exception: Message not understood: #open
UndefinedObject(Object)>>doesNotUnderstand:
UndefinedObject>>unboundMethod
UndefinedObject(Object)>>performMethod:arguments:
UndefinedObject(Object)>>performMethod:

Т.е. нет такого сообщения. А вот такое, например, есть:

nil asEmphasisArray.

-> #()
Darkman ★★★
()
Ответ на: комментарий от CrossFire

Таких фейспалмных косяков у плюсов нет, да. Вот еще пример

Ох, ё ! Вот это грабли.

Darkman ★★★
()
Ответ на: комментарий от Deleted

Вызов методов объектов эквивалентен отправке ему сообщений (т.е., это одна и та же модель).

Даже близко не эквивалентен.

Darkman ★★★
()
Ответ на: комментарий от CrossFire

Отправка сообщения, по факту, ничем не отличается от вызова метода.

Ойдануконечно. А если «сообщение» принимающей стороне неизвестно ?

Darkman ★★★
()
Ответ на: комментарий от Bioreactor

Я так понял «Java-программист с достойной зарплатой» для тебя знак успеха айтишника?

vertexua ★★★★★
()
Ответ на: комментарий от Miguel

Некрофилам?

Угу. JPMorgan такие все из себя некрофилы:

“We have estimated that if we had built Kapital in another language such as Java, we would require at least three times the amount of resources.” - Dr. Colin Lewis, Vice President, JPMorgan

Darkman ★★★
()
Ответ на: комментарий от quiet_readonly

Возможность слома совместимости ABI библиотек - это не вина языка, а вина тех, кто эти самые библиотеки создавал.

ЕМНИП в той же STL новый стандарт где-то приводит к обязательному изменению ABI.

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

Deleted
()
Ответ на: комментарий от Deleted

Можешь раскрыть свою мысль?

При вызове метода компилятор вставляет вызов через VMT (так делают плюсы).

При посылке сообщения (на примере Smalltalk'а) получающая сторона сама решает что делать с сообщением - в байткоде это выглядит как:

push данные
push класс_или_обьект
send селектор_метода

Получающая сторона сама решает что делать с сообщением:

  • если определён обработчик - вызвать его через performMethod:
  • не определять обработчик и (так часто делают всякие Persistent Object Database)
    • ловить селектор в обработчике сообщения doesNotUnderstаnd: и делать что считает нужным
    • воспользоваться Metaclass Object Protocol, перекрыть performMethod: и извращаться в нём
Darkman ★★★
()
Ответ на: комментарий от CrossFire

В Objective-C это приведет к ошибке.

Однозначно к ошибке ? Обработать такую ситуацию нельзя ?

Darkman ★★★
()
Ответ на: комментарий от Darkman

Получающая сторона сама решает что делать с сообщением

Хм, ну в питоне можно сделать так же задав __getattr__|__getattribute__. Это интенсивно используется, например, в разных orm. Значит ли это что питон Ъ?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Хм, ну в питоне можно сделать так же задав __getattr__|__getattribute__. Это интенсивно используется, например, в разных orm. Значит ли это что питон Ъ?

Я правильно понимаю что они перехватывают только обращение к переменным но не к методам ?

Кроме того сообщение в Smalltalk это не просто имя (селектор), а целый класс со своими собственными методами который кроме всего прочего позволяет динамическое создание сообщений не засирая код всяческими eval.

Darkman ★★★
()
Ответ на: комментарий от Darkman

они перехватывают только обращение к переменным но не к методам ?

Нет. В питоне всё «объект», разница между методом и «обычной» переменной... только в наличии, хм, метода __call__.

динамическое создание сообщений

ммм, ты про functions as first-class sitizens? Это у питона было всегда.

Хотя, тут вопрос скорее не в том «может питон так или нет», а в том на сколько это удобно в нём реализуется.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

а в том на сколько это удобно в нём реализуется.

Немаловажный, кстати, фактор.

Darkman ★★★
()

SmallTalk - http://www.squeak.org всё живо и работает.

Objective C - Ну тут сами в курсе, новые Mac OS X и iOS выходят, и софт пишется.

Новости какого плана ? Все новости в ML тематических.

robot12 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.