Alexander Stepanov, Elements of Programming, C++, мысли
От: frontsquat  
Дата: 20.05.10 12:33
Оценка: 14 (2)
Приветствую всех.

Позвольте начать с цитаты.

I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms — you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.


Сегодня случайно наткнулся на Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык? Появилась мысль — может просто раньше не видел чего-то в C++, что дает ему неоспоримые преимущества... Или это просто так исторически сложилось — далекие времена, авторство STL, мейнстрим... Но если причина не эта, то опять — почему C++? Почему объяснять такие вещи на нем, а не взять тот же Haskell. И вот та цитата вначале — критика ООП Степановым — еще один повод отказаться от этого языка. Конечно C++ мультипарадигменный, но в нем отсутствуют вещи, которые были в ФЯ изначально и теперь постепенно перетекают в мейнстрим. Хотелось бы услышать ваши мысли, мысли людей, которые разбираются гораздо лучше меня в этом вопросе.

P.S. И кстати, посоветуйте стоящую книгу по современному C++. На всякий случай.
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: gear nuke  
Дата: 20.05.10 13:56
Оценка: 1 (1)
Здравствуйте, frontsquat, Вы писали:

F>почему Степанов выбрал именно этот язык?


Очевидно, что STL была им написана после знакомства с каким-то ФЯ. Значит вынуждено, потому что тот ФЯ в то время не удовлетворял каким-то требованиям. Остаётся определать требования.

Проверяем гипотезу в Википедии:

C++ seemed more likely to become widely used and provide good support for generic programming even though the language was relatively immature. Another reason for turning to C++, which Stepanov recognized early on, was the C/C++ model of computation which allows very flexible access to storage via pointers is crucial to achieving generality without losing efficiency.


То есть не хватало скорости, если даже перенос некоторых вещей (инициализация контейнеров) в рантайм С++ все равно давал превосходство.

F>P.S. И кстати, посоветуйте стоящую книгу по современному C++. На всякий случай.


Современный... еще не приняли стандарт Возможно, стоит читать "Дизайн и Эволюция..." Страуструпа, что бы понять как развивался\ется С++, а так же причины такого развития и всех проблем на его пути: поддержка массы legacy кода и мифа "0й оверхед".
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: pgregory Россия  
Дата: 20.05.10 14:04
Оценка: +1
Здравствуйте, frontsquat, Вы писали:

F>Сегодня случайно наткнулся на Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык? Появилась мысль — может просто раньше не видел чего-то в C++, что дает ему неоспоримые преимущества... Или это просто так исторически сложилось — далекие времена, авторство STL, мейнстрим... Но если причина не эта, то опять — почему C++? Почему объяснять такие вещи на нем, а не взять тот же Haskell. И вот та цитата вначале — критика ООП Степановым — еще один повод отказаться от этого языка. Конечно C++ мультипарадигменный, но в нем отсутствуют вещи, которые были в ФЯ изначально и теперь постепенно перетекают в мейнстрим. Хотелось бы услышать ваши мысли, мысли людей, которые разбираются гораздо лучше меня в этом вопросе.


Все просто: C++ – единственный на сегодня язык, позволяющий эффективно использовать generic programming. С++ он ни в коей мере идеалом он не считает, но лучшего языка для GP найти не может. Степанову не нравятся языки, которые не позволяют по полному использовать железо (x86, то есть), и строят над ним свои абстракции. Лучшей абстракцией над железом он считает "Си-машину". Если поискать, можно найти его высказывания на эту тему (stepanovpapers.com).

P.S. Степанов начинал на схеме, и пришел к С++, в отличие от многих.
--
In code we trust.
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: barn_czn  
Дата: 20.05.10 14:40
Оценка:
Здравствуйте, frontsquat, Вы писали:

F>Приветствую всех.


F>Позвольте начать с цитаты.

F>

F>I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms — you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.


F>Сегодня случайно наткнулся на Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык? Появилась мысль — может просто раньше не видел чего-то в C++, что дает ему неоспоримые преимущества... Или это просто так исторически сложилось — далекие времена, авторство STL, мейнстрим... Но если причина не эта, то опять — почему C++? Почему объяснять такие вещи на нем, а не взять тот же Haskell. И вот та цитата вначале — критика ООП Степановым — еще один повод отказаться от этого языка. Конечно C++ мультипарадигменный, но в нем отсутствуют вещи, которые были в ФЯ изначально и теперь постепенно перетекают в мейнстрим. Хотелось бы услышать ваши мысли, мысли людей, которые разбираются гораздо лучше меня в этом вопросе.



Мне недавно тоже дали ссылку на его лекцию

http://www.rsdn.ru/forum/philosophy/3808169.1.aspx
Автор: D. Mon
Дата: 16.05.10


Там он рассказывает материал кое какой из книги, про орбиты в частности и трансформации.
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: MasterZiv СССР  
Дата: 20.05.10 15:05
Оценка:
frontsquat пишет:

> глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала

> интерес и заставила задаться вопросом — почему Степанов выбрал именно
> этот язык? Появилась мысль — может просто раньше не видел чего-то в C++,

Где это он его выбрал ?
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Alexander Stepanov, Elements of Programming, C++, мыс
От: frontsquat  
Дата: 20.05.10 15:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала

>> интерес и заставила задаться вопросом — почему Степанов выбрал именно
>> этот язык? Появилась мысль — может просто раньше не видел чего-то в C++,

MZ>Где это он его выбрал ?


Для этой книги в частности и для своих экспериментов вообще. Тут уже пояснили его стремление к низкоуровневости и эффективности. Тогда выбор понятен. Но вся эта возня с указателями, ручным управлением памятью и т.п. кажется шагом возможно и не назад, но как минимум вбок. Создание более высоких абстракций и поиск их эффективных реализаций на низком уровне — мне кажется более правильным направлением. Короче — Haskell.
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: Тролль зеленый и толстый  
Дата: 26.05.10 18:54
Оценка: +1 :))) :)
Очевидно, чувак просто не врубается в концепцию ООП, при этом строит из себя умного, составляя тяжеловесные рассуждения.
Re: Alexander Stepanov, Elements of Programming, C++, мысли
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 27.05.10 07:51
Оценка: +1

Сегодня случайно наткнулся на Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык?


Это надо у него спросить . Возможно, он просто его лучше всего знает? Более 20 лет использовал, соавтор STL.

Появилась мысль — может просто раньше не видел чего-то в C++, что дает ему неоспоримые преимущества...


По сводкам с полей серебряная пуля до сих пор не найдена. Большинство языков и технологий имеют как плюсы, так и минусы. Они как правило предназначены для специфических задач. Скорее всего, для решения математических задач на суперкомпьютере, где очень важна скорость выполнения, c/c++ имеют неоспоримые преимущества .

И вот та цитата вначале — критика ООП Степановым — еще один повод отказаться от этого языка


Я правильно понимаю, что автор цитаты и автор книги — один и тот же человек?

Конечно C++ мультипарадигменный, но в нем отсутствуют вещи, которые были в ФЯ изначально и теперь постепенно перетекают в мейнстрим. Хотелось бы услышать ваши мысли, мысли людей, которые разбираются гораздо лучше меня в этом вопросе.


Мысли о чем? О том что С++ мультипарадигменный или что функциональное программирование ползет в мейнстрим? . Вы бы уточнили чего хотите.

И кстати, посоветуйте стоящую книгу по современному C++. На всякий случай.


Google it?
Лично я такой книги не встречал, все что видел — справочники, косноязычно и с трудом рассказывающие про синтаксис . Да, и книжка Страуструпа по косноязычаю на первом месте. Понять то, что он пишет, можно только уже владея языком на очень хорошем уровне. Это мое ИМХО, естественно .
Re[3]: Alexander Stepanov, Elements of Programming, C++, мыс
От: LaPerouse  
Дата: 27.05.10 10:47
Оценка:
Здравствуйте, frontsquat, Вы писали:

F>Здравствуйте, MasterZiv, Вы писали:


>>> глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала

>>> интерес и заставила задаться вопросом — почему Степанов выбрал именно
>>> этот язык? Появилась мысль — может просто раньше не видел чего-то в C++,

MZ>>Где это он его выбрал ?


F>Для этой книги в частности и для своих экспериментов вообще. Тут уже пояснили его стремление к низкоуровневости и эффективности. Тогда выбор понятен. Но вся эта возня с указателями, ручным управлением памятью и т.п. кажется шагом возможно и не назад, но как минимум вбок. Создание более высоких абстракций и поиск их эффективных реализаций на низком уровне — мне кажется более правильным направлением. Короче — Haskell.


Казалось бы, причем тут haskell...
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[2]: Alexander Stepanov, Elements of Programming, C++, мыс
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.05.10 16:36
Оценка:
Здравствуйте, Тролль зеленый и толстый, Вы писали:

ТЗИ>Очевидно, чувак просто не врубается в концепцию ООП, при этом строит из себя умного, составляя тяжеловесные рассуждения.


<troll mode>
А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
</troll mode>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Alexander Stepanov, Elements of Programming, C++, мыс
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 27.05.10 17:11
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

EOH>

Сегодня случайно наткнулся на Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык?


EOH>Это надо у него спросить . Возможно, он просто его лучше всего знает? Более 20 лет использовал, соавтор STL.


Он сам говорит, что С++ не знает. Что изучил в одной книжке краткое описание на 9 страниц, им и пользуется.
Re[3]: Alexander Stepanov, Elements of Programming, C++, мыс
От: LaPerouse  
Дата: 27.05.10 18:35
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, Тролль зеленый и толстый, Вы писали:


ТЗИ>>Очевидно, чувак просто не врубается в концепцию ООП, при этом строит из себя умного, составляя тяжеловесные рассуждения.


ГВ><troll mode>

ГВ>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ></troll mode>

Забудьте про объекты. Это неверное представление об ООП. Думать о программе в терминах объектов — означает использовать не слишком высокий уровень абстракции. ООП — это абстрактные интерфейсы. Правильнее даже сказать — сервисы. Все. Точка. То, что за этими сервисами торчат объекты с состоянием (или без?) — лишь детали. Которые не должны интересовать архитектора системы.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[4]: Alexander Stepanov, Elements of Programming, C++, мыс
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 27.05.10 18:56
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Здравствуйте, Тролль зеленый и толстый, Вы писали:


ТЗИ>>>Очевидно, чувак просто не врубается в концепцию ООП, при этом строит из себя умного, составляя тяжеловесные рассуждения.


ГВ>><troll mode>

ГВ>>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ>></troll mode>

LP>Забудьте про объекты. Это неверное представление об ООП. Думать о программе в терминах объектов — означает использовать не слишком высокий уровень абстракции. ООП — это абстрактные интерфейсы. Правильнее даже сказать — сервисы. Все. Точка. То, что за этими сервисами торчат объекты с состоянием (или без?) — лишь детали. Которые не должны интересовать архитектора системы.


SOA — вот самый правильный ООП.
Re[4]: Alexander Stepanov, Elements of Programming, C++, мыс
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.05.10 19:13
Оценка: +3 :))
Здравствуйте, LaPerouse, Вы писали:

ГВ>><troll mode>

ГВ>>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ>></troll mode>

LP>Забудьте про объекты. Это неверное представление об ООП. Думать о программе в терминах объектов — означает использовать не слишком высокий уровень абстракции. ООП — это абстрактные интерфейсы. Правильнее даже сказать — сервисы. Все. Точка. То, что за этими сервисами торчат объекты с состоянием (или без?) — лишь детали. Которые не должны интересовать архитектора системы.


Неисчислимы пути сумасбродных затей, неисчислимы...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Alexander Stepanov, Elements of Programming, C++, мыс
От: LaPerouse  
Дата: 27.05.10 20:26
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, LaPerouse, Вы писали:


LP>>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>>Здравствуйте, Тролль зеленый и толстый, Вы писали:


ТЗИ>>>>Очевидно, чувак просто не врубается в концепцию ООП, при этом строит из себя умного, составляя тяжеловесные рассуждения.


ГВ>>><troll mode>

ГВ>>>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ>>></troll mode>

LP>>Забудьте про объекты. Это неверное представление об ООП. Думать о программе в терминах объектов — означает использовать не слишком высокий уровень абстракции. ООП — это абстрактные интерфейсы. Правильнее даже сказать — сервисы. Все. Точка. То, что за этими сервисами торчат объекты с состоянием (или без?) — лишь детали. Которые не должны интересовать архитектора системы.


G>SOA — вот самый правильный ООП.


Именно.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[5]: Alexander Stepanov, Elements of Programming, C++, мыс
От: LaPerouse  
Дата: 27.05.10 20:53
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, LaPerouse, Вы писали:


ГВ>>><troll mode>

ГВ>>>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ>>></troll mode>

LP>>Забудьте про объекты. Это неверное представление об ООП. Думать о программе в терминах объектов — означает использовать не слишком высокий уровень абстракции. ООП — это абстрактные интерфейсы. Правильнее даже сказать — сервисы. Все. Точка. То, что за этими сервисами торчат объекты с состоянием (или без?) — лишь детали. Которые не должны интересовать архитектора системы.


ГВ>Неисчислимы пути сумасбродных затей, неисчислимы...


В самом деле поразвелось всяких DI-фреймворков понимаешь... Что людям делать что ли нечего?

PS Как только ты сказал слово "объект", можешь забыть о модульности.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[6]: Alexander Stepanov, Elements of Programming, C++, мыс
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.05.10 21:36
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>PS Как только ты сказал слово "объект", можешь забыть о модульности.


Почему?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Alexander Stepanov, Elements of Programming, C++, мыс
От: dsorokin Россия  
Дата: 28.05.10 03:40
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ><troll mode>

ГВ>А во что там врубаться? Концпеция ООП замкнута на неопределённость: всё есть объекты, они обмениваются сообщениями, сами объекты состоят из объектов, обменивающихся сообщениями, а сообщения представляют собой объекты, обменивающиеся сообщениями. На колу мочало...
ГВ></troll mode>

Смолток?
Re[7]: Alexander Stepanov, Elements of Programming, C++, мыс
От: LaPerouse  
Дата: 28.05.10 06:04
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, LaPerouse, Вы писали:

LP>>PS Как только ты сказал слово "объект", можешь забыть о модульности.
ГВ>Почему?

Потому что завязываешься на реализацию.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[3]: Alexander Stepanov, Elements of Programming, C++, мыс
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 28.05.10 07:19
Оценка:

Он сам говорит, что С++ не знает. Что изучил в одной книжке краткое описание на 9 страниц, им и пользуется.


Ну говорить он может что угодно. Я правильно понимаю что он соавтор STL? Довольно трудно разрабатывать библиотеку к языку, которого ты не знаешь .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.