|
|
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavewмогут сильно различаться вариантами реализации и "стилевыми особенностями" этого самого "отбражения" (условно говоря: кому проще сделать из "ex-функции" класс - тот делает класс, которого мы никогда не "увидим", пока не залезем в исполняемый код "грязными руками"вообще-то, вся эта ООпафосная шелуха просто шелуха над старым добрым асмом: где-то сидят метаданные, где-то vtable, в куче – объекты, а остальное – куски кода – тела функций, а вызов как и раньше: запихнули параметры в стек и – call по нужному адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 11:52 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод NotGonnaGetUsЕсли в java, то объект. Что же ещё? Причем тут java. Если я не ошибаюсь в ООП есть только классы объектов. У объектов есть свойства, а у классов методы, которые применяются к объектам. А что есть функции ? Вот в c# вообще нет функций - отчего бы это. 1. Java при том, что в другом ООЯ для представления сслылок на методы могут использоваться другие решения. 2. Друг мой, не надо снова изобретать новаторские толкования ООП. Класс содержит описания (т.е. методы и поля), по которым строятся объекты. 3. Ещё раз повторяю: типы функций - описываются классами, функциональные переменные ссылаются на объекты этих классов. Даже в С# 2.0, в "котором вообще нет функций". Смотрим пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:12 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavew Первое "спорное" утверждение - "функция" как сущность ЯВУ определенная в синтаксисе этого ЯВУ (т.н. "ex-функция", от "expression") вполне может обойтись и без явного "объявления". Может, но очень иногда. А почему вы ограничиваетесь только "ex-функциями" ? А как же Код: plaintext 1. 2. dejavewЧто есть "явно лишний" класс в вашем понимании Лишнии буквы в программе, которые должен написать программер. dejavew12.345.GetType().ToString().Split('a')[0]; "? А это что ? Действительно неочевидный текст напрягает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:13 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:23 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
maXmo NotGonnaGetUsВсё останется как есть с той разницей, что код станет более компактным. Код: plaintext 1. 2. 3. 4. ну и кто компактнее? Нужно "шырше" смотреть :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. maXmo А как выглядит определение функции, принимающей в качестве параметра лямбду? Разве появился тип System.Lambda? Вам ли не знать, как это выглядит? :) Возвращаясь к примеру кода из моего предыдущего сообщения: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:25 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
maXmo... вообще-то, вся эта ООпафосная шелуха просто шелуха над старым добрым асмом: где-то сидят метаданные, где-то vtable, в куче – объекты, а остальное – куски кода – тела функций, а вызов как и раньше: запихнули параметры в стек и – call по нужному адресу. Кто ж спорит-то? Набор инструкций х86 еще не скоро будет отменен за ненадобностью... Только, почему такое пренебрежение к категорям ЯВУ вообще, и ООП в частности ("вся эта ООпафосная шелуха")? Или вы - из т.н. "С-шников старой закалки", для которых - "Нет Бога кроме - Кернигана, а Ричи - пророк его!"? З.Ы. вдогонку к предыдущему спичу - чем вам генерик-делегаты-то не угодили? Что плохого в том, что в C#3.0 будет реализовано что-то типа этого? Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:27 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
maXmo NotGonnaGetUs Код: plaintext 1. 2. 3. 4. 5. К чему такие мудрые высказывания? См. сообщение http://sql.ru/forum/actualthread.aspx?tid=421067#4058712 я обо всём этом там написал. Не нужно путать детали реализации компилятора и язык программирования, о чём dejavew уже тоже писал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:32 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs... Возвращаясь к примеру кода из моего предыдущего сообщения: Код: plaintext 1. 2. 3. Это вы, уважаемый, не на c#2.0 писали, наверное, а "внутри головы" (бывает такое и со мной в порыве "запальчивости"). На c#2.0 надо примерно, так: Код: plaintext 1. 2. 3. 4. З.Ы. то maXmo - ну вот, кода-то наворотили за 4 поста - 3 горы, а что толку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:45 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavewЭто вы, уважаемый, не на c#2.0 писали, наверное, а "внутри головы" (бывает такое и со мной в порыве "запальчивости"). А со мной не бывает :) Это код на с#2.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:49 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsСмотрим пример Да уж. Спасибо, такое ФП нам не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:56 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs... А со мной не бывает :) Это код на с#2.0. Во, блин... (и точно). Как языки-то "вперед двинулись", не успеваешь за сокращением синтаксиса следить... А "мод" еще "причитает" о соответствии "семантики" и "синтаксиса"... По-моему как раз: Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 12:58 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод NotGonnaGetUsСмотрим пример Да уж. Спасибо, такое ФП нам не надо. Ну а, к примеру, какого бы "ФП" вам хотелось? Я там, давеча, приводил примеры "выведения" лямбд "по-месту": Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 13:03 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод NotGonnaGetUsСмотрим пример Да уж. Спасибо, такое ФП нам не надо. Кому "вам"? Тебе? Доводов не будет? Тогда, тут не поспоришь. Если, н-р, кому-то не хочется разбираться с ООП и из-за этого хочется поливать его грязью, то такому человеку уже ничего не поможет :) А "такого" в этом ФП ничего нет. Обычное ФП. Анонимные функции есть, все функции/методы свободно передаются по ссылке, соответственно легко строятся функции высших порядков и прочее. На данный момент записи лямбд избыточны, но этот вопрос будет решён в обозримом будущем и это никак не влияет на возможноть писать в ООЯзыках в функциональном стиле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:08 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavew Код: plaintext 1. А где чистота-то? Всё равно имя метода передаваемого в качестве параметра не является "ООП-выражением" :) "Чище" было бы: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:11 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavewА "мод" еще "причитает" о соответствии "семантики" и "синтаксиса"... По-моему как раз: Код: plaintext 1. А так еще адекватнее: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:14 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод А так еще адекватнее: Код: plaintext 1. 2. Так не адекватнее, т.к. исключается возможность проверки типов. В переменной x легко может оказаться функция, которая принимает на вход не строку, а синих ёжиков. Естественно, если речь идёт не о МL языках, в которых вывод типов делается автоматически. Но, во-первых не любой функциональный язык обладает такой возможностью, во-вторых вывод типов в ООЯзыках тоже возможен, примером чего служит Nemerle. Там можно написать: def x = Preved; и следующая строчка приведёт к ошибке компиляции: x(1,2,3); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:21 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavew Код: plaintext Я же не против. lambda выражения нужны, но их применение ограничено например нет рекурсии. dejavewНу а, к примеру, какого бы "ФП" вам хотелось? Это сложный вопрос. Чистого ФП вообще не бывает, только как часть процедурно-ФП. К самим функциям (да и к процедурам) требования такие: 1 передача аргументов всех типов по значению 2 максимально ленивые вычисления 3 аргументы и значение любых типов (в т.ч. и функции) 4 динамический вызов по шаблонам (не путать с сигнатурой) 5 транзакционность 6 параллельность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:33 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод 5 транзакционность 6 параллельность Сорри, но я катаюсь под столом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:37 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsТак не адекватнее, т.к. исключается возможность проверки типов. Статическая проверка типов вещь нужная, но в данном случае не спасает: sin(x) и cos(x) имеют один тип, но функции то разные. Остается только динамическая проверка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:47 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsСорри, но я катаюсь под столом :) А подробнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 14:48 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод... 1 передача аргументов всех типов по значению 2 максимально ленивые вычисления 3 аргументы и значение любых типов (в т.ч. и функции) 4 динамический вызов по шаблонам (не путать с сигнатурой) 5 транзакционность 6 параллельность Я, конечно, как NGGU, под столом кататься не собираюсь, только очень сильно подозреваю, что весь вышеперечисленный список (за исключением п.п. 1 и 4, да и то "с натяжкой") - суть характеристики среды компиляции/исполнения, а отнюдь не ЯВУ... (будь он хоть ООП, хоть ФП, хоть "динамически-скриптовый", как это сейчас популярно на примере Ruby). Языку, как набору синтаксических выражений, абсолютно пофигу - в какую семантическую модель он "складывается" внутри среды компиляции/исполнения: объектную, функциональную, транзакционную, параллельную или "адресно-стековую"... (но, об этом уже 100 раз "перетиралось"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 15:21 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavewтолько очень сильно подозреваю, что весь вышеперечисленный список (за исключением п.п. 1 и 4, да и то "с натяжкой") - суть характеристики среды компиляции/исполнения, а отнюдь не ЯВУ Нет, это все д. б. поддержано на уровне конструкций самого языка. А то что допускает семантическую неоднозначность, д.б. зафиксировано. Компилятор здесь не причем - он не определяет семантику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 15:29 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод dejavewтолько очень сильно подозреваю, что весь вышеперечисленный список (за исключением п.п. 1 и 4, да и то "с натяжкой") - суть характеристики среды компиляции/исполнения, а отнюдь не ЯВУ Нет, это все д. б. поддержано на уровне конструкций самого языка... Ну вот, не могу я понять - как "на уровне конструкций самого языка" поддержать "параллельность" и "транзакционность" задачи поиска человека по имени, фамилии и году рождения в огромном мегаполисе? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 16:01 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
мод NotGonnaGetUsТак не адекватнее, т.к. исключается возможность проверки типов. Статическая проверка типов вещь нужная, но в данном случае не спасает: sin(x) и cos(x) имеют один тип, но функции то разные. Остается только динамическая проверка. Казалось бы пишем на одном и том же языке, а значение слов друг друга не разумеем. В примере (def x = Preved; x(1,2,3);) было показано как статическая типизация позволяет избежать ошибки в run-time вызванной не верной передачей типов входных параметров. Как относится твой sin/cos к этому? Никак абсолютно. Хочешь вызывать sin(x) - ну так вызови по имени. Что ты собираешься "динамически" проверять мне не ясно. Если не трудно - объясни. Лучше с примером кода. мод NotGonnaGetUsСорри, но я катаюсь под столом :) А подробнее Куда уж подробнее... Рассказать какая крышка стола с обратной стороны? мод Это сложный вопрос. Чистого ФП вообще не бывает, только как часть процедурно-ФП. К самим функциям (да и к процедурам) требования такие: Чем по твоему процедура отличается от функции? Что за чудо-юдо такое "процедурно-ФП"? мод 1 передача аргументов всех типов по значению Так сделано в java. Все передаётся исключительно по значению, т.е. нельзя сделать так, чтобы после вызова X x = x1; someCode(x); x указывало не на х1. Может ты имел ввиду отсутствие в языке операций деструктивного присвоения? Забавно. мод 2 максимально ленивые вычисления Что значит "максимально"? Т.е. можно быть чуть-чуть беременным? Смешно. мод 3 аргументы и значение любых типов (в т.ч. и функции) Т.е. ты хотел сказать, что функции должны быть "персонами первого рода"? Очень забавная формулировка получилась. мод 4 динамический вызов по шаблонам (не путать с сигнатурой) Тут мы видим новаторская формулировку на тему паттерн-матчинга, представляющую нагромаждение странных слов. мод 5 транзакционность Что скрывается за столь красивым словом не ясно абсолютно. Жажду примера. мод 6 параллельность Это что за чудо? Потенциальная возможность компилятором выполнять вычисления во многопоточном режиме, опираясь на отсутствие деструктивных присвоений? Так об этом ограничении слова не было сказано... Или всё-таки было? А как тогда это связано с языком?! Требуются комментарии. Что не строчка - то анекдот. Вот и приходится крышку стола всестронне изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 17:02 |
|
||
|
ООЯ/ФЯ перспективы полной конвергенции?
|
|||
|---|---|---|---|
|
#18+
dejavewНу вот, не могу я понять - как "на уровне конструкций самого языка" поддержать "параллельность" и "транзакционность" Ессно это надо не для всех задач, т.е. транзакции нужны только при параллельной работе. Пример Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 17:04 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34484221&tid=1346091]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 561ms |

| 0 / 0 |
