|
|
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Нашел статью, в которой описывается разница между объектно-ориентированным, процедурным и "хакерским" подходами на примере одной задачи. Объектно-ориентированный подход явно уступает остальным по объему кода, в т.ч. "пустого" boilerplate кода. Т.е. он заведомо хуже. Так какие доводы можно привести в его пользу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 22:33:32 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Статья http://csis.pace.edu/%7Ebergin/patterns/ppoop.html собственно. Ссылку забыл вставить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 22:47:07 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
бред никаких доводов не нужно кому нужно тот сам поймёт / прочитает / разбереца / etc тебе в раздел флейма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 22:54:49 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Времена, когда люди боролись за лишний байт памяти прошли (относится только к прикладному программингу). ИМХО страдать такой фигней сейчас не нужно, лучше сосредоточиться на других вещах, например архитектура. Не стоит обходить такие вещи как удобочитаемость, рано ли поздно придется заниматься сопровождением, добавлять функционал. Более того, в наше время весь софт пишется в сжатые сроки. ООП позволяет делать это быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:00:56 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Ruslan.IsbarovБолее того, в наше время весь софт пишется в сжатые сроки. ООП позволяет делать это быстрее.Это в какие? Всегда интересовало. Вот например TheBat! ты за сколько времени напишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:11:18 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
какбытькакжить Ruslan.IsbarovБолее того, в наше время весь софт пишется в сжатые сроки. ООП позволяет делать это быстрее.Это в какие? Всегда интересовало. Вот например TheBat! ты за сколько времени напишешь? Неважно за сколько я его напишу. Важно сколько начальство поставит. Я уверен, разработчики TheBat! не маялись фигней дабы сделать вид что работают... Вот тебе встречный вопрос: как думаешь, сколько проектов в наше время укладываются в сроки поставленные менеджерами проектов (или лицами занимающимися оценкой рисков и сроков)? По статистике, в процентах. P.S. Неважно какой проект, краткосрочный, среднесрочный или долгосрочный, времени всегда мало. Лишний день факапа - убытки для компании, подбитая репутация в лице заказчиков и прочие неприятности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:22:17 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Подписываюсь под каждым словом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:24:42 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Кстати, приведу пример из области системного программирования. Вот замечательная OpenSource операционная система реального времени http://ecos.sourceware.org/ (либо http://sources.redhat.com/ecos/ ) (Embedded Configurable Operating System), разрабатываемая компанией Cygwin (входит в RedHat). В этой системе только HAL (Hardware Abstraction Level) написан на языках низкого уровня (Assembler'ы) (HAL пишется для конкретного процессора и периферии, содержащейся в нем). Все остальное - планировщик, графическая оболочка, драйверы файловых систем и прочее-прочее пишется на C++, с использованием ОО подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:40:47 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarovкак думаешь, сколько проектов в наше время укладываются в сроки поставленные менеджерами проектов (или лицами занимающимися оценкой рисков и сроков)? - я думаю, нисколько :) Что во многом связано с низкой культурой заказчиков, которые после утверждения ТЗ норовят внести поправки, но при этом что бы все было сделано в те же сроки и без доплаты. Кроме того если сразу сказать заказчику сколько времени потребуется на проект он скорее всего откажется в пользу других исполнителей которые пообещают золотые горы, а в итоге сорвут сроки и сделают криво работающую поделку. Так что менеджерам часто приходится заведомо врать заказчику, или в более мягкой форме, скрывать от него часть правды, иначе первоначальная сделка просто не состоится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:50:11 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
KachalovЛадно, это уже оффтоп для форума "Работа". Все таки мне кажется что ОО подход более уместен при разработке "повторно используемых библиотек", чем при написании чего-то что "нужно сегодня, а завтра нужно будет новое" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:56:42 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
какбытькакжить какой у вас опыт работы программистом? Если бы вы написали хотя бы одну действительно большую и сложную систему, вы бы так не говорили. Возьмите того же Буча и почитайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:58:12 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Kachalov Ruslan.Isbarovкак думаешь, сколько проектов в наше время укладываются в сроки поставленные менеджерами проектов (или лицами занимающимися оценкой рисков и сроков)? - я думаю, нисколько :) Точно. 0%... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 23:59:37 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
какбытькакжить KachalovЛадно, это уже оффтоп для форума "Работа". Все таки мне кажется что ОО подход более уместен при разработке "повторно используемых библиотек", чем при написании чего-то что "нужно сегодня, а завтра нужно будет новое" И ты здесь пропагандируешь "процедурно-ориентированный" подход к разработке? А ты не задумывался что то, что ты пишешь "сегодня", с таким подходом напишешь только к "завтра", а как ты сам сказал "...а завтра нужно будет новое". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 00:14:35 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
какбытькакжить У вас вот уже спросили. А что вы написали в разработке чего участвовали, расскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 00:14:53 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
какбытькакжитьОбъектно-ориентированный подход явно уступает остальным по объему кода, в т.ч. "пустого" boilerplate кода. Т.е. он заведомо хуже. - "пустой" код образуется при недостаточном моделировании задачи. Хорошая модель позволяет избежать "лишних" методов в новом коде, кроме того стоит критически относится к сторонним библиотекам, которые могут содержать избыточный для Вашей задачи код. какбытькакжить мне кажется что ОО подход более уместен при разработке "повторно используемых библиотек", чем при написании чего-то что "нужно сегодня, а завтра нужно будет новое" - ООП это способ мышления, заметно превосходящий по гибкости и удобству "процедурное" и "пошаговое" мышление (программирование). Если Вы мыслите исходя из данных сомнений в необходимости ООП просто не может быть, если Вы мыслите действиями, то наверное ООП Вам кажется излишне сложным. Это два разных взгляда на жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 00:33:57 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
креатив по сцылце не релевантен поскольку заведомо OS-dependent, что с оопом нараскоряку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 09:28:14 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Kachalov - "пустой" код образуется при недостаточном моделировании задачи. моделирование - зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 09:29:21 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
" какбытькакжить Все таки мне кажется что ОО подход более уместен при разработке "повторно используемых библиотек", чем при написании чего-то что "нужно сегодня, а завтра нужно будет новое " Ну что - то есть в этом, когда объекты моделируешь прикладной ориентации. А так как рыночная стихия заставляет бизнес выживать и адаптироваться и при этом воспроизводиться то... программисты без работы на останутся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 09:39:03 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Угу, так же как президенты. Вопрос сколько и на каких основаниях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 10:16:23 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Читал статью. Забавно. Никаких выводов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 11:20:46 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Kachalov - ООП это способ мышления, заметно превосходящий по гибкости и удобству "процедурное" и "пошаговое" мышление (программирование). Если Вы мыслите исходя из данных сомнений в необходимости ООП просто не может быть, если Вы мыслите действиями, то наверное ООП Вам кажется излишне сложным. Это два разных взгляда на жизнь. Как я ни люблю ООП, но комбинация ООП + статическая типизация (при всех плюсах) приводит к появлению "лишних" строчек кода, которые иногда существенно увеличивают время на внесение изменений. Тут нужно сразу внести пояснения, иначе меня скушают. 1. На высоком уровне, когда обсуждаются отношения между объектами выделенными из предметной области ООП, действительно, можно назвать средством обладающим достаточной гибкостью. Избыточность синтаксических конструкций связаных с описанием объектов здесь не играет никакой роли. 2. Но "Дьявол в деталях" (с). На одних объектах из предметной области далеко не уедешь. Появляются "синтетические" классы: классы-утилиты, промежуточные интерфейсы для обеспечения дополнительной гибкости, фактори, паттерны визитор, темлейт метод и т.п. Казалось бы где грабли, ведь синтетические классы тоже решают задачи к которым можно применить ООА? А они есть. Преимущество использования декомпозиции данных (оно же ООА) существует только пока "данные" достаточно стабильны (существенно стабильнее, чем связанное с ними поведение). Так вот, данные предметной области стабильны и поэтому классы предметной области тоже стабильны, а синтетические классы не стабильны, т.к. исользуются для описания _поведения_, которое _нестабильно_. К чему это приводит? Либо к полному игнорированию ООП на уровне методов классов (включается процедурное программирование со всеми его плюсами и минусами), либо, при последовательном подходе, к разрастанию количества мини-классов, на которых становится заметен оверхед связанный с необходимостью их описания. Н-р, код из второго сообщения. Что вижу - то пою: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Процедурная декомпозиция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Ясно стало видно дублирование кода для выявления типа OS, которое трудно устранить не имея возможности получить ссылку на метод. Используем для этого полиморфизм: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Смотрим и видим, что класс PrintOS содержит утилитные методы, которым нужно найти другое место, чтобы они могли быть повторно использованы где-то ещё. Синтезируем объект "известные операционные системы": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Смотрим и снова видим, что что-то не так. А именно метод process. Он делает то, что нужно классу PrintOS, а как же быть другим пользователям OSes? Можно дописывать методы в интерфейс OS и реализовывать их, но это нарушает OSP. Поэтому появляется визитор: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. Лечге стало? Стало. Но остаётся дублирование и трудно добавлять новые типы оs. Фиксим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. Избавляемся от мусора ввиде статиков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. Итого из простого метода получены синтетические сущности: OS - операционная система @Os.Type - аннотация упрощающая создание visitor'ов OSes - произвольный набор операционных систем и методы работы с ними AbstractOSContainer - базовый класс для конкретного набора OS (с автоматической подгрузкой типов операционных систем) OSConainer - конкретный набор OS (их может быть несколько для разных задач) Однако изменение в тз на исходный метод может сразу сделать все эти классы бесполезными (если им не успели найти применения ещё где-нибудь) или существенно большей переработки, чем потребовалось для простого варианта. Какой вывод? ООП не является достаточно гибким способом мышления. Нет времени сейчас, кто хочет может дописать как тоже самое будет выглядеть на лиспе, чтобы убедиться, что есть способ "лучше" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 15:22:12 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Однако изменение в тз на исходный метод может сразу сделать все эти классы бесполезными (если им не успели найти применения ещё где-нибудь) или существенно большей переработки, чем потребовалось для простого варианта. Какой вывод? ООП не является достаточно гибким способом мышления. - вот я и говорю ООП - другой способ мышления :) Вы исходном примере с которого Вы начали всю мутату нет данных вообще. ООП исходит из данных. Программист с ООП мышлением в Вашем искуственном примере первым делом бы завел поле: Код: plaintext 1. Если заказчик системы занимается продажей товаров, то сущность "товар" никуда не денется из ТЗ как бы ни изголялся заказчик и какие бы действия над ними не делал. Данные не куда не пропадут из программы, тогда как действия над ними можно менять, в этом и заключается мощь и гибкость ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 17:22:49 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
авторто сущность "товар" никуда не денется из ТЗ как бы ни изголялся заказчик и какие бы действия над ними не делал запросто. Заказчик продавал диски с пиратскими играми и фильмами а сейчас (в свете последних событий) это стало пустая болванка+услуга по записи скачанного из инета файла неизвестного содержания. И не надо про другое мышление. Мышление одинаковое всегда должно быть, здравое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 17:57:06 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
Реально большой проэкт (по-моему) без ООП не напишешь, а если напишешь то он будет как минимум в раза два больше (кода). ООП - сила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 19:50:31 |
|
||
|
Объектно-ориентированный vs хакерский подход к программированию
|
|||
|---|---|---|---|
|
#18+
1024запросто. Заказчик продавал диски с пиратскими играми и фильмами а сейчас (в свете последних событий) это стало пустая болванка+услуга по записи скачанного из инета файла неизвестного содержания. GameDisc -> Disc -> Object VideoDisc -> Disc -> Object - если при написании кода программист исходил из общего случая (класс Disc), то его код не потерял актуальности и большую часть кода удастся использовать повторно или модифицировать программу без существенных трудозатрат. А программист который смотрит в будущее создал бы такую структуру классов: GameDisc -> Disc -> Ware -> Object ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 19:58:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34176138&tid=2147097]: |
0ms |
get settings: |
12ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
51ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 268ms |
| total: | 482ms |

| 0 / 0 |
