Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А можно без классов? 
:(
    Опции темы
korian
Дата 27.9.2008, 21:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: нет
Всего: 17



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

PM   Вверх
smartov
Дата 27.9.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



korian, надо же. Даже статья на Вики есть. Не знал.
PM MAIL   Вверх
DRUID3
Дата 28.9.2008, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: -1
Всего: 9



Цитата(smartov @  19.9.2008,  16:26 Найти цитируемый пост)
slavaentp, тролль нехороший smile Но зато живая беседа.

100% тролль ...
Цитата(smartov @  19.9.2008,  16:26 Найти цитируемый пост)
Это тоже можно написать без функций. И даже будет работать, но код будет во много раз длиннее, а читать этот код будет нереально. Следовательно поддержка программы сводится к нулю.
Итого: больше потраченного времени программиста, программа занимает больше места, большее количество кода увеличивает шанс человеческой ошибки (скрытые баги), поддержку программы осуществлять трудно.

именно...
Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
Программы приходится развивать. Вырастают новые технические требования, отмирают старые. Вылезают ошибки, а иногда переделывать приходится больше половины готового кода. Есть даже отдельные программисты, которые работают не на написание новых проектов, а на поддержку старых. Что в таком случае является целью? Что думать о товарище программисте, который написал "чтобы работало" и свалил? Не проще ли было изначально задуматься о стройной архитектуре? Я не пытаюсь заставить тебя полюбить ООП, хочешь - решай в функциональной парадигме, но только безо всяких "после нас хоть потоп"!

Все верно, как и в предыдущем пояснении, но товариСЧ решил пЕсать для себя... Для себя можно как угодно )))


Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
но задачи оптимизации тебе в жизни никогда не поставят

Ну только вот таких вот обобщений не надо  smile ... Смотря кто где и над какими задачами работает.

Цитата(kosmonaFFFt @  22.9.2008,  17:41 Найти цитируемый пост)
как с помощью goto реализовать умножение двух произвольных матриц?
. . . И какой же вариант более простой и легчечитаемый?

Цитата(kosmonaFFFt @  19.9.2008,  14:59 Найти цитируемый пост)
А представь себе, что там не echo $a + $b, а около 40 строк кода, который делает что то с этими самыми переменными
а в программе это делать с ними надо часто. И тут появляется выбор - функция или копирование кода через
Ctrl+C, Ctrl+V (или как там у кого хоткеи настроены) smile
Я лично предпочитаю в такой ситуации написать функцию. 

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


ну Ваши представления об возможностях оператора безусловного перехода несколько искажены. Дейкстра ругал goto за полную дезориентацию синхронизма выполняемых действий - затруднения в очевидности, наглядности работы системы. А совсем, как раз, не за усложнение и утяжеление чтения исходника в пределах одного блока кода - кстати оба Ваших варианта читаются довольно легко. Поколдовав с препроцессором можно добиться ясности и простоты для намного более запутанных случаев... Мало того ПП(или ООП smile ) на asm будет тоже тяжелочитаемым. Кстати никто goto собственно и не запрещает, в планировщике задач Linux, что 2.4 что 2.6(более ранних - невидал) он на каждом шагу... И Торвальдс такую работу принимает.
slavaentp
прав в своих кратких тезисах. Все это (+ процедурное программирование) парадигмы - мировоззренческие точки отсчета. Но никто никого не заставляет  smile ... 

Цитата(Gwynbleidd @  18.9.2008,  17:10 Найти цитируемый пост)
есть конечно. например можно программировать на С (простой си) для микроконтроллеров, там хочешь не хочешь а классов нет. так же можно писать например по юникс.. возможностей много 

Не совсем верен сам подход... Можно писать ООП на asm. Но это, конечно, экстрим. Но уже для С так очень часто поступают - для тех же микроконтроллеров может не оказаться C++, например, а команда хочет ООП. Кстати, ранние версии GCC преобразовывали C++ в C. И книги встречались на английском как писать на C в стиле C++. Вот неплохой материал по-теме. Ну а все, что можно на C можно и на asm  smile . 

Цитата(Shaggie @  18.9.2008,  19:40 Найти цитируемый пост)
Ни классов, ни функций, ни переменных - так не бывает, хотя бы что-то одно придётся использовать, причём это одно наверняка окажется функциями

есть такой язык brainfack... там ничего этого нет. И он работает... Правда именно так как и называется...



--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
RockClimber
Дата 3.10.2008, 10:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Мое скромное имхо по теме...
1) ООП - не панацея от кривого кода. Кто не верит, могу прислать пару модулей, написанных моим коллегой на VB smile 
2) Модульность и полиморфизм/инкапсуляция/наследование - не одно и тоже. А от переписывания большого количества кода спасать должна правильная структура программы (и модульность - пророк её)...
3) ООП - это все-таки здорово, но только если без фанатизма...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
Fiyanov
Дата 3.11.2008, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 255
Регистрация: 19.4.2007
Где: Kazakhstan->Te mirtau

Репутация: нет
Всего: 2



По теме сообщения:
Без классов можно, но имейте виду что их придумал для того что бы упростить жизнь программиста...
PM MAIL ICQ   Вверх
Фантом
Дата 6.11.2008, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 0
Всего: 49



Ко всему этому можно добавить, что в классах (и ООП в целом) нет ничего плохого... но только до тех пор, пока их не начинают пихать куда попало. У этой парадигмы есть определенная область применения, а попытки использовать ее в других задачах (к сожалению, чрезвычайно частые) обычно выглядят так, что вызывают желание полностью отказаться от ООП.  smile 
PM   Вверх
slavaentp
Дата 24.12.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Хорошо, спрошу так: где граница между теми программами, где не нужно применять ООП, и теми, где ООП лучше применить?
PM MAIL   Вверх
Lazin
Дата 24.12.2008, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



по любому прийдется учить ООП smile 
PM MAIL Skype GTalk   Вверх
slavaentp
Дата 24.12.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 17.6.2008

Репутация: -1
Всего: -1



Я и так ООП учу, просто пока что считаю его бесполезнымsmile Я не пытаюсь что-то доказать, я для себя хочу понять.

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

a = GetString();

b = LetUserInput(3);

InitiateConversation();

и т.д.

При этом - чтобы узнать, что каждая функция значит, нужно прыгать вверх, вниз(не знаешь же, где программист функции разместил, он как попало это часто делает), потом возвращаться к центру, следующая функция, опять вверх-вниз. Разве это удобно и читаемо?

---

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

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

---

По поводу goto. Читаю сейчас в поисковиках. Пока это больше похоже на ожесточённый спор непримиримых сторон, чем на чёткое и ясное указание, что хорошо, а что плохо. Пока я аргументов против goto не нашёл, кроме - "ну, это как-то неприлично использовать goto".

А вот аргумент сторонника goto убийственный(с форума http://www.sql.ru:

"3) Целевой машинный код в конечном счете будет содержать goto, какие-бы вы не использовали структурно-обьектно-функциональные компилляторы.".

Ещё раз, я не спорю, я хочу для себя понять.
PM MAIL   Вверх
nerezus
Дата 24.12.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Конечно же можно без классов. Но нельзя без ООП, а классы в этом сильно помогают.

Пример огромной программы без классов: linux. Но ООП там есть.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
kosmonaFFFt
Дата 25.12.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Цитата(slavaentp @  24.12.2008,  14:58 Найти цитируемый пост)
же состоит сплошь из юзером определённых функций, названия которых ничего не говорят стороннему наблюдателю!a = GetString();b = LetUserInput(3);InitiateConversation();и т.д.


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

И опять же комментарии при объявлении функций еще не отменял.

Кстати мну тут друг недавно рассказывал - пытался одной знакомой по
программированию помочь, у нее простенькая прога максимум строк на 400 на с++ была написана
сплошным текстом (без функций/классов) и с использованием того же goto, причем было много коментов нормальных, так он часа 3
пытался разобраться в этом всем - не смог, и минут за 30 написал то же самое, но с разбивкой
на функции, и заняло это по объему кода намного меньше.


--------------------
user posted image
PM MAIL ICQ   Вверх
Shaggie
Дата 29.12.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Точно тролль.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
ksili
Дата 29.12.2008, 11:48 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Такое ощущение, что здесь почти все кроме slavaentp - тролли.

ООП почти ничего к читаемости кода не добавляет. Объём становится больше - без вопросов. А вот читаемость могут повысить только комментарии, внятные имена переменных и документация.
Я сейчас участвую в проекте на ООП. Куча классов, куча проектов, куча всего. И ни хрена сходу непонятно. Мне дают задание, говорят что надо использовать такой-то класс или либу с набором классом. Я начинаю делать, а потом оказывается, что там не то, или недоделано или есть ограничения, которые обходить дороже, чем сделать заново. В результате куча времени - сами знаете куда. А все потому, что в этой куче кода - ни строчки комментариев, о документации я вообще молчу. 

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

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

Мое собственное мнение - классы нужны когда проект большой, его результаты будут использовать много людей. И самое главное - каждый класс отдается другим людям когда он уже максимально отлажен. 
Проблема наверно ещё в том, что многие люди мечтают работать в больших проектах, в больших командах, а поэтому начинают изучать ООП и использовать его где ни попадя. Так появляются всякие мелкие программы , где под каждую функцию написан класс. 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Lazin
Дата 29.12.2008, 12:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



ksili, при чем тут документация?
Разве не логичней, когда у тебя есть класс "строка", ты создаешь объект этого класса, а затем посылаешь сообщение "ToUpper" этому объекту, по твоему лучше когда вместо класса, объекта и сообщения у нас есть область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов?
Вообще, ###код можно писать как угодно, но код написанный в ООП стиле, если он написан правильно, намного проще использовать и сопровождать. Например мы пишем программу - редактор текста, и у нас есть класс CDocumentElement, от которого порожден класс CText, и от которого в свою очередь порожден CFormattedText, единственное отличие которого от простого текста - наличие форматирования. Теперь представим что нам потребовался класс CImage(наследник CDocumentElement) - встроенное в документ изображение, затем нам потребуется CAlignedImage итд. Это плохой дизайн, в этом случае получится очень сильно упростить программу, если ввести класс CFormat который был-бы декоратором для CDocumentElement и мог-бы изменять поведение вложенного в него объекта. 
Дело даже не в языке программирования, а в подходе, можно и на асме писать ОПП программы.
зы
кстати, хорошо спроектированная программа или библиотека не нуждается в большом количестве комментариев.

Добавлено через 1 минуту и 4 секунды
Цитата(ksili @  29.12.2008,  11:48 Найти цитируемый пост)
Такое ощущение, что здесь почти все кроме slavaentp - тролли.

Такое ощущение, что здесь почти все кроме slavaentp - занимались сопровождением собственного кода smile 
PM MAIL Skype GTalk   Вверх
ksili
Дата 29.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Lazin, и как часто мы пишем текстовые редакторы, которые будем сопровождать полжизни? 
Я не говорил, что ООП вообще не нужно. Если проект большой - пожалуйста. Но большая часть программ - не такие крупные проекты как Word. 
И еще. Меня всегда поражал такой фанатизм в дроблении: сделаем Image, из него AlignedImage, из него ещё какой-нибудь имэйдж... Любит человек размножаться ничего не скажешь... Нельзя было сразу сделать объект со всеми нужными свойствами? AlignedImage же тоже можно сделать невыровненным.
Цитата(Lazin @  29.12.2008,  16:47 Найти цитируемый пост)
по твоему лучше когда вместо класса, объекта и сообщения у нас есть область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов?

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

область памяти выделенная под строку, указатель на строку, куча переменных хранящих длину строки, кодировку символов и тд и функция, принимающая в качестве параметра указатель на область в памяти и кодировку символов

у тебя опять же  будет, только кроме этого ещё куча воды.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.