Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (13) 1 2 [3] 4 5 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Процедурный стиль vs Объектно ориентированное прог
 
Опрос: Какой стиль програмирования вы используетете
Только Процедурный [ 5 ]  [19,23%]
Только ООП [ 14 ]  [53,85%]
ООП когда требует клиент, так процелурный [ 0 ]  [0,00%]
претваряюсь что пишу ООП (создаю классы, методы), а использую процедурный [ 3 ]  [11,54%]
ООП когда большой проект, а сам использую процедурный [ 4 ]  [15,38%]
Всего голосов: 26
  
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




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


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 18 дней
Карма: 111




Цитата (twin @ 25.01.2016 - 09:16)
Китайцы спокойно обходятся палочками... Или полтора миллиарда китайцев - неприличное общество?  biggrin.gif

Есть палочками это функциональное программирование =) оно стоит в одну ногу с набором ложка вилка и ножик)


Императивы процедурка устарели и говно говном, и мазаться в говно ну его =) а те кто использует настоятельно рекомендуют помыться, PHP развивает и улучшает объектную модель, это удобно и просто, без секса и прочей гадости,

Не нравиться ООП добро пожаловать в лагерь функциональщиков, совершенно другой подход и образ мышления, все есть функция и все есть математика, Erlang Closuje Lisp Scala Haskell ждут тебя с нетерпением, будешь бодаться с монадами и познаешь дзен программирования =), будешь каррировать и декаррировать, лямбды и прочая умодобивающая фигня)))

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


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




bestxp, ты жесток biggrin.gif


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Мне такие рассуждения это напоминают biggrin.gif biggrin.gif Смотреть не совсем до конца! laugh.gif


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Marshal  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 42430
На форуме: 10 месяцев, 11 дней
Карма:




Цитата (ВеликийПрограмист @ 25.01.2016 - 06:08)
Хочу обсудить все за и против в вопросе процедурный стиль против объектно ориентированного программирования.

Давайте сделаем конструктивно чтобы тему не закрылы за флейм и не будем делать такие комменты как "Если ты пишешь процедурный код то ты херовый програмист" или "<Какой то> крутой прогер или мой учитель програмирования в универе смеется над таким вопросом" - так доказываются догмы.

Пишите конкретно по пунктам почему процедурный стиль неприемлемен вами или чем ООП лчше процедурного лучше сразу с примером кода.


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

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


Ели кто то думает что я упал с дуба посмотрите на критику ООП на с википедии.

У каждого свое мнение, и не думаю что вот так легко сможешь поменять его, если к вопросу подойти просто, без долгих обсуждений и выбитых зубов, по моему мнению самое главное уровень владения определенной технологией, языком и тп, можно и самую универсальную и мощную технологию испортить неумением обращаться с ней,или самую старую если ты ее знаешь, использовать так хорошо что будет лучше передовых.Да и ценится сейчас быстрота написания кода, а не удобство, и красота.
Это бесполезная на мой взгляд тема, древняя и конца которой не будет. Да ВеликийПрограммист как с тобой связаться можно насчет другой темы закрытой? Или сам отпиши плиз, magisterK@yandex.ru или скайп MagisterK
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Чёт тема быстро потухла, так даже не весело


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1690
Пользователь №: 31058
На форуме: 4 года, 10 месяцев, 25 дней
Карма: 24




Когда это нужно - это какой вариант?)))


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1690
Пользователь №: 31058
На форуме: 4 года, 10 месяцев, 25 дней
Карма: 24




Цитата (ВеликийПрограмист @ 25.01.2016 - 03:31)
Я не утверждаю что ООП это неверно, однако я хочу услышать чем ООП лучше процедур от тех кто говорит что тот кто не использует ооп - недопрограмист.

Не коректный вопрос, нужно отделять ООП в ПХП от ООП в целом! Как по мне (мое ИМХО) в ПХП реализация ООП не очень верна, так как можно смело обходиться без него, но при этом в Жаве к примеру это не так, ибо там все изначально придумывалось под ООП.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Цитата (dron4ik @ 25.01.2016 - 18:19)
в ПХП реализация ООП не очень верна

wat? Что там не так, практически всё слизали с Java.


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 26 дней
Карма: 27




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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 28 дней
Карма: 15




Цитата (Медведь @ 25.01.2016 - 15:34)
Чтобы не быть голословными приведите небольшой пример в двух вариантах, почему тот или иной стиль программирования лучше. Нам будет интересно сравнить и проанализировать.

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

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

Врядли можно увидеть разницу на небольшом примере.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Не хотел встревать, но это выше моих сил))
Цитата (Santehnick @ 26.01.2016 - 01:33)
Врядли можно увидеть разницу на небольшом примере.

Ну почему... Разницу увидеть просто. Сложно увидеть, а тем более доказать, преимущества одного перед другим.

Вот ООП:

class Cat
{
public function getVoice()
{
return 'Meow!';
}
}


class Cock
{
public function getVoice()
{
return 'Cock-a-doodle-doo!';
}
}


$cat = new Cat;
echo $cat->getVoice();

$cock = new Cock;
echo $cock->getVoice();


А вот это процедурка:
class Voice
{
public function getCatVoice()
{
return 'Meow!';
}

public function getCockVoice()
{
return 'Cock-a-doodle-doo!';
}
}


$voice = new Voice;
echo $voice->getCatVoice();
echo $voice->getCockVoice();

Здесь не так явно (голос тоже можно обозвать объектом), но для начала пойдет.

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

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

Дословно так:
(ооп) беру собаку, она лает.
(пп) воспроизвожу лай собаки.

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

Но это только до тех пор, пока функционал невелик. Как только он разрастается, появляется куча мертвого, и довольно серьёзная избыточность действующего кода, которые сводят на нет все достижения. С этим приходится бороться всевозможными фокусами (читай: паттернами). А они тоже имеют разные толкования. Синглтон, сервис-локатор и некоторые другие уже давно названы антипаттернами в определенных кругах.

Потому ООПэшники понемного сдают позиции, сами того не замечая. Яркий пример - делегирование.

С другой стороны у процедурки тоже имеются свои недостатки. Один из самых главных, как не парадоксально, довольно высокий уровень вхождения.

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

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

Так что ООП нужно пережить. :) Ну или застрять в нем навсегда, утешаясь тем, что железо дешевле программиста.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 18 дней
Карма: 111




Ага как же, только вот уложи SOLID на свою процедурку, покажи как взаимодействовать через интерфейс тем же самым голосом

Вот условие

Животное отправили в стойло и там оно произнесла своим голосом

в случае с ООП все понятно

interface Animal { public function getVoice(); }


и есть стойло с
function addAnimal(Animal $animal) { $animal->getVoice(); };

уж простите я могу туда запихивать всех животных которые являються поддипом Animal , в твом случае этого уже невозможно ьез костыля

то есть код явный и понятный


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


А причем тут SOLID... SOLID, это придумано для ООП. Ты же не предлагаешь юзать его функциональщикам.

А по поводу стойла - так я и говорю, сложно спроецировать одно на другое. Сложно понять, что не все подчиняется ООП законам.

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

Вобщем совершенно другая структура. И совсем некорректно приводить такой пример.

А вот то, что тебе потребовался интефейс - уже показатель, что не все гладко в датском королевстве. Потому что животные разные бывают. Допустим кошка, собака и лиса. Их можно задать одним интерфейсом. А я вот в Камбодже видел летучую лисицу. И что делать? Описать возможность летать для всех животных в интерфейсе избыточно, да и глуповато, если не сказать - контрпродуктивно. Ненароком и кошка полетать захочет. Описывать отдельно - опять избыточность плюс потеря прозрачности. Я об этом и написал:
Цитата (twin @ 26.01.2016 - 08:18)
Но это только до тех пор, пока функционал невелик. Как только он разрастается, появляется куча мертвого, и довольно серьёзная избыточность действующего кода, которые сводят на нет все достижения.


Как тут без костылей?

Я же говорю - у всех подходов есть и плюсы и минусы. То, что ООП наиболее распространенная парадигма, еще не делает его панацеей.

Присоединённое изображение
Присоединённое изображение


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 18 дней
Карма: 111




Цитата
Как тут без костылей?


Никаких костылей, есть понятие сегментация интерфейсов описанная в том же SOLID ,

и будет у нас FlyingAnimal и Animal интерфейс где в летающее животное будет добавлено описание интерфейса летающего и да на функциональные языки SOLID вполне себе накладываеться с некоторыми отговорками на сам язык,

а у тебя будет что? Вот как у тебя это будет выглядеть ? Вот опиши это?

явно и понятно, интерфейс это как рахъем USB лишнего не сунешь, не сунуть гвозть пожайлуста только либо тебе либо устройству каюк,


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (13) 1 2 [3] 4 5 ... Последняя » Закрытая темаСоздание новой темыСоздание опроса