?

Log in

No account? Create an account
"ты, Завалишин, как e в степени x - хоть кол на голове теши" - dz

> Свежие записи
> Архив
> Друзья
> Личная информация
> DZ Online

Апрель 14, 2009


Previous Entry Поделиться Next Entry
06:32 am - "ты, Завалишин, как e в степени x - хоть кол на голове теши"
Наконец, пришли математики с предъявой - чо я тут про ОО, а это частный случай, а они про общий, а я про это молчок.

Пацаны - а знаете анекдот? Как математик идёт мимо камерного театра, замечает вывеску, и заинтересованно заходит внутрь. Через минуту выходит разочарованный со словами "тривиальный случай - ка равно трём"...?

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

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

Мысль вот какая. Надо выбирать не самый широкий базис, не самую всеобъемлющую парадигму, а МИНИМАЛЬНО возможный базис. Идеален не тот ЯП, на котором можно написать ЛЮБУЮ программу, а тот, на котором можно написать ЛЮБУЮ НУЖНУЮ тебе программу. То есть - никому не нужны к-мерные театры. Для 3-мерных существ ВПОЛНЕ достаточно 3-мерных, и давать в этом месте гибкость - бессмысленно и ВРЕДНО.

Утверждение: Правильный, хороший ЯП, неполноценен и ИЗБЫТОЧЕН, а полноценный и неизбыточный (лисп, форт, ассемблер стековой машины) - вреден и чрезмерен.

Утверждение: программирование - это НЕ написание программы, а написание ТАКОЙ программы, процесс написания которой позволяет организовывать мышление программиста эффективным с точки зрения формализации предметной области способом. Запуск программы на исполнение - важный, но почти побочный эффект её написания. (это вообще кто-то древний сказал...)

PS: Я прощёлкал - а когда это в течении последних 75 лет присваивание признали функционально кошерным?

PPS: Мне тут ещё фразу подарили: "третий элемент кортежа похож на емейл". Пишу, чтобы не забыть. Очень хочу посмотреть на спеку для ФП-библиотеки функций, в которой говорится, что все функции принимают в качестве параметра кортежи с третьим элементом, похожим на емейл. Сплю и вижу. Сплю, вижу, и фигею, дорогая редакция. /* int [] myfunc( int [] ); third int in array supposed to be x coordinate in inches */

(94 комментария | Оставить комментарий)

Comments:


From:gottlob_frege
Date:Апрель 15, 2009 08:33 am

Парадигма

(Link)
"Под парадигмами я подразумеваю признанные всеми научные достижения, которые в течение определенного времени дают научному сообществу модель постановки проблем и их решений."

"Вводя этот термин, я имел в виду, что некоторые общепринятые примеры фактической практики научных исследований - примеры, которые включают закон, теорию, их практическое применение и необходимое оборудование, - все в совокупности дают нам модели, из которых возникают конкретные традиции научного исследования. Таковы традиции, которые историки науки описывают под рубриками "астрономия Птолемея (или Коперника)", "аристотелевская (или ньютонианская) динамика", "корпускулярная (или волновая) оптика" и так далее. Изучение парадигм, в том числе парадигм гораздо более специализированных, чем названные мною здесь в целях иллюстрации, является тем, что главным образом и подготавливает студента к членству в том или ином научном сообществе. Поскольку он присоединяется таким образом к людям, которые изучали основы их научной области на тех же самых конкретных моделях, его последующая практика в научном исследовании не часто будет обнаруживать резкое расхождение с фундаментальными принципами. Ученые, научная деятельность которых строится на основе одинаковых парадигм, опираются на одни и те же правила и стандарты научной практики. Эта общность установок и видимая согласованность, которую они обеспечивают, представляют собой предпосылки для нормальной науки, то есть для генезиса и преемственности в традиции того или иного направления исследования."

"В данном очерке термин "нормальная наука" означает исследование, прочно опирающееся на одно или несколько прошлых научных достижений - достижений, которые в течение некоторого времени признаются определенным научным сообществом как основа для его дальнейшей практической деятельности. В наши дни такие достижения излагаются, хотя и редко в их первоначальной форме, учебниками - элементарными или повышенного типа. Эти учебники разъясняют сущность принятой теории, иллюстрируют многие или все ее удачные применения и сравнивают эти применения с типичными наблюдениями и экспериментами. До того как подобные учебники стали общераспространенными, что произошло в начале XIX столетия (а для вновь формирующихся наук даже позднее), аналогичную функцию выполняли знаменитые классические труды ученых: "Физика" Аристотеля, "Альмагест" Птолемея, "Начала" и "Оптика" Ньютона, "Электричество" Франклина, "Химия" Лавуазье, "Геология" Лайеля и многие другие. Долгое время они неявно определяли правомерность проблем и методов исследования каждой области науки для последующих поколений ученых. Это было возможно благодаря двум существенным особенностям этих трудов. Их создание было в достаточной мере беспрецедентным, чтобы привлечь на длительное время группу сторонников из конкурирующих направлений научных исследований. В то же время они были достаточно открытыми, чтобы новые поколения ученых могли в их рамках найти для себя нерешенные проблемы любого вида.
Достижения, обладающие двумя этими характеристиками, я буду называть далее "парадигмами", термином, тесно связанным с понятием "нормальной науки""

"Формирование парадигмы и появление на ее основе более эзотерического типа исследования является признаком зрелости развития любой научной дисциплины."

Т. Кун, "Cтруктура научных революций"
From:gottlob_frege
Date:Апрель 15, 2009 10:03 am

Alan Key on OOP

(Link)
"The original conception of it had the following parts.



- I thought of objects being like biological cells and/or individual

computers on a network, only able to communicate with messages (so

messaging came at the very beginning -- it took a while to see how to

do messaging in a programming language efficiently enough to be

useful).



- I wanted to get rid of data. The B5000 almost did this via its

almost unbelievable HW architecture. I realized that the

cell/whole-computer metaphor would get rid of data, and that "<-"

would be just another message token (it took me quite a while to

think this out because I really thought of all these symbols as names

for functions and procedures.



- My math background made me realize that each object could have

several algebras associated with it, and there could be families of

these, and that these would be very very useful. The term

"polymorphism" was imposed much later (I think by Peter Wegner) and

it isn't quite valid, since it really comes from the nomenclature of

functions, and I wanted quite a bit more than functions. I made up a

term "genericity" for dealing with generic behaviors in a

quasi-algebraic form.



- I didn't like the way Simula I or Simula 67 did inheritance

(though I thought Nygaard and Dahl were just tremendous thinkers and

designers). So I decided to leave out inheritance as a built-in

feature until I understood it better."


"I'm not against types, but I don't know of any type systems that

aren't a complete pain, so I still like dynamic typing."


"OOP to me means only messaging, local retention and protection and

hiding of state-process, and extreme late-binding of all things. It

can be done in Smalltalk and in LISP. There are possibly other

systems in which this is possible, but I'm not aware of them."
From:gottlob_frege
Date:Апрель 15, 2009 10:28 am

A Theory of objects

(Link)
"The object-oriented approach to programming is based on an intuitive
correspondence between a software sumulation of a physical system and the
physical system itself. An analogy is drawn between building an algorithmic
model of a physical system from software components and building a mechanical
model of a physical system from concrete objects. By analogy, the software
components are themselves called objects. In its purest form, the
object-oriented approach recomments that every system be developed according
to this analogy.

The development of a mechanical model includes analysis, design, and imlementation
aspects. Consider, for example, the task of building a mechanical model of
the solar system. The analysis aspect consists i realizing that planets move
along precise orbits, The implementation aspect consists in preparing and
assembling spheres, gears, and springs.

All three aspects of constructing a model involve entities we may call objects,
but with different connotations.
In analysis, planets are seen as objects, but orbits clearly are not. In desing,
the intangible orbits are modeled by concrete objects such as orbital tracks and
gears. Entirely new objects, such as power sources, may appear. In implementation,
a spring may be an object that realizes the power source abstraction.

Object-oriented programming similarly involves analysis, design, and
implementation aspects, with concrete objects replaced by software objects.
The term object in programming refers to a component of a software
model, not to a component of the system being modeled. The proper analogy
is between software objects and objects in a "real model" that one may
imagine building, rather than objects in the "real world". For example,
orbital tracks may be represented as software objects.

This approach to programming is originated with Simula, wich was initially
dedicated to solving simulation (model building) problems. Its main concepts
were further refined in Smalltalk, where the concreteness of objects was
originally intended as a pedagogical tool. Since then, the object oriented
methodology has been exploited in a wide range of applications, including
the construction of user interfaces, operating systems, and databases.
Althrough these applications do not concern physical systems, the object-
oriented methodology has carried over.

From:gottlob_frege
Date:Апрель 15, 2009 10:29 am

A Theory of objects (II)

(Link)
The properties that confer this broad range of applicability to the object-
oriented approach can be summarized as follows.

* The analogy between software models and physical models.
* The resilience of the software models.
* The reusability of the components of the software models.

The first point pertains to analysis. In the object-oriented analysis process,
the analogy with a physical model can be useful in the development of a software
model. Much efford has been invested in systematizing this analysis process.

The second point pertains to design. Resilience of design in the face of changes
is a consequence of building abstractions. Objects form natural data abstraction
boundaries and help focus a design on system structure instead of algorithms.
Algorithms are factored into methods that are attached to objects, making
the objects behaviorally autonomous. Because of object abstractions, a design
can evolve with fewer pervasive reorganizations.

The third point pertains to implementation. Objects are naturally organized into
taxonomies during analysis, design, and implementation. This hierarchical
organization encourages the reuse of methos and data that are located higher
in the hierarchy.

Object-oriented programming toes not have an exclusive claim to all these good
properties. Systems may be modeled by other paradigms, including ones based on
traditional notions of algorithms and data structures, which were not well
developed when Simula was invented. Resilience can be achieved just as well by
orgaizing programs around abstract data types, independenly of object orientation.
Reusability can be achieved by modularization and parametrization. Hence is
possible that, as the availability and awareness of other techniques grow,
the appeal of objects will fade away.

Still, the object oriented approach has proven uniquely successful. It manages
to integrate good analysis, design, and implementation techniques into a
relatively intuitive and uniform framework. Moreover, some of its fundamental
features are not easily explained as the union of other well-understood notions;
witness the relative scarcity of formal techniques for analyzing object-oriented
programs."

A Theory of objects, by Luca Cardelli.

> Go to Top
LiveJournal.com