[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: The Wrong Way
Страницы: 1, 2, 3, 4, 5, 6
twin
Дальше.

Цитата
A program in a non-structured language usually consists of sequentially ordered commands, or statements, usually one in each line. The lines are usually numbered or may have labels which allows the flow of execution to jump to any line in the program (like with the unpopular GOTO statement).

Then, in the sixties, structured programming emerged - mainly due to the famous letter by Edsger W. Dijkstra Go To statements considered harmful.

Structured programming is a programming paradigm that improves the clarity, quality, and development of software by making use of subroutines, block structures and loops. This is in contrast to using simple jumps such as the GOTO statement.

Later, procedural programming was derived from structured programming. Procedural programming is based upon the concept of “procedure call”. A “procedure call” is just another name for a “function call”. Procedures are also known as routines, subroutines or methods. A procedure simply contain a series of computational steps to be carried out. Any given procedure might be called at any point during a programs execution, including by other procedures or itself.

In the beginning all procedures were available to any part of a program as global data. In small programs this didn’t present a problem, but as things got more complicated and as the size of the program grew, small changes to one part of the program greatly effected many other parts.

Nobody was planning for changes in the program and lots of dependencies existed. A minor change to one procedure would result in a cascade of errors in lots of other procedures that depended on the original code.



Перевод:

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

Тогда, в шестидесятых, структурное программирование появилось в основном статье Эдсгера Дейкстры "Доводы против оператора GOTO"

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

Позже из структурного программирования возникло процедурное. Оно основано на концепции "вызова процедур". А это просто другое название "вызова функций". Процедуры также известны как подпрограммы или методы. Процедура просто содержит ряд вычислительных шагов, которые долны быть выполнены. Любая процедура может быть вызвана в любой момент во время выполнения программы, в том числе и другими процедурами, или даже сама себя.

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

Ни кто не планировал таких изменений и появления такого большого числа зависимостей. Небольшие изменения в одной процедуре могло привести к каскаду ошибок во многих других процедурах, зависящих от её исходного кода.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Цитата
A new technique evolved that allowed data to be divided into separated scopes called “objects”. Only specific procedures belonging to the same scope could access the same data. This is called data hiding or encapsulation. The result was much better organized code.

In the beginning objects were not called objects, they were just viewed upon as separate scopes. Later when dependencies were reduced and connections between procedures and variables inside these scopes were viewed upon as isolated segments, the result gave birth to the concepts of “objects” and “object-oriented programming”.

Later, mainly due to the development of Java, certain “buzzwords” arose and “a procedure” or “a function” was no longer called a function, but was renamed “a method” when it resided inside a separate scope. Variables were also no longer called “variables”, but were renamed “attributes” when they resided inside a separate scope.

So an object is in essence simply a collection of functions and variables now called “methods and attributes”.

The way methods and attributes are kept isolated inside a separate scope is by the usage of “a class”. A class, once it is instantiated, is called an object.

Objects can reference each other and by such a reference the methods (functions) inside can “communicate” with each other. Objects can also “inherit” methods from other objects thereby extending such, this is called “inheritance”. It is a way to reuse code and allow independent extensions of the software via public classes and interfaces. The relationships of objects give rise to a hierarchy. Inheritance was invented in 1967 for the programming language Simula 67.

Objects can also inherit methods from other objects and “override” these with added or changed functionality, this is called “polymorphism”.

How these different ideas are implemented vary greatly from programming language to programming language.

Object-oriented programming is about organizing code in another way than before. It is an extension of procedural programming and it is about hiding data (encapsulation) and avoiding a global scope. It is about extending functions by “borrowing” their blueprints without actually affecting the original code (inheritance). And it is about overriding functions without affecting the original code (polymorphism).

The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.

– Paul Graham in Ansi Common Lisp

The wrong way: Always use object-oriented programming.



Перевод:

Новая технологя развивалась, что позволило разделить данные на разные области видимости, называемые "объектами". Только конкретные процедуры, относящиеся к одной области видимости, могли получить доступ к данным той же области. Это называется скрытие данных или инкапсуляция. Результатом стала намного лучшая организация кода.

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

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

Таким образом, объект, по сути, это просто набор функций и переменных, которые теперь стали называться "методами и атрибутами".

Методы и атрибуты изолированы внутри отдельной области с помощью использования "класса". После создания экземпляра класса, он называется объектом.

Объекты могут ссылаться друг на друга, и с помощью этих ссылок методы (функции) внутри могут "общаться" друг с другом. Объекты могут также "перенимать" методы от других объектов, тем самым их расширяя. Это называется "наследованием". Это способ повторного использования кода, позволяющий создавать независимые расширения программ через публичные классы и интерфейсы. Взаимосвязи объектов приводят к иерархии. Наследование было изобретено в 1967 году для языка программирования Simula 67.

Объекты могут также наследовать методы от других объектов и "переопределить" их с добавлением или изменением функциональных возможностей, это называется "полиморфизм".

Эти идеи варьируются в разных языках программирования.

Объектно-ориентированное программирование, это совершенно другой способ организции кода, чем был раньше. Это является продолжением процедурного программирования, с добавлением сокрытия данных (инкапсуляции) и избеганием глобальных областей видимости. Речь идет о расширении функций путем "заимствования" своих схем и чертежей, фактически не затрагивая исходный код (наследование). И речь идет о переопределении функций, не затрагивая исходный код (полиморфизм).

Объектно-ориентированная модель позволяет легко наращивать программы за счет аккреции. Это часто означает, что на практике она обеспечивает структурированный способ записи спагетти-кода.
© Пол Грэм в Ansi Common Lisp

Неправильный путь: Всегда использовать объектно-ориентированное программирование.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.